Skip to main content
Makrofunktionen für CANopen | 01 Mai 2017 | |

Makrofunktionen für CANopen

Gültig für S300, S700

Alle Makrofunktionen, die über den CAN Bus im Mehrachsensystem verwendet werden können, werden mit der Funktion
FUNCTIONa(Can_Funktion, Ausgangsarameter, Eingangsparameter) aufgerufen. 
Je nach Anzahl der für die Funktion erforder­lichen Ein- und Ausgangsparameter wird eine andere Makrofunktion aufgerufen.

Alle hier beschriebenen Funktionen werden über die Makrofunktion
                 FUNCTIONa(Can_Funktion, Ausgangsarameter, Eingangsparameter) 
aufgerufen. Je nach Anzahl der für die Funktion erforder­lichen Ein- und Ausgangsparameter wird eine andere Makrofunktion aufgerufen.

Beispiele

FUNCTION(PLCSENDSYNC); 
- Funktion PLCSENDSYNC erfordert keine Parameter

FUNCTION4(PLCREADSDO,RET,VAL0,VAL1,COBID); 
- Funktion PLCREADSDO hat einen Eingangsparameter (COBID) und 3 Ausgangsparameter (RET,VAL0, VAL1)

PLCSENDSYNC

Diese Funktion löst das Senden eines SYNC Telegramms aus.  

Funktionsparameter Typ Bereich Beschreibung
-      
Funktionsergebnis Typ Bereich Beschreibung
-      
Funktionsaufruf:
FUNCTION(PLCSENDSYNC);

PLCSENDNMT

Ermöglicht das Netzwerkmanagement des CAN Busses bei verwendetem CANopen ­Profil. Damit können CANopen Knoten an- oder abgeschaltet bzw. resetiert werden.  

Funktionsparameter Typ Bereich Beschreibung
addr int 0 - 127 CAN Adresse eines konfigurierten CANopen Knotens, 
0, wenn alle CANopen Knoten gleichzeitig freigegeben werden sollen
cmd int 1,2,128 - 130 NMT Kommando 
1 - NMT operational 
2 - NMT stop 
128 - NMT enter preoperational state 
129 - NMT reset node 
130 - NMT reset communication
Funktionsergebnis Typ Bereich  Beschreibung
ret int 0 .. 2 0 – Funktionsparameter waren in Ordnung 
1 – nicht konfigurierte Knotenadresse sollte angesprochen werden 
2 – nicht definiertes NMT Kommando
Funktionsaufruf:
FUNCTION3(PLCSENDNMT, RET, ADDR, CMD);

PLCCNFGSDO

Konfiguration eines SDO Empfangskanals für einen von vier möglichen CANopen Knoten.  

Funktionsparameter Typ Bereich Beschreibung
addr int 1 .. 127 Adresse eines CANopen Knotens zu dem ein Servicekanal aufgebaut werden soll
cmd int 0, 1 Verbindungskommando 
0 – Verbindung abbauen 
1 – Verbindung aufbauen
Funktionsergebnis Typ Bereich  Beschreibung
ret int 0 .. 5 0 – Funktionsparameter waren in Ordnung 
1 – alle 4 möglichen SDO Kanäle sind schon belegt 
2 – die gewünschte Knotenadresse ist schon in Verwendung 
3 – CAN Adresse außerhalb des gültigen Bereichs 
4 – kein zusätzlicher RAM Speicher im Gerät frei 
5 – falsches Kommando
Funktionsaufruf:
FUNCTION3(PLCCNFGSDO, RET, ADDR, CMD);

PLCWRITESDO

Senden eines ServiceDatenObjekts zum CAN Bus. Dieses Telegramm dient dem Austausch von Parametern mit einzelnen Knoten und ist ein bestätigter Dienst. Das Antworttelegramm, das auf die durch diese Funktion ausgelöste Telegramm, wird in einen Puffer eingetragen. Diese Antwort kann, falls der Timeout noch nicht abgelaufen war, also bei ret = 0, direkt über val ausgelesen werden, oder falls ein kurzer Timeout Wert angegeben wurde (ret = 2), später über die Funktion PLCREADSDO ausgelesen werden kann.

Funktionsparameter Typ Bereich Beschreibung
addr int 1 .. 127 Adresse eines CANopen Knotens zu dem ein Servicekanal aufgebaut werden soll
rwflag int 0, 1 Zugriffsart 
0 – Wert lesen 
1 – Wert schreiben
index int 1000h .. 7FFFh Index in das CANopen Objektverzeichnis
subindex int 0 .. 255 Subindex des CANopen Objekts
val int int Zu schreibender Wert beim Schreibzugriff
timeout int int Timeout für die SDO Antwortzeit in Millisekunden
Funktionsergebnis Typ Bereich  Beschreibung
ret int 0 .. 3 0 – Funktionsparameter waren in Ordnung, SDO Antwort steht in val, entweder 0 bei korrektemSchreiben eines Wertes oder der zu erhaltene Wert beim Lesen eines Objekts 
1 – nicht konfigurierte CAN Adresse wurde angesprochen 
2 – der eingestellte Timeout ist ohne Antwort abgelaufen 
3 – negative SDO Antwort (SDO abort)
Funktionsaufruf:
FUNCTION7(PLCWRITESDO, RET, ADDR, RWFLAG, INDEX, SUBINDEX, VAL, TIMEOUT);

PLCREADSDO

Einlesen der SDO Telegrammantwort auf ein per PLCWRITESDO gesendetes SDO Telegramm, falls dort der Timeout auf 0 oder einen zu kleinen Wert gestellt wurde.  

Funktionsparameter Typ Bereich Beschreibung
val int int Wenn ret = 0 der Wert der SDO Antwort, wenn ret = 3 der SDO Abbruchcode
addr int 1 .. 127 Adresse eines CANopen Knotens zu dem ein Servicekanal aufgebaut werden soll
Funktionsergebnis Typ Bereich  Beschreibung
ret int 0 .. 2 0 – Funktionsparameter waren in Ordnung 
1 – nicht konfigurierte CAN Adresse wurde angesprochen 
2 – keine Daten vorhanden (wurden schon ausgelesen) 
3 – SDO abort Telegramm, gesendetes SDO Telegramm wurde negativ quittiert. Der Abort Code ist dann in val enthalten.
Funktionsaufruf:
FUNCTION3(PLCREADSDO, RET, VAL, RET);

PLCCNFGRXPDO

Konfigurieren eines PDO Empfangskanals für einen von acht möglichen CANopen Knoten.  

Funktionsparameter Typ Bereich Beschreibung
cobid int 0x181-0x1FF, 
0x281-0x2FF, 
0x381-0x3FF, 
0x481-0x4FF
COB Identifier eines CANopen Knotens zu dem ein Prozessdatenkanal aufgebaut werden soll
cmd int 0, 1 Verbindungskommando 
0 – Verbindung abbauen 
1 – Verbindung aufbauen
Funktionsergebnis Typ Bereich   Beschreibung
ret int 0 .. 4 0 - Funktionsparameter waren in Ordnung 
1 - alle 8 möglichen PDO Kanäle sind schon belegt 
2 - der gewünschte COB ID ist schon in Verwendung 
3 - kein zusätzlicher RAM Speicher im Gerät frei 
4 - falsches Kommando
Funktionsaufruf:
FUNCTION3(PLCCNFGRXPDO, RET, COBID, CMD);

PLCWRITEPDO

Senden eines ProzessDatenObjekts zum CAN Bus.

Funktionsparameter Typ Bereich Beschreibung
cobid int 0x201-0x27f, 
0x301-0x37f, 
0x401-0x47f, 
0x501-0x57f
COB Identifier für einen CANopen Knoten, zu dem ein Prozessdatenkanal aufgebaut werden soll
val0, val1 2 * int int Zu übertragende CAN Daten: Reihenfolge auf dem CAN Bus: 
val0 LSB .. val0 MSB, val1 LSB .. val1 MSB
bytes int 1..8 Zahl der zu übertragenden Datenbytes
Funktionsergebnis Typ Bereich  Beschreibung
ret int 0 .. 1 0 – Funktionsparameter waren in Ordnung 
1 – falscher Identifier
Funktionsaufruf:
FUNCTION5(PLCWRITEPDO, RET, COBID, VAL0, VAL1, BYTES);

PLCREADPDO

Einlesen eines vorher konfigurierten ProzessDatenObjekts vom CAN Bus.

Funktionsparameter Typ Bereich Beschreibung
val0, val1 2 * int int Übertragende CAN Daten: Reihenfolge auf dem CAN Bus: 
val0 LSB .. val0 MSB, val1 LSB .. val1 MSB
cobid int 0x181-0x1ff, 
0x281-0x2ff, 
0x381-0x3ff, 
0x481-0x4ff

COB Identifier eines CANopen Knotens zu dem ein Prozessdatenkanal aufgebaut werden soll.

Funktionsergebnis Typ Bereich  Beschreibung
ret int 0 .. 1 0 – Funktionsparameter waren in Ordnung 
1 – keine Daten im Puffer
Funktionsaufruf:
FUNCTION4(PLCREADPDO,RET,VAL0,VAL1,COBID);
Back to top

About this Article

Kollmorgen Support