Aide sur test systeme Modbus RTU

Partie du forum pour tout ce qui concerne la partie réseau de communication dans l'industrie. Forum, conseil, astuce et entraide sur le réseau industriel tel que la connexion modbus, ethernet, fipio .
Avatar du membre
Mantysse
Dieu du process
Dieu du process
Messages : 757
Enregistré le : 20 oct. 2015, 08:17
Localisation : MiP

Re: Aide sur test systeme Modbus RTU

Message par Mantysse »

DurandO a écrit : 08 févr. 2022, 14:08
Mantysse a écrit : 08 févr. 2022, 13:04 J'vois pas trop la différence entre les 2
16#0F cela fait 15 en décimal : c'est ici que tu t'es trompé. Il n'y a rien de si grave.
Ensuite la confusion venait du nombre d'octet 17. Il manquait l'explication de l'octet 7 nb octet pour comprendre et donc du coup 16 octet de valeur de forçage.

Il est toujours plus facile de corriger les erreurs des autres.
Dommage que ce ne soit pas les cas pour nos propres erreurs : j'en serai le premier avantagé.
Il y a quand même un truc que je ne comprends pas XD, je ne vois pas où je fais mention de la fonction 15 en numérique, j'ai juste parlé de la fonction en mode alphabétique en anglais (Force multiple coil register) et en français (Ecriture de plusieurs bits), sinon on parle bien de la même fonction tout les deux... bref je vais pas m'attarder c'est juste que je ne vois pas le soucis.
"Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément." Nicolas Boileau

L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
DurandO
Maître du binaire
Maître du binaire
Messages : 482
Enregistré le : 21 mars 2021, 15:31

Re: Aide sur test systeme Modbus RTU

Message par DurandO »

Bonjour,
autant pour moi.
Je ne sais pas ou j'ai vu fonction 16, je devais être occupé sur autre chose en même temps et mon cerveau m'a joué un tour.
Mantysse a écrit : 02 févr. 2022, 09:04 01 --> Numéro d'esclave --> Facile c'est le 1
0F --> Numéro de fonction --> Force multiple coil register --> Ecriture de plusieurs bits
0100 --> Adresse de départ dans ton esclave
0080 --> Nombre d'octet a écrire
9755 --> CRC
La confusion était à ce niveau, ou il manquait l'octet dont j'ai déjà parlé.
Avatar du membre
Klystron
Apprend le binaire
Apprend le binaire
Messages : 9
Enregistré le : 23 janv. 2022, 18:37

Re: Aide sur test systeme Modbus RTU

Message par Klystron »

DurandO a écrit : 08 févr. 2022, 10:56 Bonjour,
Mantisse s'est trompé dans n° de fonction: il s'agit de la fonction 15 écriture n bits.
Tu peux en retrouver la description iciProtocole Modbus
Voir en page 17
La trame étant constituée ainsi :
Esclave (01) | Fonction (0F) | Adr.Bit (0100) | nb bits forcés (0080) | Nb Octet (10 soit 16 octets) | valeur de forcage sur 16 octets (128 bits) | CRC
Ceci devrait t'éclairer.

Durand.O
Merci je commence à mieux comprendre

message maitre > esclave : 01 0F 0100 0080 1004000000000400000401020600100000823C

soit 01 0F 0100 (première adresse) 0080 ( nombre d'adresses suivantes : 128 ) .

0100 = première adresse d'alarme (256)
0101 = deuxième adresse d'alarme (257)
0110 = troisième adresse d'alarme (258)
etc. jusqu'à 0170 (368) soit la dernière alarme utilisée par l'esclave (même si elle ne va pas jusqu'à 128 adresses).

bref, Je comprends pourquoi les lignes d'alarmes de l'esclave ont été numérotées de 256 à 368 par le gars qui a écrit le logiciel.

Par contre, la trame ci dessus me déclenche 8 alarmes sur l'esclave : 258, 298, 322, 328, 337, 345, 346, 364

Maintenant je tente de démêler tout ça.

Je fais une supposition : le maitre n'envoie QUE les alarmes déclenchées (ici 8 alarmes) sans aller jusqu'à 128 ?

Et si par exemple toute les alarmes étaient déclenchées alors la trame serait beaucoup plus longue J'ai bon ?
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Aide sur test systeme Modbus RTU

Message par philou77 »

Salut !

01 Esclave
0F Fonction
01 Adresse départ (hi byte)
00 Adresse départ (Low Byte)
00 Nombre de Bits ( Hi byte)
80 Nombre de Bits (low byte)
10 Nombre d'octets
04 Byte 1 (8 bits) (hi Byte) adresses #100 à #107 (256 à 263)
00 Byte 2 (8 bits) (Low Byte) adresse #108 à #10F (264 à 271)
00 Byte 3 (8 bits) (hi Byte) adresse #110 à #117 (272 à 279)
00 Byte 4 (8 bits) (Low Byte) adresse #118 à #11F (280 à 287)
00 Byte 5 (8 bits) (hi Byte) adresse #120 à #127 (288 à 295)
04 Byte 6 (8 bits) (Low Byte) adresse #128 à #12F (296 à 303)
00 Byte 7 (8 bits) (hi Byte) adresse #130 à #137 (304 à 311)
00 Byte 8 (8 bits) (Low Byte) adresse #138 à #13F (312 à 319)
04 Byte 9 (8 bits) (hi Byte) adresse #140 à #147 (320 à 327)
01 Byte 10 (8 bits) (Low Byte) adresse #148 à #14F (328 à 335)
02 Byte 11 (8 bits) (hi Byte) adresse #150 à #157 (336 à 343)
06 Byte 12 (8 bits) (Low Byte) adresse #158 à #15F (344 à 351)
00 Byte 13 (8 bits) (hi Byte) adresse #160 à # 167 (352 à 359)
10 Byte 14 (8 bits) (Low Byte) adresse #168 à #16A (360 à 367)
00 Byte 15 (8 bits) ( hi Byte) adresse #170 à # 1177 (368 à 375)
00 Byte 16 (8 bits) (Low Byte) adresse #178 à #17F (376 à 383)
82 CRC
3C CRC

Si le nombre de bits à écrire n'est pas un multiple de 8, alors les bits non utilisés dans le dernier Byte doivent être à 0

Tes bits sont censés être rangés de la manière suivante
Adresse 100 (de départ)

107-106-105-104-103-102-101-100
-----Hi Byte ---------------------------

115-114-113-112-111-110-109-108
-----Low Byte -------------------------

Etc.....



Dans ta trame
04 Byte 1 (8 bits) ( hi Byte) adresses #100 à #107 (256 à 263)
ton octet vaut 4 donc 3ème bit à 1
le 3eme bit à 1 du Hi Byte (en partant de la droite) est bien l'adresse #102 = 258 (ton alarme qui est activée)

04 Byte 6 (8 bits) (Low Byte) adresse #128 à #12F (296 à 303)
le 3eme bit à 1 du low Byte (en partant de la droite) est bien l'adresse #12A = 298 (ton alarme qui est activée)

N'oublies pas que tu veux écrire des bits mais ils sont contenus dans des octets !!
Tu écris donc 8 bits d'un coup, dans ton cas en écrivant 16 octets, tu écris les 128 bits d'un coup, à chaque fois !!

etc... je vais pas décoder toute la trame , à toi de jouer un peu...
Fais-toi un classeur excel pour pouvoir mettre les bonnes valeurs aux bons endroits pour activer tes alarmes !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar du membre
Klystron
Apprend le binaire
Apprend le binaire
Messages : 9
Enregistré le : 23 janv. 2022, 18:37

Re: Aide sur test systeme Modbus RTU

Message par Klystron »

philou77 a écrit : 09 févr. 2022, 00:46 Salut !

01 Esclave
0F Fonction
01 Adresse départ (hi byte)
00 Adresse départ (Low Byte)
00 Nombre de Bits ( Hi byte)
80 Nombre de Bits (low byte)
10 Nombre d'octets
04 Byte 1 (8 bits) (hi Byte) adresses #100 à #107 (256 à 263)
00 Byte 2 (8 bits) (Low Byte) adresse #108 à #10F (264 à 271)
00 Byte 3 (8 bits) (hi Byte) adresse #110 à #117 (272 à 279)
00 Byte 4 (8 bits) (Low Byte) adresse #118 à #11F (280 à 287)
00 Byte 5 (8 bits) (hi Byte) adresse #120 à #127 (288 à 295)
04 Byte 6 (8 bits) (Low Byte) adresse #128 à #12F (296 à 303)
00 Byte 7 (8 bits) (hi Byte) adresse #130 à #137 (304 à 311)
00 Byte 8 (8 bits) (Low Byte) adresse #138 à #13F (312 à 319)
04 Byte 9 (8 bits) (hi Byte) adresse #140 à #147 (320 à 327)
01 Byte 10 (8 bits) (Low Byte) adresse #148 à #14F (328 à 335)
02 Byte 11 (8 bits) (hi Byte) adresse #150 à #157 (336 à 343)
06 Byte 12 (8 bits) (Low Byte) adresse #158 à #15F (344 à 351)
00 Byte 13 (8 bits) (hi Byte) adresse #160 à # 167 (352 à 359)
10 Byte 14 (8 bits) (Low Byte) adresse #168 à #16A (360 à 367)
00 Byte 15 (8 bits) ( hi Byte) adresse #170 à # 1177 (368 à 375)
00 Byte 16 (8 bits) (Low Byte) adresse #178 à #17F (376 à 383)
82 CRC
3C CRC

Si le nombre de bits à écrire n'est pas un multiple de 8, alors les bits non utilisés dans le dernier Byte doivent être à 0

Tes bits sont censés être rangés de la manière suivante
Adresse 100 (de départ)

107-106-105-104-103-102-101-100
-----Hi Byte ---------------------------

115-114-113-112-111-110-109-108
-----Low Byte -------------------------

Etc.....



Dans ta trame
04 Byte 1 (8 bits) ( hi Byte) adresses #100 à #107 (256 à 263)
ton octet vaut 4 donc 3ème bit à 1
le 3eme bit à 1 du Hi Byte (en partant de la droite) est bien l'adresse #102 = 258 (ton alarme qui est activée)

04 Byte 6 (8 bits) (Low Byte) adresse #128 à #12F (296 à 303)
le 3eme bit à 1 du low Byte (en partant de la droite) est bien l'adresse #12A = 298 (ton alarme qui est activée)

N'oublies pas que tu veux écrire des bits mais ils sont contenus dans des octets !!
Tu écris donc 8 bits d'un coup, dans ton cas en écrivant 16 octets, tu écris les 128 bits d'un coup, à chaque fois !!

etc... je vais pas décoder toute la trame , à toi de jouer un peu...
Fais-toi un classeur excel pour pouvoir mettre les bonnes valeurs aux bons endroits pour activer tes alarmes !
waouh ! Grand merci Philou 77 toi grand sorcier du modbus !

0080 hexa = 128 adresses

10 hexa = 16 octets ( 16 x 8 adresses d'alarmes )

premier byte = 8 alarmes de 256 à 263 et ainsi de suite. On dit quelle alarmes est déclenchée en mettant une valeur allant de 01 à 08 hexa

On ne peut déclencher qu'une seule alarme à la fois parmi les 8 adresses correspondantes à tel byte

si tout est à zero 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 alors aucune alarme n'est déclenchée

si le deuxième byte juste ci dessus vaut "40" alors je déclenche la 7eme adresse de mon deuxième byte ce qui correspond à l'adresse 270

Je viens de tester avec COMMIX 1.4 et ca marche :idea:
En plus COMMIX 1.4 ajoute automatiquement le CRC si on clique sur NO CRC et qu'on choisit "CRC 16 MODBUS RTU"

Comme COMMIX n'est pas un logciel dédié MODBUS (pas de trames toutes les secndes etc) je fais mon essai en relançant mon esclave avant qu'il ait déclaré défaut MODBUS :mrgreen:

pour résumer je me suis servi de :
1) au départ de CRC Calculator https://www.tahapaksu.com/crc/ en hexa et CRC16 ( il faut juste inverser le résultat AD7E devient 7EAD)
2) COMMIX 1.4 téléchargé sur une clé USB
3) convertisseur automatique https://www.patricklecoq.fr/convert/cnv_bin.php
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Aide sur test systeme Modbus RTU

Message par philou77 »

Salut !

De rien.
Klystron a écrit : 09 févr. 2022, 18:20 On ne peut déclencher qu'une seule alarme à la fois parmi les 8 adresses correspondantes à tel byte
Non, ton byte peut valoir de #0 à #FF - > 0 aucune alarme, FF les 8 alarmes à 1
C'est du binaire, rien de sorcier la dedans.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Gigi
Forcené des structures
Forcené des structures
Messages : 172
Enregistré le : 13 janv. 2022, 22:51
Localisation : Tourcoing

Re: Aide sur test systeme Modbus RTU

Message par Gigi »

En tout sur ce forum il y a des pros qui maîtrisent ,là c’est clair.
Y a t’il un copyright car je collerai bien mes étudiants avec.lol.
Ils vont encore me dire il est où le bloc fonction qui le fait tout seul?
A+
C'est en forgeant qu'on devient forgeron !
Avatar du membre
Klystron
Apprend le binaire
Apprend le binaire
Messages : 9
Enregistré le : 23 janv. 2022, 18:37

Re: Aide sur test systeme Modbus RTU

Message par Klystron »

philou77 a écrit : 09 févr. 2022, 18:42 Salut !

De rien.
Klystron a écrit : 09 févr. 2022, 18:20 On ne peut déclencher qu'une seule alarme à la fois parmi les 8 adresses correspondantes à tel byte
Non, ton byte peut valoir de #0 à #FF - > 0 aucune alarme, FF les 8 alarmes à 1
C'est du binaire, rien de sorcier la dedans.
OK
J'avais constaté une anomalie : deux déclenchements sur le même byte, ce qui n'était pas cohérent avec ce que je croyais.
on a donc 8 alarmes dans un byte qui valent 1,2,4,8,16,32,64,128
si j'additionne tout je trouve 255 soit FF en Hexa, mes 8 alarmes sont déclenchées.
si j'additionne 1,2,4,8 =15 0F hexa les 4 premières alarmes sont déclenchée et ainsi de suite.

Merci encore Philou77
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Aide sur test systeme Modbus RTU

Message par philou77 »

Re !

Tu as tout compris :)
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Aide sur test systeme Modbus RTU

Message par philou77 »

Salut !
Gigi a écrit : 09 févr. 2022, 19:51 En tout sur ce forum il y a des pros qui maîtrisent ,là c’est clair.
Y a t’il un copyright car je collerai bien mes étudiants avec.lol.
Ils vont encore me dire il est où le bloc fonction qui le fait tout seul?
A+
Le forum est public alors non, je ne pense pas qu'il y ait un quelconque copyright..
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Répondre