La trame de requête est composée de ces octets 0 0 0 0 0 6 1 3 0 135 0 2 avec ce découpage :
0 0 = numéro de transaction (non utilisé car on ne traite qu'une requête à la fois)
0 0 = identifiant de protocole (toujours égal à 0 en Modbus TCP)
0 6 = nombre d'octets qui suivent
1 = Unit ID (adresse de l'esclave Modbus dans le cas d'une passerelle)
3 = code fonction (ici, lecture de registres de maintien)
0 135 = adresse du registre
0 2 = nombre de registres consécutifs
et la trame de réponse 0 0 0 0 0 3 1 131 2 :
0 0 = numéro de transaction
0 0 = identifiant de protocole
0 3 = nombre d'octets qui suivent
1 = Unit ID
131 = code fonction en erreur (= code fonction + 128)
2 = code d'erreur (ici, adresse de données invalide)
On peut demander simultanément plusieurs variables au serveur OPC mais celui-ci va générer autant de requêtes Modbus qu'il y a de variables. Il a forcément été paramétré pour fonctionner ainsi. Pour le client OPC c'est transparent.
Vous vous faites des idées à propos des différences entre le serveur OPC et le driver Modbus de Panorama.
Le protocole de communication OPC classique (appelée maintenant OPC DA) c'est une communication entre logiciels. Mais le serveur OPC utilise son driver Modbus pour communiquer avec la chaudière.
Si Panorama a son propre driver Modbus, le traitement de l'information est a priori plus direct.
Au lieu d'avoir :
supervision <---OPC---> serveur OPC <---Modbus---> chaudière
vous aurez :
supervision <---Modbus---> chaudière
Là où il faut faire attention, c'est aux possiblités de paramétrage du serveur Modbus pour être certain d'être compatible avec le matériel.
Notamment il faut vérifier que le driver Modbus de Panorama permet de forcer la lecture d'un seul registre par requête.
Modbusdoctor
-
tuscaonline
- Forcené des structures

- Messages : 178
- Enregistré le : 04 nov. 2015, 04:25
Re: Modbusdoctor
Il y'a souvent des zones où l'on a pas le droit de lire en modbus. Les driver modbus de tout les superviseur ont un paramètre qui permet de limiter le nombre de mot à lire. Ils faut joué avec.
-
tardieub
- Générateur de blocs fonctions

- Messages : 126
- Enregistré le : 08 déc. 2015, 10:46
- Localisation : Sourzac
Re: Modbusdoctor
Tres interressant tout ça, merci bien pour ces explications, je vais tacher de trouver où forcer cette lecture seule. J avoue avoir essayer un peu tout les options sur la config modbus de pano. Des que j ai la solution je la poste ici. Merci pour avoir pris le temps de detailler les trames, je vais ainsi appronfondir mes connaissance. Il est vrai que quand ca fonctionne, je passe a autre chose sans forcément maitriser le fonctionnement.
Bruno
Bruno
-
tardieub
- Générateur de blocs fonctions

- Messages : 126
- Enregistré le : 08 déc. 2015, 10:46
- Localisation : Sourzac
Re: Modbusdoctor
Bonjour, donc problème résolu, en effet il y a bien un moyen de forcer la lecture d'un seul mot a la fois sur le drivers Modbus de Panorama:
Le "MaxPduSize", il faut calculer le nombre d'octet (2) car mot de 16 bit et ajouter le chiffre du code fonction (3), donc 2+3=5. Par defaut la valeur est de 252.
Voici le detail de l'aide de Pano:
"MaxPduSize
Entier – Configuration
Taille maximale (octets) de la zone de donnée du protocole (code fonction et données).
La valeur par défaut correspond au standard MODBUS et permet une performance optimale dans la majorité des cas. Cependant, il peut être nécessaire d’abaisser cette valeur, en particulier pour un équipement utilisant le protocole JBUS pour lequel la valeur doit parfois être abaissée de 6 ou 10 (se reporter à la documentation de l’équipement).
Par exemple, pour certains automates qui n’acceptent que 120 mots par trame, cette valeur doit être initialisée à 120 mots * 2 + 1 (code fonction) = 241 octets.
Valeur par défaut : 252"
Merci a tous,
Voici le detail de l'aide de Pano:
"MaxPduSize
Entier – Configuration
Taille maximale (octets) de la zone de donnée du protocole (code fonction et données).
La valeur par défaut correspond au standard MODBUS et permet une performance optimale dans la majorité des cas. Cependant, il peut être nécessaire d’abaisser cette valeur, en particulier pour un équipement utilisant le protocole JBUS pour lequel la valeur doit parfois être abaissée de 6 ou 10 (se reporter à la documentation de l’équipement).
Par exemple, pour certains automates qui n’acceptent que 120 mots par trame, cette valeur doit être initialisée à 120 mots * 2 + 1 (code fonction) = 241 octets.
Valeur par défaut : 252"
Merci a tous,
- Bruce33
- Dieu du process

- Messages : 930
- Enregistré le : 28 oct. 2015, 06:54
- Localisation : Pas-de-Calais
Re: Modbusdoctor
Merci Bruno pour ce retour avec complément d'information qui pourra servir à d'autres personnes.
Le paramètre MaxPduSize n'est vraiment pas clair pour les utilisateurs, Codra aurait pu trouver un paramétrage plus explicite.
L'explication sur la longueur de 5 octets me laisse perplexe (le code fonction tient sur un seul octet). Surtout que le PDU de la requête n'a pas forcément la même longueur que le PDU de la réponse... Mais bon si ça marche c'est l'essentiel.
Le paramètre MaxPduSize n'est vraiment pas clair pour les utilisateurs, Codra aurait pu trouver un paramétrage plus explicite.
L'explication sur la longueur de 5 octets me laisse perplexe (le code fonction tient sur un seul octet). Surtout que le PDU de la requête n'a pas forcément la même longueur que le PDU de la réponse... Mais bon si ça marche c'est l'essentiel.
-
tuscaonline
- Forcené des structures

- Messages : 178
- Enregistré le : 04 nov. 2015, 04:25
Re: Modbusdoctor
Pour debugger les trame mosbus wireshark est très pratique.
- Bruce33
- Dieu du process

- Messages : 930
- Enregistré le : 28 oct. 2015, 06:54
- Localisation : Pas-de-Calais
Re: Modbusdoctor
Bonjour,tuscaonline a écrit : ↑02 oct. 2024, 07:01 Pour debugger les trame mosbus wireshark est très pratique.
Et qu'aurait pu apporter Wireshark dans le sujet traité ici ?
-
tuscaonline
- Forcené des structures

- Messages : 178
- Enregistré le : 04 nov. 2015, 04:25
Re: Modbusdoctor
Vous auriez vu que panorama Fait par défaut une requete de 200 mot alors qu'on en souhaite qu'un.