Basis Communicatie

Object Dictionary (OD) en Electronic Data Sheet (EDS)

Een van de belangrijkste eigenschappen van CANopen is de gestandaardiseerd apparaat-beschrijving de zogenaamde Object Directory (OD). Het is een tabel die dezelfde structuur heeft voor alle soorten van apparaten. Zo is het mogelijk om toegang te krijgen van de "buiten", dat wil zeggen via de CAN-bus, tot alle belangrijke gegevens, parameters en functies van een apparaat middels een logisch adressysteem (index, sub-index).

CANopen Node structuur basis bestaande uit CANopen communicatie, object directorie en applicatie
CANopen Basis structuur
CANopen Node structuur basis bestaande uit CANopen communicatie, object directorie en applicatie
CANopen Basis structuur

Naast de gestandaardiseerde beschrijving van de communicatie-eigenschappen van apparaten volgens CiA 301, definieert CANopen zogenaamde "Device Profiles" voor typische apparaten met onderscheidend toepassingsgebieden. Deze profielen specifiëren de belangrijkste parameters, data en functies per type apparaat (bijvoorbeeld input / output-modules, drives, encoders, enz.). De Electronical Data Sheet (EDS) bevat het data type en de functie van elk item van de OD. Kenmerkend is dat de EDS een ASCII-bestand was, met daarin alle gegevens. Om een meer flexibele en uitbreidbare verwerking van de CANopen-gegevens mogelijk te maken, is het formaat veranderd in XML.

Gegevensoverdracht via SDO en PDO

In principe zijn er twee verschillende manieren om gegevens over te brengen. De Service Data-Objecten (SDO) zijn gebaseerd op een client/server-communicatie en zorgen voor directe adressering van een CANopen object met behulp van de index en sub-index. Hierbij is dus altijd sprake van 1:1-communicatie (peer-to-peer) tussen de client en de server. Het wordt bijvoorbeeld gebruikt voor de configuratie van een apparaat, of het up-en downloaden van grotere data blokken, maar vereist wel een aanvullend protocol overhead.

CANopen SDO-communicatie tussen SD-client en SDO-server
SDO communicatie
CANopen SDO-communicatie tussen SD-client en SDO-server
SDO communicatie

Proces Data Objects (PDO) maken een efficiënte overdracht van CANopen gegevens mogelijk op basis van een producent/consument model. De datalengte is beperkt tot acht data byte’s, maar bevat geen protocol overhead. Een PDO kan de waarden van meer dan één item uit de Object Directory bevatten. De inhoud van een PDO moeten tijdens de initialisatie worden vastgelegd. Ieder apparaat kan theoretisch tot 512 Receive en Transmit PDOs specificeren. Het werkelijke maximaal aantal is daarbij afhankelijk van de beperkingen van het systeem (geheugen, processorkracht) of het netwerk (aantal beschikbare CAN-ID’s).

CANopen Voorbeelden van PDO-berichten
PDO berichten

Een PDO wordt verstuurd als gevolg van een verzoek op afstand (Remote Request), door een interne gebeurtenis zoals bijvoorbeeld een trigger resp. een timer, of wanneer een (cyclische) synchrone bericht (SYNC) wordt ontvangen. Alle CANopen nodes in het netwerk zijn in staat zijn om het bericht te ontvangen (PDO-consumenten). Door filtering op CAN-ID kunnen alleen objecten van interesse worden geselecteerd voor verdere verwerking binnen een node.

CANopen PDO-communicatie tussen PDO-producer en PDO-consumers
PDO communicatie
CANopen PDO-communicatie tussen PDO-producer en PDO-consumers
PDO communicatie

Noodoproep

Omdat CAN (en dus CANopen) geen hiërarchisch master/slave systeem is, en de monitoring van nodes alleen de CAN-communicatie betreft en niet de eigenlijke node status, benodigd iedere node een hoge prioriteit CAN-ID om foutsituaties te melden. Dit mechanisme wordt aangeduid als "Emergency Messaging” en het bijbehorende communicatie-object "Emergency Message". Een dergelijk CANopen noodoproep-bericht bestaat uit acht data bytes met het volgende formaat:

Formaat van een CANopen noodoproep

De foutcodes worden gespecificeerd in CANopen specificatie DS-301. Gelijktijdig met de overdracht van de noodoproep, schrijft het apparaat de fout code ook in de fouthistorie. Het fout-register is onderdeel van de Object Directory met bit-gewijze codering van de foutoorzaak.