tst 062621a-agl-a0000040 documentation technique...

62
AGILiGATE CANopen - MODBUS Documentation technique 1, rue de la briaudière Tél: +33 (0)2 47 76 10 20 Z.A. la chataîgneraie Fax: +33 (0)2 47 37 95 54 37510 BALLA-MIRE Email: [email protected] FRANCE Web: www.agilicom.fr

Upload: others

Post on 09-Jan-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

AGILiGATE CANopen - MODBUS

Documentation technique

1, rue de la briaudière Tél: +33 (0)2 47 76 10 20

Z.A. la chataîgneraie Fax: +33 (0)2 47 37 95 54 37510 BALLA-MIRE Email: [email protected] FRANCE Web: www.agilicom.fr

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 2 / 62

TABLE DES MATIERES 1. PRÉSENTATION GÉNÉRALE D’AGILIGATE ................................................... 5

1.1. TERMINOLOGIE ............................................................................................... 5 1.2. PRESENTATION MATERIELLE ............................................................................ 5 1.3. COMPATIBILITE AVEC LES AUTRES BUS DE TERRAIN............................................ 6 1.4. METHODE DE PARAMETRAGE ........................................................................... 6 1.5. INTERFACE SERIE MODBUS ........................................................................... 6 1.6. INTERFACE DE DIAGNOSTIC SERIE OU USB ....................................................... 6 1.7. INTERFACE CANOPEN..................................................................................... 6

2. SPÉCIFICATIONS TECHNIQUES...................................................................... 7

2.1. CARACTERISTIQUES TECHNIQUES..................................................................... 7 2.2. CARACTERISTIQUES ELECTRIQUES ................................................................... 8 2.3. CARACTERISTIQUES MECANIQUES .................................................................... 8 2.4. FONCTIONS MODBUS SUPPORTEES ............................................................... 8

3. DESCRIPTION MATÉRIELLE ............................................................................ 9

3.1. CONNECTIQUE................................................................................................ 9 3.1.1. Connecteur d'alimentation..................................................................... 9 3.1.2. Connecteur MODBUS........................................................................... 9 3.1.3. Connecteur liaison série de DIAG......................................................... 9 3.1.4. Connecteur E/S (optionnel) ................................................................... 9 3.1.5. Embase CANopen .............................................................................. 10

3.2. DESCRIPTION DE LA FACE AVANT.................................................................... 11 3.2.1. Voyants ............................................................................................... 11 3.2.2. Réglage de l'adresse du nœud (NodeID)............................................ 12 3.2.3. Réglage RS232/485............................................................................ 12 3.2.4. Réglage résistance de terminaison ..................................................... 13 3.2.5. Réglage du Baudrate CANopen.......................................................... 13

4. PRESENTATION DE CANOPEN ..................................................................... 14

4.1. STRUCTURE D’UN MESSAGE CANOPEN .......................................................... 15 4.2. LA COMMUNICATION DE SERVICE SDO............................................................ 16

4.2.1. Le transfert de segments SDO............................................................ 16 4.2.2. Le transfert de blocs............................................................................ 17 4.2.3. Les erreurs de transfert SDO .............................................................. 18

4.3. LA COMMUNICATION DE PROCESS PDO .......................................................... 19 4.4. LES MESSAGES D’URGENCE (EMERGENCY)................................................. 19 4.5. LES SERVICES DE MANAGEMENT (NMT).......................................................... 20

4.5.1. Les commandes de contrôle ............................................................... 20 4.5.2. La machine à états CANopen ............................................................. 20 4.5.3. Les commandes de surveillance ......................................................... 21

5. LES PROFILS DE COMMUNICATION (DS301) ET I/O (DS401) ..................... 22

5.1. LISTE DES OBJETS RELATIFS AU PROFIL COMMUNICATION DS301 ..................... 22

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 3 / 62

5.2. LISTE DES OBJETS RELATIFS AU PROFIL EQUIPEMENT DS401 ........................... 25 5.3. LISTE DES OBJETS CONSTRUCTEURS .............................................................. 26

6. PARAMETRAGE APPLICATIF DE LA PASSERELLE.................................... 27

6.1. REGLAGE DE L'ADRESSE DU NŒUD CANOPEN (NODEID) ............................... 27 6.2. PRINCIPE DE PARAMETRAGE D’AGILIGATE.................................................... 27 6.3. PARAMETRAGE DE LA LIAISON SERIE MODBUS .............................................. 28 6.4. MODE MAITRE MODBUS : DEFINITION DES SCENARIOS ................................... 29 6.5. MODE MAITRE GENERIQUE : LA FONCTION PASSE-TRAME (0X7F).................. 33 6.6. MODE ESCLAVE MODBUS............................................................................ 33

7. PLAN MEMOIRE .............................................................................................. 34

7.1. PRE REQUIS ................................................................................................. 34 7.2. UTILISATION EN MODE MAITRE MODBUS ....................................................... 36 7.3. UTILISATION EN MODE ESCLAVE MODBUS..................................................... 38

8. SAUVEGARDE ET CHARGEMENT DES PARAMETRES............................... 39

8.1. SAUVEGARDE DES PARAMETRES .................................................................... 39 8.2. CHARGEMENT DES PARAMETRES PAR DEFAUT ................................................. 40

9. DIAGNOSTIC ET AIDE A L'INSTALLATION................................................... 41

9.1. LES "EMERGENCY OBJECTS" CANOPEN......................................................... 41 9.2. UTILISATION DE LA LIAISON SERIE DE DIAGNOSTIC............................................ 42

10. TEMPS DE CYCLE MODBUS .......................................................................... 44

ANNEXES ................................................................................................................ 46

ANNEXE A: FORMAT DES TRAMES MODBUS .......................................................... 47 ANNEXE B: LISTE DES ERREURS RENVOYEES PAR L'AGILIGATE .............................. 60

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 4 / 62

Modifications du document

Version Date Description A 09/2006 - Création.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 5 / 62

1. PRÉSENTATION GÉNÉRALE D’AGILiGATE

1.1. Terminologie CAN : Controller Area Network CAL : CAN Application Layer COB : Communication Object. Unité de transport sur un réseau CAN COB-ID : COB Identifier, codé sur 11 bits CRC : Cyclical Redundancy Check DLC : Data Length Code E/S ou I/O : Entrées/Sorties ou Input/Output PDO : Process Data Object RPDO : Receive PDO TPDO : Transmit PDO SDO : Service Data Object NMT : Network Management

1.2. Présentation matérielle La gamme de passerelles AGILiGATE ajoute à vos équipements la connectivité à un bus de terrain. Le produit se présente sous la forme d’un boîtier qui peut être monté sur rail DIN. Cette passerelle permet à l'intégrateur de minimiser les coûts de développement, car la technologie bus de terrain est complètement intégrée. Le schéma bloc suivant représente les fonctionnalités matérielles d’AGILiGATE :

Figure 1. : Schéma bloc d’AGILiGATE

Dans le cas d'AGILiGATE CANOPEN, la partie isolée peut être alimentée soit par l'alimentation locale (référence AG-P017), soit par l'alimentation présente dans le câble CANOPEN (référence AG-P018).

Microcontrôleur + RAM + FLASH + PLD

Bus de terrain

Liaison série

MODBUS

Liaison série diagnostic

Liaison USB diagnostic

*optionnelle

Isolation Alim isolée

Contrôleur de bus de

terrain

RxM TxM TxD RxD USB±

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 6 / 62

1.3. Compatibilité avec les autres bus de terrain

La gamme AGILiGATE permet la communication avec les bus de terrain PROFIBUS, PROFINET, CANOPEN et DEVICENET. Toutes les passerelles AGILiGATE sont identiques au niveau de la connectique, seul le connecteur pour le bus de terrain change.

1.4. Méthode de paramétrage AGILiGATE CANopen – MODBUS se paramètre entièrement via le logiciel de configuration du réseau CANopen. Cette méthode très intuitive évite au développeur d'avoir à se familiariser avec un nouveau logiciel de paramétrage, ou un nouveau langage de programmation. La passerelle peut être mise en service très rapidement, augmentant la productivité lors de la phase de développement. Les erreurs de paramétrage détectées par AGILiGATE sont signalées au maître par l'utilisation des messages d’urgence (objet EMERGENCY) de CANopen.

1.5. Interface série MODBUS La liaison série MODBUS est utilisée pour les échanges de données. Ce protocole simple est un standard largement répandu et facile à implémenter. La spécification MODBUS est disponible sur le site www.modbus.org.

1.6. Interface de diagnostic série ou USB Les messages d’urgence (objet EMERGENCY) de CANopen permettent une mise au point efficace. Toutefois, l'utilisateur a aussi la possibilité de se connecter grâce à un terminal au port série de diagnostic et ainsi, de voir les messages d'erreurs s'afficher en clair.

1.7. Interface CANopen AGILiGATE est pré-certifiée CANopen. Il respecte les profils DS301 et DS401 en vigueur.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 7 / 62

2. SPÉCIFICATIONS TECHNIQUES

2.1. Caractéristiques techniques

LIAISON CANopen Débit 10, 20, 50, 125, 250, 500, 800, 1000 kbps Connecteur Open connecteur 5 contacts, mâle Résistance de terminaison Non Réglage de l’adresse 2 roues codeuses hexadécimales Réglage du débit Configurable par switch Profiles DS301 et DS401 Diagnostic Par message d’urgence CANopen (EMERGENCY Object)

6 LEDs de status Nombre de RPDO 0 - 25 RPDO Nombre de TPDO 0 - 25 TPDO Isolation 1 kV Autre Déclenchement cyclique ou acyclique, synchrone ou

asynchrone (objet SYNC). Accepte les objets de management réseau (NMT). Serveur SDO.

LIAISON SÉRIE MODBUS Paramétrage A partir du maître CANopen, par SDO (objets de

paramétrage 0x2000 – 0x2032) Accès bus Maître ou Esclave Protocole MODBUS RTU ou ASCII Nombre max de participants sur le bus

32

Distances Maximum 1200m sans répéteur (dépendant du débit et du câble)

Codage NRZ (Non Return to Zero) Transmission Half Duplex, asynchrone Câble Paire torsadée blindée Fonctions acceptées 1, 2, 3, 4, 5, 6, 7, 15, 16, 23 Débit 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 baud Interface RS232 ou RS485 Nombre d'esclaves adressables en mode maître

50 esclaves MODBUS

Plage d'adressage 1 - 247 Nombre de registres MODBUS accessibles

1 - 100 registres en lecture 1 - 100 registres en écriture

Nombre de trames 1 - 50 trames MODBUS différentes Périodicité d’envoi des trames

Cyclique, sur changement, une fois

Connecteur Open connecteur 3 contacts, mâle Résistance de terminaison 120 Ω configurable par switch

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 8 / 62

2.2. Caractéristiques électriques

ALIMENTATION Tension d’alimentation 19 – 30V DC Consommation alim locale (AG-P017)

1W

Consommation alim locale (AG-P018)

0,6W

Consommation alim isolée (AG-P018)

0,5W

Protection contre les inversions de polarité

Oui

Protection contre les courts-circuits

Oui

Alimentation isolée par le câble CANOPEN

14 – 30V DC (Possible uniquement avec réf AG-P018)

2.3. Caractéristiques mécaniques

CARACTÉRISTIQUES MÉCANIQUES Type de boîtier Plastique avec trappe en face avant

IP20 – fixation rail DIN Dimensions 120 x 100 x 23 mm (L x l x h) Poids Environ 100g Température de stockage -25°C…+70°C Température d’utilisation 0°C…+55°C Humidité relative de l’air Max. 80%

2.4. Fonctions MODBUS supportées

Code fonction Fonction Description

1 (0x01) Lecture multi bits (bobines) Lecture de 1 à 1600 booléens (bobines)

2 (0x02) Lecture multi bits (entrées discrètes) Lecture de 1 à 1600 booléens

3 (0x03) Lecture multi registres Lecture de 1 à 100 registres MODBUS 4 (0x04) Lecture multi registres Lecture de 1 à 100 registres MODBUS 5 (0x05) Ecriture d’un booléen (bobine) Force un booléen à ON ou OFF 6 (0x06) Ecriture d’un registre Ecriture d’un registre MODBUS 7 (0x07) Lecture statut Lecture d'un octet de statut

15 (0x0F) Ecriture multi bits (bobines) Ecriture de 1 à 1600 booléens (bobines) 16 (0x10) Ecriture multi registres Ecriture de 1 à 100 registres MODBUS

23 (0x17) Lecture/Ecriture multi registres Lecture et Ecriture simultanées de 1 à 100 registres

Toutes ces fonctions sont détaillées en annexe A.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 9 / 62

3. DESCRIPTION MATÉRIELLE

3.1. Connectique

Figure 2. : Connecteurs sur le coté supérieur du boîtier

Figure 3. : Connecteurs sur le coté inférieur du boîtier *: optionnel

3.1.1. Connecteur d'alimentation

Numéro Nom Description

1 VCC Alimentation 19-30 V 2 GND Masse

3.1.2. Connecteur MODBUS

Numéro Nom Description

1 Rx/A RS232 : Réception (équipement vers AGILiGATE). RS485 : Ligne non inversée : A.

2 Tx/B RS232 : Emission (AGILiGATE vers équipement). RS485 : Ligne inversée : B.

3 GND Masse et blindage Important : Le blindage du câble MODBUS doit impérativement être relié à la masse (patte 3 du connecteur MODBUS), afin de garantir une bonne tenue aux perturbations électromagnétiques.

3.1.3. Connecteur liaison série de DIAG

Numéro Nom Description 1 Rx Réception (équipement vers AGILiGATE) 2 Tx Emission (AGILiGATE vers équipement) 3 GND Masse

3.1.4. Connecteur E/S (optionnel)

Numéro Nom Description

1 E_TOR+ Entrée TOR isolée. 2 E_TOR- Masse isolée. 3 S_TOR Contact relais 4 S_TOR Contact relais

1 2

1 2 3

1 2 3

1 2 3 4

123 12

USB DIAG* RS232 DIAG MODBUS ALIMENTATION

123

CANOPEN E/S TOR*

1 2 3 41 2 3 54

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 10 / 62

3.1.5. Embase CANopen

La connexion au réseau CANopen se fait à l'aide d'un connecteur de type Open Connector mâle, 5 points. L'attribution des broches est conforme à la recommandation CANopen:

Figure 4. : Connecteur CANopen

Numéro Nom Description 1 V- (noir) Masse 2 CAN_L (bleu) Bus line (dominant low) 3 Shield Blindage 4 CAN_H (blanc) Bus line (dominant high) 5 V+ (rouge) Alimentation +24 V

Important : Dans le cas de la référence AG-P017 d'AGILiGATE CANOPEN, l'alimentation ne se fait que par l'alimentation locale.

Il est possible, avec la référence AG-P018 d'AGILiGATE, d'utiliser l'alimentation présente dans le câble CANOPEN pour alimenter la partie isolée de la carte. L'alimentation locale est toujours requise pour la partie logique.

Figure 5. : Câblage suivant référence

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 11 / 62

3.2. Description de la face avant

3.2.1. Voyants

1 - LED verte CAN RUN : Etat de l’activité du bus CANopen

LED CAN RUN Etat Description 1 flash de 200ms puis éteinte 1000ms STOP Le nœud CAN est à l’état

arrêt (Pas de SDO, pas de PDO)

Clignotement 2,5 Hz PRE-OPERATIONNEL

Etat pré-opérationnel (Echange de SDO uniquement)

Allumée en continu OPERATIONNEL Etat opérationnel (Echange de SDO + PDO)

2 - LED rouge CAN ERROR : Erreur sur le bus CANopen

LED CAN ERROR Etat Description OFF Pas d’erreur Fonctionnement correct Allumée 200ms puis éteinte 1000ms Niveau limite atteint L'un des compteurs

d'erreurs du contrôleur CAN a atteint la limite d'avertissement.

2 flash de 200ms puis éteinte 1000ms Evènement de contrôle d'erreur

Un évènement de type "guard" ou "heartbeat" s'est produit.

3 flash de 200ms puis éteinte 1000ms Erreur de sync. Le message sync. n'a pas été reçu pendant le cycle de communication configuré.

ON Bus désactivé Communication CAN non établie

3 - LED orange EMERGENCY : Problème diagnostiqué et non résolu dans le paramétrage de la passerelle, ou la communication MODBUS. 4 - LED orange RUN : Clignote à 2Hz, fonctionnement correct du programme. 5 - LED orange TxD MODBUS : Transmission en cours sur MODBUS. 6 - LED orange RxD MODBUS : Réception en cours sur MODBUS.

1 23 45 6

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 12 / 62

3.2.2. Réglage de l'adresse du nœud (NodeID)

Deux roues codeuses hexadécimales permettent de régler le nodeID CANopen :

3.2.3. Réglage RS232/485 Le DIP switch 1 permet de choisir le support physique de la liaison MODBUS : RS232 ou RS485. la configuration se fait de la façon suivante :

Switch 1 : RS ( mode RS232/485 ) Position Description ON RS232 OFF RS485

Mode RS232 :

Figure 6. : Réseau MODBUS en mode RS232

Ce mode ne peut être utilisé que dans le cas d'une communication entre 2 équipements seuls (connexion point à point).

Important : en mode RS232, s'assurer que la résistance de terminaison n'est pas connectée (DIP switch 2 sur OFF).

4

0

4

8

C

1235679AB

DEF

4

0

4

8

C

1235679AB

DEF X1

X10X10 (hexadécimal) permet de régler le poids fort du nodeID CANopen

X1 (hexadécimal) permet de régler le poids faible du nodeID CANopen

Maître MODBUS

Esclave MODBUS

Tx

Tx Rx

Rx

Gnd Gnd

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 13 / 62

Mode RS485 :

Figure 7. : Réseau MODBUS en mode RS485

Ce mode est le plus utilisé car il permet la connexion de plusieurs esclaves sur le bus. Il présente d'autres avantages comme une immunité aux bruits et une distance maximum inter équipements plus importantes qu'en RS232.

3.2.4. Réglage résistance de terminaison Si le mode de communication utilisé est le RS485, il doit y avoir une résistance de terminaison de 120Ω aux 2 extrémités du réseau (cf exemple en §3.2.2). La connexion d'une résistance de terminaison se fait de la façon suivante :

Switch : RT ( Résistance de Terminaison ) Position Description ON Terminaison de 120Ω OFF Pas de terminaison

3.2.5. Réglage du Baudrate CANopen

Le Baudrate est sélectionné à l’aide de 3 DIP switches. La table ci-dessous précise la position des switches à respecter pour régler le Baudrate.

# Baudrate Switch 3 Switch 4 Switch 5

0 1 Mbps 25 m ON ON ON

1 800 kbps 50 m ON ON OFF

2 500 kbps 100 m ON OFF ON

3 250 kbps 250 m ON OFF OFF

4 125 kbps 500 m OFF ON ON

6 50 kbps 1000 m OFF ON OFF

7 20 kbps 2500 m OFF OFF ON

8 10 kbps 5000 m OFF OFF OFF

Tableau 1 : Réglage du Baudrate CANopen

La distance indiquée pour chaque Baudrate correspond à la distance maximum autorisée pour un segment. La passerelle est livrée préréglée au Baudrate de 20 kbps.

Maître MODBUS

Esclave MODBUS

Esclave MODBUS

Esclave MODBUS

Esclave MODBUS

A

A

A

A A

B

B B B

B 120Ω 120Ω

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 14 / 62

4. PRESENTATION DE CANopen Le réseau CANopen est basé sur la couche physique CAN sur laquelle on ajoute la couche applicative CANopen. Cette couche a été développée par le CiA (CAN in Automation). Les 2 profiles de CANopen (communication et équipement) utilisent un sous-ensemble de services de communication offerts par CAL (CAN Application Layer). Le profil communication de CANopen (CiA DS301) décrit:

- les protocoles de communication avec tous les éléments du réseau, - le concept de configuration et communication adapté au traitement de données de type temps

réel, - les accès directs aux paramètres des éléments du réseau, - les communications de données où les aspects temporels sont critiques, - les mécanismes permettant d'assurer la synchronisation entre les éléments du réseau,

Le profil équipement représente un moyen commun pour décrire la fonctionnalité d'un élément particulier (aussi appelé nœud) du réseau (CiA DS4xx). Plus particulièrement, le profil CiA DS401 décrit la fonctionnalité spécifique des E/S (entrées/sorties). CANopen permet:

- l’accès simplifié à tous les paramètres de communication et équipement, - la synchronisation de plusieurs équipements, - la configuration automatique du réseau, - la communication cyclique ou déclenchée des données process temps réel.

Pour cela, CANopen utilise 4 types d'objets de communication (COB):

- Process Data Objects (PDO) pour les données temps réel, - Service Data Objects (SDO) pour le paramétrage, la programmation, la sauvegarde, et les

accès acycliques en général, - Network Management (NMT), - Objets prédéfinis notamment pour la synchronisation et les messages d'urgence.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 15 / 62

4.1. Structure d’un message CANopen

La trame CANopen est véhiculée par un message CAN. Par conséquent, elle comporte 8 octets de "charge utile", en plus du COB-ID (Communication OBject IDentifier) de 11 bits, du champ de commande de 6 bits, et du CRC de 16 bits:

COB ID DLC Données CRC 11 bits 6 bits 8 octets 2 octets

La structure du COB-ID est la suivante:

Code fonction Identifiant du nœud (NodeID) 4 bits 7 bits

Le code fonction informe sur le type de message et sa priorité. L'identifiant du nœud correspond à son adresse physique (Node ID). Plus le COB-ID est faible, plus la priorité est élevée. Les principaux COB-ID traités par le nœud AGILiGATE CANopen sont les suivants:

Code fonction Index de l'objet COB-ID résultant Commandes NMT - 0 SYNC 1005h 80h EMERGENCY 1014h 80h + Node ID TPDO2 1801h 280h + Node ID TPDO3 1802h 380h + Node ID TPDO4 1803h 480h + Node ID TPDO5 1804h 144h … … … TPDO26 1819h 159h RPDO2 1401h 300h + Node ID RPDO3 1402h 400h + Node ID RPDO4 1403h 500h + Node ID RPDO5 1404h 104h … … … RPDO26 1419h 119h TSDO 1200h 580h + Node ID RSDO 1200h 600h + Node ID Surveillance NMT - 700h + Node ID

Tableau 2 : COB-ID traités par AGILiGATE

Le COB-ID des PDO5-26 peut être modifié à l’aide des messages SDO.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 16 / 62

4.2. La communication de service SDO

La communication SDO permet d’accéder au dictionnaire d’objets en lecture/écriture et de manière acyclique (communication client - server).

4.2.1. Le transfert de segments SDO Le transfert de segments est le plus fréquent et est obligatoirement supporté. Il est divisé en 4 services :

• Initiate SDO Dowload • Dowload SDO segment • Initiate SDO Upload • Upload SDO segment

Le client initie d'abord la communication grâce à un message de type "Initiate SDO Download" ou "Initiate SDO Upload". Cette trame contient un octet de commande, l'index et le sub-index de l'objet à lire ou écrire, et 4 octets de données :

commande Index subindex donnée 0 donnée 1 donnée 2 donnée 3 1 octet 2 octets 1 octet 1 octet 1 octet 1 octet 1 octet

Tableau 3 : Structure des messages "Initiate SDO download" et "Initiate SDO upload"

Le plus souvent, seulement 4 octets ou moins doivent être transférés. Dans ce cas, l'envoi d'un message "Initiate SDO" suffit. Ce mode est appelé "Expedited transfer". Voici la description des valeurs fréquentes de l'octet de commande dans ce cas :

Commande SDO Description Longueur

données Utilité

23h Download request 4 octets Ecriture de 4 octets dans AGILiGATE 2Bh Download request 2 octets Ecriture de 2 octets dans AGILiGATE 2Fh Download request 1 octets Ecriture d’un octet dans AGILiGATE 60h Download response - Confirmation de réception 40h Upload request - Lecture de données dans AGILiGATE 43h Upload response 4 octets Réponse à une requête de lecture contenant 4

octets de données 4Bh Upload response 2 octets Réponse à une requête de lecture contenant 2

octets de données 4Fh Upload response 1 octets Réponse à une requête de lecture contenant 1

octets de données 80h Abort message - AGILiGATE signale une erreur d’accès à l’objet

Tableau 4 : Commandes SDO en mode "Expedited transfer"

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 17 / 62

Si plus de 4 octets doivent être transférés, il faut alors segmenter les données. Ce mode est appelé "Segmented transfer". Le nombre d'octets de données devant être transférés est contenu dans la trame "Initiate SDO download" dans le cas d'une écriture, ou dans la réponse à la trame "Initiate SDO Upload" dans le cas d'une lecture. Les messages échangés ensuite sont du type "Download SDO segment" ou "Upload SDO segment" :

commande donnée 0 donnée 1 donnée 2 donnée 3 donnée 4 donnée 5 1 octet 1 octet 1 octet 1 octet 1 octet 1 octet 1 octet

Tableau 5 : Structure des messages "SDO download segment" et "SDO upload segment"

Figure 8. Principe du transfert de segments SDO

e : bit 1 de l'octet de commande = type de transfert (0=segmented ; 1=Expedited) t : bit 4 de l'octet de commande = toggle bit : ce bit est inversé à chaque nouveau segment. c : bit 0 de l'octet de commande : indique s' il reste des segments à télécharger. Pour une description plus complète de l'octet de commande dans ce mode de fonctionnement, se référer à la norme DS301.

4.2.2. Le transfert de blocs Le transfert de blocs de segments est optionnel. Il est utilisé pour un transfert plus rapide dans le cas de l'échange d'un nombre important de données. Dans ce mode de transfert, les données sont transférées par l'intermédiaire de séquences de plusieurs blocs, chaque bloc contenant jusqu'à 127 segments, chaque segment contenant 7 octets de données utiles. Contrairement au transfert de segments, il n'y a pas de confirmation de transfert entre chaque envoi de segment. La confirmation se fait à la fin de chaque bloc.

Pour plus d'information sur ce type de transfert, se référer à la norme DS301.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 18 / 62

4.2.3. Les erreurs de transfert SDO

Un abort message signale une erreur d’accès à l’objet demandé. L'index et sub-index sont ceux de l'objet pour lequel la requête a échoué. Le code d'erreur est contenu dans les octets de données 0 à 3.

commande Index subindex Code d'erreur 0x80 2 octets 1 octet 4 octets

Tableau 6 : Structure des messages "Abort message"

Les codes erreurs suivants sont supportés :

Code d'erreur Description 05030000h Toggle bit inchangé 05040001h Commande SDO non supportée 05040002h Taille du block non valide 05040003h Séquence non valide 05040004h Erreur CRC 05040005h Mémoire insuffisante 06010000h Accès incorrect à l'objet 06010001h Objet accessible en écriture seule 06010002h Objet accessible en lecture seule 06020000h Objet non supporté 06040041h Objet non mappable dans le PDO 06040042h Taille du PDO excédée 06040043h Incompatibilité générale des paramètres 06040047h Incompatibilité générale interne à l'équipement 06060000h Erreur d'accès due à une erreur matérielle 06070010h Type de donnée impossible, la longueur ne correspond pas 06070012h Type de donnée impossible, longueur trop grande 06070013h Type de donnée impossible, longueur trop petite 06090011h Sub-index non supporté 06090030h Valeur des paramètres écrits hors de la plage autorisée 06090031h Valeur des paramètres écrits trop grande 06090032h Valeur des paramètres écrits trop petite 08000000h Erreur générale 08000020h Les données n'ont pas pu être transférée ou stockée 08000021h Les données n'ont pas pu être transférée ou stockée à cause d'une erreur

locale 08000022h Les données n'ont pas pu être transférée ou stockée à cause de l'état actuel

de l'équipement

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 19 / 62

4.3. La communication de process PDO La communication de type PDO est utilisée pour l'échange temps réel des données du process. Un PDO peut être transmis cycliquement ou acycliquement et de manière synchrone ou asynchrone. Ce type d’information se retrouve dans les objets de paramétrage de chaque PDO (0x1400 et 0x1800). Le nœud AGILiGATE supporte 25 TPDO (Transmit PDO), et 25 RPDO (Receive PDO). Le mapping décrit les objets qui doivent être échangés via les PDO. Les 25 RPDO sont utilisés pour transporter les objets " registre MODBUS " accessibles en écriture (0x6411). Les 25 TPDO sont utilisés pour transporter les objets " registres MODBUS " accessibles en écriture (0x6401). Les objets 1401h - 1419h permettent de décrire les paramètres de communication des RPDO2 - 26. Les objets 1601h - 1619h permettent de décrire les paramètres de mapping des RPDO2 - 26. Les objets 1801h - 1819h permettent de décrire les paramètres de communication des TPDO2 - 26. Les objets 1A01h - 1A19h permettent de décrire les paramètres de mapping des TPDO2 - 26. La structure d'un télégramme de communication PDO est la suivante:

COB ID DLC Données CRC 11 bits 6 bits Jusqu'à 8 octets 2 octets

4.4. Les messages d’urgence (EMERGENCY)

Les erreurs internes à l'équipement AGILiGATE sont signalées sur CANopen par l'intermédiaire des "Emergency Objects". La structure d'un message "Emergency" est la suivante :

COB ID DLC Données CRC 80h +

Node ID 6 bits 8 octets 2 octets

Octet 0 Octet 1 Octet 2 Octet 3 Octet 4 Octet 5 Octet 6 Octet 7

Emergency Error Code

Error register (Object 1001h)

Manufacturer specific Error Field

Le détail des "Emergency objects" est fourni en §9.1.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 20 / 62

4.5. Les services de management (NMT) Les services de management du réseau sont divisés en 2 groupes:

- les services de contrôle d'un noeud, servant à son initialisation, son démarrage ou son arrêt, - les services de surveillance de la connexion (heartbeat et Node guarding).

4.5.1. Les commandes de contrôle

Une commande NMT de contrôle se décompose comme suit:

COB-ID Octet 1 Octet 2 0 Octet de commande Node ID

Le COB-ID d'une commande NMT de contrôle est toujours 0. L'identifiant du nœud concerné par la commande est transmis dans l'octet 2. Un node ID = 0 correspond à une commande de broadcast, acceptée par tous les nœuds du réseau. Les octets de commande suivants sont possibles:

Octet de commande Description Transition 01h Démarrage nœud distant 1 02h Stopper nœud distant 2 80h Entrer en mode pré-opérationnel 3 81h Reset nœud distant 4 82h Reset communication 5

Tableau 7 : Octets de contrôle

La colonne "transition" se réfère au graphe d'état du chapitre 4.5.2.

4.5.2. La machine à états CANopen Tous les nœuds CANopen fonctionnent suivant la même machine à états. Après initialisation, le nœud entre dans le mode pré-opérationnel. Lors du passage en mode pré-opérationnel, le nœud envoie un message de boot-up. Dans cet état, les paramètres SDO peuvent être lus et écrits. Pour pouvoir utiliser la communication PDO, le nœud CAN doit d'abord passer en mode opérationnel. Le graphe suivant illustre la machine à état de l’AGILiGATE CANopen:

Figure 9. : Machine à états CANopen

Initialisation

Pré-opérationnel

Opérationnel

Stoppé

Mise sous tension ou reset

4/5

4/5 3

2

1

2

31

Boot-up

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 21 / 62

Mode pré-opérationnel: La communication SDO est possible. Mode opérationnel: Transmission des PDO. La communication SDO est toujours possible. Mode stoppé: Seule la communication NMT est possible.

4.5.3. Les commandes de surveillance Une commande NMT de surveillance se décompose comme suit:

COB-ID Octet 1 700h + Node ID Etat

Les octets d'état suivants sont possibles:

Octet d'état Description vide Requête node guarding 0h Boot-up 4h Etat stoppé 5h Etat opérationnel

7Fh Etat pré opérationnel

Tableau 8 : Octets d'état

Si le node guarding est désactivé et le heartbeat est activé, AGILiGATE produit cycliquement un octet de données qui contient son état actuel. Si le node guarding est activé, AGILiGATE consomme une requête de node guarding, puis produit une réponse en indiquant son état actuel. Le bit de poids fort de l'octet d'état est complémenté à chaque nouvel envoi.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 22 / 62

5. LES PROFILS DE COMMUNICATION (DS301) ET I/O (DS401)

5.1. Liste des objets relatifs au profil communication DS301 Le profil DS301 normalise un certain nombre d’objets accessibles en lecture/écriture. Ces objets se situent dans une bibliothèque d’objets implémentée dans la passerelle AGILiGATE CANopen.

Objet Nom Type Attr. Défaut Description Communication objects

1000h Device type U32 ro 0x000C0191 I/O profile 1001h Error register U8 ro Registre d'erreurs 1003h Pre-defined error field U32 Liste des 2 dernières

erreurs ou warnings 0h Nombre d'erreurs U8 rw 0 Écrire 0 pour effacer

l'historique 1h-5h Champ d'erreur standard U32 ro Erreur n…

1005h COB-ID sync. U32 rw 0x80 Définit de COB-ID de l'objet SYNC

1008h Manufacturer device name STRING ro AGILIGATE CANOPEN

Nom de l'équipement

1009h Manufacturer hardware version

STRING ro V1.0 Version matérielle

100Ah Manufacturer software version

STRING ro V1.0 Version logicielle

100Ch Guard time U16 rw 0 Durée du guard time en ms.

100Dh Life time factor U8 rw 0 Facteur multiplicateur du guard time. =0 si inutilisé

1010h

Store parameters REC Sauvegarde des paramètres de l’AGILiGATE

0h Number of entries U8 ro 5 1h All parameters U32 rw 1 2h Communication parameters U32 rw 1 Obj 0x1000 à

0x1018, 0x1401 à 0x1419, 0x1601 à 1619, 0x1801 à 0x1819, 0x1A01 à 1A19

3h Application parameters U32 ro 0 Non modifiable

4h Physical MODBUS settings U32 rw 1 Obj 0x2000 5h Scenarios parameters U32 rw 1 Obj 0x2001 à 0x2032

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 23 / 62

Objet Nom Type Attr. Défaut Description

1011h Restore parameters Chargement des

paramètres par défaut de l’AGILiGATE

0h Number of entries U8 ro 5

1h All parameters U32 rw 1 2h Communication parameters U32 rw 1 Obj 0x1000 à

0x1018, 0x1401 à 0x1419, 0x1601 à 1619, 0x1801 à 0x1819, 0x1A01 à 1A19

3h Application parameters U32 ro 0 Non modifiable 4h Physical MODBUS settings U32 rw 1 Obj 0x2000 5h Scenarios parameters U32 rw 1 Obj 0x2001 à 0x2032

1014h COB-ID emergency object U32 rw 0x80 + $NodeID Définit le COB-ID de l'objet EMERGENCY

1017h Producer heartbeat time U16 rw 0 Temps de cycle du heartbeat. =0 si inutilisé

1018h Identity object REC Informations générales sur le noeud AGILiGATE CANopen

0h Number of entries U8 ro 4 1h Vendor ID U32 ro 0x000001ED Identifiant unique CiA 2h Product code U32 ro 0x00000001 Version de

l'équipement 3h Revision number U32 ro 0x00000001 Rev majeure +

mineure 4h Serial number U32 ro 0xFFFFFFFF Non implémenté

1200h 1st server SDO parameters REC Description des paramètres du serveur SDO

0h Number of entries U8 ro 2 1h COB-ID client → server (rx) U32 ro 0x600 + $NodeID Définit le COB-ID des

échanges TSDO client → server

2h COB-ID server → client (tx) U32 ro 0x580 + $NodeID Définit le COB-ID des échanges RSDO server → client

1401h Receive PDO2 communication parameter

REC Paramètres de communication du RPDO2

0h Largest Sub-Index supported

U8 ro 2

1h COB-ID used by PDO U32 rw 0x300 + $NodeID Définit le COB-ID des échanges RPDO

2h Transmission Type U8 rw 255 0: synchrone acyclique 1-240: synchrone cyclique 253-255: asynchrone

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 24 / 62

Objet Nom Type Attr. Défaut Description 1402h Receive PDO3

communication parameter REC rw Paramètres de

communication du RPDO3 (idem RPDO2)

... ... ... ... … 1419h Receive PDO26

communication parameter REC rw Paramètres de

communication du RPDO26 (idem RPDO2)

1601h Receive PDO2 mapping parameter

REC Mapping du RPDO2

0h Number of mapped application objects in PDO

U8 ro 4

1h-4h PDO mapping of the nth application object to be mapped

U32 ro 0x6411n10 Index: 0x6411 Sub-index: n Longueur de l'objet: 16 bits

1602h Receive PDO3 mapping parameter

REC ro Mapping du RPDO3 (idem RPDO2)

... ... ... ... … 1619h Receive PDO26 mapping

parameter REC ro Mapping du RPDO26

(idem RPDO2) 1801h Transmit PDO2

communication parameter REC Paramètres de

communication du TPDO2

0h Largest Sub-Index supported

U8 ro 5

1h COB-ID used by PDO U32 rw 0x280 + $NodeID Définit le COB-ID des échanges TPDO

2h Transmission Type U8 rw 255 0: synchrone acyclique 1-240: synchrone cyclique 253-255: asynchrone

1802h Transmit PDO3 communication parameter

REC rw Paramètres de communication du TPDO3 (idem TPDO2)

... ... ... ... … 1819h Transmit PDO26

communication parameter REC rw Paramètres de

communication du TPDO26 (idem TPDO2)

1A01h Transmit PDO2 mapping parameter

REC Mapping du TPDO2

0h Number of mapped application objects in PDO

U8 ro 4

1h-4h PDO mapping of the nth application object to be mapped

U32 ro 0x6401n10 Index: 0x6401 Sub-index: n Longueur de l'objet: 16 bits

1A02h Transmit PDO3 mapping parameter

REC ro Mapping du TPDO3 (idem TPDO2)

... ... ... ... … 1A19h Transmit PDO26 mapping

parameter REC ro Mapping du TPDO26

(idem TPDO2)

Tableau 9 : Objets relatifs au profil communication DS301

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 25 / 62

5.2. Liste des objets relatifs au profil équipement DS401

Le profil DS401 normalise un certain nombre d’objets accessibles en lecture/écriture. Ces objets se situent dans une bibliothèque d’objets implémentés dans la passerelle AGILiGATE CANopen. L’objet 6401h permet de lire 100 registres MODBUS. L’objet 6411h permet d’écrire 100 registres MODBUS. Objet Nom Type Attr. Déf. Description

Device profile objects 6401h Read Analogue input 16-bit Lecture des entrées 16 bits

0h Nb of Analogue Input 16 Bit U8 ro 100 1h Read register 1 U16 ro 0 Registre MODBUS 1 en lecture ... ... … … ... Registre MODBUS n en lecture

64h Read register 100 U16 ro 0 Registre MODBUS 100 en lecture 6411h Write Analogue output 16-bit Ecriture en sortie 16 bits

0h Nb of Analogue output 16 Bit U8 rw 100 1h Write register 1 U16 rw 0 Registre MODBUS 1 en écriture ... ... … … … Registre MODBUS n en écriture

64h Write register 100 U16 rw 0 Registre MODBUS 100 en écriture

Tableau 10 : Objets relatifs au profil équipement DS401

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 26 / 62

5.3. Liste des objets constructeurs

Ces objets sont également appelés "Manufacturer Object". L’objet 2000h permet de décrire les paramètres MODBUS. Les objets 2001h – 2032h servent à décrire les paramètres de chaque scénario. Objet Nom Type Attr. Déf. Description

Manufacturer objects 2000h MODBUS parameters REC Paramètres MODBUS

0h Number of entries U8 ro 8 Nombre de sub-index 1h BaudRate U8 rw 5 Vitesse liaison série 2h Timeout U8 rw 50 Timeout (ms) à la réception 3h Stop bit and Parity bit U8 rw 2 Bits de stop et parité 4h Retries U8 rw 2 Nombre d’essais successifs en cas

de Timeout 5h CRC/LRC BOOLEAN rw 0 Vérification du CRC (RTU)

LRC (ASCII) 6h Protocol selection BOOLEAN rw 0 RTU / ASCII 7h AGILiGATE Master/Slave BOOLEAN rw 0 maître ou esclave MODBUS 8h Address in slave mode U8 rw 01 Adresse MODBUS si Esclave

2001h Scénario 1 REC Description scénario 1 0h Number of entries U8 ro 10 Nombre de sub-index 1h MODBUS function U8 rw 0 Fonction MODBUS 2h Slave address U8 rw 1 Adresse de l’esclave 3h Frame trigger U8 rw 0 Type de mise à jour 4h Cycle time U8 rw 0 Temps de cycle 5h Address of 1st MODBUS bit or

register to read U16 rw 0 Adresse du 1er bit ou registre

MODBUS à lire 6h Number of MODBUS bits or

registers to read U16 rw 1 Nombre de bits ou registres

MODBUS à lire 7h 1st associated TPDO U8 rw 0 TPDO associé au scénario 8h Address of 1st MODBUS bit or

register to write U16 rw 0 Adresse du 1er bit ou registre

MODBUS à écrire 9h Number of MODBUS bits or

registers to write U16 rw 1 Nombre de bits ou registres

MODBUS à écrire Ah 1st associated RPDO U8 rw 0 RPDO associé au scénario

2002h Scénario 2 REC Description du scénario 2 (idem scénario1)

... ... … … … 2032h Scénario 50 REC Description du scénario 50 (idem

scénario1)

Tableau 11 : Objets constructeurs

Le rôle de ces objets est expliqué en détail au § 6.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 27 / 62

6. PARAMETRAGE APPLICATIF DE LA PASSERELLE

6.1. Réglage de l'adresse du nœud CANOPEN (NodeID) Le nodeID de la passerelle AGILiGATE doit être le même que celui choisi dans le logiciel de configuration du réseau CANopen. Il doit être compris entre 1 et 7FH (127D) compris. Par défaut, AGILiGATE est livrée préréglée au NodeID 3D.

Le NodeID est modifiable à l'aide de 2 roues codeuses, présentes en face avant du boîtier. A la mise sous tension, AGILiGATE lit le nodeID présent sur les roues codeuses. S'il est modifié, il est nécessaire de redémarrer la passerelle pour la prise en compte du nouveau nodeID.

6.2. Principe de paramétrage d’AGILiGATE Les objets constructeurs 2000h-2032h implémentés dans AGILiGATE CANopen – MODBUS permettent de :

• Configurer la liaison série MODBUS, • Définir si AGILIGATE est maître ou esclave MODBUS, • Définir, sous forme de scénarios, les trames MODBUS à générer pour échanger des

données entre les registres MODBUS et l’espace mémoire CANOPEN, en les associant à un PDO.

Les configurateurs de réseau CANopen permettent de modifier facilement les objets. Ils présentent une bibliothèque d’objets avec index et sub-index, décrits dans le fichier EDS.

Le fichier EDS décrivant AGILiGATE CANopen se nomme AGILIGATE.EDS.

Figure 10. : Configuration du réseau CANopen dans la Console ApplicomIO de Woodhead

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 28 / 62

6.3. Paramétrage de la liaison série MODBUS

L'objet 2000h sert à décrire les caractéristiques physiques de la liaison asynchrone MODBUS.

Objet Nom Type Attr. Déf.

Description

2000h MODBUS parameters REC Paramètres MODBUS 0h Number of entries U8 ro 8 Nombre de sub-index 1h BaudRate U8 rw 5 Valeur de l’objet Baudrate

00h 600 Bauds 01h 1200 Bauds 02h 2400 Bauds 03h 4800 Bauds 04h 9600 Bauds 05h 19200 Bauds 06h 38400 Bauds 07h 57600 Bauds

2h Timeout in 10 ms (in

reception) U8 rw 50 Valeur de l’objet Timeout

1 10ms 2 20ms … … 50 500ms … …

255 2.55s

3h Stop bit and Parity bit U8 rw 2 Valeur de l’objet bit parité / bit stop 00h no parity / 1 stop 01h no parity / 2 stop 02h even parity / 1 stop 03h odd parity / 1 stop

4h Retries U8 rw 2 Valeur de l’objet Essais

0 0 1 1 2 2 … … 5 5

5h CRC/LRC BOOLEAN rw 0 Valeur de l’objet CRC/LCR 00h CRC/LRC non calculé 01h CRC/LRC calculé

6h Protocol selection BOOLEAN rw 0 Valeur de l’objet Protocole

00h RTU (8 bits de données)

01h ASCII (7 bits de donnée)

7h AGILiGATE

Master/Slave BOOLEAN rw 0 Valeur de l’objet Mode

00h Esclave 01h Maître

8h Address in slave mode U8 rw 01 01 à 247

Tableau 12 : Objets de description de la liaison série MODBUS

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 29 / 62

6.4. Mode maître MODBUS : définition des scénarios

Quand AGILiGATE est maître MODBUS, les trames MODBUS à envoyer sont décrites dans une liste de 50 scénarios. Chaque scénario précise :

• la fonction MODBUS à envoyer, • l'adresse de l’équipement de destination, • l’événement qui déclenche l’envoi de la trame, • l’adresse du premier registre à lire/écrire, • le nombre de registres à lire/écrire, • le 1er PDO associé au scénario.

Un mécanisme de scrutation des scénarios est implémenté par AGILiGATE, afin de construire les trames MODBUS à envoyer. Ce mécanisme est illustré par un exemple à la figure suivante :

Figure 11. : Mécanisme de scrutation des scénarios

L'ordre des scénarios ne définit pas l'ordre dans lequel les trames sont envoyées.

Scénario 1 Envoi fonction 0x06, esclave #1

Sur changement des sorties CANopen, Ecrire registre 0x154

Scénario 2 Envoi fonction 0x03, esclave #4 A chaque cycle de 2 secondes,

Lire 5 registres à partir du registre 0x17

Scénario 50 Envoi fonction 0x10, esclave #2

Une seule fois, Ecrire 10 registres à partir du registre 0x259

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 30 / 62

Les objets 2001h – 2032h servent à décrire les 50 scénarios. Chaque objet est composé de 10 sub-index. Le premier sub-index indique le nombre de sub-index présent dans l’objet. Les 10 sub-index qui constituent un scénario sont décrits ci-dessous :

Objet Nom Type Attr. Déf.

Description

2001h MODBUS Scenario 1 REC Description du scénario 1 0h Number of entries U8 ro 10 0Ah 1h MODBUS Function U8 rw 0 0 à 7Fh inclus 2h Slave Address U8 rw 1 00h à F7h inclus; 01h par défaut; 00h

Broadcast 3h Frame Trigger

U8 rw 0

Valeur de l’objet Mise à jour 00h A chaque cycle 01h Sur changement 02h 1 fois

4h Cycle Time

U8 rw 0 Valeur de l’objet Temps de cycle

00 Polling 01 100 ms 02 200 ms … …

255 25,5 s 5h Address of 1st

MODBUS bit or register to read

U16 rw 0 00h à FFFFh inclus

6h Number of MODBUS bits or registers to read

U16 rw 1 0 à 1600 (1 par défaut)

7h 1st associated TPDO U8 rw 0 0 (concaténation) à 25 8h Address of 1st

MODBUS bit or register to write

U16 rw 0 00h à FFFFh inclus

9h Number of MODBUS bits or registers to write

U16 rw 1 0 à 1600 (1 par défaut)

Ah 1st associated RPDO U8 rw 0 0 (concaténation) à 25 2002h Scénario 2 REC Description du scénario 2

(idem scénario1) ... ... … … …

2032h Scénario 50 REC Description du scénario 50 (idem scénario1)

Tableau 13 : Objets de description d'un scénario

- Le paramètre "Function" :

Il précise la fonction MODBUS à envoyer. Les fonctions MODBUS comprises par AGILiGATE sont listées en annexe.

NB : La fonction 0 "NOP" est la fonction par défaut dans les paramètres. Ce n'est pas une fonction MODBUS. Le premier scénario avec "MODBUS function" = NOP indique la fin des scénarios valides. Tous les scénarios suivants sont ignorés.

- Le paramètre "Slave Address" :

Il permet de choisir l'adresse de l’équipement MODBUS. Il peut être égal à 0 pour un envoi en broadcast.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 31 / 62

- Le paramètre "Frame trigger" :

Il informe sur l’événement qui déclenche l’envoi d’une trame MODBUS. Une trame peut être envoyée :

"à chaque cycle" : il faut alors définir la périodicité de l’envoi.

"Sur changement" : s’il s’agit d’une fonction d’écriture MODBUS, la trame est envoyée uniquement s’il y a une nouvelle valeur à écrire dans l’esclave MODBUS.

"Une fois" : la trame est envoyée une seule fois, dès que AGILiGATE passe en mode opérationnel.

- Le paramètre "Cycle time" :

Il n'est validé que si "Frame trigger" = "à chaque cycle". Sinon, il est ignoré. Il permet de choisir la périodicité de l’envoi de la trame. Ce paramètre doit être choisi en fonction de la vitesse de transmission, du nombre de scénarios à envoyer, et de la longueur de chaque trame MODBUS (cf. paragraphe temps de cycle).

Si la valeur "polling" est sélectionnée, la trame est envoyée au mieux, c'est-à-dire dès qu'un cycle global d'envoi des scénarios est terminé.

- Le paramètre "Address of 1st MODBUS bit or register to read" :

Selon la fonction, il permet de choisir l’adresse du premier bit ou registre MODBUS à lire.

Attention, il est important de différencier l’adresse d’un registre MODBUS du numéro de registre MODBUS. En effet, le registre 1 est à l’adresse 0x0000. Dans notre cas, le paramètre " Address of 1st MODBUS bit or register to read " correspond à l’adresse du registre MODBUS.

- Le paramètre "Quantity of bits or registers to read" :

Selon la fonction, il permet de choisir le nombre de bits ou registres à lire, ou bien n’est pas utilisé.

Dans la version actuelle d’AGILiGATE CANopen, on peut lire jusqu’à 1600 bits avec les fonction 1 et 2, et jusqu'à 100 registres MODBUS avec les fonctions 3, 4 et 23.

- Le paramètre "1st TPDO linked to scenario" :

Il permet de spécifier le TPDO dans lequel le scénario va stocker le premier registre MODBUS :

0 : Les registres MODBUS sont stockés à la suite des derniers registres stockés (concaténation).

1 à 25 : Les registres MODBUS sont stockés dans le TPDO spécifié.

- Le paramètre "Address of 1st MODBUS bit or register to write" :

Selon la fonction, il permet de choisir l’adresse du premier bit ou registre MODBUS à écrire.

Attention, il est important de différencier l’adresse d’un registre MODBUS du numéro de registre MODBUS. En effet, le registre 1 est à l’adresse 0x0000. Dans notre cas, le paramètre " Address of 1st MODBUS bit or register to write " correspond à l’adresse du registre MODBUS.

- Le paramètre "Quantity of bits or registers to write" :

Selon la fonction, il permet de choisir le nombre de bits ou registres à écrire, ou bien n’est pas utilisé.

Dans la version actuelle d’AGILiGATE CANopen, on peut écrire jusqu’à 1600 bits avec la fonction 15, et jusqu'à 100 registres MODBUS avec les fonctions 16 et 23.

- Le paramètre "1st RPDO linked to scenario" :

Il permet de spécifier le RPDO dans lequel le scénario va stocker le premier registre MODBUS :

0 : Les registres MODBUS sont stockés à la suite des derniers registres stockés (concaténation).

1 à 25 : Les registres MODBUS sont stockés dans le RPDO spécifié.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 32 / 62

Remarque concernant la spécification des PDO:

Il est aussi possible de mixer les scénarios par concaténation et manuels. Dans ce cas, les scénarios mappés en manuel doivent être définis et envoyés avant les scénarios mappés par concaténation. Ainsi les scénarios mappés par concaténation se situent à la suite des scénarios mappés manuellement.

Si la taille définie précédemment dans le subindex " Quantity of bits or registers " dépasse 4 registres MODBUS les données seront stockées dans le (ou les) PDO(s) suivant(s). Par exemple si le scénario 1 utilise 5 registres MODBUS à partir du RPDO2, il sera mappé sur les 4 registres du RPDO2 et sur le premier registre du RPDO3. Un scénario mappé sur le RPDO3 et utilisant 2 registres MODBUS sera alors mappé sur les registres 2 et 3 du RPDO3.

Il faut faire attention, que ce soit avec le mapping par concaténation ou manuel, à la signification des données lors de leur découpage :

Si un scénario utilise le registre 4 du TPDO2 et le registre 1 du TPDO3 et que ceci constitue un mot de 32 bits, la valeur d’un des registres peut avoir changé entre le moment de l’envoi du TPDO2 et celui de l’envoi du TPDO3. Ainsi la valeur récupérée par la suite peut-être fausse.

Si le mode de transmission d’un scénario est défini sur " sur changement ", il faut faire attention si le scénario est mappé sur plusieurs RPDOs. En effet, dès la réception du premier RPDO sur lequel est mappé le scénario, si les valeurs ont changées, le scénario est immédiatement transmis sur la liaison MODBUS. Ainsi à la réception du PDO suivant, le scénario sera de nouveau envoyé si les données ont changé. Les données reçues à la première émission sont alors incorrectes.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 33 / 62

6.5. Mode maître générique : la fonction PASSE-TRAME (0x7F)

Ce mode permet l'échange transparent de données entre CANopen et la liaison série. Cependant, AGILiGATE se comporte obligatoirement comme un maître, et est donc à l'initiative de tout échange de données. Ce type d'échange est possible lorsque AGILiGATE est configurée en mode maître MODBUS. Pour chaque scénario, il est possible de choisir le numéro de fonction 0x7F (passe trame). Cette fonction n'est pas une fonction MODBUS. Elle est spécifique à AGILiGATE. Elle permet d'envoyer sur la liaison série un nombre donné d'octets qui ont pour valeur le contenu des sorties CANopen (RPDOs). Si la trame envoyée correspond à un protocole d'échange spécifique et donc qu'une réponse est attendue, il est possible de spécifier le nombre d'octets attendus en retour. Les octets reçus sont alors copiés dans la table d'entrées CANopen (TPDOs). Exemple : le scénario suivant est paramétré :

- MODBUS Function = 0x7F - Slave Address = 1 - Frame Trigger = 00 (A chaque cycle) - Cycle Time = 01 (100ms) - Address of 1st MODBUS bit or register to read = 0x0000 (non utilisé avec la fonction PASSE-

TRAME) - Quantity of MODBUS bits or registers to read = 0x0007 (nombre d'octets attendus en

réponse) - 1st TPDO linked to scenario = 0x01 (TPDO dans lequel les octets reçus vont être copiés) - Address of 1st MODBUS bit or register to write = 0x0000 (non utilisé avec la fonction PASSE-

TRAME) - Quantity of MODBUS bits or registers to write = 0x0008 (nombre d'octets à envoyer sur la

liaison série) - 1st RPDO linked to scenario = 0x01 (RPDO dans lequel sont situés les octets à envoyer)

Si aucune réponse n'est détectée avant le temps de timeout paramétré (objet 2000h sub 2h), si un nombre d'octets supérieur ou inférieur est reçu, une erreur est signalée. Ces erreurs sont décrites en annexe B.

Si aucune réponse n'est attendue, il suffit de régler le paramètre "Quantity of MODBUS bits or registers to read" à 0.

6.6. Mode esclave MODBUS Quand AGILiGATE est esclave MODBUS, les 50 scénarios sont ignorés, ainsi que les paramètres "Timeout" et "Retries". Le paramètre "Address in slave mode" permet de déterminer l’adresse MODBUS de l’AGILiGATE.

AGILiGATE

Sorties

Entrées

Equipement quelconque comprenant la trame formée par les 8 octets

Réponse contenant 7 octets : copie des 7 octets dans les

entrées CANopen

Liaison série

Envoi des 8 octets de sortie CANopen sur la liaison série

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 34 / 62

7. PLAN MEMOIRE

7.1. Pré requis Le mapping des TPDO et RPDO est statique. L’affectation d’un registre MODBUS dans l’objet 0x6401 ou 0x6411 se fait automatiquement. Le mapping des TPDO est décrit ci-dessous : TPDO Cob-ID par défaut Mapping

TPDO2 0x280 + nodeID 6401 sub1 6401 sub2 6401 sub3 6401 sub4 TPDO3 0x380 + nodeID 6401 sub5 6401 sub6 6401 sub7 6401 sub8 TPDO4 0x480 + nodeID 6401 sub9 6401 sub10 6401 sub11 6401 sub12 TPDO5 0x8144 6401 sub13 6401 sub14 6401 sub15 6401 sub16 TPDO6 0x8145 6401 sub17 6401 sub18 6401 sub19 6401 sub20 TPDO7 0x8146 6401 sub21 6401 sub22 6401 sub23 6401 sub24 TPDO8 0x8147 6401 sub25 6401 sub26 6401 sub27 6401 sub28 TPDO9 0x8148 6401 sub29 6401 sub30 6401 sub31 6401 sub32 TPDO10 0x8149 6401 sub33 6401 sub34 6401 sub35 6401 sub36 TPDO11 0x814A 6401 sub37 6401 sub38 6401 sub39 6401 sub40 TPDO12 0x814B 6401 sub41 6401 sub42 6401 sub43 6401 sub44 TPDO13 0x814C 6401 sub45 6401 sub46 6401 sub47 6401 sub48 TPDO14 0x814D 6401 sub49 6401 sub50 6401 sub51 6401 sub52 TPDO15 0x814E 6401 sub53 6401 sub54 6401 sub55 6401 sub56 TPDO16 0x814F 6401 sub57 6401 sub58 6401 sub59 6401 sub60 TPDO17 0x8150 6401 sub61 6401 sub62 6401 sub63 6401 sub64 TPDO18 0x8151 6401 sub65 6401 sub66 6401 sub67 6401 sub68 TPDO19 0x8152 6401 sub69 6401 sub70 6401 sub71 6401 sub72 TPDO20 0x8153 6401 sub73 6401 sub74 6401 sub75 6401 sub76 TPDO21 0x8154 6401 sub77 6401 sub78 6401 sub79 6401 sub80 TPDO22 0x8155 6401 sub81 6401 sub82 6401 sub83 6401 sub84 TPDO23 0x8156 6401 sub85 6401 sub86 6401 sub87 6401 sub88 TPDO24 0x8157 6401 sub89 6401 sub90 6401 sub91 6401 sub92 TPDO25 0x8158 6401 sub93 6401 sub94 6401 sub95 6401 sub96 TPDO26 0x8159 6401 sub97 6401 sub98 6401 sub99 6401 sub100

Tableau 14 : Mapping des TPDO

NB : Les objets sont mappés à partir du TPDO2 comme le prévoit la norme CiA DS401. Le TPDO1 n'est pas utilisé par AGILiGATE. Par défaut, seuls les 3 premiers TPDO sont activés. Pour activer les suivants, il suffit de mettre le bit de poids fort du cob-id à 0.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 35 / 62

Le mapping des RPDO est décrit ci-dessous : RPDO Cob-ID par défaut Mapping

RPDO2 0x300 + nodeID 6411 sub1 6411 sub2 6411 sub3 6411 sub4 RPDO3 0x400 + nodeID 6411 sub5 6411 sub6 6411 sub7 6411 sub8 RPDO4 0x500 + nodeID 6411 sub9 6411 sub10 6411 sub11 6411 sub12 RPDO5 0x8104 6411 sub13 6411 sub14 6411 sub15 6411 sub16 RPDO6 0x8105 6411 sub17 6411 sub18 6411 sub19 6411 sub20 RPDO7 0x8106 6411 sub21 6411 sub22 6411 sub23 6411 sub24 RPDO8 0x8107 6411 sub25 6411 sub26 6411 sub27 6411 sub28 RPDO9 0x8108 6411 sub29 6411 sub30 6411 sub31 6411 sub32 RPDO10 0x8109 6411 sub33 6411 sub34 6411 sub35 6411 sub36 RPDO11 0x810A 6411 sub37 6411 sub38 6411 sub39 6411 sub40 RPDO12 0x810B 6411 sub41 6411 sub42 6411 sub43 6411 sub44 RPDO13 0x810C 6411 sub45 6411 sub46 6411 sub47 6411 sub48 RPDO14 0x810D 6411 sub49 6411 sub50 6411 sub51 6411 sub52 RPDO15 0x810E 6411 sub53 6411 sub54 6411 sub55 6411 sub56 RPDO16 0x810F 6411 sub57 6411 sub58 6411 sub59 6411 sub60 RPDO17 0x8110 6411 sub61 6411 sub62 6411 sub63 6411 sub64 RPDO18 0x8111 6411 sub65 6411 sub66 6411 sub67 6411 sub68 RPDO19 0x8112 6411 sub69 6411 sub70 6411 sub71 6411 sub72 RPDO20 0x8113 6411 sub73 6411 sub74 6411 sub75 6411 sub76 RPDO21 0x8114 6411 sub77 6411 sub78 6411 sub79 6411 sub80 RPDO22 0x8115 6411 sub81 6411 sub82 6411 sub83 6411 sub84 RPDO23 0x8116 6411 sub85 6411 sub86 6411 sub87 6411 sub88 RPDO24 0x8117 6411 sub89 6411 sub90 6411 sub91 6411 sub92 RPDO25 0x8118 6411 sub93 6411 sub94 6411 sub95 6411 sub96 RPDO26 0x8119 6411 sub97 6411 sub98 6411 sub99 6411 sub100

Tableau 15 : Mapping des RPDO

NB : Les objets sont mappés à partir du RPDO2 comme le prévoit la norme CiA DS401. Le RPDO1 n'est pas utilisé par AGILiGATE. Par défaut, seuls les 3 premiers RPDO sont activés. Pour activer les suivants, il suffit de mettre le bit de poids fort du cob-id à 0. IMPORTANT:

Il est possible de choisir le nombre d'objets mappés par PDO mais il n'est pas possible de changer l'emplacement des objets. Lors du mapping, il est donc impératif de respecter les tables ci-dessus (dans le cas contraire, un SDO d'erreur est envoyé par l' AGILiGATE).

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 36 / 62

7.2. Utilisation en mode maître MODBUS

Figure 12. : Principe de fonctionnement en mode maître MODBUS

A la réception de la configuration, AGILiGATE analyse tous les paramètres. La communication MODBUS démarre uniquement si les paramètres sont valides et que AGILiGATE est en état opérationnel.

Un registre MODBUS est de type WORD (2 octets) et il est possible d'en lire 100. Une trame CANopen contenant au maximum 8 octets, on ne peut donc pas envoyer plus de 4 registres MODBUS d’un coup. Exemple : Si les paramètres suivants ont été définis :

Scénario 1: Fonction 0x06. Ecriture du registre 0x44 (adresse 0x43) sur le RPDO2 Scénario 2: Fonction 0x03. Lecture de 1 registre à partir du registre 0x66 (adresse 0x65) sur

le TPDO2 Scénario 3: Fonction 0x10. Ecriture de 4 registres à partir du registre 0xFA68 (adresse

0xFA67) sur le RPDO4 Scénario 4: Fonction 0x04. Lecture de 2 registres à partir du registre 0x457 (adresse 0x456)

sur le TPDO2 Scénario 5: Fonction 0x05. Ecriture de 1 registres (en fait un booléen 0x0000 ou 0xFF00) à

partir du registre 0x1 (adresse 0x0) sur le RPDO2 Scénario 6: Fonction 0x07. Lecture du registre de statut. Celui-ci est un octet et n’a pas

d’adresse. Sur le TPDO2. Scénario 7-50:Fonction 0x00. NOP

Le contenu des TPDO est le suivant :

Objet mappé 1 Objet mappé 2 Objet mappé 3 Objet mappé 4

Registre MODBUS associé 1

Registre MODBUS associé 2

Registre MODBUS associé 3

Registre MODBUS associé 4 TPDO COB-ID

Scénario associé Scénario associé Scénario associé Scénario associé

0x6401 sub1 0x6401 sub2 0x6401 sub3 0x6401 sub4

Registre 0x66 Registre 0x457 Registre 0x458 Registre statut TPDO2 0x280 + node-ID

Scénario 2 Scénario 4 Scénario 6

AGILiGATE

Sorties

Entrées

Maître MODBUS

Nœud CANOpen

Esclave MODBUS

Registres MODBUS

RPDO

TPDO

Requête MODBUS d' écriture

Requête MODBUS de lecture

Réponse

Réponse

Réseau CANOpen

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 37 / 62

Le contenu des RPDO est le suivant :

Objet mappé 1 Objet mappé 2 Objet mappé 3 Objet mappé 4

Registre MODBUS associé 1

Registre MODBUS associé 2

Registre MODBUS associé 3

Registre MODBUS associé 4

RPDO COB-ID

Scénario associé Scénario associé Scénario associé Scénario associé

0X6411 sub1 0X6411 sub2 0X6411 sub3 0X6411 sub4

Registre 0x44 Registre 0x01 - - RPDO2 0x300 + node-ID

Scénario 1 Scénario 5 - -

0X6411 sub5 0X6411 sub6 0X6411 sub7 0X6411 sub8

- - - - RPDO3 0x400 + node-ID

- - - -

0X6411 sub9 0X6411 sub10 0X6411 sub11 0X6411 sub12

Registre 0XFA68 Registre 0XFA69 Registre 0XFA6A Registre 0XFA6B RPDO4 0x500 + node-ID

Scénario 3

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 38 / 62

7.3. Utilisation en mode esclave MODBUS

Figure 13. : Principe de fonctionnement en mode esclave MODBUS Un registre MODBUS occupe 2 octets (16 bits) dans un PDO. Un PDO peut contenir jusqu’à 8 octets soit 4 registres MODBUS. Coté CANopen, AGILIGATE autorise l’utilisation au maximum de 25 TPDO pour la lecture de bits ou registres MODBUS, et 25 RPDO pour l’écriture de bits ou registres MODBUS. Le nœud CANopen peut donc échanger un maximum de 1600 bits ou 100 registres MODBUS en lecture, et 1600 bits ou 100 en écriture.

Les registres de lecture sont accessibles aux adresses MODBUS 0-99 (les bits aux adresses 0-1599). Les registres d'écriture sont accessibles aux adresses MODBUS 0-99 (les bits aux adresses 0-1599). Le registre de statut est accessible à l'adresse MODBUS 0 (poids fort uniquement). Par défaut, seuls les 3 premiers RPDO et les 3 premiers TPDO sont activés. Pour activer les suivants, il suffit de mettre le bit de poids fort du cob-id à 0.

Pour AGILiGATE, les fonctions MODBUS 1, 2, 3, 4 et 7 adressent le même plan mémoire. De même le plan mémoire utilisé par les fonctions 5, 6, 15 et 16 est le même.

Si l'esclave reçoit une trame MODBUS demandant une action non autorisée, une trame d'exception est renvoyée. Ces trames d'exception sont détaillées dans l'annexe A.

AGILiGATE

Sorties

Entrées

Esclave MODBUS

Nœud CANOpen

Maître MODBUS

Registres MODBUS Requête MODBUS de

lecture

Requête MODBUS d' écriture

Réponse

Réponse

RPDO

TPDO

Réseau CANOpen

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 39 / 62

8. SAUVEGARDE ET CHARGEMENT DES PARAMETRES L’utilisateur a la possibilité de sauvegarder les paramètres (objet 0x1010) et de charger les paramètres par défaut (objet 0x1011).

Il est possible de sauvegarder ou de charger 5 blocs de données. La sélection du bloc s’effectue grâce au numéro de subindex des objets : SUB 1 – Tous les paramètres SUB 2 – Paramètres de communication SUB 4 – Paramètres de la liaison série MODBUS SUB 5 – Paramètres des scénarios SUB 3 - Paramètres applicatifs ne peuvent pas être sauvegardés ou rechargés car ils ne sont pas modifiables.

8.1. Sauvegarde des paramètres La sauvegarde des paramètres s’effectue grâce à l’objet 0x1010. Il suffit d’écrire ‘save’ (soit : 0x73 0x61 0x76 0x65) dans le subindex du bloc que l’on souhaite sauvegarder. L’exemple ci-dessous illustre la sauvegarde de tous les paramètres avec la console ApplicomIO :

Pour effectuer une sauvegarde de tous les paramètres, il est possible de cliquer sur le bouton " Sauvegarde des paramètres ". Ceci a le même effet que d’écrire ‘save’ dans le subindex 1 de l’objet 0x1010. NB: La sauvegarde en mémoire étant longue, il peut être nécessaire d'augmenter, au niveau du maître NMT, le délai de détection d'un timeout SDO (environ 500ms) pour que la station ne soit pas détectée comme absente.

Tous les paramètres Objet "Store parameters"

' s ' ' a ' ' v ' ' e '

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 40 / 62

8.2. Chargement des paramètres par défaut La sauvegarde des paramètres s’effectue grâce à l’objet 0x1011. Il suffit d’écrire ‘load’ (soit : 0x6C 0x6F 0x61 0x64) dans le subindex du bloc que l’on souhaite recharger. L’exemple ci-dessous illustre le rechargement de touts les paramètres par défaut avec la console ApplicomIO

Pour effectuer un chargement de tous les paramètres par défaut, il est possible de cliquer sur le bouton " Paramètres par défaut ". Ceci à le même effet que d’écrire ‘LOAD’ dans le subindex 1 de l’objet 0x1011. NB: La sauvegarde en mémoire étant longue, il peut être nécessaire d'augmenter, au niveau du maître NMT, le délai de détection d'un timeout SDO (environ 500ms) pour que la station ne soit pas détectée comme absente.

Tous les paramètres Objet "Restore default parameters"

' l ' ' o ' ' a ' ' d '

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 41 / 62

9. DIAGNOSTIC ET AIDE A L'INSTALLATION

9.1. Les "Emergency Objects" CANopen Lorsqu’une erreur se produit (erreur de configuration liaison MODBUS, timeout lors de l’envoi d’un scénario, etc.), un "Emergency Object" est envoyé sur CANopen.

Les données d'une trame "Emergency" se présentent sous la forme suivante :

Octet 0 Octet 1 Octet 2 Octet 3 Octet 4 Octet 5 Octet 6 Octet 7Emergency Error Code (see Table)

Error register (Object 1001h)

Manufacturer specific Error Field

Description du champ Emergency Error: Voici la liste des Emergency Error Codes définis par la norme :

Error code (hex) Meaning 00xx Error Reset or No Error 50xx Device Hardware 60xx Device Software 61xx Internal Software 62xx User Software 63xx Data Set 70xx Additional Modules

80xx Monitoring 81xx Communication

8110 CAN Overrun (Objects lost) 8120 CAN in Error Passive Mode 8130 Life Guard Error or Heartbeat Error 8140 Recovered from bus off 8150 Transmit COB-ID

82xx Protocol Error 8210 PDO not processed due to length error 8220 PDO length exceeded 90xx External Error F0xx Additional Functions FFxx Device specific

Tableau 16 : Emergency Error Codes définis par la norme

L’Emergency Error Code 0xFFxx est utilisé par AGILiGATE pour les erreurs applicatives. Afin de coder les différents types d’erreur (configuration liaison MODBUS, scénario, etc.) l’octet de poids faible est utilisé. Détail des types d’erreur :

Type d’erreur Emergency Error Code associé

Erreur de configuration de la liaison MODBUS 0xFF01 Erreur de configuration des scénarios 0xFF02 Erreur survenue pendant l'exécution des scénarios 0xFF03

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 42 / 62

Description du champ Error register: Le Error register doit être indiqué selon la norme CiA DS301 :

Bit Signification 0 Generic error 1 Current 2 Voltage 3 Temperature 4 Communication error (overrun, error state) 5 Device profile specific 6 Reserved (toujours à 0) 7 Manufacturer specific

Tableau 17 : Détail du Error Register selon la norme

Si un bit est mis à 1, cela signifie qu’une erreur s’est produite. La position du bit indique le type d'erreur. Dès qu’une erreur se produit (peu importe le type), le bit 0 (Generic error) est obligatoirement mis à 1. Une fois que toutes les erreurs ont disparu, les bits sont mis à 0. Description du champ Manufacturer Specific Error: Le champ Manufacturer specific Error peut contenir un code permettant d’identifier plus précisément le type d’erreur qui s’est produit. Seuls les deux premiers octets (octets 3 et 4 de la trame d’Emergency) sont utilisés par AGILiGATE. La signification de ces octets est détaillée en annexe B.

9.2. Utilisation de la liaison série de diagnostic Des informations sont envoyées sur la liaison série de diagnostic:

- La configuration CANopen - La configuration de la liaison MODBUS - La configuration des scénarios en mode maître - Etat de fonctionnement d'AGILiGATE

Ces informations peuvent être visualisées par n'importe quel logiciel affichant les caractères ASCII envoyés sur port série. Dans nos exemples, le logiciel utilisé est "Terminal.exe".

La connexion d' AGILiGATE à un PC se fait de la façon suivante :

SubD9 côté PC Connecteur AGILiGATE 3 (Tx) 1 (Rx) 2 (Rx) 2 (Tx) 5 (gnd) 3 (gnd)

Les caractéristiques de la liaison série sont :

- 9600 bps - 1 bit de start - 8 bits de données - pas de bit de parité - 1 bit de stop.

La liaison série peut être utilisée sur site pour faciliter la mise en route d’AGILiGATE. Les messages envoyés sont listés en annexe B. L’envoi du caractère ‘e’ ou ‘E’ sur la liaison série permet de demander à la passerelle de renvoyer l’entête ainsi que la configuration CANopen.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 43 / 62

A la mise sous tension, l'entête suivant est envoyé: Les paramètres sauvegardés sont chargés, les paramètres physiques s'affichent et AGILiGATE attend la connexion au bus CAN. Lors du passage de la passerelle en mode opérationnel, les scénarios paramétrés s'affichent sous forme d'une table. Dans l'exemple suivant, 3 scénarios sont paramétrés: Si la liaison MODBUS est correctement établie, aucun message supplémentaire ne s'affiche. Dans le cas contraire, un message indique l'erreur rencontrée. Dans l'exemple suivant, l'esclave MODBUS déclaré dans les scénarios 1, 2 et 3 ne répond plus: Puis, quand la communication est rétablie, le message suivant s'affiche:

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 44 / 62

10. TEMPS DE CYCLE MODBUS Mode maître MODBUS

Quand AGILiGATE est maître MODBUS, un paramètre "Cycle time" est déterminé pour chaque scénario. Ce paramètre spécifie la périodicité souhaitée pour l'envoi des trames.

Le temps de cycle n'est assuré que s'il a été correctement calibré, et en l'absence de Timeout.

Exemple 1: Si le paramètre "Timeout" = 1000 ms, AGILiGATE va attendre 1000 ms avant de détecter un timeout. Le processus de scrutation des scénarios est donc bloqué pendant 1000 ms. Si les scénarios suivants ont un temps de cycle de 100 ms, celui-ci ne peut pas être respecté.

Exemple 2: La liaison série est paramétrée à 600 bauds, il y a 2 scénarios à envoyer (fonction 6, temps de cycle de 100 ms). Chaque scénario correspond à l'envoi d'une trame de 8 octets, avec une réponse attendue de 8 octets. Le temps d'émission/réception est donc de 420 ms. En plus de ce temps, il faut ajouter le temps de réponse de l'esclave, entre la réception de la fonction MODBUS, et l'émission de la réponse. Au total, le temps passé dans chaque scénario est plus proche de 500 ms que de 100 ms. Le temps de cycle ne peut donc pas être respecté.

Pour chaque scénario, il est donc conseillé de calculer le "temps de communication" nécessaire. En additionnant le temps de communication nécessaire à chaque scénario, on détermine la valeur minimale du temps de cycle applicable à un scénario.

En règle générale, il faut respecter la règle suivante:

Tcomx = TTx + TRe + TRx + TRm

Puis choisir: Tcy > (Tcom1 + … + Tcom20)

Où:

Tcomx = Temps de communication du scénario x TTx = Temps d'émission de la question = (11 x Nombre d'octets à émettre) / Baud rate TRx = Temps d'émission de la réponse = (11 x Baud rate)/ Nombre d'octets à émettre TRe = Temps de réponse de l'esclave MODBUS TRm = Temps d'analyse du maître AGILiGATE Tcy = Temps de cycle

Chaque scénario a un temps de cycle propre. L'ordre dans lequel les trames sont envoyées n'est donc pas forcément l'ordre des scénarios.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 45 / 62

Mode esclave MODBUS

Le temps de réponse de AGILiGATE varie en fonction du baudrate.

Vitesse (bits/s) RTU ASCII

600 61 61 1200 38 37 2400 25 25 4800 19 18 9600 14 13 19200 13 12 38400 12 11 57600 12 11

Tableau 18 : Temps de réponse d’AGILiGATE en esclave (ms), fonction MODBUS 10h, 4 registres

Vitesse (bits/s) RTU ASCII

600 100 90 1200 78 60 2400 65 50 4800 55 42 9600 56 40 19200 53 38 38400 52 37 57600 52 37

Tableau 19 : Temps de réponse d’AGILiGATE en esclave (ms), fonction MODBUS 10h, 100 registres

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 46 / 62

ANNEXES ANNEXES ................................................................................................................ 46

ANNEXE A: FORMAT DES TRAMES MODBUS .......................................................... 47 ANNEXE B: LISTE DES ERREURS RENVOYEES PAR L'AGILIGATE .............................. 60

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 47 / 62

ANNEXE A: Format des trames MODBUS

Les fonctions MODBUS 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0F, 0x10, 0x17 sont supportées par AGILiGATE. Le format de chaque fonction est détaillé à l'aide d'un exemple, pour le mode RTU et ASCII. Les octets de CRC (MODBUS RTU) ou LRC (MODBUS ASCII) sont obligatoires. Cependant, ils ne sont pas traités si le paramètre " CRC/LRC" est désactivé ("No CRC/LRC").

En MODBUS RTU, les données sont codées sur 8 bits. En MODBUS ASCII, les données sont codées sur 7 bits.

Rappel : Il est important de différencier l’adresse d’un registre MODBUS du numéro de registre MODBUS. En effet, le registre 1 est à l’adresse 0x0000. Dans une trame MODBUS, c’est l’adresse du registre qui est passée. Au moment du paramétrage des scénarios, c’est aussi l’adresse du registre MODBUS qu’il faut passer.

Fonction 1 (0x01) Cette fonction permet de lire l'état de plusieurs booléens (coils ou Discrete outputs). Le broadcast n’est pas supporté. Le nombre de booléens à lire simultanément avec AGILiGATE est limité à 1600 (16bits x 100 registres).

Format de la requête :

Octets envoyés si ASCII

Nom du champ Valeur à

transmettre

Octets envoyés si RTU caractère Code ASCII

caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x01 0x01 "01" 0x30, 0x31

Poids fort adresse 1er bit 0x00 0x00 "00" 0x30, 0x30

Poids faible adresse 1er bit 0x22 0x22 "22" 0x32, 0x32

Poids fort nombre de bits 0x00 0x00 "00" 0x30, 0x30

Poids faible nombre de bits 0x12 0x12 "12" 0x31, 0x32

Error check ( CRC / LRC ) - 0x18

0xB5 "92" 0x39, 0x32

Fin trame - - CR LF 0xD, 0xA

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 48 / 62

Format de la réponse :

Octets reçus si ASCII

Nom du champ Valeur à recevoir

Octets reçus si

RTU caractère Code ASCII caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x01 0x01 "01" 0x30, 0x31

Nombre d'octets de données 0x03 0x03 "03" 0x30, 0x33

Etat des bits 0x29 à 0x22 0x59 0x59 "59" 0x35, 0x39

Etat des bits 0x32 à 0x2A 0xC4 0xC4 "C4" 0x43, 0x34

Etat des bits 0x34 à 0x33 0x01 0x01 "01" 0x30, 0x31

Error check ( CRC / LRC ) - 0x7B

0xE5 "A5" 0x41, 0x35

Fin trame - - CR LF 0xD, 0xA

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 49 / 62

Fonction 2 (0x02) Cette fonction permet de lire l'état de plusieurs booléens (Discrete inputs). Le broadcast n’est pas supporté. Le nombre de booléens à lire simultanément avec AGILiGATE est limité à 1600 (16bits x 100 registres).

Format de la requête :

Octets envoyés si ASCII

Nom du champ Valeur à

transmettre

Octets envoyés si RTU caractère Code ASCII

caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x02 0x02 "02" 0x30, 0x32

Poids fort adresse 1er bit 0x00 0x00 "00" 0x30, 0x30

Poids faible adresse 1er bit 0x22 0x22 "22" 0x32, 0x32

Poids fort nombre de bits 0x00 0x00 "00" 0x30, 0x30

Poids faible nombre de bits 0x12 0x12 "12" 0x31, 0x32

Error check ( CRC / LRC ) - 0x5C

0xB5 "91" 0x39, 0x31

Fin trame - - CR LF 0xD, 0xA

Format de la réponse :

Octets reçus si ASCII

Nom du champ Valeur à recevoir

Octets reçus si

RTU caractère Code ASCII caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x02 0x02 "02" 0x30, 0x32

Nombre d'octets de données 0x03 0x03 "03" 0x30, 0x33

Etat des bits 0x29 à 0x22 0x59 0x59 "59" 0x35, 0x39

Etat des bits 0x32 à 0x2A 0xC4 0xC4 "C4" 0x43, 0x34

Etat des bits 0x34 à 0x33 0x01 0x01 "01" 0x30, 0x31

Error check ( CRC / LRC ) - 0x3F

0xE5 "A4" 0x41, 0x34

Fin trame - - CR LF 0xD, 0xA

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 50 / 62

Fonction 3 (0x03) Cette fonction permet de lire les registres MODBUS (Holding Registers). Le broadcast n’est pas supporté. Le nombre de registres à lire simultanément est limité à 100.

Format de la requête :

Octets envoyés si ASCII

Nom du champ Valeur à

transmettre

Octets envoyés si RTU caractère Code ASCII

caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x03 0x03 "03" 0x30, 0x33

Poids fort adresse 1er registre

0x00 0x00 "00" 0x30, 0x30

Poids faible adresse 1er registre

0x22 0x22 "22" 0x32, 0x32

Poids fort nombre de registres

0x00 0x00 "00" 0x30, 0x30

Poids faible nombre de registres

0x02 0x02 "02" 0x30, 0x32

Error check ( CRC / LRC ) - 0x60

0xB9 "A0" 0x41, 0x30

Fin trame - - CR LF 0xD, 0xA

Format de la réponse :

Octets reçus si ASCII

Nom du champ Valeur à recevoir

Octets reçus si

RTU caractère Code ASCII caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x03 0x03 "03" 0x30, 0x33

Nombre d'octets de données 0x04 0x04 "04" 0x30, 0x34

Poids fort valeur 1er registre 0x68 0x68 "68" 0x36, 0x38

Poids faible valeur 1er registre 0x31 0x31 "31" 0x36, 0x38

Poids fort valeur 2eme registre 0x47 0x47 "47" 0x36, 0x38

Poids fort valeur 2eem registre 0x59 0x59 "59" 0x36, 0x38

Error check ( CRC / LRC ) - 0xFD

0x95 "87" 0x38, 0x37

Fin trame - - CR LF 0xD, 0xA

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 51 / 62

Fonction 4 (0x04) Cette fonction permet de lire les registres MODBUS (Input Registers). Le broadcast n’est pas supporté. Le nombre de registres à lire simultanément est limité à 100.

Format de la requête :

Octets envoyés si ASCII

Nom du champ Valeur à

transmettre

Octets envoyés si RTU caractère Code ASCII

caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x04 0x04 "04" 0x30, 0x34

Poids fort adresse 1er registre

0x00 0x00 "00" 0x30, 0x30

Poids faible adresse 1er registre

0x22 0x22 "22" 0x32, 0x32

Poids fort nombre de registres

0x00 0x00 "00" 0x30, 0x30

Poids faible nombre de registres

0x03 0x03 "03" 0x30, 0x33

Error check ( CRC / LRC ) - 0x14

0xB9 "9E" 0x39, 0x45

Fin trame - - CR LF 0xD, 0xA

Format de la réponse :

Octets reçus si ASCII

Nom du champ

Valeur à recevoir

Octets reçus si

RTU caractère Code ASCII caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x04 0x04 "04" 0x30, 0x34

Nombre d'octets de données 0x06 0x06 "06" 0x30, 0x36

Poids fort valeur 1er registre 0x68 0x68 "68" 0x36, 0x38

Poids faible valeur 1er registre 0x31 0x31 "31" 0x33, 0x31

Poids fort valeur 2eme registre 0x47 0x47 "47" 0x34, 0x37

Poids fort valeur 2eme registre 0x59 0x59 "59" 0x35, 0x39

Poids fort valeur 32eme registre 0x00 0x00 "00" 0x30, 0x30

Poids fort valeur 32eme registre 0x00 0x00 "00" 0x30, 0x30

Error check ( CRC / LRC ) - 0xE2

0xD9 "84" 0x38, 0x34

Fin trame - - CR LF 0xD, 0xA

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 52 / 62

Fonction 5 (0x05) Cette fonction permet d'écrire un booléen (coil ou Discrete output) à ON ou OFF. Le broadcast

est supporté. Le booléen peut prendre la valeur 0x0000 (OFF) ou 0xFF00 (ON).

Format de la requête :

Octets envoyés si ASCII

Nom du champ

Valeur à transmettre

Octets envoyés si RTU caractère Code ASCII

caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x01 0x01 "01" 0x30, 0x31

Code fonction 0x05 0x05 "05" 0x30, 0x35

Poids fort adresse registre 0x00 0x00 "00" 0x30, 0x30

Poids faible adresse registre 0x22 0x22 "22" 0x32, 0x32

Poids fort valeur registre 0xFF 0xFF "FF" 0x46, 0x46

Poids faible valeur registre 0x00 0x00 "00" 0x30, 0x30

Error check ( CRC / LRC ) - 0x2C

0x30 "D9" 0x44,0x39

Fin trame - - CR LF 0xD, 0xA

Format de la réponse :

Octets envoyés si ASCII

Nom du champ

Valeur à transmettre

Octets envoyés si RTU caractère Code ASCII

caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x01 0x01 "01" 0x30, 0x31

Code fonction 0x05 0x05 "05" 0x30, 0x35

Poids fort adresse registre 0x00 0x00 "00" 0x30, 0x30

Poids faible adresse registre 0x22 0x22 "22" 0x32, 0x32

Poids fort valeur registre 0xFF 0xFF "FF" 0x46, 0x46

Poids faible valeur registre 0x00 0x00 "00" 0x30, 0x30

Error check ( CRC / LRC ) - 0x2C

0x30 "D9" 0x44, 0x39

Fin trame - - CR LF 0xD, 0xA

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 53 / 62

Fonction 6 (0x06) Cette fonction permet d'écrire un registre MODBUS (Holding Registers). Le broadcast est

supporté.

Format de la requête :

Octets envoyés si ASCII

Nom du champ

Valeur à transmettre

Octets envoyés si RTU caractère Code ASCII

caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x06 0x06 "06" 0x30, 0x36

Poids fort adresse registre 0x00 0x00 "00" 0x30, 0x30

Poids faible adresse registre 0x22 0x22 "22" 0x32, 0x32

Poids fort valeur registre 0x00 0x00 "00" 0x30, 0x30

Poids faible valeur registre 0x56 0x56 "56" 0x35, 0x36

Error check ( CRC / LRC ) - 0xAD

0x46 "49" 0x34, 0x39

Fin trame - - CR LF 0xD, 0xA

Format de la réponse :

Octets envoyés si ASCII

Nom du champ

Valeur à transmettre

Octets envoyés si RTU caractère Code ASCII

caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x03 "39" 0x33, 0x39

Code fonction 0x06 0x06 "06" 0x30, 0x36

Poids fort adresse registre 0x0

0x00 0x00 "00" 0x30, 0x30

Poids faible adresse registre 0x0

0x22 0x22 "22" 0x32, 0x32

Poids fort valeur registre 0x00 0x00 "00" 0x30, 0x30

Poids faible valeur registre 0x56 0x56 "56" 0x35, 0x36

Error check ( CRC / LRC ) - 0xAD 0x46

"49" 0x34, 0x39

Fin trame - - CR LF 0xD, 0xA

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 54 / 62

Fonction 7 (0x07) Cette fonction permet de lire un octet de statut. Ce registre n'est pas à une adresse particulière. Il

est simplement unique. Le broadcast n’est pas supporté.

Format de la requête :

Octets envoyés si ASCII

Nom du champ

Valeur à transmettre

Octets envoyés si RTU caractère Code ASCII

caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x07 0x07 "07" 0x30, 0x37

Error check ( CRC / LRC ) - 0x52

0x22 "C0" 0x43, 0x30

Fin trame - - CR LF 0xD, 0xA

Format de la réponse :

Octets reçus si ASCII

Nom du champ

Valeur à recevoir

Octets reçus si

RTU caractère Code ASCII caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x07 0x07 "07" 0x30, 0x37

Valeur du statut 0x14 0x14 "14" 0x31, 0x34

Error check ( CRC / LRC ) - 0xA3

0xF2 "AC" 0x41, 0x43

Fin trame - - CR LF 0xD, 0xA

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 55 / 62

Fonction 15 (0x0F) Cette fonction permet d'écrire plusieurs booléens (coils ou Discrete outputs) à ON ou OFF. Le

broadcast est supporté. Le nombre de booléens à écrire simultanément avec AGILiGATE est limité à 1600 (16bits x 100 registres).

Format de la requête :

Octets envoyés si ASCII

Nom du champ

Valeur à transmettre

Octets envoyés si RTU caractère Code ASCII

caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x0F 0x0F "0F " 0x30, 0x46

Poids fort adresse 1er bit 0x00 0x00 "00" 0x30, 0x30

Poids faible adresse 1er bit 0x22 0x22 "22" 0x32, 0x32

Poids faible nombre de bits à écrire 0x00 0x00 "00" 0x30, 0x30

Poids fort nombre de bits à écrire 0x12 0x12 "12" 0x31, 0x32

Nombre d'octets de données 0x03 0x03 "03" 0x30, 0x33

Valeur des bits 0x29 à 0x22 0x2B 0x2B "2B" 0x32, 0x42

Valeur des bits 0x32 à 0x2A 0x06 0x06 "06" 0x30, 0x36

Valeur des bits 0x34 à 0x33 0x03 0x03 "03" 0x30, 0x33

Error check ( CRC / LRC ) - 0x68

0xCB "4D" 0x34,0x44

Fin trame - - CR LF 0xD, 0xA

Format de la réponse :

Octets envoyés si ASCII

Nom du champ

Valeur à transmettre

Octets envoyés si RTU caractère Code ASCII

caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x0F 0x0F "0F " 0x30, 0x46

Poids fort adresse 1er bit 0x00 0x00 "00" 0x30, 0x30

Poids faible adresse 1er bit 0x22 0x22 "22" 0x32, 0x32

Poids faible nombre de bits à écrire 0x00 0x00 "00" 0x30, 0x30

Poids fort nombre de bits à écrire 0x12 0x12 "12" 0x31, 0x32

Error check ( CRC / LRC ) - 0x71

0x74 "84" 0x38, 0x34

Fin trame - - CR LF 0xD, 0xA

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 56 / 62

Fonction 16 (0x10) Cette fonction permet d'écrire les registres MODBUS (Holding Registers). Le broadcast est

supporté. Le nombre de registres à écrire simultanément est limité à 100.

Format de la requête :

Octets envoyés si ASCII

Nom du champ

Valeur à transmettre

Octets envoyés si RTU caractère Code ASCII

caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x10 0x10 "10" 0x31, 0x30

Poids fort adresse 1er registre 0x00 0x00 "00" 0x30, 0x30

Poids faible adresse 1er registre 0x22 0x22 "22" 0x32, 0x32

Poids fort nombre de registres 0x00 0x00 "00" 0x30, 0x30

Poids faible nombre de registres 0x02 0x02 "02" 0x30, 0x32

Nombre d'octets de données 0x04 0x04 "04" 0x30, 0x34

Poids fort valeur registre 0x52 0x00 0x00 "00" 0x30, 0x30

Poids faible valeur registre 0x52 0x56 0x56 "56" 0x35, 0x36

Poids fort valeur registre 0x53 0x00 0x00 "00" 0x30, 0x30

Poids faible valeur registre 0x53 0x57 0x57 "57" 0x35, 0x37

Error check ( CRC / LRC ) - 0x04

0xE0 "E2" 0x45, 0x32

Fin trame - - CR LF 0xD, 0xA

Format de la réponse :

Octets reçus si ASCII

Nom du champ

Valeur à recevoir

Octets reçus si

RTU caractère Code ASCII caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x10 0x10 "10" 0x31, 0x30

Poids fort adresse 1er registre 0x00 0x00 "00" 0x30, 0x30

Poids faible adresse 1er registre 0x22 0x22 "22" 0x32, 0x32

Poids fort nombre de registres 0x00 0x00 "00" 0x30, 0x30

Poids faible nombre de registres 0x02 0x02 "02" 0x30, 0x32

Error check ( CRC / LRC ) - 0xE5, 0x7A "93" 0x39, 0x33

Fin trame - - CR LF 0xD, 0xA

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 57 / 62

Fonction 23 (0x17) Cette fonction permet de lire et écrire simultanément les registres MODBUS (Holding Registers). Le broadcast n'est pas supporté. Le nombre de registres à lire est limité à 100. Le nombre de registres à écrire est limité à 100.

Format de la requête :

Octets envoyés si ASCII

Nom du champ

Valeur à transmettre

Octets envoyés si RTU caractère Code ASCII

caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x17 0x17 "17" 0x31, 0x37

Poids fort adresse 1er registre en lecture 0x00 0x00 "00" 0x30, 0x30

Poids faible adresse 1er registre en lecture 0x22 0x22 "22" 0x32, 0x32

Poids fort nombre de registres en lecture 0x00 0x00 "00" 0x30, 0x30

Poids faible nombre de registres en lecture 0x02 0x02 "02" 0x30, 0x32

Poids fort adresse 1er registre en écriture 0x00 0x00 "00" 0x30, 0x30

Poids faible adresse 1er registre en écriture 0x56 0x56 "56" 0x35, 0x36

Poids fort nombre de registres en écriture 0x00 0x00 "00" 0x30, 0x30

Poids faible nombre de registres en écriture 0x57 0x57 "57" 0x35, 0x37

Nombre d'octets de données 0x04 0x04 "04" 0x30, 0x34

Poids fort valeur registre 0x52 0x00 0x00 "00" 0x30, 0x30

Poids faible valeur registre 0x52 0x56 0x56 "56" 0x35, 0x36

Poids fort valeur registre 0x53 0x00 0x00 "00" 0x30, 0x30

Poids faible valeur registre 0x53 0x57 0x57 "57" 0x35, 0x37

Error check ( CRC / LRC ) - 0x04

0xE0 "E2" 0x45, 0x32

Fin trame - - CR LF 0xD, 0xA

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 58 / 62

Format de la réponse :

Octets reçus si ASCII

Nom du champ Valeur à recevoir

Octets reçus si

RTU caractère Code ASCII caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x39 0x39 "39" 0x33, 0x39

Code fonction 0x17 0x17 "17" 0x31, 0x37

Nombre d'octets de données 0x04 0x04 "04" 0x30, 0x34

Poids fort valeur 1er registre 0x68 0x68 "68" 0x36, 0x38

Poids faible valeur 1er registre 0x31 0x31 "31" 0x33, 0x31

Poids fort valeur 2er registre 0x47 0x47 "47" 0x34, 0x37

Poids fort valeur 2er registre 0x59 0x59 "59" 0x35, 0x39

Error check ( CRC / LRC ) - 0xFD

0x95 "87" 0x38, 0x37

Fin trame - - CR LF 0xD, 0xA

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 59 / 62

Trames d'exception Une trame d'exception est générée par l'esclave MODBUS si le maître lui demande d'effectuer une

action non autorisée. AGILiGATE gère les exceptions suivantes:

Code d'exception Nom Description

01 ILLEGAL FUNCTION

Cette exception est renvoyée par l'esclave si le maître utilise une fonction non reconnue par l'esclave. AGILiGATE MODBUS gère uniquement les fonctions 3, 4, 5, 6, 7,16, 23.

02 ILLEGAL DATA ADDRESS

Cette exception est renvoyée si le maître tente d'accéder à un registre MODBUS non accessible. Par exemple, AGILiGATE a une configuration telle qu'il dispose de 10 registres en lecture (adresse 0 à 9), et de 10 registres en écriture (adresse 0 à 9). Une erreur est alors retournée si le maître essaie d'accéder au registre 20.

Cette erreur se produit aussi si, avec une fonction 3 par exemple, le maître cherche à lire 20 registres, à partir du registre 1 (adresse 0).

03 ILLEGAL DATA VALUE

Cette exception est renvoyée si le maître tente d'écrire une donnée non acceptable pour l'esclave. Par exemple, avec la fonction 5, les deux seules données possibles sont 0x0000 et 0xFF00. Dans tous les autres cas, la fonction d'exception 3 est renvoyée.

Format de la trame d'exception :

Cette trame d'exception est un exemple reçu en réponse à une fonction 6. L'exception s'est produite car le maître a tenté d'accéder à un registre non autorisé.

Les codes fonctions MODBUS sont codés sur 7 bits (codes 1 à 127). Le 8ème bit est réservé et sert à signaler une trame d'exception quand il est mis à 1.

Octets reçus si ASCII

Nom du champ Valeur à recevoir

Octets reçus si

RTU caractère Code ASCII caractère

Entête trame - - ":" 0x3A

Adresse esclave 0x03 0x03 "03" 0x30, 0x33

Code fonction + 0x80 0x86 0x86 "86" 0x38, 0x36

Code d'exception 0x02 0x02 "02" 0x30, 0x32

Error check ( CRC / LRC ) -

0x31

0x62 "75" 0x37, 0x35

Fin trame - - CR LF 0xD, 0xA

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 60 / 62

ANNEXE B: Liste des erreurs renvoyées par l'AGILiGATE

Emergency Error code 0xFF01 (Erreur de configuration de la liaison MODBUS) : Ici l’octet 4 n’est pas utilisé.

Error Field

Octet3 #erreur Octet4

Message d’erreur Description

0x00 NA Aucun La configuration des paramètres de la liaison MODBUS est correcte.

0x01 NA Err1: Address impossible La valeur du paramètre "Address in slave mode" est erronée.

0x02 NA Err2: Baud rate impossible La valeur du paramètre "Baud rate" est erronée.

0x03 NA Err3 Timeout impossible La valeur du paramètre "Timeout" est erronée. 0x04 NA Err4: Stop bit impossible La valeur du paramètre "Stop bit" est erronée. 0x05 NA Err5: Parity bit impossible La valeur du paramètre "Parity bit" est erronée. 0x06 NA Err6: Retries impossible La valeur du paramètre "Retries" est erronée.

0x07 NA Err7: CRC check impossible La valeur du paramètre "CRC check" est erronée.

0x08 NA Err8: Protocol impossible La valeur du paramètre "Protocol" est erronée.

0x0C NA Err0C: Master/Slave value impossible

La valeur du paramètre "AGILiGATE master/slave" est erronée.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 61 / 62

Emergency Error code 0xFF02 (Erreur de configuration des scénarios) : L’octet 3 indique le numéro de scénario dans lequel une erreur s’est produite (compris entre 0x01 et 0x32 -1 et 50-).

Error Field

Octet3 Octet4 #erreur

Message d’erreur Description

#Scen 0x21 Err21: COP frames < required La configuration reçue ne permet pas de ranger tous les registres MODBUS dans le plan mémoire de CANopen.

#Scen 0x22 Err22: Broadcast impossible Le broadcast n'est pas possible avec les fonctions de lecture MODBUS. Il n’est possible qu’avec les fonctions d'écriture.

#Scen 0x25 Err25: Overlapping of PDOs On ne peut pas fragmenter les scénarios sur plusieurs PDO non consécutifs

#Scen 0x27 Err27: PDO full On ne peut pas mapper plus de 4 registres par PDO.

#Scen 0x64 Err64: Nb of regs to read < 1 Le nombre de registre MODBUS à lire doit être supérieur ou égal à 1.

#Scen 0x65 Err65: Nb of regs to read > 100 Le nombre de registres MODBUS à lire doit être inférieur ou égal à 100.

#Scen 0x66 Err66: Frame period error

Les fonctions 1, 2, 3, 4 et 7 ne peuvent pas être envoyées sur changement. La valeur "On Change" n'est valable qu'avec les fonctions d'écriture 5, 6, 15, 16 et 23.

#Scen 0x67 Err67: Nb of regs to write < 1 Le nombre de registres MODBUS à écrire doit être supérieur ou égal à 1.

#Scen 0x68 Err68: Nb of regs to write > 100 Le nombre de registres MODBUS à écrire doit être inférieur ou égal à 100.

#Scen 0x69 Err69: MODBUS Function error La fonction MODBUS n’est pas supportée.

#Scen 0x6A Err6A: Equipment Address error La valeur du paramètre "Slave Address" est erronée.

#Scen 0x6B Err6B: Frame periodicity error La valeur du paramètre "Frame trigger" est erronée.

#Scen 0x6C Err6C: Cycle time error La valeur du paramètre "Cycle time" est erronée.

#Scen 0x6D Err6D: Total Nb of regs to write > 100

Le nombre total de registres MODBUS à écrire doit être inférieur ou égal à 100. Il faut supprimer ce scénario ainsi que les suivants, ou écrire moins de registres dans les scénarios précédents.

#Scen 0x6E Err6E: Total Nb of regs to read > 100

Le nombre de registres MODBUS à lire doit être inférieur ou égal à 100. Il faut supprimer ce scénario ainsi que les suivants, ou lire moins de registres dans les scénarios précédents.

AGILiGATE CANOPEN – MODBUS

31/07/2007 DOCUMENTATION TECHNIQUE 62 / 62

Emergency Error code 0xFF03 (Scénarios) : L’octet 3 indique le numéro de scénario dans lequel une erreur s’est produite (compris entre 0x01 et 0x32 -1 et 50-).

Error Field

Octet3 Octet4 #erreur

Message d’erreur Description

#Scen 0x00 Aucun Envoie puis réception du scénario correcte.

#Scen 0x70 Err70: MODBUS address error Erreur de réception dernière trame MODBUS. La trame reçue n'a pas été envoyée par le bon esclave.

#Scen 0x71 Err71: MODBUS function error Erreur de réception dernière trame MODBUS. La trame reçue ne correspond pas à la fonction MODBUS attendue.

#Scen 0x72 Err72: Bytes number error Erreur de réception dernière trame MODBUS. La trame reçue n'a pas le bon nombre d'octets de données.

#Scen 0x73 Err73: Response length error Erreur de réception dernière trame MODBUS. La trame reçue n'a pas le bon nombre d'octets.

#Scen 0x74 Err74: Register value error Erreur de réception dernière trame MODBUS. La trame reçue n'a pas la valeur de registre attendue.

#Scen 0x75 Err75: MODBUS Timeout L'esclave n'a pas répondu à la requête MODBUS acyclique.

#Scen 0x76 Err76: Error 2nd stop bit Un caractère a été reçu sur la liaison MODBUS mais il ne comportait pas de 2nd stop bit. Pourtant, MODBUS est paramétré en 2 bits de stop.

#Scen 0x77 Err77 : Parity error Un caractère a été reçu sur la liaison MODBUS mais le bit de parité est erroné. MODBUS est paramétré pour vérifier la parité.

#Scen 0x78 Err78: Received frame non ASCII MODBUS est en mode ASCII mais la trame reçue ne commence pas par le caractère ‘ :’.

#Scen 0x79 Err79: Too many chars received Plus de 500 caractères ont été reçus en une seule trame, sur la liaison série.

#Scen 0x7A Err7A: MODBUS exception received Une trame d’exception MODBUS a été reçue.

#Scen 0x7B Err7B: Too many bytes rcv on pt Un nombre d'octets supérieur à celui attendu d'après les paramètres a été reçu sur la liaison série. (fonction passe-trame).

#Scen 0x7C Err7C: Too few bytes rcv on pt Un nombre d'octets inférieur à celui attendu d'après les paramètres a été reçu sur la liaison série. (fonction passe-trame).

#Scen 0x7D Err7D: MODBUS illegal data value error

Une trame d’exception MODBUS a été reçue. Une valeur impossible a été reçue par l’esclave.

#Scen 0x7E Err7E: MODBUS illegal address error

Une trame d’exception MODBUS a été reçue. Une requête a été faite portant sur une adresse MODBUS inexistante.

#Scen 0x7F Err7F: MODBUS illegal function error

Une trame d’exception MODBUS a été reçue. Une fonction MODBUS non prise en charge a été envoyée.

#Scen 0x80 Err80: CRC error Erreur de réception dernière trame MODBUS. Le CRC de la trame reçue ne correspond pas au CRC calculé. Le contenu de la trame est corrompu.