Azyklischer Speicherzugriff
Datenverkehr mit azyklischem CoE-Zugriff
Im azyklischen Zugriff können vom Anwender bis zu 255, auch unterschiedlich große Speicherobjekte angelegt werden. Auf diese Objekte kann gezielt per azyklischem SDO-Zugriff (Service Data Objekte) aus der PLC-Task heraus schreibend oder lesend zugegriffen werden, s. Beispielprogramm. Dieser Lese/Schreibzugriff verläuft deutlich langsamer als der oben beschriebene zyklische Speicherzugriff.
Die angelegte Struktur kann nur im Status PREOP verändert werden. Sie kann auch generell gegen weitere Veränderungen gesperrt werden.
Hintergrundinformation: Der gesamte Speicherplatz wird in Form von CoE-Objekten (CAN over EtherCAT) verwaltet. Die Verwaltungsdaten (Anzahl und Bytegröße) stehen im Objekt Index 0x2F00 mit seinen Subindexen, die gespeicherten Daten selbst in den CoE-Objekten ab 0x2000: 0x2000, 0x2008, 0x2010, 0x2018 usw..
Ein Speicherobjekt im azyklischen Zugriff kann 1 bis 8190 Byte umfassen.
Zur Nutzung des azyklischen Zugriffs wird folgende Vorgehensweise empfohlen:
Berechnung Speicherplatz
Die zur Verfügung stehenden 128 kbyte (131.072 Byte) Speicher teilen sich wie folgt auf:
- 1280 Byte für die zyklischen Daten
- 2000 Byte für interne Verwaltung
- x Byte wie vom Anwender für die azyklischen Daten im Folgenden definiert
- y Byte: es wird im Hintergrund ein Schattenpuffer in der Größe des größten Speicherobjektes vorgehalten.
Beispiel: Es werden die azyklischen Speicherobjekte Obj1, Obj2 und Obj3 mit 1.000, 3.000 und 7.000 Byte definiert --> x = 11.000 Byte und y = 7.000 Byte. Es verbleiben somit noch 113.072 Byte nutzbarer Speicherplatz.
Definition der Speicherobjekte über die StartUp-Liste
Die gewünschte Struktur der Speicherobjekte ist einmalig im Status PREOP im CoE-Verzeichnis in CoE-Objekt 0x2F00 anzulegen. Dies ist auch offline möglich, d.h. ohne angeschlossene Box. Beim Start prüft die EP6080-0000, ob sich die Speicherstruktur verändert hat und legt die Objekte ggf. entsprechend im Speicher an.
![]() | Veränderung der Datenstruktur Wird die Datenstruktur bzw. das Objekt 0x2F00 geändert, werden alle vorhandenen Daten in der EP6080-0000 gelöscht. Die Datenstruktur kann gegen Veränderung durch Setzen des Lock-Objektes 0xF200:02 gesperrt werden. |
Vorgehensweise Kurzform:
- „Lock“ im CoE-Objekt 0xF200:02 auf 0 setzen (manuell in TwinCAT oder per PLC).
- Eintragen des StartUp-Kommandos für das CoE-Objekt 0x2F00
Inhalt: Anzahl der Objekte + jeweilige Länge in Byte.
Zu beachten: complete access, Byte alignment, kein Leerobjekt möglich, nur im P -> S Übergang möglich, 16 bit Einträge, max. 127 Speicherobjekte. - Neuladen der Konfiguration.
- Zur Kontrolle: Neuladen des CoE-Verzeichnisses.
- Locked im CoE-Objekt 0xF200:02 = 1 setzen (manuell im System Manager oder per PLC) und damit die Struktur gegen weitere Veränderungen sperren.
Vorgehensweise ausführlich:
Um die vom Anwender gewünschte Struktur der Speicherobjekte festzulegen, ist wie folgt vorzugehen:
Die EP6080-0000 beinhaltet nach dem Einschalten eine bereits geänderte Speicherstruktur oder die Default-Speicherstruktur. Wichtig sind im Folgenden die CoE-Objekte ab 0x2000 und 0x2F00. In Abbildung Beliebiger Startzustand der EP6080-0000 ist in der EP6080-0000 bereits ein Objekt der Größe 1 Byte angelegt:
- 0x2F00:0 („NOVRAM Size Info“): "1" = es existiert 1 Speicherobjekt.
- 0x2F00:01 („Subindex 001“): "0x0001" = dieses eine Speicherobjekt ist mit 1 Byte Größe definiert.
- 0x2000 („NOVRAM Data“): 00 - dieses eine Speicherobjekt trägt also als Nutzdatum "00".
Nun soll die EP6080-0000 umkonfiguriert werden auf die folgende Speicherstruktur:
- 1 Byte
- 10 Byte
- 256 Byte
- 3 Byte
also insgesamt 270 Byte in 4 Speicherobjekten, auf die jeweils einzeln per azyklisch über das CoE zugegriffen werden kann. Dazu ist ein entsprechender Eintrag in der StartUp-Liste der EP6080-0000 vorzunehmen. Diese Liste bei der EP6080-0000 im Defaultzustand leer.
Das wird durch New.. im Reiter StartUp der EP6080-0000 erreicht.
Es öffnet sich ein Fenster, in dem der neue StartUp-Eintrag definiert werden kann.
- Wählen Sie das Objekt 0x2F00 aus der Liste, damit bei Index/SubIndex und Comment bereits die richtigen Werte stehen.
- Bei Transition muß "P-->S" gewählt werden (der Wert wird beim Statusübergang PREOP-->SAFEOP in die EP6080-0000 geladen).
- CompleteAccess muss aktiviert werden.
- Tragen Sie in Data ihre gewünschte Struktur ein, und zwar in der Form "aa aa bb bb cc cc ...."
aa aa: Anzahl der gewünschten Speicherobjekte, in hex und umgekehrter Byte-Reihenfolge (Byte alignment).
bb bb, cc cc, ...: jeweilige Größendefinition der Objekte, in hex und umgekehrter Byte-Reihenfolge (Byte alignment).
![]() | Auswahldialog StartUp-Liste Wenn bei Ihnen keine CoE-Einträge (s. Abb. Definition des StartUp-Eintrages) zur Auswahl angeboten werden, hat das folgenden Grund: Sie arbeiten offline (also ohne angeschlossene Box) und in der von Ihnen benutzten ESI (EtherCAT Slave Information, XML Beschreibung) der EP6080-0000 ist kein Dictionary enthalten. |
Beispiel:
- aa aa = 04 00: 4 Speicherobjekte werden gewünscht.
- bb bb = 01 00: 1. Speicherobjekt ist 1 Byte groß (00 01hex = 1dec).
- cc cc = 0A 00: 2. Speicherobjekt ist 10 Byte groß (00 0Ahex = 10dec).
- dd dd = 00 01: 3. Speicherobjekt ist 256 Byte groß (01 00hex = 256dec).
- ee ee = 03 00: 4. Speicherobjekt ist 3 Byte groß (00 03hex = 256dec).
Bestätigen Sie mit OK. Der neue StartUp-Eintrag stellt sich nun wie folgt dar:
Nun muss diese Konfiguration zur EP6080-0000 geladen und insbesondere der Statusübergang PREOP-->SAFEOP wie im StartUp-Eintrag definiert durchlaufen werden.
Klicken Sie den Button „Reload Devices“ (Abb. Reload der Konfiguration):
In der Ansicht CoE-Online ist noch der alte Eintrag noch sichtbar.
Dies erklärt sich dadurch, dass TwinCAT primär nur die Werte von CoE-Objekten lädt, die dem System Manager bekannt sind. Verändert sich auf dem Gerät die CoE-Struktur, muss der System Manager gezielt angewiesen werden, die neue Struktur zu laden, die unter Umständen von der Default-Struktur laut XML/Dictionary abweicht.
Laden Sie dazu das umkonfigurierte CoE-Verzeichnis durch (Abb. Vollständiger Reload des CoE-Verzeichnisses):
- CoE-Online, Advanced...
- Doppelklick auf AllObjects
- anschließend OK
Nun sind die neu definierten Speicherobjekte sichtbar und aktiviert, s. Abb. Geändertes CoE-Verzeichnis.
- die Strukturinformationen (Bytegröße) der Speicherobjekte 1 bis 4 sind in CoE-Objekt 0x2F00, Subindex 001 bis 004 definiert
- der aktuelle Speicherinhalt wird in den der Reihenfolge nach zugehörigen CoE-Objekte 0x2000, 0x2008, 0x2010 usw. dargestellt.
![]() | Aktualisierung CoE-Verzeichnis Zur Aktualisierung der Darstellung des CoE-Verzeichnisses benutzten Sie AutoUpdate, UpdateList oder die entsprechenden Dialoge unter Advanced.. |
![]() | Darstellung großer CoE-Objekte Bei dem hier gewählten Beispiel wird der Inhalt des dritten Speicherobjektes im CoE-Objekt 0x2010 in der TwinCAT-Anzeige nicht dargestellt, s. Abb. Geändertes CoE-Verzeichnis, weil der Inhalt für die Darstellung zu groß ist. Dessen ungeachtet ist der Inhalt natürlich vorhanden. |
Online-Zugriff auf die Speicherobjekte im Betrieb
Für den Zugriff aus der PLC heraus können Bausteine aus der PLC-Bibliothek „Tc2_EtherCAT“ wie z. B. FB_EcCoESdoWriteEx benutzt werden.
Beispiel
fbWriteCoE(
sNetId:=sAmsNetId,
nSlaveAddr:= tAmsAddr.port ,
nSubIndex:= 0,
nIndex:= 16#2000 + ((byObjectNo - 1) * 8),
pSrcBuf:= pDataForWrite,
cbBufLen:= wSizeOfData,
bExecute:= TRUE,
tTimeout:= tAdsTimeOut,
bCompleteAccess:= FALSE,
bBusy=> ,
bError=> ,
nErrId=> );
![]() | Beispielprogramm Die Dokumentation EL6080 enthält ein Beispielprogramm, das den CoE-Zugriff aus einem PLC-Programm demonstriert. |