Question sur MODBUS V5

Bonjour,
J’ai une question sur le paramétrage des objets modbus.
La passerelle modbus est bien réglée et j’arrive à l’interroger.
La taille du mots est 8 bits avec 1 bit d’arrêt.
J’ai un tableau d’adressage sur lequel il faut faire un petit calcul pour trouver la bonne adresse dont voici un extrait:
image

Avec le détail du calcul ci-dessous:
image

Pour mon exemple je prends le offset 24 qui correspond a la température ambiante (acteullement 19 ou 20)
J’ai configuré l’objet lecture comme cela:

Le résultat est 502 sur une ana16.

Je pense que le format de réponse n’est pas bon car je ne prends pas en compte ce réglage:

(2) : ces numéros font référence à la valeur 16-bits signée en utilisant le format 2 compléments pour des valeurs négatives.

Mais je ne sais pas comment faire!

Merci pour vos avis éclairés!

Bonjour @patam ,

Si je suis le tableau et les indices dessous, le calcul de l’adresse de lecture serait :
2000 + 1x32+24 = 2056 : si l’adresse du périphérique est bien 1 et si l’on souhaite utiliser la nouvelle formulation (sinon le calcul donne 20000+1x32+24)
Votre ANA16 est bien paramétrée en REAL avec précision en décimale à 0 (vous obtiendrez donc des entiers relatifs): Je pense que l’ipx ds ce cas pratique aussi le complément à 2 pour les entiers négatifs.
Pouvez vous essayer avec la nouvelle adresse de lecture?

Bonjour @Jweb et merci pour votre intérêt.
Mon adresse est 0 donc je suis sur 2000+ 0x32 + 24 = 2024
Je pensais que la position de données 2000 était pour le code fonction.
J’ai la valeur 0 avec l’adresse 2024, j’ai paramétré l’ana en RAW

vous avez paramétré le device que vous essayez de lire en adresse 0 ? Je n’aurais pas fait cela. et l’ID Périphérique indique 1 ds votre objet Modbus…

Oui, désolé… Je me suis mal expliqué.
La passerelle modbus a bien l’adresse 1. Par contre l’adresse à prendre en compte pour :

2000+ Adresse x 32 + Offset.
Où « Adresse » est l’adresse du périphérique dérière la passerelle

Je peux interroger 64 périphériques avec cette passerelle, actuellement j’en ai 1 seul qui est en 0

Ah ouiii avec une passerelle c’est plus compliqué… la trame recombinée par l’ipx v5 prend l’adresse du périphérique à interroger .
Essayer en mettant 0 ds l’adresse du périphérique

Très étrange… Avec 0 en adresse de périphérique j’ai les même valeurs qui remontent. Je m’attendais à avoir une erreur.
Que j’ai 0 ou 1 en ID du périphérique dans l’objet lescture j’ai la même chose qui remonte…

Je tilte seulement maintenant… Mais le code fonction commençant par 2 me fait plus penser à de la lecture de n bits d’entrée … Pouvez vous changer le mode svp?

image

J’ai eu 3 messages différents d’erreur avec ce la fonction lecture n bits d’entrée, celle de l’image au dessus, l’erreur Send Modbus CRC erreur et une erreur de format que je n’ai pas noté.

Réessayez avec l’ID Periphérique = 0 svp

Pour l’adresse 2024
Avec lecture bits d’entrée et ID 0 je ne communique pas « délai d’attente dépassé »
Avec lecture bits d’entrée et ID 1 je communique mais j’ai " Send Modbus exception code 01"

Chaque fois que la trame n’abouti pas je dois redémarrer l’IPX pour réinitialiser le modbus… et tout mes délais en cours se bloquent… :triumph:

Pouvez vous câbler le périphérique en directe sur l’ipx pour faire les essais?
Avez vous essayé « l’ancien » mode avec les 20000?
Pouvez vous changer l’adresse du périphérique de 0 à 2?

Le périphérique n’est pas modbus (Hitachi PSC6RAD), c’est pour cela que j’ai besoin de la passerelle. C’est une passerelle Modbus/Hlink (Hitachi HC-A64MB) pour dialoguer avec le bus Hitachi.

Je ne peux pas non plus changer l’adresse du périphérique car il est seul et la passerelle le détecte automatiquement et l’affecte à la première adresse libre (0).

J’ai trouvé le mode d’emploi…
Juste qq petites verifs:


Les paramètres sont bons sur la V5 (j’imagine que oui sinon la comm ne passerait pas)

image
Avez vous le meme tableau que ds le manuel pour votre appareil?
Si oui alors l’adresse Iu est 1… pour l’Id 0
Re-passez en mode lecture de registre.

Oui j’ai le même tableau, mais Id 0 correspond justement à l’adresse que l’on renseigne dans la formule 2000 + adresse x32…
Ou correspond à l’adresse du cycle réfrigérant et Iu (i majuscule) correspond à l’adresse de l’unité intérieure.
quand on a qu’une seule unité intérieure, Ou et Lu sont réglés à 0. Donc chez moi j’ai id, Ou et Iu à 0.

@Jweb
Je ne saurais vous expliquer mais j’ai réussi à communiquer avec la passerelle…
Avec id 1
En lecture, lecture registre d’entrée adresse 2000 + offset
En écriture, écriture registre seul adresse 2000 + offset

Je vais continuer pour voir ce que j’arrive à remonter comme point. En tout cas, merci beaucoup pour vos réponses qui m’ont permis d’étendre ma réflexion!!

Je me pose la question de l’écriture avec une ana16.
Si je veux automatiser l’envoi de consigne je peux utiliser setval dans les scénario, mais ça veut dire qu’il faut que je crée autant d’ana16 que je veux de consigne? Idem pour le on off avec les valeurs 0 e 1?
De plus il faut associer un clignotant à chaque objet lecture ou écriture, dommage que le polling ne soit pas automatique et réglable dans la configuration du modbus.

1 « J'aime »

Bonsoir @Jweb,
Toujours avec la passerelle dont on a parlé au dessus, j’ai un petit soucis pour la lecture des températures. La différence avec les autres est la suivante:

Ces numéros font référence à la valeur 16-bits signée en utilisant
le format 2 compléments pour des valeurs négatives

Je n’arrive pas à remonter ces registres. Sinon le reste fonctionne.
Y a t’il une astuce pour ça?

bonsoir @patam

  1. est ce que vos variables st bien en REAL?
  2. pourriez-vous svp poster une copie d’écran de votre objet read?
  3. quel est le range possible des valeurs positives et négatives?
  4. Pouvez-vous avoir des nombres à virgules? ou seulement des entiers relatifs?
  5. Quels résultats obtenez-vous en cas de nombre négatif?