Adsread / adswrite, Beispiel: sdo read per ads – BECKHOFF FC5101 Benutzerhandbuch
Seite 56
Eiserstraße 5 / D-33415 Verl / Telefon 05246/963-0 / Telefax 05246/963-149
56
ADSREAD / ADSWRITE
Parameter
Beschreibung
NETID
Die NetID ist ein String mit 23 Byte Länge und ergibt sich per Default aus der IP-Adresse
des Rechners, ergänzt um zwei Bytes. Sie adressiert die FC5101 Karte und kann dem Griff
"ADS" im System Manager entnommen werden.
PORT
Enthält die Portnummer des ADS Gerätes - hier also die Portnummer des zu adressieren-
den CANopen Busteilnehmers.
IDXGRP
Entspricht dem 16 Bit Index im CANopen Objektverzeichnis.
IDXOFFS
Entspricht dem 8 Bit Subindex im CANopen Objektverzeichnis.
LEN
Die Länge des zu lesenden bzw. zu schreibenden Parameters in Bytes.
DESTADDR
(nur ADS-
READ)
Enthält die Adresse des Puffers, der die gelesenen Daten aufnehmen soll. Der Program-
mierer ist selbst dafür verantwortlich den Puffer in der Größe so zu dimensionieren, dass er
‚LEN' Bytes aufnehmen kann. Der Puffer kann eine Einzelvariable, ein Array oder eine
Struktur sein, dessen Adresse man mit dem ADR - Operator ermitteln kann.
SRCADDR (nur
ADSWRITE)
Enthält die Adresse des Puffers, aus dem die zu schreibenden Daten geholt werden sollen.
Der Programmierer ist selbst dafür verantwortlich, den Puffer in der Größe so zu dimensio-
nieren, dass ‚LEN'- Bytes daraus entnommen werden können. Der Puffer kann eine Einzel-
variable, ein Array oder eine Struktur sein, dessen Adresse man mit dem ADR - Operator
ermitteln kann.
READ
Durch eine steigende Flanke an diesem Eingang wird der ADS-Befehl ausgelöst
TIMEOUT
Gibt die Zeit bis zum Abbrechen der Funktion an
BUSY
Dieser Ausgang bleibt solange auf TRUE, bis der Baustein eine Befehlsanforderung aus-
führt, längstens aber für die Dauer der, an dem 'Timeout'-Eingang angelegten, Zeit. Wäh-
rend Busy = TRUE wird an den Eingängen kein neuer Befehl angenommen. Bitte beachten
Sie, dass nicht die Ausführung des Dienstes, sondern nur dessen Annahme zeitlich über-
wacht wird.
ERR
Dieser Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung des Befehls ein Fehler
aufgetreten ist.
ERRID
Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls. Wird durch
das Ausführen eines Befehls an den Eingängen auf 0 zurückgesetzt.
Die ERRID enthält die allgemeinen ADS ERROR CODES im Low-Word sowie SDO-spezifische Error Codes im
High-Word:
Bit 0...3 enthält die SDO Error Class
Bit 4...7 enthält den SDO Error Code
Bit 8...14 enthält den Additional Code des SDO Abbruchs
Bit 15 ist immer 1
Beispiel: SDO Read per ADS
Im folgenden Beispielprogramm (Strukturierter Text) für die Verwendung der ADS Dienste für die SDO Kom-
munikation wird Objekt 0x1000, Subindex0 aus dem Knoten mit der Portnummer 0x1001 ausgelesen. Es han-
delt sich um den CANopen DeviceType. Dieser ist als UnSigned32 codiert und damit 4 Bytes lang.
SDO_READ(
StartReading := ReadStart,
CO_Index := 16#1000,
CO_SubIndex := 16#0,
DataLength := 4,