Page 1 sur 2
Remontée valeurs énergétiques ATV600 via Modbus TCP
Posté : 09 oct. 2024, 13:35
par Nikolo
Bonjour à tous,
Je cherche à récupérer les valeurs de consommation énergétique (kWh, MWh et GWh) réparties dans 3 mots en 16 bits non signés (aux adresses 10607, 10608 et 10609).
J'ai la documentation "ATV 600 Communication Parameters" sous les yeux, j'essaie d'interroger les adresses correspondantes avec mon M340 par une instruction READ_VAR.
Cependant, la requête renvoie une erreur (Operation Report code 0x02 : "Incorrect Response"). J'ai essayé d'interroger d'autres adresses du variateur, j'arrive à récupérer des informations correctement (comme le mot d'état ou l'intensité consommée, par exemple).
C'est comme si je ne tapais pas dans la bonne zone d'adressage de mon variateur. Au secours
Bien à vous,
Nikolo.
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
Posté : 09 oct. 2024, 13:45
par itasoft
Est que dans ton READ_VAR tu les reçois sur un tableau de 3 mots du type UINT ou WORD ?
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
Posté : 09 oct. 2024, 14:20
par Nikolo
Bonjour !
La fonction READ_VAR ne m'autorise que des INT en sortie.
Cdlt,
Nikolo
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
Posté : 09 oct. 2024, 14:28
par Bruce33
Bonjour,
Essayez de lire les informations avec un autre client Modbus TCP (Modbus Doctor ou Vijeo Designer par exemple) pour savoir si le problème vient de votre programme.
Essayez de lire un seul mot pour commencer.
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
Posté : 09 oct. 2024, 16:10
par itasoft
Nikolo a écrit : ↑09 oct. 2024, 14:20
Bonjour !
La fonction READ_VAR ne m'autorise que des INT en sortie.
--------
c'est juste, j'avais oublié, lol
Cdlt,
Nikolo
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
Posté : 10 oct. 2024, 05:26
par Nikolo
J'ai pu me connecter au var sur SoMove. Je retrouve bien les variables que je veux récupérer, et leur adresse est conforme au fichier de paramètres fourni par Schneider sur leur site.
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
Posté : 10 oct. 2024, 08:50
par itasoft
Bizarre, bizarre, montre ta ligne de programme avec ton READ_VAR
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
Posté : 10 oct. 2024, 09:26
par Nikolo
Bonjour,
Le code utilisé est :
Code : Tout sélectionner
IF %S13 THEN
Gest_Com_Energie[0].0 := FALSE;
CPT_ENERGIE:=0;
END_IF;
Gest_Com_Energie [2]:= 5;
(* Scrutation Energie variateur ATV630 2P2 *)
IF %S6 AND (CPT_ENERGIE=0) AND NOT TEMP_ENERGIE THEN
IF NOT Gest_Com_Energie[0].0 THEN
CPT_ENERGIE:=CPT_ENERGIE+1;
READ_VAR (ADR := ADDM('0.1.0{10.68.154.82}'),
OBJ := '%MW',
NUM := 10601,
NB := 3,
GEST := Gest_Com_Energie,
RECP => Table_energie_2P2);
END_IF;
END_IF;
(* Scrutation Energie variateur ATV630 2P5 *)
IF %S6 AND (CPT_ENERGIE=1) AND NOT TEMP_ENERGIE THEN
IF NOT Gest_Com_Energie[0].0 THEN
CPT_ENERGIE:=CPT_ENERGIE+1;
READ_VAR (ADR := ADDM('0.1.0{10.68.154.83}'),
OBJ := '%MW',
NUM := 10601,
NB := 3,
GEST := Gest_Com_Energie,
RECP => Table_energie_2P5);
END_IF;
END_IF;
IF CPT_ENERGIE=2 THEN CPT_ENERGIE:=0; END_IF; (* si le compteur CPT=2 => on recommence *)
TEMP_ENERGIE := %S6;
(* VARIABLES POUR SOFREL *)
ENERGIE_2P2 := INT_TO_UDINT(Table_energie_2P2[2]) * 1000000 + INT_TO_UDINT(Table_energie_2P2[1]) * 1000 + INT_TO_UDINT(Table_energie_2P2[0]);
ENERGIE_2P5 := INT_TO_UDINT(Table_energie_2P5[2]) * 1000000 + INT_TO_UDINT(Table_energie_2P5[1]) * 1000 + INT_TO_UDINT(Table_energie_2P5[0]);
Le module à la position 0.1.0 est une carte réseau NOE110 sur le réseau 10.68.154.xxx
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
Posté : 10 oct. 2024, 10:13
par itasoft
rien compris, essayer de faire dans le bestial pour voir
ex:
%M6:=%S6;
IF re(%M6) THEN
Gest_Com_Energie[2]:=5;
READ_VAR (ADR := ADDM('0.1.0{10.68.154.82}TCP.MBS'),
OBJ := '%MW',
NUM := 10601,
NB := 3,
GEST := Gest_Com_Energie,
RECP => Table_energie_2P2);
END_IF;
ps:
pour tester on peut faire la requête sur soi même, remplacer 10.68.154.82 par la @IP de l'automate, et on doit avoir dans la tale de réception, les mots %MW10601 :3 de l'automate
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
Posté : 10 oct. 2024, 10:54
par Bruce33
Les variateurs ATV possèdent plusieurs 'Unit ID' :
- 255 pour accéder au scanner I/O
- 0 ou 248 pour accéder aux paramètres du variateur
Par défaut c'est le Unit ID 255 qui est utilisé.
Il faudrait donc tester l'adresse avec cette syntaxe :
ADDM('0.1.0{10.68.154.82}0') ou ADDM('0.1.0{10.68.154.82}248')
Par ailleurs votre calcul avec la conversion INT_TO_UDINT ne fonctionnera pas à tous les coups car cela supprime le bit de signe.
Il faudrait plutôt écrire : DWORD_TO_UDINT(INT_TO_DWORD(Table_energie_2P2[0])) par exemple.