Routine Modbus pour automate

Transcription

Routine Modbus pour automate
Cat STA N° 22
SYSMAC
MDB_ESCL / MDB_MAIT
Routine Modbus pour
automate OMRON
CONDENSÉ
OMRON
MDB_ESC et MDB_MAIT
Cat. N° STA numéro …
Sommaire
1.
INTRODUCTION ......................................................................................................................................... 3
2.
LE PROTOCOLE MODBUS....................................................................................................................... 3
2.1.
3.
LE CALCUL DE CRC16 (MODE RTU) ........................................................................................................ 3
PRINCIPE DES ROUTINES MDB MAÎTRE/ESCLAVE ........................................................................ 4
3.1. MDB_ESCL ............................................................................................................................................ 4
3.1.1.
Principe ........................................................................................................................................... 4
3.1.2.
Mise en œuvre de la routine MDB_ESCL........................................................................................ 5
3.1.3.
Exemple de trames........................................................................................................................... 5
3.1.4.
Temps d'exécution............................................................................................................................ 6
3.1.5.
Débbugage....................................................................................................................................... 6
3.2. MDB_MAIT ............................................................................................................................................. 7
3.2.1.
Principe ........................................................................................................................................... 7
3.2.2.
Exemple de trame ............................................................................................................................ 8
3.2.3.
Mise en œuvre de la routine MDB_Mait.......................................................................................... 8
4.
RECOMMANDATIONS IMPORTANTES................................................................................................ 9
4.1.1.
4.1.2.
4.1.3.
4.1.4.
Câblage............................................................................................................................................ 9
Protocole ......................................................................................................................................... 9
Adressage ........................................................................................................................................ 9
Port de communication.................................................................................................................... 9
Jean-Pierre VISKOVIC/STA
Page 2
11/10/00
2
MDB_ESC et MDB_MAIT
Cat. N° STA numéro …
1.
Introduction
Les routines Modbus MDB_ESCL et MDB_MAIT ont été développées pour les automates
OMRON muni d'un port RS232C et disposant des instructions SEND et RECV (CQM1, SRM1,
C200HS, série Alpha et CS1).
2.
Le protocole Modbus
Modbus est un protocole du type maître-esclave. Les échanges se font à l'initiative du maître et
comportent une demande du maître et une réponse de l'esclave.
Les demandes du maître sont soit adressées à un esclave, soit adressées à tous les
esclaves. Les commandes de diffusion sont obligatoirement des commandes d'écriture. Il n'y a
alors pas de réponse émise par les esclaves.
Toutes les trames échangées ont la même structure:
N° d'esclave Code fonction
00 à FF
00 à 10
2.1.
Données
Adresse, qté …
Contrôle de trame
CRC16
le calcul de CRC16 (mode RTU)
Le CRC16 (Cyclic Redundancy Check sur 16 bits) réalise une série de décalage à droite et de
OU exclusif avec le polynôme A001 (hex) avec chacun des octets de la trame.
Modbus effectue un codage binaire et non ASCII comme le protocole Sysmac-Way.
Les octets sont transmis directement sans conversion ASCII.
Le numéro d'esclave par exemple "01" sera envoyé tel que (00000001) tandis qu'une trame
ASCII Sysmac-Way enverra 2 octets correspondant au code ASCII codé BCD des caractères
"0" et "1" soit 48 et 49 (00101000 et 00101001).
C'est pourquoi, il n'est pas possible de visualiser sur un terminal ASCII comme l'hyperTerminal de Windows, le trame Modbus reçu puisque chaque paire d'octet sera convertit
suivant la table des codes ASCII et la plupart du temps le caractère ASCII correspondant au
code ne pourra pas être visualisé car il s'agit de caractères de contrôle (ex: 13 exécute un
retour chariot à l'affichage).
Particularité:
Le CRC16 est le seul mot à être envoyé octet de poids faible en premier.
Jean-Pierre VISKOVIC/STA
Page 3
11/10/00
3
MDB_ESC et MDB_MAIT
Cat. N° STA numéro …
3.
Principe des routines MDB maître/esclave
3.1.
MDB_ESCL
3.1.1. Principe
MDB_ESCL permet de lire et écrire les DM 0 à 999. Les zones mémoires IR90 à IR98 et
DM1000 à DM1320 sont utilisées pour le traitements des trames Modbus.
Fonctions implémentées:
03
Lecture de n mots
04
Lecture de n mots
06
Ecriture de 1 mot
(125 mots maxi)
Le code fonction 10 (écriture de plusieurs mots) n'a pas été implémenté car la taille de cette
commande varie avec le nombre de mots à écrire. MDB_ESCL ne traite que les commandes
de 8 octets permettant ainsi de contrôler et d'exécuter la commande en un tour de scrutation.
La trame reçu est copiée dans les DM 1301 à 1304 (8 octets)
DM1301
Esclave
Code
01
04
DM1302
Adresse (Hex)
007B
DM1303
Qté
0001
DM1304
CRC16
41D3
Lorsque le nombre d'octet en attente de lecture dans le buffer de réception n'évolue plus,
MDB_ESCL lance une temporisation dont l'échéance indique que la trame est complète
(silence de fin de trame Modbus).
MDB_ESCL extrait puis contrôle le CRC de la trame reçu dans le même tour de scrutation.
Après vérification du numéro d'esclave, MDB_ESCL exécute la demande puis prépare la
trame de réponse, calcule le CRC16 (une scrutation par octet puisqu'on ne connaît pas à
l'avance la longueur de la réponse) puis renvoi la réponse.
L'exécution de la commande sera très rapide (1 tour de scrutation) en
revanche la réponse à une lecture sera transmise après plusieurs tours de scrutation
correspondant au nombre d'octets.
La réponse est préparée entre les DM1001 et DM1299. Le buffer RS232C peut
transmettre 255 octets maximum, ce qui autorise la lecture de 125 mots maxi (7D)
au delà l'automate ne réponds pas.
Le sous programme 4 extrait à chaque tour de scrutation un octet de la trame réponse à partir
du DM1200, envoi l'octet au sous programme de calcul de CRC puis le décale d'un octet.
Le sous programme n° 1 exécute les décalages et les OU exclusif s nécessaires au calcul de
CRC16. Initialisé au départ à #FFFF, le résultat est concaténé dans le canal 94 pour chaque
octet de la trame consigné dans le canal 96.
Jean-Pierre VISKOVIC/STA
Page 4
11/10/00
4
MDB_ESC et MDB_MAIT
Cat. N° STA numéro …
3.1.2. Mise en œuvre de la routine MDB_ESCL
• Ecrire le numéro d'esclave dans l'octet de poids fort du DM1000.
exemple: esclave n°1 DM1000=0100
•
Modifier les réseaux 1,2,4,10 et 21 en fonction de l'automate et du port utilisé:
Automate et port utilisé
Buffer de Destination Paramètre port de communication
réception RXD/TXD Protocole (DMp)
Format (DMf)
CQM1/SRM1 RS232C
AR09
#0000
DM 6645
DM 6646
CQM1/SRM1 Périphérique
AR10
#1000
DM 6650
DM 6651
C200HS/E/G/X RS232C
IR265
#0000
DM 6645
DM 6646
C200HS/E/G/X Périphérique
IR266
#1000
DM 6650
DM 6651
C200HS/E/G/X Com A
IR284
#0100
DM 6555
DM 6556
C200HS/E/G/X Com B
IR285
#0200
DM 6550
DM 6551
•
•
Sélectionner le protocole ASCII libre dans le DM du Protocole DMp = 1001
Sélectionner un format de communication comportant 8 bits de données (sans quoi les
octets supérieur à 7F ne pourront pas être transmis).
Ex: 9600,Paire,8,1 DMf= 0603
3.1.3. Exemple de trames
Lecture de mots (code 03 ou 04)
demande:
Esclave
code
adresse
01à FF
03 ou 04
0000 à 3E7
réponse:
Esclave
01à FF
code
03 ou 04
Nbre d'octets
01 à FA
quantité
0001 à 007D
er
Valeur du 1 DM
0000 à FFFF
CRC16
P. faible + P. fort
CRC16
P. faible + P. fort
Exemple: Lecture de 2 mots DM0003 et DM0004 de l'esclave 01
demande: 01 04 0003 0002 81CB
réponse: 01 04 04 ABCD 1234 4728 (DM0003=ABCD DM0004=1234)
Ecriture d'un mot (code 06)
demande:
code
Esclave
01à FF
06
adresse
0000 à 3E7
Valeur du mot
0000 à FFFF
CRC16
P. faible + P. fort
réponse: identique à la demande
La réponse est un écho de la demande indiquant la prise en compte par l'automate
de la valeur contenue dans la demande.
N.B: si le n esclave = 00, tous les automates exécutent l'écriture sans émettre de
réponse.
Exemple: Ecriture (ABCD) dans le mot DM0001 de l'esclave 01
demande: 01 06 00 01 AB CD 66 AF
réponse : 01 06 00 01 AB CD 66 AF
Jean-Pierre VISKOVIC/STA
Page 5
11/10/00
5
MDB_ESC et MDB_MAIT
Cat. N° STA numéro …
3.1.4. Temps d'exécution
Dès réception d'une trame, le CRC est contrôlé dans le même tour de scrutation puisque sa
longueur est connue d'avance (8 octets).
Ecriture
L'écriture d'un mots s'effectue dès la réception de la trame avec l'instruction TXD. La réponse
est renvoyée immédiatement dans le même tour de scrutation.
Lecture
La réponse à une commande de lecture varie suivant le nombre de mots à lire (1 à 125).
Pour calculer le CRC de la réponse, MDB_Escl extrait un octet à chaque tour de scrutation.
Pour lire 10 mots il faudra donc 10 tours de scrutation.
3.1.5. Débbugage
MDB_ESCL sauvegarde les drapeaux d'exécution et d'erreur du canal 92 dans le DM1300.
Pour faciliter le débbugage, transférez le DM1300 dans un mots utilisé par une carte de sortie
afin de visualiser rapidement le fonctionnement de la routine.
L'octet de poids faible contient les drapeaux de bonne exécution et l'octet de poids fort les
drapeaux d'erreur.
DM1300
Jean-Pierre VISKOVIC/STA
Page 6
11/10/00
6
MDB_ESC et MDB_MAIT
Cat. N° STA numéro …
3.2.
MDB_Mait
3.2.1. Principe
MDB_Mait calcul le CRC16 et génère une trame Modbus maître en un seul
tour de scrutation. Ceci implique que la taille de la trame est connue à
l'avance (8 octets). En revanche, le CRC de la réponse de l'esclave (si l'on souhaite
le vérifier) nécessite autant de tour de scrutation que d'octets contenus dans la
réponse puisque sa taille n'est pas connue à l'avance.
Par conséquent, si la lecture ne concerne qu'un mot, les réponses étant de taille identique (8
octets) il est alors possible d'effectuer le contrôle de la trame en un seul tour de scrutation en
utilisant la même routine que pour l'envoi de trame. Dans ce cas, des modifications de
programme sont à prévoir.
Réponse de l'esclave:
Lorsque l'AR9 est différent de 0 (une trame MODBUS comporte au minimum
5 octets) le nombre d'octets est sauvegardé dans l'IR91 et la temporisation DM215
est initialisé *. A l'échéance, la totalité est transférée dans les DM0 DM1... . Les
trames Modbus contrairement à SYSMAC-WAY ne sont pas délimitée par un
caractère spécifique mais par un silence.
Le drapeau IR92.14 commande la vérification du CRC16. A chaque tour de
scrutation deux octets (poids fort puis poids faible) sont envoyés au sous
programme de calcul du CRC et si le résultat diffère de celui de la réponse (pointé
par l'IR96) dans ce cas le drapeau IR92.00 (Erreur_CRC) est activé.
* La valeur de présélection du DM215 correspond aux nombre de tours de scrutation
pendant lesquels la valeur de l'AR9 ne change pas (silence de fin de trame).
Fonctions supportées:
MDB_Mait est limité aux commandes comportant 6 octets de données + 2 octets
pour le CRC16, ce qui correspond aux fonctions de base du protocole MODBUS.
Code
01
02
03
04
05
06
08
Lecture de n bits
Lecture de n bits
Lecture de n mots
Lecture de n mots
Ecriture de 1 bit
Ecriture de 1 mot
Lecture et RAZ du compteur d'erreur
Affectations mémoire:
IR000.01: envoi de la trame
IR092.00: Erreur de CRC16 (en réception)
IR90 à IR99: réservé (Modbus3G)
DM 0 à 200: réponse de l'esclave
DM 201 à 204: trame à envoyer
Jean-Pierre VISKOVIC/STA
Page 7
11/10/00
7
MDB_ESC et MDB_MAIT
Cat. N° STA numéro …
3.2.2. Exemple de trame
La trame maître doit être écrite dans les DM201 à 203 (6 octets)
DM201
Esclave
code
01à FF
01 à 08
DM202
Adresse
0000 à FFFF
DM203
Quantité/donnée
0001 à 007D
DM204
CRC16
P. faible + P. fort
Lorsque la trame est complète, la commande 00001 déclenche-la série d'appels au
sous-programme de calcul de CRC16* puis injecte le résultat dans le DM204.
* Attention: Le CRC16 est le seul mot à être envoyé octet de poids faible en premier.
3.2.3. Mise en œuvre de la routine MDB_Mait
•
Après transfert du programme MDB_Escl, modifier les réseaux 2, 3 et 8 en fonction de
l'automate et du port utilisé:
Automate et port utilisé
Buffer de Destination Paramètre port de communication
réception RXD/TXD Protocole (DMp)
Format (DMf)
CQM1/SRM1 RS232C
AR09
#0000
DM 6645
DM 6646
CQM1/SRM1 Périphérique
AR10
#1000
DM 6650
DM 6651
C200HS/E/G/X RS232C
IR265
#0000
DM 6645
DM 6646
C200HS/E/G/X Périphérique
IR266
#1000
DM 6650
DM 6651
C200HS/E/G/X Com A
IR284
#0100
DM 6555
DM 6556
C200HS/E/G/X Com B
IR285
#0200
DM 6550
DM 6551
•
•
Sélectionner le protocole ASCII libre dans le DM du Protocole DMp = 1001
Sélectionner un format de communication comportant 8 bits de données (sans quoi les
octets supérieur à 7F ne pourront pas être transmis).
Ex: 9600, Paire, 8, 1 DMf = 0603
Jean-Pierre VISKOVIC/STA
Page 8
11/10/00
8
MDB_ESC et MDB_MAIT
Cat. N° STA numéro …
4.
Recommandations importantes
4.1.1. Câblage
•
•
Les voyants de communication en façade des automates permettent un diagnostique
rapide du bon fonctionnement des interfaces ainsi que du câblage.
Lorsque l'on sélectionne le protocole libre (et non Sysmac-Way) l'automate ne gère pas le
signal RTS. C'est pourquoi, dans le cas ou des convertisseurs RS232C/485 ou 422 sont
utilisés, veillez à ne pas utiliser les signaux RTS pour permettre à l'interface de se
retourner. Le retour à la haute impédance doit se faire automatiquement.
4.1.2. Protocole
•
L'interrupteur 5 du bloc de 6 dip-switch en façade des automates omron permet de ne pas
tenir compte des DM de paramétrage et d'imposer une communication Sysmac-Way avec
un numéro d'esclave égal à zéro.
4.1.3. Adressage
•
Les automates de la série CxxH utilisent les DM1000 à 1999 pour le paramétrage des
cartes spéciales. MDB_ESCL utilise les DM 1000 à 1315 correspondant aux zones
réservées aux carte spéciales n° 0,1,2 et 3. En cas d'utilisation de ces zones, modifiez le
réseaux 17 contenant l'opération d'addition et remplacez #1000 par le nouvel offset.
4.1.4. Port de communication
•
Certains parasites véhiculés par le signal de masse peuvent provoquer un blocage du port
de communication. Dans ce cas, il est conseillé d'ajouter au programme une commande
de remise à zéro du port utilisé.
Port RS232C CQM1/SRM1/C200HS/E/G/X: IR 252.09
Port périphérique CQM1/SRM1/C200HS/E/G/X: IR 252.08
Port Com A: IR289.00
Port Com B: IR289.01
Jean-Pierre VISKOVIC/STA
Page 9
11/10/00
9