Mise à échelle
Posté : 24 juil. 2020, 18:53
Bonjour à tous !
Actuellement, je travaille sur un s7-1200. Le but du projet est de récupérer une information de débit 4-20 mA d'un transmetteur et de le récupérer sur l'automate. Pour pouvoir récupérer l'information analogie j'ai pris une signal board avec une entrée analogie 0-20 mA.
Dans mon programme, j'ai fait une conversion de la valeur récupérer de "int" en "real" et suite à cela, une mise à échelle sur du 4-20 mA. Comme cela :
//conversion valeur de "int" en "real"// //"Val_1" = "REAL", "DEBIT" = "INT" = Valeur analogique reçut par l'automate et envoyé par le transmetteur
"Val_1" := INT_TO_REAL("DEBIT");
//mise à échelle en 4-20 mA de la valeur "Val_1"// //"Val_2" = "REAL", "Val_1" = "REAL"
"Val_2" := 4.0 + ((( 20.0 - 0.0) / 27648.0) * Val_1);
//mise à échelle de la variable "Val_2" sur une échelle 0.7 à 1.767 l/s// //"Val_3" = "REAL", "Val_2" = "REAL"
"Val_3" := 0.7 + (((1.767 - 0.7) / 20.0) * "Val_2");
Mon problème c'est qu'avec la dernière mise à échelle, la mise à échelle se fait mal car par exemple pour 4 mA j'ai 0.9134 au lieu d'avoir 0.7 mais à 20 mA j'ai bien 1.767.
Pouvez-vous me dire qu'elle erreur ai-je faite pour pouvoir faire une mise à échelle de 0.7 à 1.767.
N’hésiter par à me poser des questions sur des points où je n'étais pas claire.
Merci d'avance
Cordialement,
Actuellement, je travaille sur un s7-1200. Le but du projet est de récupérer une information de débit 4-20 mA d'un transmetteur et de le récupérer sur l'automate. Pour pouvoir récupérer l'information analogie j'ai pris une signal board avec une entrée analogie 0-20 mA.
Dans mon programme, j'ai fait une conversion de la valeur récupérer de "int" en "real" et suite à cela, une mise à échelle sur du 4-20 mA. Comme cela :
//conversion valeur de "int" en "real"// //"Val_1" = "REAL", "DEBIT" = "INT" = Valeur analogique reçut par l'automate et envoyé par le transmetteur
"Val_1" := INT_TO_REAL("DEBIT");
//mise à échelle en 4-20 mA de la valeur "Val_1"// //"Val_2" = "REAL", "Val_1" = "REAL"
"Val_2" := 4.0 + ((( 20.0 - 0.0) / 27648.0) * Val_1);
//mise à échelle de la variable "Val_2" sur une échelle 0.7 à 1.767 l/s// //"Val_3" = "REAL", "Val_2" = "REAL"
"Val_3" := 0.7 + (((1.767 - 0.7) / 20.0) * "Val_2");
Mon problème c'est qu'avec la dernière mise à échelle, la mise à échelle se fait mal car par exemple pour 4 mA j'ai 0.9134 au lieu d'avoir 0.7 mais à 20 mA j'ai bien 1.767.
Pouvez-vous me dire qu'elle erreur ai-je faite pour pouvoir faire une mise à échelle de 0.7 à 1.767.
N’hésiter par à me poser des questions sur des points où je n'étais pas claire.
Merci d'avance
Cordialement,