Formation Bus de Terrain _Partie 3_1 _Modbus tcp

1 709 vues

Publié le

Formation basique pour nos techniciens.
Complément de la formation plus générale (partie 3).
Présentations de quelqeus détails du protocole Modbus TCP.

Publié dans : Ingénierie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 709
Sur SlideShare
0
Issues des intégrations
0
Intégrations
12
Actions
Partages
0
Téléchargements
120
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Formation Bus de Terrain _Partie 3_1 _Modbus tcp

  1. 1. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 1 Protocole MODBUS TCP
  2. 2. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 2 Protocole MODBUS TCP : Introduction (1) • Le protocole MODBUS a été proposé et mis au point en 1979 par la société GOULD MODICON (MODicon BUS) pour interconnecter ses automates programmables via liaison série. • La spécification du protocole MODBUS est gratuite, les droits sont toujours libres et seulement la conformité doit juste être vérifiée (par modbus.org) • MODBUS est indépendant du médium de transmission (câbles, fibres optiques,...). • Les implémentations du protocole MODBUS, basées sur la transmission sérielle RS232, RS485 (MODBUS-RTU, MODBUS-ASCII) ou sur le réseau à jeton (MODBUS+) ont été largement rependues et bien approuvées par les industriels.
  3. 3. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 3 Protocole MODBUS TCP : Introduction (2) Couche applicative MODBUS MODBUS RTU/ASCII MODBUS + /HDLC Liaison série RS-232 ou RS-485 Couche physique (réseau à jeton) TCP IP Ethernet II / 802.3 Couche physique Ethernet MODBUS TCP • Avec l’arrivé de l’Ethernet TCP/IP, le protocole a été implémenté sur ce réseau sous le nom : MODBUS TCP • Comme ses prédécesseurs, MODBUS TCP est un standard ouvert basé sur le même protocole et l’Ethernet TCP/IP est simplement utilisée comme un nouveau moyen de communication et de transmission de données. • Le dialogue entre deux stations se fait en mode Client   Server et les messages MODBUS TCP (requêtes/réponses) sont encapsulés dans le segment TCP • Tous les message du Client sont envoyées vers le port 502 de la station Server
  4. 4. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 4 Message (trame) MODBUS TCP Modbus Header Function Code Data TrID ProID Length UnitID 2 octets 2 octets 2 octets 1 octet 1 octet Max 248 octets Ethernet : Message MODBUS TCP : max 256 octets • La spécification du protocole MODBUS définit simplement la partie PDU (Protocol Data Unit) qui est indépendant des couches de communication. • La spécification du protocole MODBUS définit trois types de trames PDU : – MODBUS Request PDU : requête du Client (Maître) – MODBUS Response PDU : réponse du Serveur (Esclave) – MODBUS Exception Response PDU : réponse du Serveur en cas d’erreur • Un message MODBUS TCP est composée de l’entête (Header) et de données (PDU) • Par rapport à Modbus RTU (liaison série) : dans le MODBUS TCP, le CRC-16 n’est pas nécessaire car le contrôle est fait au niveau de la trame Ethernet PDU (Protocol Data Unit) CODE FONCTION (Function Code) DONNEES (Data) Adresse Esclave (Slave Addresse) CRC-16 (Error Check) Liaison série : Message MODBUS RTU/ASCII : max 256 octets 1 octet 1 octet 2 octetsMax 252 octets
  5. 5. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 5 Message (trame) MODBUS TCP : l’Entête (MBAP Header) Champ Longueur Description Client Serveur TrID Transaction Identifier 2 octets Identification de la transaction MODBUS (Request/Response) Initialisé par le Client Recopié par le Serveur dans le réponse ProID Protocol Identifier 2 octets Toujours 0 Pour le protocole MODBUS Initialisé par le Client Recopié par le Serveur dans le réponse Length 2 octets Nombre des octets suivants Initialisé par le Client (request) Initialisé par le Serveur dans sa réponse UnitID Unit Identifier 1 octet Identification de participant distant connecté sur le bus (idem No d’esclave) Initialisé par le Client Recopié par le Serveur dans le réponse Modbus Header Function Code Data
  6. 6. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 6 Dialogue MODBUS TCP (sans erreurs) Code Fonction Données Client Code Fonction Données Demandées Initialisation et Envoie de Requête Réalisation de l’action Initialisation et envoie de la réponse Réception de Réponse Client Server • L’octet FUNCTION CODE (Code Fonction) indique à Serveur l’action qu’il doit réaliser. • Les valeurs FC doivent être entre 1 et 127 car les valeurs 128 à 255 sont réservées pour des réponses d’exception (Erreurs) du Serveur. • Le champ DATA (Données) peut contenir l’information supplémentaire (p.ex. adresse et nombre des opérandes à traiter, nombre des octets de données, etc..) que le Serveur utilise pour réaliser l’action définie par le FUNCTION CODE. • Quand le Serveur répond, il utilise l’octet FUNCTION CODE pour indiquer l’exécution correcte ou erronée (exception) de requête. • Pour une réponse correcte, le Serveur recopie simplement l’octet FUNTION CODE du MODBUS Request PDU, et insert dans le champ DATA de la réponse les données demandées par le Client (p.ex. les valeurs des opérandes). Requête Client Réponse du Server Request PDU Response PDU
  7. 7. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 7 Dialogue MODBUS TCP (le cas d’erreurs; exception answer) Code Fonction Données Client Code Fonction + 0x80 Code d’exception Initialisation et Envoie de Requête Erreur Détectée Envoie de la réponse d’exception Réception de Réponse Client Server • Si la trame de requête n’était pas correcte ou la fonction demandée n’a pas été réalisée correctement, le Serveur utilise l’octet FUNCTION CODE pour indiquer l’exécution erronée (exception) de la requête. • Erreur est signalée en retournant l’octet FUNCTION CODE avec une valeur équivalente au Code d’origine mais avec le bit 7 (MSB) forcé à 1. • Cet octet est suivie par un octet du EXCEPTION CODE (Code d’exception) qui explique la nature du défaut (erreur transaction). Réponse du Server Request PDU Exception Response PDU
  8. 8. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 8 Dialogue MODBUS TCP : Les messages d’exception Code Nom Explication 01 ILLEGAL FUNCTION (Code Fonction erroné) Le Code Fonction reçu n’est pas supporté par le Serveur (ou 02 ILLEGAL DATA ADDRESS (Adresse incorrecte) L’adresse de données reçue dans la requête n’est pas supportée Plus exactement, le combinaison de l’adresse et de nombre des adresses disponibles dans le Serveur 03 ILLEGAL DATA VALUE (Données incorrectes) La valeur contenue dans la requête n’est pas correcte pour le type 04 SLAVE DEVICE FAILURE (Défaut Esclave) Le Serveur est incapable d’exécuter la fonction demandée ou pendant l’exécution de la fonction demandée par le Client 05 ACKNOWLEDGE (Acquittement) Le Serveur (ou Esclave) a accepté la requête mais le temps trop longue. La réponse est envoyée pour ne pas sortir sur l’erreur TimeOut. Le Client peut envoyer une requête encore une fois pour savoir si la 06 SLAVE DEVICE BUSY (Equipement occupé) Le Serveur (ou Esclave) est en train d’exécuter une requête. Le Client peut retransmettre la requête quand le Serveur sera libre. 08 MEMORY PARITY ERROR (Erreur parité mémoire) Liée aux fonctions 20 et 21 et indique que le contenu des fichiers
  9. 9. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 9 Message (trame) MODBUS TCP : Codage des données MODBUS • MODBUS utilise une représentation « BIG ENDIAN » pour le codage de données comme les adresses et les valeurs • Ceci signifie que pour une donnée en format d’un mot (deux octets), l’octet du Poids Fort est envoyé comme premier. • Alors, pour envoyer le contenu d’un registre de 16 bits : [R] = 0x12AB ; MSB = 0x12 ; LSB = 0xAB • Le premier octet envoyé sera l’octet du Poids Fort MSB = 0x12 suivie par l’octet du poids faible LSB = 0xAB [0x12][0xAB]
  10. 10. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 10 Message (trame) MODBUS TCP : Modèle d’adressage MODBUS • La spécification du protocole MODBUS définit très précisément les règles d’adressage des données. • Dans la structure MODBUS PDU chaque donnée peut être adressée de 0 à 65535 ( 0 à 0xFFFF) • La spécification précise aussi que à l’intérieur de chaque bloc (type) de données, les éléments sont numérotés de 1 à N. • En conséquence, si l’on veut s’adresser au premier élément d’un bloc (type) de données MODBUS, il faut utiliser l’adresse 0 ; pour l’élément 5, il faut utiliser l’adresse 4, etc… bien que leurs adresses physiques à l’intérieur d’équipement peuvent être complètement différentes (p.ex. 0xD800 : F454 et 0xA400 : 2446) • Par contre, les affectations entre les données MODBUS et les adresses physiques réelles dans l’équipement restent totalement libres et spécifiques à l’équipement (par le constructeur).
  11. 11. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 11 Message (trame) MODBUS TCP : Modèle de données MODBUS • Le modèle de données MODBUS est très simple et contient quatre types de base (blocs de données) : – Discrete Inputs (bits d’Entrées) – Coils (bits de Sorties, bits internes) – Input Registers (mots d’Entrées, mots diagnostic) – Holding Registers (mots de Sorties, mémoire interne, registres, compteurs, …) Type de donnée Format Type d’accès Discrete Inputs (bits d’Entrées) un Bit Lecture Seule (Read Only) Coils (bits de Sorties) un Bit Lecture/Ecriture (Read/Write) Input Registers (mots d’Entrées) Mot 16 Bits Lecture Seule (Read Only) Holding Registers (mots de Données) Mot 16 Bits Lecture/Ecriture (Read/Write)
  12. 12. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 12 Message (trame) MODBUS TCP : Code Fonction (publiques) Opérande Fonction (Service) Code Dec Code Hex Type d’accès (Format de Données) Un Bit (Discrete Inputs) Entrées physiques Lecture N bits d’entrées 02 02 (Coils) Bits internes Ou Sorties physiques Lecture N bits 01 01 Ecriture d’un bit 05 05 Ecriture de N bits 15 0F Mots de 16 bits Entrées Physiques (Input Registers) Lecture N mots 04 04 (Holding Registers) Registres, Mémoires Internes Ou Sorties physiques Lecture N mots 03 03 Ecriture d’un mot 06 06 Ecriture de N mots 16 10 Lecture / Ecriture de N mots 23 17 Ecriture Masquée d’un mot 22 16 Lecture pile FIFO 24 18 Enregistrement d’un fichier (File record access) Lecture du fichier (Read File Record) 20 14 Ecriture fichier (Write File Record) 21 15 Equipement déporté Identification d’équipement (Read Device Identification) 43 2B Modbus Header Function Code Data SupportéesparMODBUSTCPClientCPX-FEC
  13. 13. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 13 MODBUS TCP : Fonction 1 : Read Coils (lecture N bits) Code Fonction 0x01 1 octet Adresse Début 0x0000 à 0xFFFF 2 octets Nombre de bits 1 à 2000 (0x07D0) 2 octets Code Fonction 0x01 1 octet Nombre d’octets N* 1 octet Données : Etat de bits Valeurs entre 0x00 – 0xFF N ou N+1 octets Modbus Header 0x01 Data • Cette fonction permet de lire l’état de 1 à 2000 bits des opérandes affectées aux données type Coil (p.ex. sorties physiques TOR ou les bits de mots de mémoire). Code Fonction 0x81 1 octet Code d’exception 0x01ou 0x02 ou 0x03 ou 0x04 1 octet Commentaires : • Dans la requête, Adresse Début précise l’adresse (ou No) du premier bit demandé. • L’adressage des bits commence à 0; c.à.d les bits de 1 à 16 sont adressés de 0 à 15. • Dans la réponse, les bits respectifs sont rangés «bit par bit» dans l’octet de la réponse. Donc, le bit 0 (LSB) du premier octet de la réponse correspond au bit pointé par l’ Adresse Début. • Les autres bits sont rangés dans des octets suivants dans l’ordre croissant (bits 0 -> 7). • Si le nombre de bits demandés n’est pas multiple de 8, l’état de bits non demandés sera toujours à 0. Request PDU (Requête) Exception Response PDU (Réponse ne cas d’erreur) Response PDU (Réponse) (*) N = (Nb de bits) / 8 ; mais si la reste est différente 0 => N = N+1
  14. 14. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 14 MODBUS TCP : Fonction 1 : Read Coils : Exemple Code Fonction 0x01 Adr. Début P.Fort 0x00 Adr. Début p.faible 0x13 Nb de bits P.Fort 0x00 Nb de bits p.faible 0x13 Modbus Header 0x01 • Demande de lecture de 19 bits de sorties 20 à 38. Adresse début : 0x0013 (19 décimal) Nb de bits : 0x0013 (19 bits) Commentaires : • Dans le premier octet de la réponse l’état des sorties 27 à 20 est 0xAA (1010 1010 binaire), c.à.d le bit 27 (MSBit) est à 1 et le bit 20 (LSBit) est à 0. • La valeur du deuxième octet qui contient l’état de sorties 35 – 28 est 0x55 (0101 0101 binaire), c.à.d. le bit 35 (MSBit) est à 0 et le bit 28 (LSBit) est à 1. • Le troisième octet contient les sorties 38 – 36. Ces trois bits sont à 1. • Les autres bits de cet octet (bits 7, 6, 5, 4, 3) sont à 0 car ils représentent les bits non demandés. Request PDU (Requête) Response PDU (Réponse) Code Fonction 0x01 Nb Octets 0x03 Bits 27 – 20 0xAA Bits 35 – 28 0x55 Bits 38 – 36 0x07 0x00 0x13 0x00 0x13 Modbus Header 0x01 0x03 0xAA 0x55 0x07
  15. 15. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 15 MODBUS TCP : Fonction 2 : Read Discrete Inputs (lecture N bits d’entrées) Code Fonction 0x02 1 octet Adresse Début 0x0000 à 0xFFFF 2 octets Nombre de bits 1 à 2000 (0x07D0) 2 octets Code Fonction 0x02 1 octet Nombre d’octets N* 1 octet Données : Etat de bits Valeurs entre 0x00 – 0xFF N ou N+1 octets Modbus Header 0x02 Data • Cette fonction permet de lire l’état de 1 à 2000 bits des opérandes affectées aux données type Discrete Inputs (p.ex. entrées physiques TOR ou certains bits de mémoire). Code Fonction 0x82 1 octet Code d’exception 0x01ou 0x02 ou 0x03 ou 0x04 1 octet Commentaires : • Dans la requête, Adresse Début précise l’adresse (ou No) du premier bit d’entrée demandée. • L’adressage des bits commence à 0; c.à.d les bits de 1 à 16 sont adressés de 0 à 15. • Dans la réponse, les bits des entrées respectives sont rangés «bit par bit» dans l’octet de la réponse. Le bit 0 (LSB) du premier octet de la réponse correspond au bit de première entrée pointée par l’Adresse Début. • Les bits des autres entrées sont rangés dans des octets suivants dans l’ordre croissant (bits 0 -> 7). • Si le nombre de bits demandés n’est pas multiple de 8, l’état de bits non demandés sera toujours à 0. Request PDU (Requête) Exception Response PDU (Réponse ne cas d’erreur) Response PDU (Réponse) (*) N = (Nb de bits) / 8 ; mais si la reste est différente 0 => N = N+1
  16. 16. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 16 MODBUS TCP : Fonction 2 : Read Discrete Inputs : Exemple Code Fonction 0x02 Adr. Début P.Fort 0x00 Adr. Début p.faible 0x00 Nb de bits P.Fort 0x00 Nb de bits p.faible 0x0C Modbus Header 0x02 • Demande de lecture de bits d’entrées 1 à 12. Adresse début : 0x0000 (0 décimal) Nb de bits : 0x000C (12 bits) Commentaires : • Dans le premier octet de la réponse l’état des entrées 8 à 1 est 0x8A (1000 1010 binaire), c.à.d les entrées 8,4,2 sont à 1 et les entrées 7,6,5,3,1 sont à 0. • Le second octet contient l’état des entrées 12 – 9 (la valeur 0x09 (0000 1001 binaire), c.à.d. les entrées 12 et 9 sont à 1 et les entrées 11,10 sont à 0. • Les 4 autres bits de cet octet sont à 0 car ils représentent les entrées non demandées. Request PDU (Requête) Response PDU (Réponse) Code Fonction 0x02 Nb Octets 0x02 Bits 8 – 1 0x8A Bits 12 – 9 0x09 0x00 0x00 0x00 0x0C Modbus Header 0x02 0x02 0x8A 0x09
  17. 17. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 17 MODBUS TCP : Fonction 3 : Read Holding Registers (lecture de N mots) Code Fonction 0x03 1 octet Adresse Début 0x0000 à 0xFFFF 2 octets Nombre de mots 1 à 123 (0x7B) 2 octets Code Fonction 0x03 1 octet Nombre d’octets N* 1 octet Données : Valeurs de mots Valeurs entre 0x00 – 0xFF N*2 octets Modbus Header 0x03 Data • Cette fonction permet de lire le contenu d’un block des mots des opérandes affectées aux données type Holding Registers (p.ex. mots de sorties ou certains mots de la mémoire). Code Fonction 0x83 1 octet Code d’exception 0x01ou 0x02 ou 0x03 ou 0x04 1 octet Commentaires : • Dans la requête, Adresse Début précise l’adresse (ou No) du premier mot demandé. • L’adressage des mots commence à 0; c.à.d les mots de 1 à 16 sont adressés de 0 à 15. • Dans la réponse, les valeurs des mots respectifs sont rangées «octet par octet» en mode BIG ENDIAN  [mot] = [MSByte][LSByte]. Request PDU (Requête) Exception Response PDU (Réponse ne cas d’erreur) Response PDU (Réponse) (*) N = Nb de mots demandés
  18. 18. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 18 MODBUS TCP : Fonction 3 : Read Holding Registers : Exemple Code Fonction 0x03 Adr. Début P.Fort 0xB1 Adr. Début p.faible 0x50 Nb de bits P.Fort 0x00 Nb de bits p.faible 0x03 Modbus Header 0x03 • Demande lecture de 3 mots. Adresse début : 0xB150 (45392 décimal) Nb de mots : 0x0003 (3 mots) Request PDU (Requête) Response PDU (Réponse) Code Fonction 0x03 Nb d’Octets 0x06 Mot 1: MSByte 0x00 Mot 1: LSByte 0x10 Mot 2: MSByte 0x01 Mot 2: LSByte 0x00 Mot 3: MSByte 0xFF Mot 3: LSByte 0xFF 0xB1 0x50 0x00 0x03 Modbus Header 0x03 0x06 0x00 0x10 0x01 0x00 0xFF 0xFF Commentaires : • Les valeurs lues sont les suivantes Mot 1 : (adr. 45392) = 0x0010 = 16 dec Mot 2 : (adr. 45393) = 0x0100 = 256 dec Mot 3 : (adr. 45394) = 0xFFFF = 65535 dec
  19. 19. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 19 MODBUS TCP : Fonction 4 : Read Input Registers (lecture de N mots d’entrées) Code Fonction 0x04 1 octet Adresse Début 0x0000 à 0xFFFF 2 octets Nombre de mots 1 à 123 (0x7B) 2 octets Code Fonction 0x04 1 octet Nombre d’octets N* 1 octet Données : Valeurs de mots Valeurs entre 0x00 – 0xFF N*2 octets Modbus Header 0x04 Data • Cette fonction permet de lire le contenu d’un block des mots des opérandes affectées aux données type Input Registers (mots des entrées (TOR, Ana) ou certains mots de mémoire). Code Fonction 0x84 1 octet Code d’exception 0x01ou 0x02 ou 0x03 ou 0x04 1 octet Commentaires : • Dans la requête, Adresse Début précise l’adresse (ou No) du premier mot d’entrées demandées. • L’adressage des mots commence à 0; c.à.d les mots de 1 à 16 sont adressés de 0 à 15. • Dans la réponse, les valeurs des mots respectifs sont rangées «octet par octet» en mode BIG ENDIAN  [mot] = [MSByte][LSByte]. Request PDU (Requête) Exception Response PDU (Réponse ne cas d’erreur) Response PDU (Réponse) (*) N = Nb de mots demandés
  20. 20. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 20 MODBUS TCP : Fonction 4 : Read Input Registers : Exemple Code Fonction 0x04 Adr. Début P.Fort 0xB1 Adr. Début p.faible 0x50 Nb de bits P.Fort 0x00 Nb de bits p.faible 0x03 Modbus Header 0x04 • Demande lecture de 3 mots des entrées. Adresse début : 0xB150 (45392 décimal) Nb de mots : 0x0003 (3 mots) Request PDU (Requête) Response PDU (Réponse) Code Fonction 0x04 Nb d’Octets 0x06 Mot 1: MSByte 0x00 Mot 1: LSByte 0x10 Mot 2: MSByte 0x01 Mot 2: LSByte 0x00 Mot 3: MSByte 0xFF Mot 3: LSByte 0xFF 0xB1 0x50 0x00 0x03 Modbus Header 0x04 0x06 0x00 0x10 0x01 0x00 0xFF 0xFF Commentaires : • Les valeurs lues sont les suivantes Mot des entrées 1 : (adr. 45392) = 0x0010 = 16 dec Mot des entrées 2 : (adr. 45393) = 0x0100 = 256 dec Mot des entrées 3 : (adr. 45394) = 0xFFFF = 65535 dec
  21. 21. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 21 Ethernet TCP/IP : Exemple message MODBUS TCP : Fonction 3 Entête (Modbus header) : Length=6; UID=0 Code Fonction : CF = 03 : Lecture N mots Starting Addresse : SA = B150 hex ( 45392) Qtity of Words : NW = 000F hex ( 15) Requête Réponse Entête (Modbus header) : Length=21 hex Code Fonction : CF = 03 : Lecture N mots Qtity of Bytes (Nb octets réponse): NB = 1E hex (30) Data bytes (Données) : 30 octets = 15mots
  22. 22. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 22 MODBUS TCP : Fonction 5 : Write Single Coil (écriture/forçage d’un bit) Code Fonction 0x05 1 octet Adresse du bit 0x0000 à 0xFFFF 2 octets Etat du bit 0x0000 ou 0xFF00 2 octets Code Fonction 0x85 1 octet Code d’exception 0x01ou 0x02 ou 0x03 ou 0x04 1 octet Modbus Header 0x05 Data • Cette fonction permet de forcer l’état (ON/OFF) d’un bit de l’opérande affectée aux données type Coils (p.ex. sorties physiques TOR ou certains bits de la mémoire). Commentaires : • Dans la requête, Adresse Début précise l’adresse du bit demandé. • L’adressage des bits commence à 0; c.à.d les bits de 1 à 16 sont adressés de 0 à 15. • La valeur 0x0000 correspond au forçage à 0 • La valeur 0xFF00 correspond au forçage à 1 • Toutes les autres valeurs sont interdites et ne provoquent pas le changement d’état du bit. • La réponse c’est l’écho de la requête, et elle est retournée par le Server (Esclave) après le forçage du bit demandé. Request PDU (Requête) Exception Response PDU (Réponse ne cas d’erreur) Response PDU (Réponse) Code Fonction 0x05 1 octet Adresse du bit 0x0000 à 0xFFFF 2 octets Etat du bit 0x0000 ou 0xFF00 2 octets
  23. 23. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 23 MODBUS TCP : Fonction 5 : Write Single Coil : Exemple Code Fonction 0x05 Adr. du bit P.Fort 0x00 Adr. du bit p.faible 0x0C Etat du bit P.Fort 0xFF Etat du bit p.faible 0x00 Modbus Header 0x05 • Mise à 1 du bit 12 des sorties physiques TOR. Adresse début : 0x000C (12 décimal) Etat du bit : 0xFF00 (mise à 1) Request PDU (Requête) Response PDU (Réponse)0x00 0x0C 0xFF 0x00 Code Fonction 0x05 Adr. du bit P.Fort 0x00 Adr. du bit p.faible 0x0C Etat du bit P.Fort 0xFF Etat du bit p.faible 0x00 Modbus Header 0x05 0x00 0x0C 0xFF 0x00
  24. 24. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 24 MODBUS TCP : Fonction 6 : Write Single Register (écriture d’un mot) Code Fonction 0x06 1 octet Adresse du mot 0x0000 à 0xFFFF 2 octets Valeur du mot 0x0000 ou 0xFFFF 2 octets Code Fonction 0x86 1 octet Code d’exception 0x01ou 0x02 ou 0x03 ou 0x04 1 octet Modbus Header 0x06 Data • Cette fonction permet d’écrire une valeur dans un mot de l’opérande affectée aux données type Holding Registers (p.ex. sorties TOR,Analogiques ou certains mots de la mémoire). Commentaires : • Dans la requête, Adresse Début précise l’adresse du mot demandé. • L’adressage des mots commence à 0; c.à.d les mots de 1 à 16 sont adressés de 0 à 15. • La réponse c’est l’écho de la requête, et elle est retournée par le Server (Esclave) après l’écriture du mot demandé. Request PDU (Requête) Exception Response PDU (Réponse ne cas d’erreur) Response PDU (Réponse) Code Fonction 0x06 1 octet Adresse du mot 0x0000 à 0xFFFF 2 octets Valeur du mot 0x0000 ou 0xFFFF 2 octets
  25. 25. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 25 MODBUS TCP : Fonction 6 : Write Single Register : Exemple Code Fonction 0x06 Adr. du mot P.Fort 0x9C Adr. du mot p.faible 0x41 Valeur du mot P.Fort 0x00 Valeur du mot p.faible 0x00 Modbus Header 0x06 • Mise à 0 d’un mot. Adresse début : 0x9C41 (40001 décimal) Valeur du mot : 0x0000 (mise à 0) Request PDU (Requête) Response PDU (Réponse)0x9C 0x41 0x00 0x00 Code Fonction 0x06 Adr. du mot P.Fort 0x9C Adr. du mot p.faible 0x41 Valeur du mot P.Fort 0x00 Valeur du mot p.faible 0x00 Modbus Header 0x06 0x9C 0x41 0x00 0x00
  26. 26. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 26 MODBUS TCP : Fonction 15 : Write Multiple Coils (écriture de N bits) Code Fonction 0x0F 1 octet Adresse Début 0x0000 à 0xFFFF 2 octets Nombre de bits 1 à 1968 (0x07B0) 2 octets Nombre d’octets N* 1 octet Etat des bits 0x00 – 0xFF N* octets Code Fonction 0x0F 1 octet Adresse Début 0x0000 à 0xFFFF 2 octet Nombre de bits 1 à 1968 (0x0FB0) 2 octets Modbus Header 0x0F Data • Cette fonction permet de forcer l’état (ON/OFF) de chaque bit d’un block des opérandes affectées aux données type Coils (p.ex. sorties TOR ou certains bits de la mémoire). Code Fonction 0x8F 1 octet Code d’exception 0x01ou 0x02 ou 0x03 ou 0x04 1 octet Commentaires : • Dans la requête, Adresse Début précise l’adresse (ou No) du premier bit demandé. • L’adressage des bits commence à 0; c.à.d les bits de 1 à 16 sont adressés de 0 à 15. • Les valeurs (états) des bits respectifs sont rangées «bit par bit» dans l’octet de la requête. Le bit 0 (LSB) du premier octet de données correspond au bit pointé par l’ Adresse Début. • Les autres bits sont rangés dans des octets suivants dans l’ordre croissant (bits 0 -> 7). • Si le nombre de bits demandés n’est pas multiple de 8, l’état de bits non demandés ne change pas. Request PDU (Requête) Exception Response PDU (Réponse ne cas d’erreur) Response PDU (Réponse) (*) N = (Nb de bits) / 8 ; mais si la reste est différente 0 => N = N+1
  27. 27. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 27 MODBUS TCP : Fonction 15 : Write Multiple Coils : Exemple Code Fonction 0x0F Adr. Début P.Fort 0x00 Adr. Début p.faible 0x13 Nb de bits P.Fort 0x00 Nb de bits p.faible 0x0A Nb d’octets data 0x02 Etat bits P.Fort (bits 27-20) 0xCD Etat bits p.faible (bits 29-28) 0x01 Modbus Header 0x0F • Demande d’écriture de 10 bits de sorties à partir du bit 20 (20 à 29). Adresse début : 0x0013 (19 décimal) Nb de bits : 0x000A (10 bits) Etat des bits 29 – 20: (29)[0 1 1 1 0 0 1 1 0 1](20) = [0x01CD] Commentaires : • Dans le premier octet de la requête l’état des sorties 27 à 20 est 0xCD (1100 1101 binaire), c.à.d les bits 27,26,23,22 et 20 sont à 1 et les bits 25,24,21 sont à 0. • La valeur du deuxième octet qui contient l’état de sorties 35 – 28 est 0x01 (0000 0001 binaire), c.à.d. le bit 29 est à 0 et le bit 28 est à 1. • Les valeurs des bits hors la plage d’adressage (bits 35 – 30) sont sans signification et ces bits ne changeront pas l’état après l’exécution de la requête. Request PDU (Requête) Response PDU (Réponse) 0x00 0x13 0x00 0x0A 0x02 0xCD 0x01 Code Fonction 0x0F Adr. Début P.Fort 0x00 Adr. Début p.faible 0x13 Nb de bits P.Fort 0x00 Nb de bits p.faible 0x0A Modbus Header 0x0F 0x00 0x13 0x00 0x0A
  28. 28. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 28 MODBUS TCP : Fonction 16 : Write Multiple Registers (écriture de N mots) Code Fonction 0x10 1 octet Adresse Début 0x0000 à 0xFFFF 2 octets Nombre de mots 1 à 120 (0x0078) 2 octets Nombre d’octets 2 x N* 1 octet Valeurs de mots 0x00 – 0xFF 2 x N* octets Code Fonction 0x10 1 octet Adresse Début 0x0000 à 0xFFFF 2 octet Nombre de mots 1 à 120 (0x0078) 2 octets Modbus Header 0x10 Data • Cette fonction permet d’écrire des valeurs dans chaque mot d’un block des opérandes affectées aux données type Holding Registers (sorties TOR/Ana, mots de la mémoire,etc…) Code Fonction 0x90 1 octet Code d’exception 0x01ou 0x02 ou 0x03 ou 0x04 1 octet Commentaires : • Dans la requête, Adresse Début précise l’adresse (ou No) du premier mot demandé. • L’adressage des mots commence à 0; c.à.d les mots de 1 à 16 sont adressés de 0 à 15. • Les valeurs des mots respectifs sont rangées «octet par octet» en mode BIG ENDIAN  [mot] = [MSByte][LSByte]. Request PDU (Requête) Exception Response PDU (Réponse ne cas d’erreur) Response PDU (Réponse) (*) N = Nb de mots
  29. 29. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 29 MODBUS TCP : Fonction 16 : Write Multiple Registers : Exemple Code Fonction 0x10 Adr. Début P.Fort 0x9C Adr. Début p.faible 0x41 Nb de mots P.Fort 0x00 Nb de mots p.faible 0x02 Nb d’octets data 0x04 Valeur mot 1 P.Fort 0x12 Valeur mot 1 p.faible 0x34 Valeur mot 2 P.Fort 0xAB Valeur mot 2 p.faible 0xCD Modbus Header 0x10 • Demande d’écriture de 2 mots de sorties à partir du mot 40001 Adresse début : 0x9C41 (40001 décimal) Nb de mots : 0x0002 (2 mots) Valeurs: [0x1234, 0xABCD] = [4660, 43981] Request PDU (Requête) Response PDU (Réponse) 0x9C 0x41 0x00 0x02 0x04 0x12 0x34 Code Fonction 0x10 Adr. Début P.Fort 0x9C Adr. Début p.faible 0x41 Nb de mots P.Fort 0x00 Nb de mots p.faible 0x02 Modbus Header 0x10 0x9C 0x41 0x00 0x02 0xAB 0xCD Response PDU (Réponse)
  30. 30. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 30 MODBUS TCP : Exemple configuration API Schneider
  31. 31. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 31 CPX-FEC : MODBUS TCP Server Mode Remote I/O
  32. 32. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 32 CPX - FEC Remote I/O: Protocole MODBUS TCP : Adresses et données accessibles Mode Remote I/O : Rappel • CPX-FEC en mode Remote I/O supporte le WEB Server et le protocole ModbusTCP (fonctionnalité SERVER) • Le CPX-FEC est un Serveur sur le réseau Ethernet et il doit être géré par un système Client (MODBUS TCP) comme un module des E/S déportées : les fonctionnalités de l’API ne sont pas utilisées ! • Adresse IP, le paramétrage et la configuration du CPX-FEC doivent être paramétrés par la console MMI ou par l’équipement Client • Pour les détails , voir: Manuel CPX-FEC, chapitre 6
  33. 33. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 33 CPX - FEC Remote I/O: Protocole MODBUS TCP : Informations disponibles (1) Remote I/O : Etat du CPX- FEC • Les données sur l’état du CPX-FEC permettent d’avoir l’information sur la configuration et l’état des modules du CPX-FEC • Les données (en lecture seule) sont situées dans le domaine des adresses MODBUS entre 45367 et 45391 • Pour les détails , voir: Manuel CPX-FEC, chapitre 6 Données accessibles en lecture (fonctions 3 et 23) Données accessibles en lecture (fonctions 3 et 23) Données accessibles en lecture (fonctions 3 et 23)
  34. 34. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 34 CPX - FEC Remote I/O: Protocole MODBUS TCP : Informations disponibles (2) Règle générale : • Module communication CPX-FEC met à la disposition du Client les informations suivantes : En lecture Etat des entrées (s’ils existent): - 1 mot (TOR) - 2 mots (Analogiques) Etat des sorties (s’ils existent) - 1 mot (TOR) - 2 mots (Ana) Diagnostic du module - 1 mot pour tous les modules En écriture Etat des sorties - 1 mot (TOR) - 2 mots (Ana, distributeurs) • Chaque module E/S met à la disposition du Client l’ensemble des informations sur son état : En lecture - 1 mot : l’état l’interface de diagnostic E/S - 1 mot : Données Table Système - 1 mot : Données diagnostic module CPX-FEC En écriture - 1 mot : accès à l’interface de diagnostic E/S - 1 mot : Données Table Système Données Diagnostic en directe
  35. 35. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 35 CPX - FEC Remote I/O: Protocole MODBUS TCP : Informations disponibles (3) En lecture - 1 mot : l’état des Entrées (bits 0-3 pour 4DI, bits 0-7 pour 8DI) - 1 mot : Données de diagnostic de module En écriture : rien • Module 4 E TOR (4 DI) et 8 E TOR (8 DI) En lecture - 1 mot : image de l’état des Sorties (bits 0-3) - 1 mot : Données de diagnostic de module En écriture : • Module 4 S TOR (4 DO) - 1 mot : les Sorties (bits 0-3) En lecture - 1 mot : l’état des Entrées (bits 0-7) - 1 mot : image de l’état des Sorties (bits 0-7) - 1 mot : Données de diagnostic de module En écriture : • Module 8 E/ 8 S TOR (8 DI/ 8 DO) - 1 mot : les Sorties (bits 0-7) En lecture - 2 mots : l’état de deux canaux des Entrées - 1 mot : Données de diagnostic de module En écriture : rien • Module 2 E Analogiques (2 AI)
  36. 36. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 36 CPX - FEC Remote I/O: Protocole MODBUS TCP : Informations disponibles (4) • L’organisation de la zone des données disponibles (en lecture et en écriture) correspond à la configuration du terminal CPX. • Les adresses MODBUS des mots de chaque module correspond à la position de chaque module (de gauche à droit) dans la structure CPX. • Elles sont affectées dans l’ordre croissant, sans discontinuité. • Exemple : CPX-FEC:4DI:8DI/8DO:MPA2(4 valves) En lecture : 10 mots - 1 mot : l’état l’interface de diagnostic E/S - 1 mot : Données Table Système - 1 mot : Données diagnostic module CPX-FEC - 1 mot : l’état des Entrées (bits 0-3 pour 4DI) - 1 mot : Données de diagnostic de module - 1 mot : l’état des Entrées (bits 0-7) - 1 mot : image de l’état des Sorties (bits 0-7) - 1 mot : Données de diagnostic de module - 1 mot : image de l’état des bobines (bits 0-3) - 1 mot : Données de diagnostic de module En écriture : 4 mots - 1 mot : accès à l’interface de diagnostic E/S - 1 mot : Données Table Système - 1 mot : les Sorties (bits 0-7 pour 8 DO) - 1 mot : les bobines (bits 0-3) Données Diagnostic en directe !!
  37. 37. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 37 CPX - FEC Remote I/O: Protocole MODBUS TCP : Informations disponibles (5) • Exemple : CPX-FEC:4DI:8DI/8DO:MPA2(4 valves) En lecture : Lecture de 10 mots à partir de l’adresse : 45392 45392 : 1 mot : l’état l’interface de diagnostic E/S 45393 : 1 mot : Données Table Système 45394 : 1 mot : Données diagnostic module CPX-FEC 45395 : 1 mot : l’état des Entrées (bits 0-3 pour 4DI) 45396 : 1 mot : Données de diagnostic de module 45397 : 1 mot : l’état des Entrées (bits 0-7) 45398 : 1 mot : image de l’état des Sorties (bits 0-7) 45399 : 1 mot : Données de diagnostic de module 45400 : 1 mot : image de l’état des bobines (bits 0-3) 45401 : 1 mot : Données de diagnostic de module En écriture : Ecriture de 4 mots à partir de l’adresse : 40001 40001 : 1 mot : accès à l’interface de diagnostic E/S 40002 : 1 mot : Données Table Système 40003 : 1 mot : les Sorties (bits 0-7 pour 8 DO) 40004 : 1 mot : les bobines (bits 0-3)
  38. 38. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 38 CPX - FEC Remote I/O: Protocole MODBUS TCP : Informations disponibles (6) • IMPORTANT : CPX-FEC copie la table MODBUS dans l’image des Entrées/Sorties de l’automate; en conséquence : En lecture : Lecture de 10 mots à partir de l’adresse : 45392 (FST : IW0 – IW9) 45392 = IW0 : 1 mot : l’état l’interface de diagnostic E/S 45393 = IW1 : 1 mot : Données Table Système 45394 = IW2 : 1 mot : Données diagnostic module CPX-FEC 45395 = IW3 : 1 mot : l’état des Entrées (bits 0-3 pour 4DI) 45396 = IW4 : 1 mot : Données de diagnostic de module 45397 = IW5 : 1 mot : l’état des Entrées (bits 0-7) 45398 = IW6 : 1 mot : image de l’état des Sorties (bits 0-7) 45399 = IW7 : 1 mot : Données de diagnostic de module 45400 = IW8 : 1 mot : image de l’état des bobines (bits 0-3) 45401 = IW9 : 1 mot : Données de diagnostic de module En écriture : Ecriture de 4 mots à partir de l’adresse : 40001 (FST : OW0 – OW3) 40001 = OW0 : 1 mot : accès à l’interface de diagnostic E/S 40002 = OW1 : 1 mot : Données Table Système 40003 = OW2 : 1 mot : les Sorties (bits 0-7 pour 8 DO) 40004 = OW3 : 1 mot : les bobines (bits 0-3)
  39. 39. Protocole MODBUS TCP 27/01/2015 WGom:FESTO France : MODBUS TCP 39 MERCI pour la partie théorique MODBUS TCP

×