Programmation Mesure de Puissance dans M340
Re: Programmation Mesure de Puissance dans M340
Salut Philou77,
Désolé, mais j'ai vraiment du mal avec ces conversions.
Donc si j'ai bien compris :
- Ma valeur reçu en INT je la convertie en DINT
- puis ma valeur DINT en UDINT
J'ai bien une FFB pour la première conversion, par contre je n'ai pas trouvé de FFB pour la seconde.
Sinon, si tu pas un script qui fait la conversion, je serai preneur aussi.
Merci pour tes réponses
Désolé, mais j'ai vraiment du mal avec ces conversions.
Donc si j'ai bien compris :
- Ma valeur reçu en INT je la convertie en DINT
- puis ma valeur DINT en UDINT
J'ai bien une FFB pour la première conversion, par contre je n'ai pas trouvé de FFB pour la seconde.
Sinon, si tu pas un script qui fait la conversion, je serai preneur aussi.
Merci pour tes réponses
-
- Mi homme - Mi automate
- Messages : 2076
- Inscription : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Programmation Mesure de Puissance dans M340
Salut,
Ta valeur est en DINT dans l'automate.. ok
Déclare ta valeur dans l'ihm en UDINT... et elle sera non signée pour l'ihm...
Mais tu ne pourra pas dépasser 65535 car tu pars d'une valeur en 16 bits (int) qui elle ne peut pas dépasser cette limite !
Ta valeur est en DINT dans l'automate.. ok
Déclare ta valeur dans l'ihm en UDINT... et elle sera non signée pour l'ihm...
Mais tu ne pourra pas dépasser 65535 car tu pars d'une valeur en 16 bits (int) qui elle ne peut pas dépasser cette limite !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part !
Re: Programmation Mesure de Puissance dans M340
Salut Philou77
Avant de lire ton message, j'ai fait ce qui suit :
Dans l'automate j'ai converti ma mesure "Table Recept(1)" avec une FFB INT_TO_UINT puis renvoyé en sortie dans un %MW500.
Après une mise à jour des variables dans l'IHM, ce dernier affiche bien la bonne valeur de puissance.
La machine ne dépassant pas 655 cela est bon.
Par contre maintenant, si ma puissance passe en négatif sur la machine mon affichage bascule à 655.
Cela était prévisible puisque la valeur est maintenant non signé.
Y a-t-il une possibilité de pouvoir afficher la même valeur que celle de affiché sur la centrale de mesure (en positif et négatif) ou est-on obligé de faire un compromis ?
A savoir que mon automate va lire la valeur en décimal dans la centrale de mesure, il y a possibilité de lui faire lire en Hexa.
Je ne sais pas si cela peut résoudre ce point.
Avant de lire ton message, j'ai fait ce qui suit :
Dans l'automate j'ai converti ma mesure "Table Recept(1)" avec une FFB INT_TO_UINT puis renvoyé en sortie dans un %MW500.
Après une mise à jour des variables dans l'IHM, ce dernier affiche bien la bonne valeur de puissance.
La machine ne dépassant pas 655 cela est bon.
Par contre maintenant, si ma puissance passe en négatif sur la machine mon affichage bascule à 655.
Cela était prévisible puisque la valeur est maintenant non signé.
Y a-t-il une possibilité de pouvoir afficher la même valeur que celle de affiché sur la centrale de mesure (en positif et négatif) ou est-on obligé de faire un compromis ?
A savoir que mon automate va lire la valeur en décimal dans la centrale de mesure, il y a possibilité de lui faire lire en Hexa.
Je ne sais pas si cela peut résoudre ce point.
Re: Programmation Mesure de Puissance dans M340
Par contre, j'ai ma courbe qui ne marche pas
Re: Programmation Mesure de Puissance dans M340
Salut Philou77,
Merci pour ton aide.
Ma courbe fonctionne.
Il ne reste plus que cette histoire lorsque la machine passe en négatif
Merci pour ton aide.
Ma courbe fonctionne.
Il ne reste plus que cette histoire lorsque la machine passe en négatif
-
- Mi homme - Mi automate
- Messages : 2076
- Inscription : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Programmation Mesure de Puissance dans M340
si tu veux une valeur sans signe, prend la valeur absolue...il y a une instruction pour ça.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part !
Re: Programmation Mesure de Puissance dans M340
Bonjour,
Désolé de m'incrust sur le poste, mais je dois aussi faire communiquer un M340 avec une centrale Diris... et j'ai malheureusement quelques problèmes
J'ai suivi le tuto de la page Schneider et j'ai une erreur entre le bloc ADDM et le read_var
pour commencer, d'un coté la sortie est en type ADDM et l'entrée ADR du read var attend un bool
Et a la génération j'ai ces messages
E1092 les types de données ne correspondent pas ('$LINK24088:ADDM_TYPE'<->'$LINK24088:ADDM_TYPE')
E1092 les types de données ne correspondent pas ('READ_VAR.ADR:ANY_ARRAY_INT'<->'$LINK24089:BOOL')
Il y a quelque chose que je ne comprend pas, quelqu'un pourrait il m'aiguiller
Merci
Désolé de m'incrust sur le poste, mais je dois aussi faire communiquer un M340 avec une centrale Diris... et j'ai malheureusement quelques problèmes
J'ai suivi le tuto de la page Schneider et j'ai une erreur entre le bloc ADDM et le read_var
pour commencer, d'un coté la sortie est en type ADDM et l'entrée ADR du read var attend un bool
Et a la génération j'ai ces messages
E1092 les types de données ne correspondent pas ('$LINK24088:ADDM_TYPE'<->'$LINK24088:ADDM_TYPE')
E1092 les types de données ne correspondent pas ('READ_VAR.ADR:ANY_ARRAY_INT'<->'$LINK24089:BOOL')
Il y a quelque chose que je ne comprend pas, quelqu'un pourrait il m'aiguiller
Merci
- itasoft
- Mi homme - Mi automate
- Messages : 7035
- Inscription : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Programmation Mesure de Puissance dans M340
@bast
EXEMPLE:
(* sur le port série ModBus integré voie 0 *)
(* sur le port série ModBus integré voie 0
Lecture du compteur horaire l'adresse 768
et rangement de la valeur lue dans le variable COMPTEUR Type DINT
*)
%M6:=%S6;
if RE(%M6) AND NOT Management[0].0 then
Management[0]:=0;
Management[1]:=0;
Management[2]:=20; (*TimeOut*)
READ_VAR(ADDM('0.0.0.0'), '%MW', 50768, 2, Management, Receiving_Array);
end_if;
(* Conversion *)
COMPTEUR:= INT_AS_DINT(Receiving_Array[0], Receiving_Array[1]);
(* Ecriture primaire du TP = 420V à l'adresse 57352 *)
PRIMAIRE_TP:=420;
(* Ranger la valeur dans 2 mots INT du tableau *)
Transmit_Array[0]:=LOW_INT(PRIMAIRE_TP);
Transmit_Array[1]:=HIGH_INT(PRIMAIRE_TP);
if FE(%M6) AND NOT Management[0].0 then
Management[0]:=0;
Management[1]:=0;
Management[2]:=20; (*TimeOut*)
WRITE_VAR(ADDM('0.0.0.0'),'%MW', 57352, 2, Transmit_Array, Management);
end_if;
EXEMPLE:
(* sur le port série ModBus integré voie 0 *)
(* sur le port série ModBus integré voie 0
Lecture du compteur horaire l'adresse 768
et rangement de la valeur lue dans le variable COMPTEUR Type DINT
*)
%M6:=%S6;
if RE(%M6) AND NOT Management[0].0 then
Management[0]:=0;
Management[1]:=0;
Management[2]:=20; (*TimeOut*)
READ_VAR(ADDM('0.0.0.0'), '%MW', 50768, 2, Management, Receiving_Array);
end_if;
(* Conversion *)
COMPTEUR:= INT_AS_DINT(Receiving_Array[0], Receiving_Array[1]);
(* Ecriture primaire du TP = 420V à l'adresse 57352 *)
PRIMAIRE_TP:=420;
(* Ranger la valeur dans 2 mots INT du tableau *)
Transmit_Array[0]:=LOW_INT(PRIMAIRE_TP);
Transmit_Array[1]:=HIGH_INT(PRIMAIRE_TP);
if FE(%M6) AND NOT Management[0].0 then
Management[0]:=0;
Management[1]:=0;
Management[2]:=20; (*TimeOut*)
WRITE_VAR(ADDM('0.0.0.0'),'%MW', 57352, 2, Transmit_Array, Management);
end_if;
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Programmation Mesure de Puissance dans M340
Un grand merci itasoft
Je l'avais fait en ladder mais je regarderai ça demain
Je l'avais fait en ladder mais je regarderai ça demain