Remontée valeurs énergétiques ATV600 via Modbus TCP
Remontée valeurs énergétiques ATV600 via Modbus TCP
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.
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.
- itasoft
- Mi homme - Mi automate
- Messages : 7415
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
Est que dans ton READ_VAR tu les reçois sur un tableau de 3 mots du type UINT ou WORD ?
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
Bonjour !
La fonction READ_VAR ne m'autorise que des INT en sortie.
Cdlt,
Nikolo
La fonction READ_VAR ne m'autorise que des INT en sortie.
Cdlt,
Nikolo
- Bruce33
- Dieu du process
- Messages : 795
- Enregistré le : 28 oct. 2015, 06:54
- Localisation : Pas-de-Calais
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
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.
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.
- itasoft
- Mi homme - Mi automate
- Messages : 7415
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
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.
- itasoft
- Mi homme - Mi automate
- Messages : 7415
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
Bizarre, bizarre, montre ta ligne de programme avec ton READ_VAR
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
Bonjour,
Le code utilisé est :
Le module à la position 0.1.0 est une carte réseau NOE110 sur le réseau 10.68.154.xxx
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]);
- itasoft
- Mi homme - Mi automate
- Messages : 7415
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
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
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
Modifié en dernier par itasoft le 10 oct. 2024, 11:56, modifié 7 fois.
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
- Bruce33
- Dieu du process
- Messages : 795
- Enregistré le : 28 oct. 2015, 06:54
- Localisation : Pas-de-Calais
Re: Remontée valeurs énergétiques ATV600 via Modbus TCP
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.
- 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.