CANopen dans l'automatisation du bâtiment : Dictionnaire d'objets, PDO, SDO et profil HVAC CiA 419
CANopen est la couche applicative fonctionnant sur le bus CAN, normalisée par CAN in Automation (CiA) sous le nom CiA 301. Elle définit comment les dispositifs décrivent leurs données (dictionnaire d'objets), comment les valeurs de processus sont échangées à grande vitesse (PDO), comment les paramètres sont lus et écrits lors de la mise en service (SDO), et comment le réseau est géré (NMT) — ainsi que des profils de types de dispositifs tels que CiA 419 pour les systèmes HVAC qui spécifient exactement quels objets un refroidisseur ou une CTA doit fournir.
Dictionnaire d'objets CANopen
Chaque périphérique CANopen possède un dictionnaire d'objets (OD) — une table structurée de tous les paramètres et valeurs de processus pris en charge par le périphérique. Chaque entrée est adressée par un index 16 bits (0x0000–0xFFFF) et un sous-index 8 bits (0x00–0xFF). Le fabricant fournit l'OD dans un fichier Electronic Data Sheet (EDS) — un fichier texte au format INI que les outils de configuration chargent pour connaître les objets pris en charge par le périphérique.
| Index | Objet | Description |
|---|---|---|
| 0x1000 | Type de périphérique | Obligatoire — identifie le profil de périphérique CiA implémenté (ex. 0x00190191 = CiA 419 HVAC) |
| 0x1001 | Registre d'erreurs | Obligatoire — champ de bits des catégories d'erreurs actives (communication, spécifique au périphérique, etc.) |
| 0x1008 | Nom du périphérique fabricant | Optionnel — chaîne de modèle de périphérique lisible par l'homme |
| 0x1017 | Temps de heartbeat du producteur | Temps de cycle du heartbeat en ms — 0 désactive le heartbeat |
| 0x1018 | Objet d'identité | ID fabricant, code produit, révision, numéro de série (sous-indices 1–4) |
| 0x1400–0x15FF | Paramètres de communication RPDO | COB-ID, type de transmission et temps d'inhibition pour chaque PDO de réception |
| 0x1600–0x17FF | Paramètres de mappage RPDO | Quels objets OD sont mappés dans chaque RPDO (index, sous-index, longueur en bits) |
| 0x1800–0x19FF | Paramètres de communication TPDO | COB-ID, type de transmission, temporisateur d'événement pour chaque PDO de transmission |
| 0x1A00–0x1BFF | Paramètres de mappage TPDO | Quels objets OD sont regroupés dans chaque TPDO |
| 0x2000–0x5FFF | Objets spécifiques au fabricant | Valeurs de processus spécifiques au dispositif — températures du refroidisseur, codes d'alarme, points de consigne |
| 0x6000–0x9FFF | Objets de profil de dispositif CiA | Objets de profil standardisés (CiA 419 HVAC : 0x6000–0x67FF) |
PDO — Objets de données de processus
Les PDO sont le mécanisme d'échange de données en temps réel dans CANopen — des trames CAN rapides à faible surcharge qui transportent jusqu'à 8 octets de données de processus sans surcharge de protocole au-delà de la trame CAN elle-même. Un PDO de transmission (TPDO) envoie des données d'un dispositif au réseau ; un PDO de réception (RPDO) accepte les données écrites par un maître ou un autre dispositif.
Le mappage PDO définit quelles entrées du dictionnaire d'objets sont emballées dans un PDO. Par exemple, un TPDO1 de refroidisseur pourrait emballer la température d'alimentation (0x6010:01, 16 bits), la température de retour (0x6010:02, 16 bits), l'état de fonctionnement du compresseur (0x6020:01, 8 bits) et l'état d'alarme (0x6030:01, 8 bits) — totalisant 6 octets dans une seule trame CAN transmise toutes les 1 seconde.
Types de transmission PDO — tableau CiA 301
Transmission type (object 0x1800:02 for TPDO1):
Type 0: Acyclic, synchronous — PDO sent after SYNC only if data changed
Type 1–240: Cyclic, synchronous — PDO sent every N SYNC messages
Example: type 10 = send PDO every 10th SYNC telegram
Type 254: Event-driven, manufacturer-specific — sent on internal event
Type 255: Event-driven, profile-specific — sent when data changes
(most common for building automation — avoids fixed polling)
TPDO1 event timer (object 0x1800:05):
Value in ms — maximum time between PDO transmissions even if no change
Example: 5000 ms = resend TPDO1 every 5 seconds regardless
Use 0 to disable the timer (rely on event trigger only)
Inhibit time (object 0x1800:03):
Minimum time between two TPDO1 transmissions in 100µs steps
Example: 1000 = 100ms minimum between sends — prevent bus floodingSDO — Service Data Objects
Les SDO sont utilisés pour la configuration et l'accès aux paramètres — lecture ou écriture de toute entrée du dictionnaire d'objets via une poignée de main confirmée et acquittée. Contrairement aux PDO (tirer et oublier), les transferts SDO garantissent la livraison et renvoient la valeur lue ou une confirmation de l'écriture. L'accès SDO est lent (plusieurs trames CAN par lecture/écriture) et est utilisé lors de la mise en service, pas pour les données de processus cycliques.
Exemple de lecture/écriture SDO — trame manuelle PCAN-View
SDO Read (Initiate Upload) — read object 0x6010:01 (supply water temp)
COB-ID: 0x600 + node ID (example: node 3 → 0x603)
DLC: 8
Data: 40 10 60 01 00 00 00 00
| | |
| | Sub-index: 0x01
| Index low byte: 0x10
Command specifier: 0x40 (Initiate Upload Request)
SDO Response from device:
COB-ID: 0x580 + node ID (example: node 3 → 0x583)
Data: 4B 10 60 01 E8 03 00 00
| |
| Value: 0x03E8 = 1000 → ÷10 = 100.0°C? No → check EDS
Command: 0x4B = 4-byte, expedited (2 meaningful bytes)
SDO Write — set temperature setpoint object 0x6011:01 to 45°C (0x01C2 = 450 × 0.1°C)
COB-ID: 0x600 + node ID
DLC: 8
Data: 2B 11 60 01 C2 01 00 00
| | | |
| | Sub-index: 0x01
| Index: 0x6011
Command: 0x2B (Write 2 bytes, expedited)NMT — machine d'état de gestion de réseau
Le maître NMT (généralement la passerelle CANopen ou l'automate) contrôle l'état de fonctionnement de tous les nœuds du réseau. Après la mise sous tension, les nœuds entrent automatiquement dans l'état Pre-Operational — les PDO sont inactifs mais l'accès SDO pour la configuration est disponible. Le maître NMT envoie une commande de diffusion pour faire passer tous les nœuds à l'état Operational, activant l'échange de PDO.
| État NMT | PDO actifs | SDO actif | Remarques |
|---|---|---|---|
| Initialisation | Non | Non | Le périphérique démarre ici à la mise sous tension, transition automatique |
| Pré-Opérationnel | Non | Oui | Configurer les mappages PDO, définir les paramètres du nœud via SDO |
| Opérationnel | Oui | Oui | État de fonctionnement normal — PDO et SDO tous deux actifs |
| Arrêté | Non | Non | État de maintenance — aucune communication sauf NMT |
Le protocole Heartbeat (CiA 301) remplace l'ancien mécanisme Node Guarding. Chaque nœud transmet une trame Heartbeat à un intervalle configurable (généralement 1000 ms). Le maître NMT surveille la réception des Heartbeats — si un nœud cesse d'envoyer des Heartbeats, le maître détecte la défaillance du nœud et peut déclencher une alarme dans le système d'automatisation du bâtiment.
Profils de dispositifs CiA 417 pour ascenseurs et CiA 419 pour HVAC
Les profils de dispositifs CiA standardisent la disposition du dictionnaire d'objets pour des types d'équipements spécifiques, garantissant l'interopérabilité entre les dispositifs de différents fabricants. Deux profils sont directement pertinents pour l'automatisation du bâtiment : CiA 417 pour les systèmes d'ascenseurs et CiA 419 pour les systèmes HVAC.
| Objet CiA 419 | Index | Description |
|---|---|---|
| Température d'air soufflé | 0x6010:01 | INT16, unité 0,01°C — diviser par 100 pour la valeur en °C |
| Température d'air repris | 0x6010:02 | INT16, unité 0,01°C — air repris/extraît de la zone |
| Température d'air extérieur | 0x6010:05 | INT16, unité 0,01°C — lecture du capteur ambiant |
| Consigne de température | 0x6011:01 | INT16, unité 0,01°C — inscriptible par le maître pour le contrôle de la consigne |
| Consigne de vitesse du ventilateur | 0x6020:01 | UINT16, unité 0,01% — 0–10000 = commande de vitesse 0–100% |
| Vitesse réelle du ventilateur | 0x6020:02 | UINT16, unité 0,01 % — pourcentage réel de sortie du ventilateur |
| Consigne de position de vanne | 0x6030:01 | UINT16, unité 0,01 % — commande de vanne chauffage/refroidissement |
| Position réelle de la vanne | 0x6030:02 | UINT16, unité 0,01 % — retour de position de vanne |
| Mode de fonctionnement | 0x6040:01 | UINT8 — 0=arrêt, 1=chauffage, 2=refroidissement, 3=auto, 4=ventilateur seul |
| État d'alarme | 0x6050:01 | Champ de bits UINT32 — chaque bit représente un code d'alarme spécifique |
Passerelles CANopen vers BACnet, Modbus et KNX
La plupart des systèmes d'automatisation des bâtiments (KNX, BACnet, Modbus) ne peuvent pas parler nativement CANopen — une passerelle de protocole fait le pont entre les mondes des bus de terrain. Trois familles de passerelles sont largement utilisées.
| Passerelle | Protocoles | Remarques |
|---|---|---|
| Passerelle Ixxat CANopen | CANopen ↔ Modbus TCP/RTU | Configurable via interface web – mapper les objets OD CANopen vers des registres de maintien Modbus ; prend en charge jusqu'à 127 nœuds CANopen |
| Anybus X-gateway CANopen–BACnet | CANopen ↔ BACnet IP | HMS Networks – mappage d'objets BACnet via Anybus Configuration Manager ; utilisé dans les grandes intégrations BMS |
| EMS Electronic CANopen–KNX | CANopen ↔ KNX TP | Mappe les objets CANopen PDO/SDO vers les adresses de groupe KNX ; configuration via le plugin ETS6 |
| Weinzierl BAOS CANopen Bridge | CANopen ↔ KNX IP | Routage KNX IP avec fonction maître CANopen ; utilisé dans les passerelles de tableaux électriques |
Demandez toujours le fichier EDS au fabricant de l'équipement avant de commander une passerelle. Sans l'EDS, vous ne pouvez pas déterminer quels indices d'objets le périphérique prend en charge et s'il implémente un profil CiA standard ou utilise uniquement des objets spécifiques au fabricant. Certains refroidisseurs n'exposent qu'un sous-ensemble d'objets CiA 419 et nécessitent des objets spécifiques au fabricant pour les codes d'alarme.
Guides associés
Fondamentaux du bus CAN : Couche physique, structure de trame et détection d'erreurs
CAN / CANopenIntégration de groupe froid HVAC CANopen : Carrier, York, Daikin via passerelle Ixxat
Intégration de passerelleIntégration de passerelle KNX BACnet
Ventilation HVACBoîte VAV TROX TVZ BACnet/IP vers KNX via LOYTEC LGATE-950
Besoin d'intégrer des dispositifs CANopen dans votre GTB ?
Nous configurons et fournissons des passerelles CANopen vers KNX, CANopen vers BACnet et CANopen vers Modbus avec un mappage complet du dictionnaire d'objets, une mise en service basée sur EDS et une configuration PDO pour les systèmes HVAC.
Demander un devis →