APCI-8008-EC
17
4.1.3.2 Zugriffe auf Service-Daten-Objekte (SDOs)
Das universelle Objekt-Interface ermöglicht den Zugriff auf Service-Daten-Objekte der einzelnen Slaves. Die
einzelnen AT-Spezifizierer müssen jedoch manuell unter Zuhilfenahme der jeweiligen Produktdokumentation
deklariert werden. Hierzu gelten die nachfolgenden Richtlinien:
Für die Bus-Nummer ist EcBus anzugeben. Bei der Device-Nummer muss der jeweilige Slave-Index
eingetragen werden. Maximal 512 Slaves werden unterstützt (0..511). Einerseits ist für die Verwendung
dieser Variablen natürlich vorausgesetzt, dass der Busaufbau streng eingehalten und nicht verändert wird.
Andererseits hat man hiermit auch die Möglichkeit, den erwarteten Busaufbau zu kontrollieren, indem man
die Kennung der einzelnen Teilnehmer nacheinander ausliest und verifiziert.
Bei Index und SubIndex ist der jeweilige SDO-Index / Subindex einzutragen. Hierüber gibt die jeweilige
Produktdokumentation Auskunft.
Beim Zugriff auf SDOs ist unbedingt darauf zu achten, dass niemals gleichzeitig von verschiedenen Stellen
auf SDOs zugegriffen wird, da die Ausführung dieser Kommandos immer erst im Folgezyklus abgeschlossen
werden kann. Wenn einem noch nicht abgeschlossenen Zugriff auf ein SDO in der einen Task ein weiterer
Zugriff aus einer anderen Task oder per PCAP folgt, dann ist der Ablauf mit nicht absehbaren Folgen gestört.
Des Weiteren ist unbedingt zu beachten, dass Service-Daten-Objekte im Allgemeinen nicht zyklisch
beschrieben werden dürfen. Wenn es sich um sogenannte Backup-Daten handelt, die beim Beschreiben im
Flash-Speicher des Slaves resident gehalten werden, ist ansonsten eine Zerstörung der Slave-Baugruppe
möglich, weil der Flash-Bereich nicht beliebig oft beschrieben werden darf. Abhilfe kann z.B. geschaffen
werden, indem eine Variable gelesen und nur bei ungültigem Wert mit dem jeweiligen Initialisierungswert
beschrieben wird.
4.1.3.3 EtherCAT-Fehlerbehandlung
Zur Fehlerbehandlung von EtherCAT-Fehlermeldungen kann der Eventhandler EVEC verwendet werden.
Dieser spricht an, wenn im Interface-Status-Register ein Bus-Error BEF erkannt wird. Dieser Fehler kann,
wenn überhaupt, nur mit einem ResetSystem-Kommando (rs) auf PCAP-Ebene quittiert werden. Bei diesem
Kommando werden jedoch alle SAP-Tasks gestoppt. Auf SAP-Ebene sollte das rs-Kommando nicht
verwendet werden. Nach Ausführung des rs-Kommandos muss gewartet werden, bis das Bus-Error-Flag
zurückgenommen wurde. Danach kann der weitere Programmablauf initiiert werden.
4.1.4 EtherCAT-PCAP-Programmierung
Die Zugriffe auf die einzelnen Variablen des EtherCAT-Bereichs werden über das universelle Objekt-
Interface abgewickelt. Hierzu ist die Liste der Ressourcen heranzuziehen, die in fwsetup auf der
Registerkarte EtherCAT auf dem Tab SAP erzeugt werden kann.
4.1.4.1 Besonderheiten bei Zugriffen auf Service-Daten-Objekte (SDO)
Bei einem Zugriff auf ein SDO aus der PCAP-Programmierung muss stets der Rückgabewert des Aufrufs
ausgewertet werden. Solange der Rückgabewert BUSY (2) geliefert wird, ist der Zugriff noch in Bearbeitung
und muss so lange wiederholt werden, bis Erfolg (4) oder aber vielleicht ein Fehler angezeigt wird.
Auch hier ist unbedingt zu beachten, dass auf SDOs nur von einer einzigen Stelle aus zugegriffen werden
darf.