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.DurandO a écrit : ↑08 févr. 2022, 14:0816#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é.
Aide sur test systeme Modbus RTU
Re: Aide sur test systeme Modbus RTU
"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!
L'urgence, c'est fait!
L'impossible, c'est en cours!
Pour les miracles, il faut prévoir un délai!
Re: Aide sur test systeme Modbus RTU
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.
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.
La confusion était à ce niveau, ou il manquait l'octet dont j'ai déjà parlé.
Re: Aide sur test systeme Modbus RTU
Merci je commence à mieux comprendreDurandO 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
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

- Messages : 2142
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Aide sur test systeme Modbus RTU
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 !
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 ! 
Re: Aide sur test systeme Modbus RTU
waouh ! Grand merci Philou 77 toi grand sorcier du modbus !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 !
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
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
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

- Messages : 2142
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Aide sur test systeme Modbus RTU
Salut !
De rien.
C'est du binaire, rien de sorcier la dedans.
De rien.
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 ! 
-
Gigi
- Forcené des structures

- Messages : 172
- Enregistré le : 13 janv. 2022, 22:51
- Localisation : Tourcoing
Re: Aide sur test systeme Modbus RTU
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+
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 !
Re: Aide sur test systeme Modbus RTU
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

- Messages : 2142
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Aide sur test systeme Modbus RTU
Re !
Tu as tout compris
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 ! 
-
philou77
- Mi homme - Mi automate

- Messages : 2142
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Aide sur test systeme Modbus RTU
Salut !
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 ! 


