Die Grundlagen von CANopen Publish Date: 21, 2013 5 4,80 5 Drucken Inhaltsverzeichnis 1. CANopen Einführung CANopen ist ein auf dem CAN (Controller Area Network) - Protokoll basierendes Kommunikationsprotokoll und Geräteprofilspezifikation auf hohem Niveau. Das Protokoll wurde für eingebettete Netzwerkanwendungen entwickelt, wie z. B. in Fahrzeugnetzen. Der CANopen-Schirm umfasst ein Netzwerkprogrammierwerk, Gerätebeschreibungen, Schnittstellendefinitionen und Anwendungsprofile. CANopen bietet ein Protokoll, das die Kommunikation zwischen Geräten und Applikationen verschiedener Hersteller standardisiert. Es wurde in einer breiten Palette von Industrien mit Highlights in der Automatisierung und Bewegung Anwendungen eingesetzt. In Bezug auf das OSI-Kommunikationssystem-Modell umfasst CAN die ersten beiden Ebenen: die physikalische Schicht und die Datenverbindungsschicht. Die physikalische Schicht definiert die verwendeten Leitungen, Spannungen, Hochgeschwindigkeitsnatur usw. Die Datenverbindungsschicht enthält die Tatsache, dass CAN ein rahmenbasiertes (Nachrichten) - Protokoll ist. CANopen umfasst die fünf Topologien: Netzwerk (Adressierung, Routing), Transport (End-to-End-Zuverlässigkeit), Session (Synchronisation), Präsentation (Datenkodierung in Standardausführung, Datendarstellung) und Applikation. Die Anwendungsschicht beschreibt das Konfigurieren, Übertragen und Synchronisieren von CANopen-Geräten. Die Konzepte der Anwendungsschicht, die in der Spezifikation CiA DS 301 enthalten sind, werden in diesem Dokument behandelt. Es geht darum, den Benutzern einen kurzen Überblick über die Konzepte von CANopen zu geben. CAN und CANopen im OSI-Modell 2. Grundlagen der CANopen-Anwendungsschicht Im Folgenden werden die grundlegenden Konzepte der CANopen-Anwendungsschicht beschrieben. Dieses Dokument ist nur als Basisübersicht gedacht und die Benutzer werden aufgefordert, die CiA DS 301 Spezifikation für weitere Informationen zu überprüfen. Objektverzeichnis Eines der zentralen Themen von CANopen ist das Objektverzeichnis (OD), das im Wesentlichen eine Tabelle ist, die Konfigurations - und Prozessdaten speichert. Es ist eine Voraussetzung für alle CANopen-Geräte, ein Objektverzeichnis zu implementieren. Der CANopen-Standard definiert einen 16-Bit-Bit-Index und einen 8-Bit-Sub-Index. Das heißt, es ist zulässig, bis zu 65536 Indizes und bis zu 256 Untereinträge an jedem Index zu haben. Der Standard legt fest, dass bestimmte Adressen und Adressbereiche bestimmte Parameter enthalten müssen. Der Standard definiert beispielsweise, dass der Index 1008h, der Subindex 00h, den Gerätenamen enthalten muss. So kann jeder CANopen-Master diesen Index aus einem Netzwerk von CANopen-Slaves lesen, um jeden Slave durch Namen eindeutig zu identifizieren.160 Einige Objektwörterbücher, wie zB der Gerätetyp (1000h) und andere, wie der Hersteller, sind obligatorisch Software-Version (100Ah) sind optional. Die Sammlung obligatorischer Indizes stellt das minimale Objektverzeichnis dar, das für die Markierung eines CANopen-konformen Gerätes erforderlich ist. Das Objektverzeichnis ist die Methode, mit der ein CANopen-Gerät kommuniziert werden kann. Beispielsweise könnte man im herstellerspezifischen Abschnitt des Objektwörterbuchs (2000h-5FFFh) einen true-Wert schreiben, den das Gerät als Freigabesignal für die Erfassung von Daten aus einem Spannungseingang interpretieren könnte. Umgekehrt kann der Master auch Informationen aus dem Objektverzeichnis lesen, um die erfassten Daten abzurufen, oder um herauszufinden, wie das Gerät aktuell konfiguriert ist. Die beiden Kommunikationsmechanismen für den Zugriff auf das Objektverzeichnis sind Service Data Objects (SDOs) und Process Data Objects (PDOs), die später in diesem Dokument erläutert werden. Die im Objektverzeichnis enthaltenen grundlegenden Datentypen sind: Boolean, void (Platzhalter), vorzeichenlose Ganzzahl, signierte Ganzzahl, Gleitpunkt und Zeichen. Komplexere Datentypen wie Strings, Datum und Uhrzeit können aus den grundlegenden Datentypen aufgebaut werden. Diese Datentypen können verwendet werden, um benutzerdefinierte Datentypen zu definieren, die für CANopen spezifisch sind, wie den PDOSDO-Parametersatz und den PDO-Zuordnungsparameter. Der Benutzer wird aufgefordert, die CANopen-Spezifikation für weitere Details zu den Komponenten von komplexen und benutzerdefinierten Datentypen zu überprüfen. CANopen-Nachrichtenformat Das Nachrichtenformat eines CANopen-Frames basiert auf dem CAN-Frame-Format. Im CAN-Protokoll werden die Daten in Rahmen, bestehend aus einer 11-Bit - oder 29-Bit-CAN-ID, Steuerbits wie Fernübertragungsbit (RTR), Startbit und 4-Bit-Datenlängenfeld und 0 bis übertragen 8 Byte Daten. Die in CANopen üblicherweise verwendete COB-ID besteht aus der CAN-ID und den Steuerbits. In CANopen ist die 11-Bit-CAN-ID in zwei Teile aufgeteilt: einen 4-Bit-Funktionscode und eine 7-Bit-CANopen-Node-ID. Die 7-Bit-Größenbegrenzung beschränkt die Anzahl der Geräte auf einem CANopen-Netzwerk auf 127 Knoten. CANopen-Frame-Format (mit Ausnahme des Datenfeldes) Alle COB-IDs müssen eindeutig sein, um Konflikte am Bus zu vermeiden. In der SDO-Kommunikation sollte es immer nur einen Knoten geben, der auf die einzelnen Objektverzeichnis-Indizes der Slave-Knoten zugreifen muss. Service Data Objects (SDOs) Das CANopen-Protokoll legt auch fest, dass jeder Knoten im Netzwerk einen Server implementieren muss, der Readwrite-Anforderungen an sein Objektverzeichnis verarbeitet. Dadurch kann ein CANopen-Master als Client für diesen Server agieren. Der Mechanismus für den direkten Zugriff (readwrite) auf das Serverobjektverzeichnis ist das Service Data Object (SDO) .160Der Knoten, auf den das Objektverzeichnis zugegriffen wird, wird als SDO-Server bezeichnet und der Knoten, der die Daten erfasst, wird als SDO-Client bezeichnet . Die Übertragung wird immer vom SDO-Client gestartet. Typischerweise sendet der Master-CANopen-Knoten eine Anforderung an das Netzwerk, und der interessierende Knoten antwortet mit den angeforderten Daten. CANopen verwendet reservierte Nachrichten-IDs, um diese Kommunikation zu erleichtern. Wenn der SDO-Client Informationen von dem Server anfordern möchte, sendet er eine SDO-Anforderung unter Verwendung einer CAN-ID von 600h Node-ID. Der Server antwortet dann mit einer CAN-ID von 580h Node-ID. Die Node-ID gibt an, von welchem Slave-Knoten die Nachricht kommt. Für das unten dargestellte Beispiel sendet der Master-Knoten (der SDO-Client) eine Nachricht an das Netzwerk mit einer CAN-ID von 603h. Obwohl alle Knoten diese Nachricht sehen, ignorieren alle Knoten, aber der Zielknoten es, weil die Nachricht nicht für sie gedacht ist. Der Zielknoten versteht, dass die Nachricht mit ID 603h bedeutet, dass die Nachricht für diesen Knoten, der eine SDO-Anforderung ist, vorgesehen ist. Das Datenfeld der Nachricht spezifiziert den Index und den Subindex des Objekts, auf das der Master auf Daten zugreifen möchte. Der Zielknoten antwortet dann mit der Nachrichten-ID 583h. Das Datenfeld der Antwortnachricht enthält die angeforderten Daten. Neben einer bestimmten CAN-ID folgt auch der Datenabschnitt des CANopen-Frames einem bestimmten SDO-Format. Der Datenabschnitt des CAN-Rahmens ist in drei Teile aufgeteilt: ein Byte für den Spezifizierer, drei Bytes für den Knotenindex und Subindex und vier Bytes für die tatsächlichen Daten in der Übertragung. Das Spezifizierungsbyte wird in dem oben gezeigten Diagramm ausgebrochen. Die drei Bits des Spezifizierungsbytes werden als Clientbefehlsspezifizierer (ccs) bezeichnet, der angibt, welcher Art von Nachricht übertragen wird (d. h. Lesen, Schreiben und Abbrechen). Das vierte Bit ist reserviert. Das fünfte und das sechste Bit geben die Anzahl der Bytes im Datenteil der Nachricht an, die keine tatsächlichen Daten enthalten. Das siebte Bit zeigt an, ob die Übertragung eine beschleunigte Übertragung oder eine segmentierte Übertragung ist. Das endgültige Bit gibt an, ob die Datenmenge in bit fivesix angegeben ist oder ob sie im Datenteil der Nachricht angegeben ist. SDO-Rahmen - Datenbereich Detail Eine segmentierte Übertragung wird gewählt, wenn alle zu übertragenden Daten nicht in eine einzige Meldung passen und daher die Daten über mehrere Meldungen oder Segmente übertragen werden müssen. Im Gegenteil, eine beschleunigte Übertragung ist, wo alle Daten als eine einzige Nachricht gesendet wird. In der Initialisierungsphase (siehe NMT-Abschnitt) können SDOs bis zu vier Byte Daten übertragen. Optional kann auch eine SDO-Übertragung in einer Reihe von Blöcken auftreten. Jeder Block besteht aus bis zu 127 Segmenten. Ein Blocktransfer ist schneller als eine segmentierte Übertragung für große Datensätze. Prozessdatenobjekte (PDOs) Prozessdaten stellen Daten dar, die sich zeitlich ändern können, wie beispielsweise die Eingänge (d. h. Sensoren) und die Ausgänge (d. H. Motorantriebe) des Knotencontrollers. Prozessdaten werden auch im Objektverzeichnis gespeichert. Da jedoch die SDO-Kommunikation nur einen Zugriff auf einen Objektverzeichnisindex zu einem Zeitpunkt erlaubt, kann viel Aufwand für den Zugriff auf sich ständig ändernde Daten vorhanden sein. Darüber hinaus hat das CANopen-Protokoll die Voraussetzung, dass ein Knoten seine eigenen Daten senden kann, ohne vom CANopen-Master abgefragt werden zu müssen. Somit wird ein anderes Verfahren verwendet, um Prozessdaten unter Verwendung eines Kommunikationsverfahrens, das als Prozessdatenobjekte (PDOs) bezeichnet wird, zu verwenden.160 Es gibt zwei Arten von PDOs: PDOs (TPDOs) und PDOs empfangen (RPDOs). Ein TPDO sind die Daten, die von dem Knoten (erzeugt) kommen und ein RPDO die Daten sind, die zu dem Knoten kommen (verbraucht). Darüber hinaus gibt es zwei Arten von Parametern für ein PDO: die Konfigurationsparameter und die Mapping-Parameter. Der für PDO-Konfiguration und Zuordnungsinformation reservierte Bereich des Objektwörterbuchs sind die Indizes 1400h-1BFFh. Die Konfigurationsparameter geben die COB-ID, den Übertragungstyp, die Sperrzeit (nur TPDO) und den Ereignistimer an, die in diesem Abschnitt erläutert werden. Es gibt verschiedene Verfahren, durch die ein PDO-Transfer initiiert werden kann. Diese Methoden umfassen ereignisgesteuertes, zeitgesteuertes, individuelles Polling und synchronisiertes Polling. Die Art der Übertragung ist in den Konfigurationsparametern des PDO angegeben. Bei ereignisgesteuerter Übertragung wird die PDO-Übertragung initiiert, wenn sich die Prozessdaten darin ändern. Bei der zeitgesteuerten Übertragung erfolgt die PDO-Übertragung in einem festen Zeitintervall. Beim Einzelabruf wird der PDO-Transfer mit einem Mechanismus namens Remote-Request initiiert, der nicht häufig verwendet wird. Beim synchronisierten Polling wird die PDO-Übertragung mit einem SYNC-Signal initiiert. Das Sync-Signal wird häufig als globaler Zeitgeber verwendet. Wenn der CANopen-Master beispielsweise eine SYNC-Nachricht sendet, können mehrere Knoten konfiguriert werden, um diese SYNC zu sehen und darauf zu reagieren. Auf diese Weise kann der Master gleichzeitig einen Schnappschuss mehrerer Prozessobjekte erhalten. Event Driven PDOs Transfer Beispiel Die Mapping-Parameter legen fest, welche Objektwörterbücher von einer einzigen PDO-Nachricht gesendet werden. Beispielsweise kann eine einzelne PDO-Nachricht Daten aus dem Objektindex 2001h, 2003h und 2005h enthalten. TPDO-Objektverzeichnis Beispiel Netzwerkmanagement (NMT) Übersicht Netzwerkverwaltungsdienste beinhalten die Möglichkeit, den Status eines Slaves zwischen Initialisierung, Voroperationen, Betrieb und Stopp zu ändern. Das NMT-Protokoll ermöglicht es dem CANopen-Netzwerk, den Kommunikationszustand der einzelnen Knoten zu steuern. Der Vor-Betriebszustand wird hauptsächlich für die Konfiguration von CANopen-Geräten verwendet. Daher ist die PDO-Kommunikation im voroperativen Zustand nicht zulässig. Die PDO-Kommunikation wird im Betriebszustand möglich. Im gestoppten Zustand kann ein Knoten nur Knotenwächter oder Herzschläge ausführen, kann aber keine Nachrichten empfangen oder senden. Bestimmte CANopen-Kommunikationsarten sind in verschiedenen Zuständen zulässig. Zum Beispiel sind SDOs im präoperativen Zustand erlaubt, aber PDOs nicht. Dies liegt daran, dass SDOs oft verwendet werden, um Objektwörterbuchparameter zu initialisieren, wohingegen PDOs häufig verwendet werden, um kontinuierlich aktualisierende Daten zu übertragen. Guarding und Heartbeats Die CANopen-Spezifikation erfordert, dass Knoten eine Methode verwenden müssen, um zu prüfen, ob ein Knoten lebt oder nicht. Die beiden verfügbaren Methoden sind: Knotensicherung und Herzschlag, wobei letztere die bevorzugte Methode ist. Im Heartbeat-Protokoll sendet ein CANopen-Knoten periodisch eine Heartbeat-Meldung aus, die den CANopen-Master oder den Heartbeat-Verbraucher weiß, dass der Knoten noch lebt. Wenn eine Heartbeat-Nachricht nicht innerhalb einer bestimmten Zeitspanne eintrifft, kann der Master eine bestimmte Aktion ausführen. Eine solche Aktion könnte sein, den Knoten zurückzusetzen oder einen Fehler an einen Operator zu melden. Die Heartbeat-Meldung wird durch eine CAN-ID von 0x700 der Knoten-ID identifiziert, wobei das erste Datenbyte gleich 1110 ist. In dem Knoten-Schutzprotokoll fragt der CANopen-Master die Slave-Knoten nach ihren aktuellen Zustandsinformationen ab. Wenn der Knoten nicht innerhalb einer bestimmten Zeitspanne antwortet, nimmt der Master an, dass der Knoten tot ist und eine Aktion ausführt. Das Heartbeat-Protokoll ist die bevorzugte Methode, weil es weniger Overhead als Knoten-Schutz hat. Emergency-Meldungen Jeder Knoten in einem CANopen-Netzwerk erhält eine einzige Notrufnachricht (EMCY), die den Knotenstatus mitteilt. Es ist anzumerken, dass das Herzschlag - und Knotenschutzprotokoll dazu bestimmt ist, Kommunikationsfehler zu vermitteln, während Notfallnachrichten verwendet werden, um Fehler innerhalb des Knotens zu übertragen (d. H. Sensorversagen). Eine EMCY-Nachricht wird durch eine COB-ID der 80h Node-ID identifiziert. Der Datenabschnitt einer EMCY-Nachricht enthält Informationen über den aufgetretenen Fehler. 3. NI CANopen-Schnittstellen National Instruments bietet CANopen-Master-Schnittstellen für CompactRIO an. PXI und PCI-Formfaktoren. Jede Schnittstelle wird von der Industrial Communications für CANopen-Treiber unterstützt, die Unterstützung für SDOs, PDOs, NMT, Heartbeats, Node-Guarding und Synchronisation bietet. Der Treiber verfügt auch über einen Batch-SDO-Editor, der es einem Benutzer ermöglicht, die Knoten im CANopen-Netzwerk einfach zu konfigurieren. Der Batch-SDO-Editor unterstützt die Integration von EDS-Dateien und die Unterstützung von LSS-Diensten für die Konfiguration des Slave-Knotens. NI-9881: 1-Port-CANopen-Modul für NI CompactRIO Die NI 9881 ist eine modulare Schnittstelle für die CANopen-Applikationen in der NI LabVIEW-Software auf der NI CompactRIO-Hardware. Der NI-9881 ist extern mit Strom versorgt und kann Übertragungsraten von bis zu 1 Mbit erreichen. Der CANopen-Port ist über den CompactRIO Real-Time-Controller zugänglich. Das Modul 9881 benötigt das NI cRIO-911x-Chassis und das LabVIEW FPGA-Modul. NI PCIPXI-8531: 1-Port-CANopen-Schnittstelle für PCIPXI Die NI PCI-8531 und NI PXI-8531 sind jeweils 1-Port CANopen-Schnittstellen für die PCI - und PXI-Plattformen. Sie bieten Übertragungsraten von bis zu 1 Mbits und nutzen die industrielle Kommunikation für CANopen-Treiber. CANopen-Grundlagen - Überwachung und Heartbeat-Knotenüberwachung über Node-Guarding - oder Heartbeat-Meldungen Um die Funktionsfähigkeit von Netzwerkknoten zu gewährleisten, bietet CANopen zwei Alternativen: Zyklische Abfrage der Knoten-Zustand durch eine Instanz höherer Ordnung, den sogenannten NMT-Master (Node Guarding Prinzip) oder Automatische Übertragung einer Heartbeat-Meldung durch die Netzwerkknoten (Heartbeat-Prinzip). Bei Knotenüberwachung fordert ein bestimmter Netzknoten (der sogenannte NMT-Master) die anderen Knoten im Netzwerk (entsprechend als NMT-Slaves bezeichnet) mit einem CAN-Remote-Frame nacheinander in definierten Intervallen (Wächterzeit) bis an Ein Datentelegramm mit seinem aktuellen Kommunikationszustand (gestoppt, betriebsbereit, voroperativ) zusammen mit einem Toggle-Bit senden. Wenn ein Knoten innerhalb einer bestimmten Zeit (Knotenlebensdauer) nicht auf die Anforderung des NMT-Masters antwortet, wird dies als Fehler des Knotens bewertet und dem Host-Controller des NMT-Masters als Knotenwächter angezeigt . Andererseits überwachen die NMT-Slaves auch, ob sie innerhalb der Lebensdauer eine Anfrage vom NMT-Master erhalten haben. Wenn eine solche Anforderung länger als die sogenannte Lebenszeit eines Knotens fehlte, geht der NMT-Slave davon aus, dass der NMT-Master selbst fehlgeschlagen ist und dieses Ereignis als Life-Guarding-Ereignis an seinen Host-Controller zeigt CAN-Identifizierung pro Knoten erforderlich ist, um den Kommunikationszustand anzufordern. Meldungen mit niedriger Priorität mit einem Wert von 1792 Knoten-ID sind dafür reserviert. Bei Knotenüberwachung nach dem Heartbeat-Prinzip überträgt ein Knoten automatisch seinen Kommunikationszustand in regelmäßigen Intervallen als Nachweis seiner Kommunikationsfähigkeit. Das Intervall zwischen zwei Heartbeat-Meldungen (Heartbeat-Intervall) eines Heartbeat-Produzenten wird über den Objektverzeichniseintrag 1017 konfiguriert. Ein Wert von 0 deaktiviert den Heartbeat-Mechanismus. Die sogenannte Heartbeat-Consumer-Zeit der bis zu 127 Netzwerkknoten wird im OD-Eintrag 1016 angegeben. Dieses Zeitintervall beschreibt die maximale Zeit, innerhalb der die Ankunft einer Heartbeat-Nachricht von einem bestimmten Knoten erwartet wird. In einer Guarding - oder Heartbeat-Nachricht wird der Kommunikationsstatus in Form eines Ein-Byte-Wertes übertragen: t. Toggle-Bit mit Knotenüberwachung r. Reserviert (0) mit Heartbeat Folgende Zustandswerte sind definiert: 0x00 - Bootup 0x04 - Stopped 0x05 - Operational 0x7F - Pre-Operational. Dem höchstwertigen Bit wird eine besondere Rolle zugewiesen - mit der Schutzfunktion muss es umschalten, bei Heartbeat muss es konstant 0 sein. Die Knotenstatusmeldung hat eine spezielle Applikation als sogenanntes Bootup-Ereignis. Diese Nachricht (Boot-up-Nachricht) wird automatisch von einem Netzknoten gesendet, sobald sie vom Initialisierungsstatus zum Pre-Operational-Zustand wechselt. Dadurch werden alle in einem CANopen-Netzwerk vorhandenen Knoten über die Anwesenheit eines neuen Knotens benachrichtigt. Zusätzlich wird ein Konfigurationsknoten (NMT-Master) informiert, wenn er mit der Konfiguration eines Knotens beginnen kann. Das Datenbyte der Startnachricht hat den Wert 0x00. Für weitere Informationen über die IXXAT CANopen Produkte von HMS besuchen Sie bitte unsere Unternehmenswebseite ixxat (C) 2004-2016 HMS Technology Center Ravensburg GmbH
No comments:
Post a Comment