Beispiel: CANopen
Produkt: CODESYS CANopen Manager SL
Dieses Beispiel befasst sich mit der Programmierschnittstelle des Kommunikationsstacks des CANopen-Master- und CANopen-Slaves. Das Projekt enthält Beispiele für SDO, NMT, Diagnose und die dynamische Konfiguration der Kommunikationsparameter (Baudrate, Netzwerk-ID, Node-ID), und vieles mehr.
Beschreibung
Das Projekt enthält verschiedene Beispiele für die Verwendung der Programmierschnittstelle des CANopen-Master und CANopen-Slave-Stack. Es werden unter anderem die folgenden Themen behandelt:
SDO (expedited, segmented, block), Zugriff auf das Objektverzeichnis
Netzwerk-Management (NMT)
Diagnose (CANopen-Zustand, EMCY)
Event-Handler für Objektverzeichnis und CANopen-Manager-Zustandsmaschine
Rekonfigurieren: Dynamisches Ändern von Baudrate, Netzwerk-ID und Node-ID
Zugriff auf die CAN-Konfiguration mit Hilfe der Gerätediagnosebibliothek
Weitere Informationen
Das Projekt umfasst einen CANopen-Manager und einen CANopen-Slave-Stack, die über CANbus miteinander kommunizieren. Für die Inbetriebnahme des Projekts werden zwei miteinander verbundene CAN-Schnittstellen benötigt. Dies lässt sich am einfachsten mit der Steuerung CODESYS Control Win und einem 2-kanaligen USB-CAN-Adapter wie beispielsweise PEAK PCAN-USB Pro oder zwei 1-kanaligen Adaptern realisieren.
Damit die Kommunikation funktioniert, muss die jeweilige Laufzeitsystemkomponente in der Konfigurationsdatei eingetragen werden.
Für weitere Informationen siehe: Runtime-Konfiguration.
Das Projekt kann durch ein Geräteupdate der SPS auch auf jeder Steuerung mit zwei CAN-Schnittstellen betrieben werden. Das Projekt ist in drei Bereiche unterteilt:
CANbus Examples
ChangeBaudrate: Dynamische Änderung der Baudrate zur Laufzeit durch RekonfigurationEnableDisableCANbus: Dynamische Aktivierung und Deaktivierung eines CANbus zur Laufzeit durch RekonfigurationGetCANbus: Generische Suche einer projektierten CANbus-Instanz mit Hilfe der Gerätediagnose-Bibliothek
CANopen Master Examples
Diagnose
ReceiveEMCYFromAllDevicesExample: Empfang von Emergency-Nachrichten durchCiA405.RECV_EMCYReceiveEMCYFromOneDeviceExample: Empfang von Emergency-Nachrichten für ein bestimmtes Gerät durchCIA405.RECV_EMCY_DEVGetCANopenKernelStateExample: Erkennung des CANopen-Kernel-Status durchCIA405.GET_CANOPEN_KERNEL_STATEGetStateExample: Erkennung des CANopen-Zustands eines Slaves durchCIA405.GET_STATE
Netzwerk-Management
GetCANopenManagerNodeIDExample: Ermittlung der CANopenManager-Node-ID mit Hilfe von CiA405.GET_CANOPEN_KERNEL_STATE: NMT_Example: Senden von NMT-Anfragen mit Hilfe von CIA405.NMT
SDO (Azyklische Datenübertragung)
ExpeditedReadExample: Lesen eines Objekts <= 4 Bytes über SDO (expedited transfer) mittelsCiA405.SDO_READ4ExpeditedWriteExample: Schreiben eines Objekts <= 4 Bytes über SDO (expedited transfer) mittelsCIA405.SDO_WRITE4SegmentedAndBlockReadExample: Lesen eines Objekts beliebiger Länge über SDO (segmentierter Transfer oder Blocktransfer) mittelsCiA405.SDO_READ_DATASegmentedAndBlockWriteExample: Schreiben eines Objekts beliebiger Länge über SDO (segmentierter Transfer oder Blocktransfer) überCiA405.SDO_WRITE_DATA
Allgemeine API-Funktionen
CANopenManagerAPI: Demonstriert die Verwendung aller Methoden und Eigenschaften der CANopen-Manager-InstanzCANopenManagerEventHandler: Beispielhafte Implementierung eines CANopen-Event-HandlersCANopenRemoteDeviceAPI: Demonstriert die Verwendung aller Methoden und Eigenschaften einer CANopenRemoteDevice-Instanz
CANopen Slave Examples
Diagnose
GetLocalDeviceInfoExample: Demonstriert das Auslesen des CANopen-Status sowie der Node-ID
Netzwerk-Management
ChangeNodeIDExample: Änderung der Node-ID zur LaufzeitNMTExample: Änderung des lokalen CANopen-Status
Objektverzeichnis
ReadObjektExample1: Lesen eines Objekts aus dem lokalen ObjektverzeichnisReadObjectExample2: Alternatives Beispiel zuReadObjectExample1WriteObjectExample1: Schreiben des Werts eines Objekts im ObjektverzeichnisWriteObjectExample2: Alternatives Beispiel zuWriteObjectExample1CountObjects: Traversieren über alle Objekte des Objektverzeichnisses mit Hilfe von_3SCSS.ObjectIteratorGetPDOInfo: Zusätzliches Beispiel für das Traversieren des ObjektverzeichnissesObjectDictionaryEventHandler: Exemplarische Implementierung eines Objektverzeichnis-Eventhandlers
Systemvoraussetzungen und Einschränkungen
Programmiersystem | CODESYS Development System Version 3.5.14.0 oder höher |
Laufzeitsystem | CODESYS Control Win Version 3.5.14.0 |
Zusatzkomponenten | Zwei CAN-Interfaces |
Hinweis
DOWNLOAD Projekt