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. |