Protocole Modbus

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 23

Guide d'intégration Le protocole Modbus

Modbus / Jbus

Différence des trames ASCII ou RTU


Définition : ASCII, Américan Standard
Certains équipements permettent le choix entre ces deux formats :
Code for Information Interchange. b Le format RTU permet pour une même vitesse de transmission un plus fort débit
de données.
Définition : RTU, Remote Terminal Unit. b Le format ASCII offre une "souplesse" plus importante sur les timing inter-octet
(jusqu'à 1 seconde) et constitue une véritable transmission asynchrone.
Ces deux formats de trames peuvent êtres
utilisés dans le protocole MODBUS, mais
sont incompatibles entre eux. Environ 95%
des modules communicants sur MODBUS
utilisent des trames "RTU".

Différences des protocoles MODBUS ou


MODBUS+
b Pour le protocole MODBUS, les récepteurs lisent l’adresse et reconnaissent ainsi
quel est le module concerné par le message. Ils connaissent aussi la longueur du
Définition : Le protocole MODBUS utilise message ce qui permet de détecter les messages "tronqués".
des trames dont le début et la fin sont b En MODBUS + l'adresse MODBUS est convertie par l'émetteur en une adresse
standards. L'adresse est placée en début de nœud et de chemin d'accès sur le réseau.
de trame.
Définition : Le protocole MODBUS+ utilise
des trames avec des délimiteurs de début
et de fin spécifiques au réseau. L'adresse
destinataire est intégrée au protocole.

Le protocole JBUS utilise une partie du Modbus / Jbus


protocole MODBUS.
Nota : Les produits (modules) peuvent ne
contenir qu'une partie des fonctions (voir Structure de la trame Jbus Modbus
N° d'esclave 1 à 255 1 à 247
notice produits). Code fonction 1 à 16 (sauf 9 & 10) 1 à 24
Longueur trame 255 Octets max. 261 Octets max.
CRC CRC16 CRC16
Remarque : les @ Modbus commencent à Détection des trames * silence > 3 caractères silence > 1,5 ou > 3,5
"1", les @ JBus commencent à "0". caractères
* Cette différence ne pose pas de problème à des débits supérieurs à 1200 bits/s car ces temps
sont inférieurs au temps de traitement de l'équipement (temps de retournement).
Fonctions standard
F1 Lecture de n bits à @ 0 to FFFF Lecture de n bits à @ 1 to 9999
(1 < n < 2000)
F2 Lecture de n bits à @ 0 to FFFF Lecture de n bits à @ 10001 to
(1 < n < 2000) 19999
F3 Lecture de n mots à @ 0 to Lecture de n mots à @ 40001
FFFF (1 < n < 125) to 49999
F4 Lecture de n mots à @ 0 to Lecture de n mots à @ 30001
FFFF (1 < n < 125) to 39999
F5 Ecriture de 1 bit à @ 0 to FFFF Ecriture de 1 bit à @ 1 to 9999
F6 Ecriture de 1 mot à @ 0 Ecriture de 1 mot à @ 40001 to
to FFFF 49999
F7 Lecture rapide de 8 bits Lecture du status d'exception
utilisateur (8 bits) Signale des défauts
sur l'équipement
F15 F15 Ecriture de n bits à @ 0 to Ecriture de n bits à @ 1 to 9999
FFFF
F16 Ecriture de n mots à @ 0 to Ecriture de n mots à @ 40001
FFFF to 49999

56 Schneider Electric
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Le protocole MODBUS permet de lire ou


d'écrire un ou plusieurs bits, un ou
plusieurs mots, le contenu du compteur Structure de la trame Jbus Modbus
d'évènements ou celui des compteurs de Fonctions de diagnostic (sous-fonctions)
F8 Lecture des compteurs de Lecture des compteurs de
diagnostic. diagnostics diagnostics
(01) Donnée = 0000=>pas de Réponse
réponse émise pas de RAZ compteurs
donnée = FF00 reset des
compteurs
(02-03-04-0A) Identiques Identiques
(0B) Comptabilise les trames sans Comptabilise toutes les trames
erreur de CRC
(0C-0D) Identiques Identiques
(0E) Non incrémenté sur une Incrémenté sur une diiffusion
diffusion
(0F) Comptabilise le nombre de Comptabilise le nombre de non
diffusions reçues réponses de l’esclave
(10-11) Identiques Identiques
(12) Comptabilise les erreus de Comptablilise les overrun
caractères (format, parité
etc...)
F11 Compteur d’évènement. Compteur d’évènement.
Incrémenté sur une diffusion. Non incrémenté sur une
Dans la réponse, le 1er mot diffusion.
est toujours à 0 Dans la réponse, le 1er mot est
à 0 ou FFFF (status)
F12 Historique des 64 derniers Historique de 64 derniers
échanges. échanges.
Dans la réponse, le 1er mot Dans la réponse, le 1er mot est
est toujours à 0. à 0 ou FFFF (status).
Codes d’exception
(01-02-03-05-07-08) Identiques Identiques
(04) Equipement non prêt Erreur pendant le traitement de
la requête
(09) Chevauchement de zone Non implémenté
mémoire
Fonctions étendues (sous-fonctions)
F13 Commandes programme Commandes programme
(01 - 02) Identiques Identiques
(03 - 04) Adresse sur 24 bits Adresse sur 16 bits + 8 bits
pour le numéro de page
Extension d'adresse
(25) identique identique
(26) Octet de donnée = 00 or 80h Octet de donnée = 06h
F14 identique Identique

Remarque : la fonction 13 possède 43 sous-fonctions, Jbus en utilise seulement 6.

Schneider Electric 57
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Les échanges sont réalisés à l'initiative du


Caractérisation des échanges
maître et comportent une demande du
maître et une réponse de l'esclave.

E52348
Maître

Demande

Réponse

Esclave 1 Esclave 2 Esclave 3

Les commandes de diffusion sont obligatoirement des commandes d'écriture. Il n'y


Toutes les trames échangées ont la même a pas de réponse émise par les esclaves.
E52349

structure.
Code Zone de Zone de
E52350

N° esclave données
fonction contrôle Maître

CRC 16
Diffusion
Les demandes du maître sont adressées
soit :
b A un esclave donné (identifié par son
Esclave 1 Esclave 2 Esclave 3
numéro dans le premier octet de la trame
de demande).
b A tous les esclaves (diffusion).

58 Schneider Electric
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Chaque trame contient quatre types d'informations :


Tout échange comporte deux trames, une b Le numéro de l'esclave (1 octet) :
demande du maître et une réponse de v le numéro de l'esclave spécifie l'esclave destinataire (1 à 255). Si ce numéro est
zéro, la demande concerne tous les esclaves, il n'y a pas de message de réponse.
l'esclave. b Le code fonction (1 octet) :
Sauf pour la diffusion (écriture seulement) v il permet de sélectionner une commande (lecture, écriture, bit, mot) et de vérifier
ou l'échange est constitué d'une trame du si la réponse est correcte.
maître. b Le champ information (n octets) :
v il contient les paramètres liés à la fonction : adresse bit, adresse mot, valeur de bit,
valeur de mot, nombre de bits, nombre de mots.
b Le mot de contrôle (2 octets) :
v il est utilisé pour détecter les erreurs de transmission.

Diagramme d'occupation du support de transmission

Analyse de la réponse
et préparation de
E52351

l'échange suivant

Maître D D

Esclave N°1 R

Esclave N°n R

Support
physique

Temps
Echange i-1 Echange i Echange i+1

D Demande R Réponse

Attente Diffusion
Temps de Exécution par l'esclave
retournement

Remarque : les durées de DEMANDE, REPONSE, DIFFUSION, ATTENTE,


TRAITEMENT sont liées à la fonction réalisée.

Schneider Electric 59
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Les principes utilisés


Synchronisation des échanges
Tout caractère reçu après un silence supérieur à 3 caractères est considéré comme
un début de trame.

Fin du bit stop Début du

E52352
bit start

Silence 3 caractères

Caractère Caractère

Nota : Respectez un silence sur la ligne entre deux trames d'au moins trois
caractères.

Présentation des trames


Le contenu des trames qui suivent
Présentation des trames de demande et de réponse
est donné en hexadécimal.
b Demande
E52353

N° esclave Code Informations Mot de contrôle


(1 à FF) fonction

1 octet 1 octet n octets 2 octets

Lorsque le message
est reçu par l'esclave
ce dernier lit le mot
de contrôle et accepte
ou refuse le message.
Information nécessaire
à la demande adresse
bits, mots valeur bits,
mots nombre de bits,
nombre de mots.
Ce code permet
de sélectionner
les commandes
disponibles.

b Réponse

N° esclave Code Informations Mot de contrôle


(1 à FF) fonction

1 octet 1 octet n octets 2 octets

Valeur des bits ou des mots lus,


valeur des bits ou des mots écrits,
nombre de mots ou nombre de bits,
diagnostic.

60 Schneider Electric
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Chaque module possède une adresse


L'adressage
unique sur le réseau, comprise entre 1 et Le mode d'adressage diffère suivant les modules :
b Par roue codeuse :
255 (1 et FF en hexadécimal). v la roue n°1 donne le poids fort des adresses,
La valeur de cette adresse est codée sur un v la roue n°2 donne les poids faibles.
octet, la valeur 0 est interdite car réservée b Par clavier ; le principe reste le même, mais la méthode peut différer :
à la diffusion. v paramétrage en une seule fois,
v ou paramétrage en deux opérations (poids fort/poids faible).

Dans tous les cas, se reporter à la notice de mise en œuvre des modules.

Le protocole JBUS possède14 fonctions :


Les fonctions
Les trames de demande et de réponse ont Fonctions JBUS :
b Fonction 1 ; Lecture de n bits de sorties ou internes.
une taille maximale de 255 octets. b Fonction 2 ; Lecture de n bits d'entrées.
b Fonction 3 ; Lecture de n mots de sorties ou internes.
b Fonction 4 ; Lecture de n mots d'entrées.
b Fonction 5 ; Ecriture de 1 bit.
b Fonction 6 ; Ecriture de 1 mot.
b Fonction 7 ; Lecture rapide de 8 bits.
b Fonction 8 ; Diagnostic des échanges.
b Fonction 11 ; Lecture du compteur d'événement.
b Fonction 12 ; Lecture du buffer trace.
b Fonction 13 ; Lecture/écriture adresse > FFFFh ou commande programme
(téléchargement, ...).
b Fonction 14 ; Diagnostic associé aux commandes programmes.
b Fonction 15 ; Ecriture de n bits.
b Fonction 16 ; Ecriture de n mots.

Schneider Electric 61
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Le maître émet une demande en indiquant : Contrôle des messages reçus par l'esclave
b Le numéro d'esclave. Contenu d'une réponse exception.
b Le code fonction.
b Les paramètres de la fonction.

E52357
N° esclave 1 CRC 16
(1 à FF)
Il calcule et émet le contenu du mot de PF * pf *
contrôle (CRC 16). 1 octet 1 octet 1 octet 2 octets
Lorsque l'esclave reçoit le message de
demande, il le range en mémoire, calcule le Code d'exception :
CRC et le compare au CRC 16 reçu : 1. - Code fonction inconnu
2. - Adresse incorrecte
b Si le message reçu est incorrect 3. - Donnée incorrecte
(inégalité des CRC 16), l'esclave ne répond 4. - Automate non prêt
5. - Acquittement
pas. 7. - Non acquittement
b Si le message reçu est correct mais que 8. - Défaut d'écriture
l'esclave ne peut le traiter (adresse erronée, 9. - Chevauchement de
zone
donnée incorrecte...), il renvoie une
réponse d'exception. Code fonction reçu et
Maître bit de poids fort à 1.
E52356

Esclave Exemple :
Zone de
N° esclave Fonction données CRC 16 Calcul du CRC
b Demande.

Comparaison CRC 16
E52358

1 9 0 0 0 0
pf * PF*

CRC 16

b Réponse.
Important : dans le CRC 16, l’octet de
poids faible (pf) est transmis en premier.
E52359

1 89 1
pf * PF*

CRC 16

Remarque : Les réponses d'exception 5 et 7 sont relatives aux fonctions JBUS 13


et 14.

62 Schneider Electric
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Définition : Un bit est une unité élémentaire d'information ne pouvant prendre que
deux valeurs distinctes : 1 ou 0 . Les "bits" représentent le langage qu'utilisent les
ordinateurs pour fonctionner. Elles correspondent aux niveaux électriques suivant
dans l'ordinateur :
b "bit 0" = 0 volt.
b "bit 1" = 5 volts.
Important :
Lorsque les "bits" sont transmis sur un port série , ils correspondent aux niveaux
électriques suivants :
b "bit 0"= +3 à +15 V.
b "bit 1"= -3 à -15 V.

Définition : Un octet ou un byte est un groupe comprenant huit (8) éléments


binaires. Un "octet" ou "byte" est donc un ensemble de huit (8) "bits" représentant un
tout appelé " mot binaire".
Remarque : PF = Poids Forts et pf = poids faibles.

Lecture de n bits : fonction 1 ou 2


b Fonction 1 : lecture de N bits de sortie ou
bits internes b Demande.
b Fonction 2 : lecture de N bits d'entrée.
b Le nombre de bits à lire doit être y 2000. Adresse du Nombre de
E52360

N° esclave 1 ou 2 1er bit à lire : bits à lire : CRC 16


PF * pf * 1 ≤ n ≤ 2000 pf* PF *

1 octet 1 octet 2 octets 2 octets 2 octets

b Réponse.

Nombre
E52361

Dernier
N° esclave 1 ou 2 d'octets 1 er octet lu CRC 16
octet lu
lus pf * PF*

1 octet 1 octet 1 octet n octets 2 octets

Détail d'un octet :

Dernier bit 1 er bit


E52355

transmis transmis

Nota : Les bits non utilisés dans l'octet sont mis à zéro.

Exemple :
Lecture des bits 204 à 211 de l'esclave n° 1.

b Demande.
E52362

01 01 02 04 01 0E

CRC 16

b En hexadécimal, le nombre de bits à lire de 204 à 211 se détaille comme suit :


v 0204, 0205, 0206, 0207, 0208, 0209, 020A, 020B, 020C, 020D, 020E, 020F, 0210,
0211,
v soit 14 valeurs ou 0E en hexadécimal.

b Réponse.
E52363

01 01 02 10101001 00101110

20B 204 211 20C


CRC 16

Schneider Electric 63
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Remarque : le "mot" représente ici 2 octets soit 16 bits.


b Fonction 3 : lecture de mots de sortie ou
bits internes. Lecture de n mots : fonction 3 ou 4
b Fonction 4 : lecture de mots d'entrée. b Demande.
b Le nombre de mots à lire doit être y 125.
Adresse du Nombre de mots à

E52364
N° esclave 3 ou 4 1er mot à lire : lire n 125 : CRC 16
PF * pf * PF * pf * pf * PF*

1 octet 1 octet 2 octets 2 octets 2 octets

b Réponse.

Nombre Valeur Valeur du


E52365

N° esclave 3 ou 4 d'octets 1 er mot dernier mot CRC 16


lus
PF * pf * PF * pf * pf * PF*

1 octet 1 octet 1 octet 2 octets 2 octets 2 octets

Exemple :
Lecture des mots 805 à 80A de l'esclave n° 2.

b Demande.
E52366

02 03 0805 0006

CRC 16

b Réponse.
E52367

02 03 OC XXXX YYYY

CRC 16

Valeur du mot 80A

Valeur du mot 805

64 Schneider Electric
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Ecriture d'un bit : fonction 5


La trame de réponse est identique à la
trame de demande. b Demande.

E52368
N° esclave 5 Adresse du bit Valeur du bit 0 CRC 16
PF * pf * pf * PF*

1 octet 1 octet 2 octets 1 octet 1 octet 2 octets

bit forcé à 0_ écrire 0


bit forcé à 1_ écrire FF

E52368
b Réponse.

N° esclave 5 Adresse du bit Valeur du bit 0 CRC 16


PF * pf * pf * PF*

Nota : Si le numéro d'esclave est 00, tous les esclaves exécutent le forçage sans
émettre de réponse.

Exemple :
Forçage à 1 du bit 210 de l'esclave n° 2.
E52369

02 05 02 10 FF 00

CRC 16

Ecriture d'un mot : fonction 6


La trame réponse est identique à la trame
b Demande.
demande.
E52370

N° esclave 6 Adresse du mot Valeur du mot CRC 16


PF * pf * PF * pf * pf * PF*
1 octet 1 octet 2 octets 2 octets 2 octets

b Réponse.
E52370

N° esclave 6 Adresse du mot Valeur du mot CRC 16


PF * pf * PF * pf * pf * PF*

Nota : Si le numéro d'esclave est 00, tous les esclaves exécutent le forçage sans
émettre de réponse.

Exemple :

Ecriture de la valeur 1000 dans le mot d'adresse 810 de l'esclave n°1.


E52371

01 06 810 1000

CRC 16

Schneider Electric 65
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Lecture rapide de 8 bits : fonction 7


Les adresses des 8 bits concernés sont
b Demande.
fixées par l'esclave.

E52372
N° esclave 7 CRC 16
pf * PF*

1 octet 1 octet 2 octets

b Réponse.

E52373

N° esclave 7 XXXXXXXX CRC 16

1 octet 1 octet 1 octet 2 octets

66 Schneider Electric
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Lecture des compteurs de diagnostic : fonction 8


A chaque esclave sont affectés des
b Demande/réponse.
compteurs d'évènements (ou compteurs de
diagnostic) :
b Il y a au total 9 compteurs par esclave.

E52489
N° esclave 8 Code SS Données CRC 16
b Ces compteurs sont des mots de 16 bits. Fonction

1 octet 1 octet 1 octet 2 octets 2 octets

Fonction Code sous fonction Données Remarques :


L'esclave doit envoyer l'écho de la 00 XYZT X, Y, Z, T, fixés
demande (contrôle de la par l'utilisateur
transmission)
Remise à zéro des compteurs de 01 0000
diagnostic, annulation du mode
déconnecté et reconfiguration du
coupleur. Pas de réponse émise.
Remise à zéro des compteurs de 01 FF00
diagnostic et du buffer trace.
Lecture du registre de diagnostic de 02 XXXX Lors de la
l'esclave. demande XXXX
vaut 0000.

Lors de la réponse
XXXX est le
contenu du
registre de
diagnostic (fixé
par l'utilisateur).
Modifie le caractère délimiteur de 03 XY00 XY fixé par
fin de trame (en mode ASCII). Par l'utilisateur : code
défaut, ce caractère est LF (OA). ASCII du
caractère de fin
de trame
Mode déconnecté l'esclave est 04 0000
forcé à ne plus répondre(utiliser la
sous-fonction 1 pour activer
l'esclave)
Remise à zéro des compteurs de 0A 0000
diagnostic
Lecture du nombre total des :
v trames reçues sans erreur CRC 0B XXXX(1)
(CPT 1)
v trames reçues avec erreur CRC 0C XXXX(1)
(CPT 2)
v nombre de réponses d'exception 0D XXXX(1)
(CPT 3)
v trames adressées à la station 0E XXXX(1)
(CPT 4) - (hors diffusion)
v demandes de diffusion reçues 0F XXXX(1)
(CPT 5)
v réponses NAQ (CPT 6) 10 XXXX(1)
v réponses de l'esclave non prêt 11 XXXX(1)
(CPT 7)
v caractères non traités (CPT 8) 12 XXXX(1)

(1) Lors de la demande XXXX vaut 00 00.


Lors de la réponse, xxxx est le contenu du compteur concerné.

Schneider Electric 67
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Lecture des compteurs d'évènement : fonction 11


Ce compteur permet, depuis le maître, de
Chaque esclave possède un compteur d'évènements. Le maître lui aussi possède
savoir : un compteur d'évènements. Ce compteur est incrémenté à chaque trame
b Si l'esclave a correctement interprété la correctement reçue et interprétée par l'esclave (sauf la commande spécifique de
commande (compteur d'évènements lecture de ce compteur : fonction 11). Une commande de diffusion correcte
incrémenté). incrémente le compteur. Si l'esclave émet une réponse d'exception, le compteur
n'est pas incrémenté.
b Si l'esclave n'a pas interprété la
commande (compteur non incrémenté). La lecture de ces différents éléments va permettre d'effectuer un diagnostic des
échanges ayant été réalisés entre le maître et l'esclave.

Si le compteur du maître est égal au compteur de l'esclave, la commande envoyée


par le maître a bien été exécutée. Si le compteur du maître est égal au compteur de
l'esclave + 1, la commande envoyée par le maître n'a pas été exécutée.

b Demande.
E52374

N° esclave OB CRC 16
pf * PF*

1 octet 2 octets

b Réponse.
E52375

Contenu du
N° esclave OB 00 00 compteur de CRC 16
l'esclave pf * PF*

1 octet 1 octet 2 octets 2 octets 2 octets

68 Schneider Electric
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Lecture du "buffer trace" : fonction 12


L'utilisateur a, à sa disposition, une
Remarque : les fonctions 12 / 13 / 14 ne sont pas implémentées dans tous les
mémoire de 64 octets contenant l'historique contrôleurs Modicon et ne sont là qu'à titre d'informations parce que présentes dans
des 64 dernières transactions. la liste des fonctions JBUS.

Le maître peut demander une lecture de cette mémoire. L'esclave répond en


renvoyant également le contenu du compteur d'évènements et le contenu du
compteur de messages.

b Demande.

E52376
N° esclave 0C CRC 16

1 octet 1 octet 2 octets

b Réponse.

Etat de Etat de
E52377


esclave OC 46 00 00 compteur compteur 64 octets CRC
d'évènement de message

1 octet 1 octet 1 octet 2 octets 2 octets 2 octets

Compte rendu Compte rendu Compte rendu Compte rendu


évènement plus évènement plus évènement N évènement -64
récent précédent

b En réception.

= 1 si
E52378

1 = 1 si = 1 si mode 1 si caractère 0 0 erreur 0


diffusion déconnecté erroné CRC

b En émission, numéro d'erreur éventuel.


E52379

1 1 = 1 si mode 0
déconnecté

b En mode déconnecté (1).


E52380

0 0 1 0 0 0 0 0

b Remise à zéro des compteurs de diagnostic (commande 8, ss commande 01).


E52381

0 0 0 0 0 0 0 0

(1) le mode déconnecté est utilisé pour l'analyse de certaines anomalies. Dans ce
mode, le coupleur surveille la ligne en incrémentant les compteurs et en mettant à
jour la table trace. Par contre, aucun transfert vers la mémoire de l'esclave n'est
effectué et aucune réponse n'est envoyée sur la ligne. Ce mode est piloté par la
commande 8 (sous fonction 01 et 04).

Schneider Electric 69
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Commandes programme : Fonction 13


Les commandes programme permettent de réaliser les fonctions suivantes :
Connexion à la mémoire de l'esclave.
b Déconnexion de la mémoire de l'esclave.
b Arrêt de l'esclave (STOP).
b Marche de l'esclave (RUN).
b Déchargement du programme de l'esclave (lecture du contenu de la mémoire).
b Chargement de programme dans l'esclave (écriture de la mémoire).

Les fonctions de chargement et de déchargement de la mémoire permettent


également de lire et d'écrire la mémoire de données au-delà de la limite d'adressage
sur 16 bits.
Les commandes de chargement et déchargement de la mémoire de données sont
accessibles à tout instant. Les commandes programme doivent être organisées à
l'intérieur d'une session organisée comme suit :
b Connexion.
b Commandes.
b Déconnexion.

Attention : Le panachage des commandes de lecture et d'écriture à l'intérieur d'une


même session est interdit.

Dans le cas où la réponse serait un non acquittement (réponse d'exception 7), le


diagnostic associé à ces fonctions est obtenu en utilisant la fonction 14 (cf. §
suivant).

A un instant donné, un seul coupleur peut accéder à la mémoire de l'esclave et/ou


donner des ordres à l'unité centrale de l'esclave.

Cette exclusion mutuelle est respectée en organisant les commandes programme


en sessions :
b Commandes programme proprement dites (arrêt, marche, déchargement,
chargement,...).
b Déconnexion de la mémoire.

Remarques :
b La mémoire de données est accessible quel que soit l'état du coupleur (connecté
ou non). Cela permet de respecter le principe d'exclusion mutuelle.
b Une procédure de déconnexion automatique (time out, ...) sur l'esclave doit être
prévue dans le cas où la commande de déconnexion n'arrive pas (coupure ligne,
erreur caractère, ...).

70 Schneider Electric
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Diagnostic des commandes programme : fonction 14


Cette commande permet de préciser le diagnostic associé aux réponses d'exception
7 (non acquittement) reçues lors de l'exécution d'une commande programme
(fonction 13). Elle fournit le diagnostic de la dernière commande programme
exécutée.
Commande interdite en diffusion.

Syntaxe :

b Demande.

E52382

N° esclave OE CRC 16

1 octet 1 octet 2 octets

b Réponse.

Code Longueur
E52383

N° Code Type de CRC 16


fonction trame
esclave 0E 02 s/s fnct. l'erreur

1 octet 1 octet 1 octet 1 octet 1 octet 2 octets

Le code sous fonction renvoyée est le code sous fonction de la dernière commande
programme exécutée, avec le bit de poids fort forcé à 1 si une erreur a été détectée
lors de l'exécution.

Exemple : 82 pour une demande de marche (sous fonction 2). Le type de l'erreur est
codé comme suit :

N° Libellé Type de la commande pouvant


entraîner cette erreur
00 Pas d'erreur
01 Commande inconnue, non autorisée ou Toute commande.
mal exécutée (erreur de dialogue U.C. par
exemple).
02 Adresse virtuelle invalide (hors du champ Lecture ou écriture mémoire.
d'adressage maximum autorisé).
03 Mémoire protégée. L'utilisateur essaie de Lecture ou écriture mémoire.
lire ou d'écrire une mémoire qui est déjà
occupée par un autre coupleur (principe de
l'exclusion mutuelle).
04 Lecture ou écriture à des adresses Lecture ou écriture mémoire.
physiques inexistantes (hors du champ
d'adressage de l'esclave considéré).
08 Nombre de mots invalides. Lecture ou écriture mémoire.
09 Commande non autorisée, l'esclave est en Ecriture mémoire.
marche.
10 Commande non autorisée, l'esclave Marche, arrêt, lecture ou écriture.
n'étant pas connecté.

Schneider Electric 71
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Ecriture de n bits consécutifs : fonction 15


Si le numéro d'esclave est 0, tous les
b Demande.
esclaves exécutent l'écriture sans émettre
de réponse en retour.
Adresse Nombre Nombre Valeur

E52384

esclave OF du 1er bit de bits à d'octet à des bits CRC 16
à forcer forcer forcer à f orcer

1 octet 1 octet 2 octets 2 octets 1 octet n octets 2 octets

1 X 1968

1 n 246

1 er octet n ième octet

Dernier bit Dernier bit du


du 1er octet n ième octet

1er bit du 1er bit du


1 er octet n ième octet

b Réponse.
E52385

N° Adresse Nombre
esclave OF du 1 er bit de bits CRC 16
forcé forcés

1 octet 1 octet 2 octets 2 octets 2 octets

Exemple :
Forcer à 1 les bits 200 et 201 de l'esclave 3.

b Demande.
E52386

3 OF 200 0002 01 03

CRC 16

b Réponse.
E52387

3 OF 200 0002

CRC 16

72 Schneider Electric
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Ecriture de n mots consécutifs : fonction 16


Si le numéro d'esclave est égal à 0, tous les
b Demande.
esclaves exécutent l'écriture sans émettre
de réponse en retour.
Adresse Nombre Nombre Valeur des

E52388

esclave 10 du 1 er mot de mots d'octets mots à CRC 16
à forcer à forcer à forcer forcer

1 octet 1 octet 2 octets 2 octets 1 octet n octets 2 octets

1 X 123

1 N 246

1 er mot forcé Dernier mot à forcer

PF * pf * PF * pf * pf * PF *

b Réponse.
E52389

Adresse Nombre
N ° esclave 10 du 1er mot de mots CRC 16
forcé f orcés

1 octet 1 octet 2 octets 2 octets 2 octets

Exemple :
Forçage des mots 0800 à 0803 de l'esclave n° 1.
(0800) = 0001
(0801) = 0010
(0802) = 0100
(0803) = 1000

b Demande.
E52390

01 10 0800 0004 08 0001 0010 0100 1000

CRC 16

b Réponse.

01 10 0800 0004

CRC 16

Schneider Electric 73
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Identification d'un esclave : fonction 17 (spécifique PM 6xx/


Retourne la description du type de CM2xxx)
contrôleur à cette adresse, l'état courant du
b Demande.
"run indicator", et certaines informations
spécifiques à chaque types d'esclaves.
La diffusion n'est pas supportée.

E52392
N° esclave 11 CRC 16

1 octet 1 octet 2 octets

b Réponse.
E52393

N° 11 Nombre ID Indicateur de PF des pf des CRC


esclave d'octets esclave fonctionnement données données

1 octet 1 octet 1 octet 1 octet 1 octet 1 octet 1 octet 2 octets

Nota : Le nombre d'octets, l'ID esclave, les données disponibles, dépendent du type
d'esclave. Indicateur de fonctionnement : FF = ON & 00 = OFF.

Exemple : Lecture des données d'un PM600 N°17:

b Demande.
E52394

01 11 CRC 16

1 octet 1 octet 2 octets

b Réponse.
E52395

01 11 04 64 FF 01 E1 CRC 16

64 = spécifique aux modules Powerlogic.


01 E1 = adresses Powerlogic.

74 Schneider Electric
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Algorithme de calcul du CRC16

FFFF CRC 16

E52396
CRC 16 Octet CRC 16

n=0

décalage à droite CRC 16

non retenue oui

CRC 16 poly CRC 16

n=n+1

non n>7 oui

octet suivant

non message terminé oui

fin

+ ou exclusif
n = nombre de bits d'information
POLY = polynôme de calcul du CRC 16 = 1010 0000 0000 0001
(polynôme générateur = 1 + x2 + x 15 + x 16)
Dans le CRC 16, le 1er octet émis est celui des poids faibles.

Schneider Electric 75
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Exemple de calcul du CRC : trame 020B = lecture du compteur d'évènements


(Fonction 11) de l'esclave à l'adresse 02h

Initialisation CRC = 1111 1111 1111 1111


du CRC
+1er octet (02) CRC = 0000 0000 0000 0010
n=0 CRC = 1111 1111 1111 1101
Décalage N°1 0111 1111 1111 1110_ 1
+ polynôme 1010 0000 0000 0001
n=1 CRC = 1101 1111 1111 111
Décalage N°2 0110 1111 1111 1111_ 1
+ polynôme 1010 0000 0000 0001
n=2 CRC = 1100 1111 1111 1110
Décalage N°3 0110 0111 1111 1110_ 0
n=3 Décalage N°4 0011 0011 1111 1111_ 1
+ polynôme 1010 0000 0000 0001
n=4 CRC = 1001 0011 1111 1110
Décalage N°5 0100 1001 1111 1111_ 0
n=5 Décalage N°6 0010 0100 1111 1111_ 1
+ polynôme 1010 0000 0000 0001
n=6 CRC = 1000 0100 1111 1110
Décalage N°7 0100 0010 0111 1111_ 0
n=7 Décalage N°8 0010 0001 0011 1111_ 1
+ polynôme 1010 0000 0000 0001
n>7
C CRC = + 2ème CRC = 1000 0001 0011 1110
octet (φB) 0000 0000 0000 1011
n=0 CRC = 1000 0001 0011 0101
Décalage N°1 0100 0000 1001 1010_ 1
+ polynôme 1010 0000 0000 0001
n=1 CRC = 1110 0000 1001 1011
Décalage N°2 0111 0000 0100 1101_ 1
+ polynôme 1010 0000 0000 0001
n=2 CRC = 1101 0000 0100 1100
Décalage N°3 0110 1000 0010 0110_ 0
n=3 Décalage N°4 0011 0100 0001 0011_ 0
n=4 Décalage N°5 0001 1010 0000 1001_ 1
+ polynôme 1010 0000 0000 0001
n=5 CRC = 1011 1010 0000 1000
Décalage N°6 0101 1101 0000 0100_ 0
n=6 Décalage N°7 0010 1110 1000 0010_ 0
n=7 Décalage N°8 0001 0111 0100 0001_ 0
CRC Final 1 7 4 1
MSB LSB

Donc le CRC pour cette trame sera : 4117 hex.


MSB = Most Significant Bytes (PF).
LSB = Least Significant Bytes (pf).

76 Schneider Electric
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Interprétation électrique du CRC sur le réseau RS485:

v Dans notre exemple, la demande du maître est :

E52397
02 0B 41 17

v Dans ce cas, la réponse sera :

E52398 Contenu du
02 0B 00 00 compteur A4 38
(ici 00 00)

CRC 16
E52399

+ 5V

OV 0 1 0 0 0 0 0 1 0 1 0 1 1 1 0 1 0 0 0 1

- 5V

LSB MSB
Start
Start

Stop
Stop

D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7

1 4 7 1

Donc l'interprétation du signal est : $ 41 17


(conforme à ce que l'on attendait).

Schneider Electric 77
Guide d'intégration Le protocole Modbus (suite)
Modbus / Jbus

Exemple "physique" d'une trame :


b Les trames "Maître" sont émises par un logiciel spécifique.
b Les trames "Esclave" sont émises par un module de la gamme Digipact.
b Le câblage de la ligne RS485 est fait en "2 fils" avec charge et polarisation.
b Les mesures sont effectuées à l'oscilloscope entre les bornes 8/9 (point chaud de
la sonde) et 4/5 (point froid) du subD 9pts du module.

La fonction Modbus utilisée est la fonction 11 "lecture du compteur d'évènements".


Tous les modules possèdent cette fonction (voir description des fonctions).

b Demande.
E52397

02 0B 41 17

b Réponse.

Contenu du
E52398

02 0B 00 00 compteur A4 38
(ici 00 00)

b Remarque : la vitesse de transmission étant de 19200 bauds :


v 1 bit = 52 µs,
v 1 octet (1start + 8bits + 1stop) = 520 µs,
v donc durée théorique de la réponse = 4,16 ms (4,14 ms mesurée).

b Forme du signal mesuré (début de la trame):

+ 5V
E52400

OV 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0

- 5V
2,86ms
Prise de
ligne

1er octet 2ème octet


Start
Start

Stop
Stop

D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7

= 2 0 B 0

On a ainsi l'adresse de l'esclave : 02 hex , de même que le code fonction : 0B hex.

78 Schneider Electric

Vous aimerez peut-être aussi