Mise à échelle
Mise à échelle
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,
Ce qui est le plus incroyable en informatique, c'est quand ça fonctionne !
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Mise à échelle
Slts,
Si le capteur délivre du 4..20 mA pour quelle raisons tu utilise une entrée ana. en 0..20 mA ? comprends pas ?
Si le capteur délivre du 4..20 mA pour quelle raisons tu utilise une entrée ana. en 0..20 mA ? comprends pas ?
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Mise à échelle
Bonjour,
Déjà premièrement, j ai une petite armoire électrique que je ne peux pas rajouter de carte entrée analogique 4-20 mA donc j ai pris pour cela une signal board. La seule que j ai trouvé était en 0-20 mA.
Deuxièmement, on m'a dit que c'était possible d'envoyer du 4-20 mA sur une entrée 0-20 mA et de faire une mise à l'échelle dans l'automate.
Ce qui est le plus incroyable en informatique, c'est quand ça fonctionne !
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Mise à échelle
slts,
Ok compris, oui c'est possible si on as pas d'autres choix.
Ok compris, oui c'est possible si on as pas d'autres choix.
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Mise à échelle
Merci,
Pouvez-vous me dire aussi pourquoi j ai un soucis sur la mise à l'échelle dans le bout de programme svp ?
Merci d'avance,
Pouvez-vous me dire aussi pourquoi j ai un soucis sur la mise à l'échelle dans le bout de programme svp ?
Merci d'avance,
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Mise à échelle
slts,
la mise à l'échelle se fait dans la configuration de l'entrée ana. sur cette entrée ana. on peut pas y configurer une valeur physique ?
la mise à l'échelle se fait dans la configuration de l'entrée ana. sur cette entrée ana. on peut pas y configurer une valeur physique ?
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Mise à échelle
Je vais voir si c'est possible mais pas sûr.
Tous ce que je sais c'est qu'on peut changer l'entrée de la carte soit en tension soit en courant.
Merci.
Tous ce que je sais c'est qu'on peut changer l'entrée de la carte soit en tension soit en courant.
Merci.
Ce qui est le plus incroyable en informatique, c'est quand ça fonctionne !
- itasoft
- Mi homme - Mi automate

- Messages : 7803
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Mise à échelle
slts,
quel est la plage physique du signal ana. 4/20 mA
exemple: 4 mA = 0°C 20 mA = 60 °C
quel est la plage physique du signal ana. 4/20 mA
exemple: 4 mA = 0°C 20 mA = 60 °C
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Mise à échelle
La plage physique est de 4 ma = 0,7 l/s à 1,767 l/s pour du 20 mA
Ce qui est le plus incroyable en informatique, c'est quand ça fonctionne !
- Bruce33
- Dieu du process

- Messages : 930
- Enregistré le : 28 oct. 2015, 06:54
- Localisation : Pas-de-Calais
Re: Mise à échelle
Bonjour,
Il me semble que ce serait plutôt :
//mise à échelle en 4-20 mA de la valeur "Val_1"// //"Val_2" = "REAL", "Val_1" = "REAL"
"Val_2" := ((( 20.0 - 0.0) / 27648.0) * Val_1) - 4.0;
//mise à échelle de la variable "Val_2" sur une échelle 0.7 à 1.767 l/s// //"Val_3" = "REAL", "Val_2" = "REAL"
"Val_3" := (((1.767 - 0.7) / (20.0 - 4.0)) * "Val_2") + 0.7;
Mais c'est un peu lourd comme écriture...
Je ne suis pas spécialiste de S7-1200 mais il me semble qu'il existe une fonction SCALE (ou RESCALE en valeur REAL) pour la mise à l'échelle. Il existe aussi des fonctions NORM_X et SCALE_X... mais je n'ai pas le logiciel pour vérifier tout ça.
Il me semble que ce serait plutôt :
//mise à échelle en 4-20 mA de la valeur "Val_1"// //"Val_2" = "REAL", "Val_1" = "REAL"
"Val_2" := ((( 20.0 - 0.0) / 27648.0) * Val_1) - 4.0;
//mise à échelle de la variable "Val_2" sur une échelle 0.7 à 1.767 l/s// //"Val_3" = "REAL", "Val_2" = "REAL"
"Val_3" := (((1.767 - 0.7) / (20.0 - 4.0)) * "Val_2") + 0.7;
Mais c'est un peu lourd comme écriture...
Je ne suis pas spécialiste de S7-1200 mais il me semble qu'il existe une fonction SCALE (ou RESCALE en valeur REAL) pour la mise à l'échelle. Il existe aussi des fonctions NORM_X et SCALE_X... mais je n'ai pas le logiciel pour vérifier tout ça.
