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:

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.

Azyklischer Speicherzugriff 1:

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:

  1. Lock“ im CoE-Objekt 0xF200:02 auf 0 setzen (manuell in TwinCAT oder per PLC).
  2. 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.
  3. Neuladen der Konfiguration.
  4. Zur Kontrolle: Neuladen des CoE-Verzeichnisses.
  5. 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:

Azyklischer Speicherzugriff 2:
Beliebiger Startzustand der EP6080-0000

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:

Nun soll die EP6080-0000 umkonfiguriert werden auf die folgende Speicherstruktur:

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.

Azyklischer Speicherzugriff 3:
Hinzufügen eines neuen StartUp-Eintrages

Das wird durch New.. im Reiter StartUp der EP6080-0000 erreicht.

Azyklischer Speicherzugriff 4:
Definition des StartUp-Eintrages

Es öffnet sich ein Fenster, in dem der neue StartUp-Eintrag definiert werden kann.

Azyklischer Speicherzugriff 5:

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.
In diesem Fall können Sie StartUp-Einträge auch vollständig manuell definieren, d.h. Index und Subindex manuell eintragen.

Beispiel:

Bestätigen Sie mit OK. Der neue StartUp-Eintrag stellt sich nun wie folgt dar:

Azyklischer Speicherzugriff 6:
Neuer StartUp-Eintrag der EP6080-0000

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):

Azyklischer Speicherzugriff 7:
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):

Azyklischer Speicherzugriff 8:
Vollständiger Reload des CoE-Verzeichnisses

Nun sind die neu definierten Speicherobjekte sichtbar und aktiviert, s. Abb. Geändertes CoE-Verzeichnis.

Azyklischer Speicherzugriff 9:

Aktualisierung CoE-Verzeichnis

Zur Aktualisierung der Darstellung des CoE-Verzeichnisses benutzten Sie AutoUpdate, UpdateList oder die entsprechenden Dialoge unter Advanced..

Azyklischer Speicherzugriff 10:
Geändertes CoE-Verzeichnis
Azyklischer Speicherzugriff 11:

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=> );
Azyklischer Speicherzugriff 12:

Beispielprogramm

Die Dokumentation EL6080 enthält ein Beispielprogramm, das den CoE-Zugriff aus einem PLC-Programm demonstriert.

Dokumentation zu EL6080