Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
7
Добавлен:
11.10.2020
Размер:
1.12 Mб
Скачать

5.5Code des fonctions supportées

Le tableau ci-dessous indique les fonctions supportées par le coupleur MODBUS

Code fonction

Fonction

 

 

1

Lecture de n bits

 

 

2

Lecture de n bits

 

interne

 

 

3

Lecture de n mots

 

 

4

Lecture de n mots

 

interne

 

 

5

Ecriture d’un bit

 

 

6

Ecriture d’un mot

 

 

(8)

(Diagnostics)

 

 

11

Lecture compteur

 

d’événement

 

 

15

Ecriture de n bits

 

 

16

Ecriture de n mots

 

 

Description

Lecture de n bits .

Lecture de n bits (identique à fonction 1).

Lecture de n mots.

Lecture de n mots (identique à fonction 3).

Ecriture d’un bit de sortie.

Ecriture d’un mot

non supportée

Lecture du compteur d’événement.

Ecriture de n bits.

Ecriture de n mots.

Modbus / Configuration

22

:$*2Ç, 2Ç6<67(0

Lecture de n bits (Code fonction 0x01)/ Lecture de n bits interne (Code fonction 0x02):

Cette fonction permet de lire dans les zones bits d’entrée ou de sortie de l’esclave. Le Broadcast ou diffusion n’est pas supporté avec cette fonction, et le nombre de données est limitée pour une requête à 256 bits.

Requête:

La requête contient l’adresse de départ de la zone de bit ainsi que le nombre de bits que l’on désire lire. La première entrée commence à l’adresse 0.

Le tableau suivant donne un exemple de requête de lecture des Bits 0 à 7 sur l’esclave 11:

Champs

Exemple

RTU

ASCII

Entête

-

t1-t2-t3

„:“

0x3a

N° d’esclave

0x0B

0x0B

„0B“

0x30, 0x42

Code fonction

0x01

0x01

„01“

0x30, 0x31

Adresse début Pforts (High)

0x00

0x00

„00“

0x30, 0x30

Adresse début Pfaibles (Low)

0x00

0x00

„00“

0x30, 0x30

Nbre de données Pforts

0x00

0x00

„00“

0x30, 0x30

(High)

 

 

 

 

Nbre de données Pfaibles

0x08

0x08

„08“

0x30, 0x38

(Low)

 

 

 

 

Error Check (LRC / CRC)

-

0x3D

„EC“

0x45, 0x43

 

 

0x66

 

 

End of frame-Fin de trame

 

t1-t2-t3

-

0xD, 0xA

Réponse:

La valeur des Bits se trouve dans le champ des Data. Un 1 signifie que l’état est ON, un 0 signifie que l’état est OFF. Le bit de poids faible du premier octet des Data correspond au premier Bit de la Requête. Les bits suivants sont rangés dans l’ordre croissant. Si le nombre des entrées n’est pas un multiple de 8, le Bits restants du dernier octet de Data seront mis à zéro. Si on demande plus de bits d’entrée ou de sortie que d’entrées ou de sorties connectées sur le coupleur, les bits d’entrée en trop seront mis à zéro, et les bits de sorties en trop garderont leur dernière valeur.

Champs

Exemple

RTU

ASCII

 

Entête

-

t1-t2-t3

„:“

0x3A

N° d’esclave

0x0B

0x0B

„0B“

0x30, 0x42

Code fonction

0x01

0x01

„01“

0x30, 0x31

Nbre d’octets (Byte)

0x01

0x01

„01“

0x30, 0x31

Data (point 8...0)

0x12

0x12

„12“

0x31, 0x32

Error Check (LRC /

-

0xD2

„E1“

0x45, 0x31

CRC)

 

0x5D

 

 

End of frame-Fin de

-

t1-t2-t3

-

0xD, 0xA

trame

 

 

 

 

L’état des entrées 7 à 0 est exprimé sous la forme d’un octet 12 en hexadécimal ou 0001 0010 en binaire. L’entrée 7 se trouve sur le bit de poids fort de l’octet et l’entrée 0 se trouve sur le bit de poids faible. Etat des bits 7 à 0 Off-Off-Off-On-Off-Off-On-Off

 

Bit:

0

0

0

1

 

0

0

1

 

0

 

N° de

7

6

5

4

 

3

2

1

 

0

 

bit:

 

 

 

 

 

 

 

 

 

 

Modbus / Configuration

 

 

 

 

 

 

 

 

23

:$*2Ç, 2Ç6<67(0

Lecture de N mots (Code fonction 0x03)/Lecture de N mots interne (Code fonction 0x04):

Cette fonction sert à lire un certain nombre de mots d’entrée ou de sortie ou des registres. Le Broadcast ou diffusion n’est pas supporté avec cette fonction, et le nombre de données est limitée pour une requête à 128 mots (word) par requête.

Requête:

La requête contient l’adresse du mot de départ ainsi que le nombre de mots consécutifs que l’on désire lire. Le premier mot d’entrée commence à l’adresse 0.

Le tableau suivant donne un exemple de requête de lecture des mots 0 et 1 sur l’esclave 11:

Champs

Exemple

RTU

ASCII

Entête

-

t1-t2-t3

„:“

0x3a

N° d’esclave

0x0B

0x0B

„0B“

0x30, 0x42

Code fonction

0x03

0x03

„03“

0x30, 0x33

Adresse début Pforts (High)

0x00

0x00

„00“

0x30, 0x30

Adresse début Pfaibles (Low)

0x00

0x00

„00“

0x30, 0x30

Nbre de données Pforts

0x00

0x00

„00“

0x30, 0x30

(High)

 

 

 

 

Nbre de données Pfaibles

0x02

0x02

„02“

0x30, 0x32

(Low)

 

 

 

 

Error Check (LRC / CRC)

-

0xC4

„F0“

0x46, 0x30

 

 

0xA1

 

 

End of frame-Fin de trame

 

t1-t2-t3

-

0xD, 0xA

Réponse:

Les registres de données se composent de 2 octets par ‘ register ‘ ou mot, le premier octet contient les poids forts (High ou MSB) du mot et le deuxième octet les poids faibles (Low ou LSB) La réponse aura la structure suivante:

Champs

Exemple

RTU

ASCII

 

Entête

-

t1-t2-t3

„:“

0x3A

N° d’esclave

0x0B

0x0B

„0B“

0x30, 0x42

Code fonction

0x03

0x03

„03“

0x30, 0x33

Nbre d’octets (Byte)

0x04

0x04

„04“

0x30, 0x34

Data Hi (Register 0)

0x3F

0x3F

„3F“

0x33, 0x46

Data Lo (Register 0)

0xFB

0xFB

„FB“

0x46, 0x42

Data Hi (Register 1)

0x00

0x00

„00“

0x30, 0x30

Data Lo (Register 1)

0x00

0x00

„00“

0x30, 0x30

Error Check (LRC /

-

0x2D

„B4“

0x42, 0x34

CRC)

 

0x61

 

 

End of frame-Fin de

-

t1-t2-t3

-

0xD, 0xA

trame

 

 

 

 

Modbus / Configuration

24

:$*2Ç, 2Ç6<67(0

Ecriture d’un bit (Code fonction 0x05):

Cette fonction permet d’écrire un bit de sortie. Le Broadcast ou diffusion est supporté par cette fonction, il en résulte que le même bit prendra la même valeur sur tous les esclaves.

Requête:

L’état On ou Off se fait par une constante, la valeur 0xFF00 hex. met le bit de sortie à 1, la valeur 0x0000 hex. met le bit de sortie à 0. Les autres valeurs ne sont pas spécifiées et ne seront pas prises en compte par le bit de sortie. Le tableau suivant donne un exemple de requête d’écriture à 1 du bit 0 de l’esclave 11:

Champs

Exemple

RTU

ASCII

 

Entête

-

t1-t2-t3

„:“

0x3a

N° d’esclave

0x0B

0x0B

„0B“

0x30, 0x42

Code fonction

0x05

0x05

„05“

0x30, 0x35

adresse du bit high

0x00

0x00

„00“

0x30, 0x30

adresse du bit low

0x00

0x00

„00“

0x30, 0x30

Force data high

0xFF

0xFF

„FF“

0x46, 0x46

Force data low

0x00

0x00

„00“

0x30, 0x30

Error Check (LRC /

-

0x8C

„F1“

0x46, 0x31

CRC)

 

0x90

 

 

End of frame-Fin de trame

 

t1-t2-t3

-

0xD, 0xA

Réponse:

La réponse à la trame est un écho de la requête. Elle sera envoyée si le bit est écrit.

Champs

Exemple

RTU

ASCII

 

Entête

-

t1-t2-t3

„:“

0x3a

N° d’esclave

0x0B

0x0B

„0B“

0x30, 0x42

Code fonction

0x05

0x05

„05“

0x30, 0x35

adresse du bit high

0x00

0x00

„00“

0x30, 0x30

adresse du bit low

0x00

0x00

„00“

0x30, 0x30

Force data high

0xFF

0xFF

„FF“

0x46, 0x46

Force data low

0x00

0x00

„00“

0x30, 0x30

Error Check (LRC /

-

0x8C

„F1“

0x46, 0x31

CRC)

 

0x90

 

 

End of frame-Fin de trame

 

t1-t2-t3

-

0xD, 0xA

Modbus / Configuration

25

:$*2Ç, 2Ç6<67(0

Ecriture d’un mot (Code fonction 0x06):

Cette fonction permet d’écrire un mot. Le Broadcast ou diffusion est supporté par cette fonction, il en résulte que le même mot prendra la même valeur sur tous les esclaves.

Requête:

Cette fonction nécessite l’adresse du mot à écrire ainsi que la valeur sur deux octets. Le tableau suivant donne un exemple de requête d’écriture de la valeur (data) 0x1234 sur le mot d’adresse 0 de l’esclave 11.

Champs

Exemple

RTU

ASCII

Entête

-

t1-t2-t3

„:“

0x3a

N° d’esclave

0x0B

0x0B

„0B“

0x30, 0x42

Code fonction

0x06

0x06

„06“

0x30, 0x36

adresse du mot high

0x00

0x00

„00“

0x30, 0x30

adresse du mot low

0x00

0x00

„00“

0x30, 0x30

data high

0x12

0x12

„12“

0x31, 0x32

data low

0x34

0x34

„34“

0x33, 0x34

Error Check (LRC / CRC)

-

0x8C

„A9“

0x41, 0x39

 

 

0x17

 

 

End of frame-Fin de trame

 

t1-t2-t3

-

0xD, 0xA

Réponse:

La réponse à la trame est un écho de la requête. Elle sera envoyée si le mot est écrit.

Champs

Exemple

RTU

ASCII

Entête

-

t1-t2-t3

„:“

0x3a

N° d’esclave

0x0B

0x0B

„0B“

0x30, 0x42

Code fonction

0x06

0x06

„06“

0x30, 0x36

adresse du mot high

0x00

0x00

„00“

0x30, 0x30

adresse du mot low

0x00

0x00

„00“

0x30, 0x30

data high

0x12

0x12

„12“

0x31, 0x32

data low

0x34

0x34

„34“

0x33, 0x34

Error Check (LRC / CRC)

-

0x8C

„A9“

0x41, 0x39

 

 

0x17

 

 

End of frame-Fin de trame

 

t1-t2-t3

-

0xD, 0xA

Modbus / Configuration

26

:$*2Ç, 2Ç6<67(0

Lecture du compteur d’événement (Code fonction 0x0B):

Cette fonction permet de remonter un mot de status, ainsi qu’un compteur d’événement qui s’incrémente à chaque fois qu’une trame a été reçue correctement par l’esclave et bien traitée et que cette demande a engendrée une trame de réponse (hormis fonction 0x0B, et réponse sur erreur). La finalité de cette fonction est de savoir si la communication fonctionne correctement. En effet le maître peut compter les trames qu’il envoie à chaque esclave et ainsi comparer ses compteurs avec les compteurs d’événement.

Le compteur est remis à zéro à l’aide de la fonction de diagnostic (fonction 0x08) et de la sous fonction effacer le compteur (Code 00 01) ou la sous fonction effacer le compteur et le registre de diagnostic (Code 00 0A).

Requête:

Le tableau suivant donne un exemple de requête de lecture du compteur d’événement de l’esclave 11:

Champs

Exemple

RTU

ASCII

 

Entête

-

t1-t2-t3

„:“

0x3a

N° d’esclave

0x0B

0x0B

„0B“

0x30, 0x42

Code fonction

0x0B

0x0B

„0B“

0x30, 0x42

Error Check (LRC /

-

0x47

„EA“

0x45, 0x41

CRC)

 

0x47

 

 

End of frame-Fin de trame

 

t1-t2-t3

-

0xD, 0xA

Réponse:

La réponse normale contient 2 octets de status et 2 octets représentants la valeur du compteur. Les 2 octets de status sont toujours à zéro.

Le tableau suivant donne un exemple de requête de lecture du compteur d’événement de l’esclave:

Champs

Exemple

RTU

ASCII

 

Entête

-

t1-t2-t3

„:“

0x3a

N° d’esclave

0x0B

0x0B

„0B“

0x30, 0x42

Code fonction

0x0B

0x0B

„0B“

0x30, 0x42

Status high

0x00

0x00

„00“

0x30, 0x30

Status low

0x00

0x00

„00“

0x31, 0x33

Event count high

0x00

0x00

„00“

0x30, 0x30

Event count low

0x03

0x03

„03“

0x30, 0x33

Error Check (LRC /

-

0xE4

„E7“

0x45, 0x37

CRC)

 

0xA0

 

 

End of frame-Fin de

 

t1-t2-t3

-

0xD, 0xA

trame

 

 

 

 

Le compteur d’événement est à 3 (00 03 hex.).

Modbus / Configuration

27

:$*2Ç, 2Ç6<67(0

Ecriture N Bits (Code fonction 0x0F):

Cette fonction permet d’écrire à 1 ou à 0 N bits de sortie. Le Broadcast ou diffusion est supporté par cette fonction, il en résulte que les mêmes bits prendront les mêmes valeurs sur tous les esclaves. Le nombre max. de bits sur une trame N=256.

Requête:

La requête spécifie l’adresse de début des bits qui devront être mis à 1 ou à 0, le nombre de bits à écrire, le nombre d’octets qui vont être nécessaires pour transmettre les valeurs, ainsi que les valeurs des bits.

Le tableau suivant donne un exemple de requête d’écriture de 16 bits à partir de l’adresse 0 sur l’esclave 11. La requête contient 2 octets avec la valeur A5 F0 hex. soit 1010 0101 1111 0000 binaire:

Valeur:

1

0

1

0

 

0

1

0

1

 

1

1

1

1

 

0

0

0

0

Bit N° :

7

6

5

4

 

3

2

1

0

 

15

14

13

12

 

11

10

9

8

Le premier octet contient la valeur A5 hex. sur les adresse 7 à 0, où 0 représente le bit de poids faibles. Le deuxième octet contient la valeur F0 hex. sur les adresse 15 à 8, où 8 représente le bit de poids faibles.

Champs

Exemple

RTU

ASCII

 

Entête

-

t1-t2-t3

„:“

0x3a

N° d’esclave

0x0B

0x0B

„0B“

0x30, 0x42

Code fonction

0x0F

0x0F

„0F“

0x30, 0x46

Adresse début Pforts (High)

0x00

0x00

„00“

0x30, 0x30

Adresse début Pfaibles (Low)

0x00

0x00

„00“

0x30, 0x30

Nbre de bits Pforts (High)

0x00

0x00

„00“

0x30, 0x30

Nbre de bits Pfaibles (Low)

0x10

0x10

„10“

0x31, 0x30

Nbre d’octets de valeur

0x02

0x02

„02“

0x30, 0x32

valeur high (coils 7 ... 0)

0xA5

0xA5

„A5“

0x41, 0x35

valeur low (coils 15 ... 8)

0xF0

0xF0

„F0“

0x46, 0x30

Error Check (LRC / CRC)

-

0xE7

„3F“

0x33, 0x46

 

 

0x94

 

 

End of frame-Fin de trame

 

t1-t2-t3

-

0xD, 0xA

Réponse:

La réponse contient l’adresse de l’esclave, avec le code fonction, l’adresse de départ et le nombre de bits écrits.

Champs

Exemple

RTU

ASCII

Entête

-

t1-t2-t3

„:“

0x3a

N° d’esclave

0x0B

0x0B

„0B“

0x30, 0x42

Code fonction

0x0F

0x0F

„0F“

0x30, 0x46

Adresse début Pforts (High)

0x00

0x00

„00“

0x30, 0x30

Adresse début Pfaibles (Low)

0x00

0x00

„00“

0x30, 0x30

Nbre de bits Pforts (High)

0x00

0x00

„00“

0x30, 0x30

Nbre de bits Pfaibles (Low)

0x10

0x10

„10“

0x31, 0x30

Error Check (LRC / CRC)

-

0x54

„D6“

0x44, 0x36

 

 

0xAD

 

 

End of frame-Fin de trame

 

t1-t2-t3

-

0xD, 0xA

Modbus / Configuration

28

:$*2Ç, 2Ç6<67(0

Ecriture de N mots (Code fonction 0x10):

Cette fonction permet d’écrire N mots de sortie. Le Broadcast ou diffusion est supporté par cette fonction, il en résulte que les mêmes mots prendront les mêmes valeurs sur tous les esclaves. Le nombre max. de mots sur une trame N=128.

Requête:

La requête spécifie l’adresse de début des mots qui devront être mis écrits, le nombre de mots à écrire, le nombre d’octets qui vont être nécessaires pour transmettre les valeurs, ainsi que les valeurs des mots. A chaque adresse de mot correspond deux octets de données.

Le tableau suivant donne un exemple de requête d’écriture de deux mots à partir de l’adresse 0 sur l’esclave 11:

Champs

Exemple

RTU

ASCII

 

Entête

-

t1-t2-t3

„:“

0x3a

N° d’esclave

0x0B

0x0B

„0B“

0x30, 0x42

Code fonction

0x10

0x10

„10“

0x31, 0x30

Adresse début Pforts

0x00

0x00

„00“

0x30, 0x30

(High)

 

 

 

 

Adresse début Pfaibles

0x00

0x00

„00“

0x30, 0x30

(Low)

 

 

 

 

Nbre de mots high

0x00

0x00

„00“

0x30, 0x30

Nbre de mots low

0x02

0x02

„02“

0x30, 0x32

Nbre d’octets

0x04

0x04

„04“

0x30, 0x34

Data high (mot 0)

0x12

0x12

„12“

0x31, 0x32

Data low (mot 0)

0x34

0x34

„34“

0x33, 0x34

Data high (mot 1)

0x56

0x56

„56“

0x35, 0x36

Data low (mot 1)

0x78

0x78

„78“

0x37, 0x38

Error Check (LRC /

-

0xA9

„CB“

0x43, 0x42

CRC)

 

0x43

 

 

End of frame-Fin de trame

 

t1-t2-t3

-

0xD, 0xA

Réponse:

La réponse contient l’adresse de l’esclave, avec le code fonction, l’adresse de départ et le nombre de mots écrits.

 

Champs

Exemple

RTU

ASCII

 

 

Entête

-

t1-t2-t3

„:“

0x3a

 

N° d’esclave

0x0B

0x0B

„0B“

0x30, 0x42

 

Code fonction

0x10

0x10

„10“

0x31, 0x30

 

Adresse début Pforts

0x00

0x00

„00“

0x30, 0x30

 

(High)

 

 

 

 

 

Adresse début Pfaibles

0x00

0x00

„00“

0x30, 0x30

 

(Low)

 

 

 

 

 

Nbre de mots Pforts high

0x00

0x00

„00“

0x30, 0x30

 

Nbre de mots Pforts low

0x02

0x02

„02“

0x30, 0x32

 

Error Check (LRC /

-

0x41

„E3“

0x45, 0x33

 

CRC)

 

0x62

 

 

 

End of frame-Fin de trame

 

t1-t2-t3

-

0xD, 0xA

Modbus / Configuration

 

29

 

 

:$*2Ç, 2Ç6<67(0