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_EMCY
ReceiveEMCYFromOneDeviceExample
: Empfang von Emergency-Nachrichten für ein bestimmtes Gerät durchCIA405.RECV_EMCY_DEV
GetCANopenKernelStateExample
: Erkennung des CANopen-Kernel-Status durchCIA405.GET_CANOPEN_KERNEL_STATE
GetStateExample
: 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_READ4
ExpeditedWriteExample
: Schreiben eines Objekts <= 4 Bytes über SDO (expedited transfer) mittelsCIA405.SDO_WRITE4
SegmentedAndBlockReadExample
: Lesen eines Objekts beliebiger Länge über SDO (segmentierter Transfer oder Blocktransfer) mittelsCiA405.SDO_READ_DATA
SegmentedAndBlockWriteExample
: 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 zuReadObjectExample1
WriteObjectExample1
: Schreiben des Werts eines Objekts im ObjektverzeichnisWriteObjectExample2
: Alternatives Beispiel zuWriteObjectExample1
CountObjects
: Traversieren über alle Objekte des Objektverzeichnisses mit Hilfe von_3SCSS.ObjectIterator
GetPDOInfo
: 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