Présentation

Le protocole Modbus est un protocole Maître-Esclave qui permet à un seul et unique maître de demander des réponses à des esclaves ou d'agir en fonction de la requête. Le maître peut s'adresser aux esclaves individuellement ou envoyer un message de diffusion générale à tous les esclaves. Les esclaves renvoient un message (réponse) aux requêtes qui leur sont adressées individuellement. Les requêtes de diffusion générale du maître n'attendent pas de réponses en retour.

Jusqu'à 32 nœuds peuvent résider sur un réseau RS485 (1 maître et jusqu'à 31 esclaves).

Protocole

Le nombre de bits de la liaison asynchrone doit être de 8.

La parité utilisée par défaut doit être paire (EVEN). Si l'on n'utilise aucune parité, on doit passer à 2 bits de STOP.

Toutes les spécifications de ModBus sont disponibles sur http://www.modbus.org

Pour voir les requêtes ModBus supportées par le TWIDO, voir l'aide en ligne de TwidoSoft et rechercher l'expression « Requêtes Modbus standard »

Requête en mode RTU

Trame :

N° esclave	Code fonction	1er paramètre	Autres paramètres	CRC16
1 octet	1 octet	PF : 1 octet	Pf : 1 octet	N octets	PF : 1 octet	Pf : 1 octet

N° esclave : de 1 à 247

N° fonction :

01 :	Lecture de n bits de sorties consécutifs : Param1 = Adresse, Param2 = Quantité

02 :	Lecture de n bits d'entrées consécutifs : Param1 = Adresse, Param2 = Quantité

01 / 02 :	Sur Schneider TSX-Nano et Twido : lecture de n bits internes %Mi consécutifs

03 :	Lecture de n mots internes consécutifs : Param1 = Adresse, Param2 = Quantité

04 :	Lecture de n mots registres d'entrées consécutifs : Param1 = Adresse, Param2 = Quantité

03 / 04 :	Sur Schneider TSX-Nano et Twido : lecture de n mots internes %MWi consécutifs

05 :	Écriture d'un bit interne ou de sortie : Param1 = Adresse, Param2 = 0000 ('0') ou FF00 ('1')

06 :	Écriture d'un mot interne ou registre : Param1 = Adresse, Param2 = Valeur

15 :	Écriture de n bits internes ou de sortie consécutifs :
Param1 = Adresse, Param2 = Nbre de bits, Param3 = Nbre d'octets, Params[i] = valeurs

16 :	Écriture de n mots internes ou registres consécutifs :
Param1 = Adresse, Param2 = Nbre de mots, Param3 = Nbre d'octets, Params[i] = valeurs

1er paramètre : adresse du bit ou mot adressé

2ème paramètre : 'quantité de mots adressés' ou 'valeur du bit ou mot écrit' selon la fonction utilisée

Autres paramètres : données écrites dans plusieurs mots consécutifs

CRC16 : code de redondance cyclique pour détecter les erreurs de transmission

La fin de trame est détectée par une absence d'émission pendant une durée de 3 caractères minimum

Réponse en mode RTU

Fonctions 01, 02, 03, 04

N° esclave	Code fonction	Nbre de caractères	Données reçues	CRC16
1 octet	1 octet	PF : 1 octet	N octets	PF : 1 octet	Pf : 1 octet

Fonctions 05, 06,

N° esclave	Code fonction	Adresse affectée	Donnée écrite	CRC16
1 octet	1 octet	PF : 1 octet	Pf : 1 octet	PF : 1 octet	Pf : 1 octet	PF : 1 octet	Pf : 1 octet

Fonctions 15, 16

N° esclave	Code fonction	Adresse affectée	Nbre de données écrites	CRC16
1 octet	1 octet	PF : 1 octet	Pf : 1 octet	PF : 1 octet	Pf : 1 octet	PF : 1 octet	Pf : 1 octet

Requête en mode ASCII

Le nombre de bits de la liaison asynchrone doit être de 7.

La parité utilisée par défaut doit être paire (EVEN). Si l'on n'utilise aucune parité, on doit passer à 2 bits de STOP.

Le temps par défaut entre 2 caractères peut aller jusqu'à 1 seconde, sinon configurer pour des intervalles plus longs.

Début	N° esclave	Code fonction	1er paramètre	Autres paramètres	LRC	Fin
1 caractère ':' : $3A	2 caractères '01' à 'F7'	2 caractères '01', '02', '03', '04', ...	4 caractères		2 caractères	2 caractères 'CR' : $0D, 'LF' : $0A

Les fonctions utilisées sont identiques au mode RTU

Calcul du LRC

Somme en hexadécimal, modulo FF, du contenu de la trame, hors entêtes; complémentée à 2 et codée en ASCII.

Exemple : Écriture de la valeur $1968 à l'adresse $00A8 sur l'esclave N° 11

Trame RTU

N° esclave	Code fonction	Adresse de la donnéet	Valeur à écrire	CRC16
0B	06	PF : 00	Pf : A8	PF : 19	Pf : 68	PF :	Pf :

Trame ASCII équivalente

	Dép.	Esclave	Fonction	Adresse	Valeur	LRC	Fin de ligne
Caractère	:	0	B	0	6	0	0	A	8	1	9	6	8	C	6	CR	LF
Code ASCII	3A	30	42	30	36	30	30	41	38	31	39	36	38	43	36	0D	0A

Calcul du LRC

0B + 06 + 00 + A8 + 19 + 68 = 13A modulo FF = 3A =	0011	1010 b

Complément à 1 :	1100	0101 b

Complément à 2 : additionner 1 :	1100	0110 b

Conversion en Hexadécimal :	C	6

Codage en ASCII :	43	36

Réponse en mode ASCII

Les types de réponses sont les mêmes qu'en mode RTU, sur des trames ASCII

Protocole ModBus	Documentation Sect° 2632 Page 2/2

Edité sur OpenOffice, suite bureautique gratuite http://fr.openoffice.org	Docum-Modbus.i2632.v100.sxw - 30 sept 05 - Rév. 162

Stéphane Gaut

2004-11-24T21:27:58

Stef G.

Stef G.