1 Réseaux Industriels - Modbus Les réseaux Industriels MODBUS.
-
Upload
aurelien-bon -
Category
Documents
-
view
128 -
download
7
Transcript of 1 Réseaux Industriels - Modbus Les réseaux Industriels MODBUS.
1 Réseaux Industriels - Modbus
Les réseaux Les réseaux IndustrielsIndustriels
MODBUSMODBUS
2 Réseaux Industriels - Modbus
Introduction
• Modbus is a communication protocol developed by Modicon systems. In simple terms, it is a way of sending information between electronic devices. The device requesting the information is called the Modbus Master and the devices supplying information are Modbus Slaves. In a standard Modbus network, there is one Master and up to 247 Slaves, each with a unique Slave Address from 1 to 247. The Master can also write information to the Slaves.
3 Réseaux Industriels - Modbus
CaractéristiquesCaractéristiques Topologie bus
Nombre théorique d'abonnés 247. Peut-être plus faible suivant les constructeurs ainsi que par la limitation de la couche physique.
Transmission en semi duplex, pas de médium particulier (paire torsadée, coaxial, fibre optique…) fixé en fonction des distances et des interfaces disponibles.
Transmission en bande de base de 50 à 19 200 bits/s.
RS232, RS422, RS485.
Méthode d'accès par protocole maître – esclaves (question/réponse)
4 Réseaux Industriels - Modbus
5 Réseaux Industriels - Modbus5
MODBUS with a PLC millenium II (CROUZET)
I1I4 I2I3
PLC system for the workshop
Modbus Interface
O1O4 O2O3
PLCPower supply Inputs/outputs
6
Modbus Serial line RS485
MODBUS Serial line RS485 is a low cost network using amaster/slave medium access with a transmission speed from 1,200 to 115 Kbits/s
Application
Presentation
Session
Transport
Network
Link
Physical
7
6
5
4
3
2
1
Master - SlaveMaster - Slave
Modbus
RS485RS485
7
Modbus TCP/IP Modbus TCP/IP
MODBUS TCP/IP uses TCP/IP and Ethernet 10 Mbit/s or 100 Mbits/s to carry the MODBUS messaging structure.
Application
Préeentation
Session
Transport
Network
Link
Physical
7
6
5
4
3
2
1
CSMA / CDCSMA / CDETHERNET V2 ou ETHERNET V2 ou
802.3802.3
Modbus
TCP
IP
8
9
10
Modbus PlusModbus Plus
MODBUS PLUS is a higher speed network 1 Mbit/s token passing derivative that uses the MODBUS messaging structure.
Application
Presentation
Session
Transport
Network
Link
Physical
7
6
5
4
3
2
1
802.4 Token passing802.4 Token passing
Modbus
RS485RS485
11 Réseaux Industriels - Modbus
Protocole maître esclavesProtocole maître esclaves
Maître
Esclave 1 Esclave 2 Esclave n
Question
Réponse
12 Réseaux Industriels - Modbus
Protocole maître esclavesProtocole maître esclaves
Maître
Esclave 1 Esclave 2 Esclave n
Question
13 Réseaux Industriels - Modbus
Protocole ModbusProtocole Modbus
Fonction Données
PDU MODBUS
14 Réseaux Industriels - Modbus
Protocole sérieProtocole série
Fonction Données
PDU MODBUS
Adresse CRC ou LRC
PDU MODBUS Ligne série
15 Réseaux Industriels - Modbus
Les modes de Les modes de transmission.transmission.
Deux modes de transmission, sont définis :
Le mode RTU et le mode ASCII.
Les modes de transmission doivent être identiques pour tous les participants à un même réseau.
Le mode ASCII est une option.
16 Réseaux Industriels - Modbus
16
Modbus frame structureModbus frame structure
Address ChecksumDataFunction
The Modbus frame structure is the same for requests (master to slave messages) and responses (slave to master messages).
Modbus ASCII
Modbus RTU
: CR LF
3A Hex 0D Hex 0A Hex
Address ChecksumDataFunctionsilence silence
Silence >= 3,5 characters
17 Réseaux Industriels - Modbus
Transmission en mode RTU Transmission en mode RTU Les trames RTU ne comportent ni entête, ni
délimiteur de fin. La station réceptrice contrôle le temps séparant deux caractères consécutifs, s'il est supérieur à 3 caractères et demi, elle considère que le prochain caractère est un début de trame.
Chaque octet (00 à FF), d'une trame RTU, est transmis suivant le format recommandé :
1 Bit de start, 8 bits de donnée, 1 Bit de parité, 1 Bit de Stop.
18 Réseaux Industriels - Modbus
Transmission en mode RTUTransmission en mode RTU
La parité est normalement paire par défaut. Il est possible de supprimer la parité, dans ce cas,
il est recommandé de mettre deux bits de stop. (1 bit de start, 8 bits de donnée, 2 Bits de Stop).
Une clé de contrôle de deux octets est ajoutée à la fin de la trame. C'est un CRC16 dont le polynôme générateur est g(X)=X16 + X15 + 1.
Les deux octets du CRC sont transmis poids faible en tête. Le CRC est calculé sur l’ensemble des champs adresse, fonction et données.
19 Réseaux Industriels - Modbus
Transmission en mode RTUTransmission en mode RTU
Adresse esclave.
Code fonction.
Données. CRC.
1 octet. 1 octet. 0 à 252 octets.2 octets.CRC
pf PF
20 Réseaux Industriels - Modbus
Transmission en mode Transmission en mode ASCIIASCII
Les trames sont émises avec un délimiteur de début "3A" (Code ASCII de ":") et un délimiteur de fin "0D 0A" (Codes ASCII de CR et LF)
Chaque octet d'information (00 à FF) est codé sur deux octets « imprimables ».
21 Réseaux Industriels - Modbus
Transmission en mode Transmission en mode ASCIIASCII
Exemple: 1 0 0 1 1 0 1 1
0x9B 0x39 Code ASCII du 9
0x42 Code ASCII du B
22 Réseaux Industriels - Modbus
Transmission en mode Transmission en mode ASCIIASCII
Chaque caractère ASCII est transmis suivant l’un des deux formats :
Start, 7 bits de donnée, 1 Bit de parité, 1 Bit de Stop. Start, 7 bits de donnée, 2 Bits de Stop.
3A Adresse Esclave
Code fonction.
Données. LRC 0D 0A
1 car 2 car 2 car 525 octets 2 car 2 car
clé de contrôle: somme modulo 256 de tous les octets de la trame
non encore codée en ASCII
23 Réseaux Industriels - Modbus
Trame d’exceptionTrame d’exceptionDes trames d’exception sont prévues pour permettre la gestion du réseau et le traitement des erreurs.
11 Caractères en ASCII. 5 Octets en RTU
Champ adresse.
Champ code.
Champ code erreur.
CRC.
1 Octet. 1 Octet. 1 Octet. 2 Octets.
1 - Fonction inconnue.2 - Adresse incorrecte.3 - Donnée incorrecte.4 - Esclave non prêt.5 - Acquittement.8 - Défaut d’écriture.
Le code fonction retourné est celui de la commande avec le bit de poids le plus fort forcé à 1.
24 Réseaux Industriels - Modbus
Comparaison entre les deux Comparaison entre les deux modes modes
Le maître envoie la même demande à la station n°1Champ adresse 01Champ code 08Champ données 00 00 61 62
Trame RTU : 01 08 00 00 61 62 48 72Trame ASCII: 3A 30 31 30 38 30 30 30 30 36
31 36 32 33 34 0D 0A
Calcul du LRC de la trame ASCII:somme des octets de la trame : 01+08+00+00+61+62=CCcomplément à deux :00-CC=34LRC = 34 soit codé ASCII "33 34"
25 Réseaux Industriels - Modbus
Quelques fonctions !Quelques fonctions !
CODE. FONCTION.
01 Lecture de N bits de sortie ou de bit interne.
02 Lecture de N bits d’entrées discrètes.
03 Lecture de N mots de sortie ou mots internes.
04 Lecture de N mots d’entrée.
05 Écriture d’un bit de sortie ou bit interne.
06Écriture d’un mot de sortie ou d’un mot
interne.
26 Réseaux Industriels - Modbus
Exemple: Fonction 01Exemple: Fonction 01
Cette fonction est utilisée pour la lecture de 1 à 2000 bits contigus dans un équipement distant.
Exemple:Lecture de 20 bits de sortie à partir de l’adresse 20
20 (en décimal) se traduit par 14 en hexadécimal
Dans le protocole, c’est l’adresse – 1 que l’on trouve dans le champ de données
27 Réseaux Industriels - Modbus
Champ de donnéesChamp de données
FonctionAdresse
départ PFAdresse départ pf
Nombre de bits PF
Nombre de bits pf
1 octet. 1 octet. 1 octet. 1 octet. 1 octet.
28 Réseaux Industriels - Modbus
Exemple: Fonction 01Exemple: Fonction 01DEMANDE REPONSE
Nom du champ. Hex Nom du champ. Hex
Fonction. 01 Fonction. 01
Adresse de départ (PF). 00 Nombre d’octets. 03
Adresse de départ (pf). 13 Etat des sorties 27 – 20 CD
Nombre de bits (PF). 00 Etat des sorties 35 – 28 6D
Nombre de bits (pf). 14 Etat des sortie 39 – 36 0B
29 Réseaux Industriels - Modbus
Exemple: Fonction 01Exemple: Fonction 01
L’état des sorties 27 – 20 est CD en hexa soit 1100 1101 en binaire. La sortie 27 est le MSB de l’octet, et la sortie 20 est le LSB
MSB LSB
Sortie 27
Sortie 26
Sortie 25
Sortie 24
Sortie 23
Sortie 22
Sortie 21
Sortie 20
1 1 0 0 1 1 0 1
30 Réseaux Industriels - Modbus
Mise en oeuvreMise en oeuvre
RS232 – Liaison point à point (deux appareils)
RS485 – Liaison multi points (plus de deux appareils)
31 Réseaux Industriels - Modbus
Liaison deux filsLiaison deux fils
MAI TRE
ESCLAVE 1 ESCLAVE 2 ESCLAVE 3
32 Réseaux Industriels - Modbus
Liaison deux filsLiaison deux fils
RT
A/A’
B/B’
A/A’
B/B’
A/A’
B/B’
RT
Maitre
RP
RP
EsclaveEsclave
B/B’
A/A’
33 Réseaux Industriels - Modbus
Liaison quatre filsLiaison quatre fils
MAI TRE
ESCLAVE 1 ESCLAVE 2 ESCLAVE 3
34 Réseaux Industriels - Modbus
Liaison quatre filsLiaison quatre fils
Esclave 1 Esclave n
Rt
A
B
A’
B’
Maitre
Rt
Rt
Rt
+ 5
+ 5
RP
RPRP
RP
35
Address fieldAddress field
Address ChecksumDataFunction
Valid slave device addresses are in the range of 0 ... 247 decimal.The individual slave devices are assigned addresses in the range of 1 ... 247.Value 0 is reserved for broadcast messages (no response). Request :A master addresses a slave by placing the slave address in the address field ofthe message.
Response :When the slave sends its response, it places its own address in this address fieldof the response to let the master know which slave is responding.
36
Valid codes are in the range of 1 ... 255 decimal.
Request :The function code field tells the slave what kind of action to perform.
Response :For a normal response, the slave simply echoes the original function code.
For an exception response, the slave returns a code that is equivalent to the original function code with its most significant bit set to a logic 1.
Function fieldFunction field
Address ChecksumDataFunction
37
Valid codes are in the range of 0 ... 255 decimal.
Request :The data field contains additional information which the slave must use to takethe action defined by the function code. This can include items like registeraddresses, quantity of items to be handled, etc...
Response :If no error occurs, the data field contains the data requested.
If an error occurs, the field contains an exception code that the masterapplication can use to determine the next action to be taken.
Data fieldData field
Address ChecksumDataFunction
38
Valid codes are in the range of 0 ... 255 decimal.
Modbus RTU uses CRC : Cyclycal Reduncy Check (2 byte)Modbus ASCII uses LRC : Longitudinal Redundancy Check (1 bytes)
Request :The checksum is calculated by the master and sends to the slave.
Response :The checksum is re-calculated by the slave and compared to the value sentby the master.If a difference is detected, the slave will not construct a response to the master.
Checksum fieldChecksum field
Address ChecksumDataFunction
39
Request :
Frame exemple in RTU modeFrame exemple in RTU mode
Function code = 03 : Read Holding Registers
SlaveAddress
CRC16First word address
Function code = 03
Number of words to read
1 byte 1 byte 2 bytes 2 bytes 2 bytes
Response :
SlaveAddress
CRC16Number of bytes read
Function code = 03
Value of the first word
1 byte 1 byte 2 bytes 2 bytes 2 bytes
Value of the last word
2 bytes
40
Request :
Frame exemple in RTU modeFrame exemple in RTU mode
Function code = 06 : Write Single Register
SlaveAddress
CRC16Word
addressFunction code = 06
Value of word
1 byte 1 byte 2 bytes 2 bytes 2 bytes
Response :
SlaveAddress
CRC16Word
addressFunction code = 06
Value of word
1 byte 1 byte 2 bytes 2 bytes 2 bytes
41
Request :
Frame exemple in RTU modeFrame exemple in RTU mode
Function code = 16 (décimal) : Write Multiple Registers
SlaveAddress
CRC16First word address
Function code = 16
Number of words to write
1 byte 1 byte 2 bytes 2 bytes 2 bytes
Response :
SlaveAddress
CRC16Function code = 16
1 byte 1 byte 2 bytes 2 bytes 2 bytes
Value of the first word
Number of bytes
1 byte 2 bytes
First word address
Number of words to write
42
Physical layer:New Modbus RS485 standard schematicPhysical layer:New Modbus RS485 standard schematic
Master
Slave 1 Slave 2
D1
D0Common
5 V
650
650
120 1 nF
120 1 nF
Maximum length of bus 1000 m at 19200 bps
Maximum number of stations (without repeater) 32 (31 slaves)
Maximum length of tap links 20 m for one tap link
40 m divided by the number of tap links
Bus polarisation 650 at 5V and common for the master
Line terminator 120 - 0,25Wm in series with 1nF 10V
Common polarity Yes (Common) connected to the PG
43
Main characteristics resumeMain characteristics resume
Topology: Bus with line terminations
Maximum distance: With RS485 : 1000 m without repeater
Data rate: From 1,200 to 115 Kbits/s
Max. no. of devices: With RS485 : 32 master included
44
Method of accessing the medium: Master slave
Transmission method: Messaging
Max. useful data size: 120 words
Transmission security: LRC or CRC Start and stop delimiters
Parity bitContinuous stream
Main characteristics resumeMain characteristics resume
LABVIEW SESSION IRBID 2007 45
MODBUS PROTOCOL (query/response)
MASTER
TRANSMIT RECEIVE
TRANSMIT RECEIVE
SLAVE 1
TRANSMIT RECEIVE
SLAVE 2
TRANSMIT RECEIVE
SLAVE N
Protocol admit only one master and until 255 slaves with serial interface.Each frame as a particular number of bytesEach frame is codedHalf duplex mode
The master transmit a question and wait a response2 slaves can’t speak together
LABVIEW SESSION IRBID 2007 46
BUILD A FRAME (GENERAL)
4 fields are used to build a frame
address field (1 byte) :
Provide the numerous (1 to 255) for the slaveconcerned by the operation. ADR = 0 ; for a broadcast to all slaves.
Function field (1 byte) :
Provide the code for the operation.
Datas field (n bytes) :
Provide the address/datas for the slave concerned by the operation.
Control field (2 bytes) :
Word CRC16 add at the end of the message to secure the communication (CyclicRedundancy Chehksum 16 bits).
address
ADR
Function
OP
Datas
DATA
Control
CRC16
LABVIEW SESSION IRBID 2007 47
MODBUS PROTOCOL (broadcasting)
For the broadcasting, the master send a message to all slaves units.Those ones execute it without response.
LABVIEW SESSION IRBID 2007 48
BUILD A FRAME (READING BITS)
Function 01h or 02h : reading request for n consecutive bits
The master provide the address on 16 bits, of the first bit to readand the number of consecutive bits to read.
ADR 01haddress 1st bit to read bits number to read (1 to 640) CRC1 byte 2 bytes2 bytes2 bytes1 byte
ADR 01h bytes number (1 to 80)1 byte 27 201 byte1 byte
CRC2 bytes
1st byte read
Response to the reading request of bits (6 to 85 bytes)
start d0 d1 d2 d3 d4 d5 d6 d7 stop start d0 d1 d2 d3 d4 d5 d6 d7 stop
0 ou 1 0 ou 1
The frame…
LABVIEW SESSION IRBID 2007 49
BUILD A FRAME (READING WORDS)
ADR 03h adr 1st word to read words number to read(1 - 128) CRC1 byte 2 bytes2 bytes2 bytes1 byte
Function 03h or 04h : reading request for n consecutive bytes
The master provide the address on 16 bits, of the first byte to readand the number of consecutive words to read.
Response to the reading request of words (7 to 261 bytes)
ADR 03h bytes number (0 - 256)1 byte 1 byte1 byte
CRC2 bytes
1st word read2 bytes
LABVIEW SESSION IRBID 2007 50
BUILD A FRAME (WRITING BITS)
Function 0Fh : writing request for n consecutive bits
The master provide the address on 16 bits, of the first bit to writeand the number of consecutive bits to write, the state of the bits.(frame size : 10 to 109 bytes)
ADR 0Fh address 1st bit to write bits number to write (1 to 800) CRC1 byte 2 bytes2 bytes2 bytes1 byte 1 byte
bytes number state of the bits
b7 ,...,b0,b15,...,b8,b23,...
Response to the writing request of bits(8 bytes)
ADR 0Fh address 1st bit to write bits number to write (1 to 800) CRC1 byte 2 bytes2 bytes2 bytes1 byte
LABVIEW SESSION IRBID 2007 51
BUILD A FRAME (WRITING WORDS)
CRC
Function 10h : writing request for n consecutive bytesThe master provide the address on 16 bits, of the first byte to writeand the number of consecutive words to write,the corresponding bytes number and the value of the words. (frame size : 11 to 209 bytes)(Function code 06h for one word)
ADR 10h adr 1st word to write words number to write (1 - 100)1 byte 2 bytes2 bytes2 bytes1 byte 1 byte
bytes number state of the wordsword 1, word 2, ...
Response to the writing request of words (8 bytes)
ADR 10haddress 1st word to write words number to write (1 - 100) CRC1 byte 2 bytes2 bytes2 bytes1 byte
LABVIEW SESSION IRBID 2007 52
BUILD A FRAME (ERROR MESSAGE)
Sent to the master when a slave detect an error.
For a broadcasting, no message is sent back.
Response to an error frame ( 5 bytes)
slaveaddress
codefunction
1 byte 1 byte
CRC2 bytes
codeerror
1 byte
Code error :
01 false code function
02 bad address
03 bad datas
04 défault transfer
06 PLC busy
Code function :
code function + 80h
Moreover, the slave tests if the pause between 2 characters is less than 3.5 units of time (one unit for a word). In this case, the reception is aborted and the next character will be the first of a new frame.
LABVIEW SESSION IRBID 2007 53
LABVIEW FRONT PANEL
LABVIEW SESSION IRBID 2007 54
LABVIEW SERIAL PORT
LABVIEW SESSION IRBID 2007 55
LABVIEW BLOCK DIAGRAM