Grundlagen zur Funktion

Die EL6080 unterstützt 2 Zugriffsverfahren auf den Speicher: mit zyklischen Prozessdaten und per azyklischem SDO/CoE-Zugriff. In weiteren Einstellungen kann der Speicher z. B. gelöscht werden.

Auslieferungszustand

Die EL6080 wird betriebsbereit ohne vordefinierte azyklische Datenstrukturen geliefert.

Allgemeiner Hinweis zur Datenkonsistenz

Die EL6080 kann dazu benutzt werden, zyklisch Maschinendaten ausfallsicher abzuspeichern. Eine entsprechende Rückmeldung im Status (zyklischer Betrieb) bestätigt, dass die Daten von der EL6080 korrekt übernommen wurden. Im azyklischen Betrieb müssen die Daten korrekt im CoE stehen.

Es kann der Betriebsfall eintreten, dass während eines (a)zyklischen Schreibzugriffs durch die Task die Klemme spannungslos geschaltet oder die Task gestoppt wird. In der EL6080 sorgen für diesen Fall Schattenpuffer bzw. das NOVRAM für Datenkonsistenz auf unterster Ebene, so dass immer auf den zuletzt korrekt geschriebenen Datensatz zugegriffen werden kann. Auf Applikationsebene hat jedoch der Benutzer durch entsprechende Anwendung selbst Sorge dafür zu tragen, dass die Applikation z. B. beim Start konsistente Daten übernimmt (z. B. fortlaufende Zähler oder ID-Kennung in den zu speichernden Daten).

Beispiel:

Es werden mehrere azyklische Datenobjekte 1 bis 3 definiert, die fortlaufend der Reihe nach von der Applikation beschrieben werden, z. B. 3 Achspositionen, die zum selben Zeitpunkt in der Applikation ermittelt wurden. Während eines Schreibzugriffs auf Objekt 2 fällt die Spannung aus. Dann beinhaltet Objekt 1 die aktuelle Achsposition 1, Objekte 2+3 aber veraltete. Die Applikation darf beim Neustart dann nicht annehmen, 3 Achsposition zu erhalten die vom selben Zeitpunkt stammen.

Gleiche Seiteneffekte müssen beim gleichzeitigen Betrieb von EL6080 und Persistent/Retain/sonstigen NOVRAM-Daten (z. B. aus FC-Karten oder CX) berücksichtigt werden.

Betriebsbereitschaft EL6080

Achten Sie in Ihrer Applikation unbedingt auf einen gültigen WorkingCounter WcState der Klemme, bevor Sie mit der Schreib- und insbesondere der Lesekommunikation beginnen! Die bei einem WcState ≠ 0 von einem EtherCAT Slave gelieferten Prozessdaten sind (auch wenn sie ≠0 sind) als ungültig zu verwerfen!

CoE Verzeichnis EL6080

Die Funktionalität der EL6080 bringt es mit sich, dass bei der Umparametrisierung CoE-Objekte gelöscht oder neu angelegt werden. Um eine korrekte Online-CoE-Darstellung sicherzustellen, beachten Sie bitte die Hinweise.

Grundlagen zur Funktion 1:
Default Prozessabbild der EL6080 nach dem Einfügen
  • Status: 16 bit Feedback der EL6080
  • Control: 16 bit Steuerung der EL6080

Status-Wort

Das Status-Wort (SW) befindet sich im Eingangsprozessabbild und wird von der Klemme zur Steuerung übertragen.

Bit

SW.15

SW.14

SW.13

SW.12

SW.11

SW.10

SW.9

SW.8

Name

Azyklischer Betrieb, 4 Bit Counter inkrementiert bei jedem erfolgreichen Speichern

-

-

-

-

Bit

SW.7

SW.6

SW.5

SW.4

SW.3

SW.2

SW.1

SW.0

Name

-

-

-

-

-

-

-

Zyklischer Betrieb mit Handshake, "Writing Started"

Control-Wort

Das Control-Wort (CW) befindet sich im Ausgangsprozessabbild und wird von der Steuerung zur Klemme übertragen.

Bit

CW.15

CW.14

CW.13

CW.12

CW.11

CW.10

CW.9

CW.8

Name

-

-

-

-

-

-

-

-

Bit

CW.7

CW.6

CW.5

CW.4

CW.3

CW.2

CW.1

CW.0

Name

-

-

-

-

-

-

-

Zyklischer Betrieb mit Handshake, "Start Writing"

Datenverkehr mit zyklischen Prozessdaten

Es kann vom Anwender 1 Satz Prozessdaten von beliebiger Struktur angelegt werden, max. 1280 Byte. Dieser Datensatz kann zyklisch komplett zur Klemme geschrieben bzw. von ihr gelesen werden. Ein Einzelzugriff auf Bestandteile dieses Datensatzes ist nicht möglich (Stichwort: Adressierung). Die Steuerung erfolgt durch die Task per Handshake über Control/Status-Word, so dass je nach Datenumfang und Zykluszeit ggf. mehrere Task-Zyklen zum Abspeichern bzw. Rücklesen erforderlich sind.

Beim Einschalten der EL6080 werden die im letzten Betrieb regulär gespeicherten Daten über die Inputs sofort zum Einlesen angeboten.

Inbetriebnahme: das zyklische Prozessabbild muss bei Inputs und Outputs gleich angelegt werden, max. 1280 Bytes. Erzeugung durch Rechtsklick auf Inputs/Outputs.

Grundlagen zur Funktion 2:
Manuelles Anlegen der zyklischen Prozessdaten

Werden Input und Output unterschiedlich groß angelegt, scheitert der Klemmenstart: "PREOP to SAFEOP failed".
Werden mehr als 1280 Byte angelegt, scheitert der Klemmenstart mit "Invalid SM In/Out Cfg".

  • Auf den Outputs werden die Daten von der Task zur EL6080 ausgegeben, die dort geschrieben werden sollen.
  • Auf den Inputs kommen die zuletzt gültig von der EL6080 erhaltenen Daten als Lesedaten ohne weiteres Zutun bei der Task an.

Aufbau der Prozessdaten in TwinCAT 2.10

Der Aufbau der Input/Output-Daten unterliegt bis TwinCAT 2.10 build 1330 folgender Einschränkung: alle definierten Variablen müssen sich aus n*Byte zusammensetzen, einzelne Bits bzw. solcherart zusammengesetzte Strukturen sind nicht zulässig. Werden solche Daten definiert, erreicht die EL6080 den OP-State, durch Working Counter = 1 meldet sie jedoch Fehler.

Beispiele:

Grundlagen zur Funktion 3:
Zulässige Konfiguration
Grundlagen zur Funktion 4:
Unzulässige Konfiguration bis TwinCAT b2.10 b1330

Zyklischer Betrieb mit Handshake, empfohlener Bedienungsablauf:

  1. Inputdaten zur Klemme ausgeben, ControlWord = 1 setzen.
  2. Wenn die Klemme die Daten erfolgreich übernommen hat, wird StatusWord = 1 zurückgegeben.
  3. ControlWord = 0 setzen.
  4. Warten bis StatusWord = 0 zurückgegeben wird, dann ist die Klemme für einen neuen Schreibzugriff bereit.
Grundlagen zur Funktion 5:
Zyklischer Betrieb mit Handshake

Typische exemplarische Messung für einen zyklischen Schreibvorgang nach o.a. Ablauf (Beckhoff behält sich unangekündigte Änderung vor):

  • 20 Byte: 200 µs
  • 1250 Byte: 2,5 ms

Prozessdatenabbild und Framelänge

Bei kurzen Zykluszeiten kann durch ein umfangreiches Prozessabbild für die EL6080 ein Ethernet-Frame entstehen der länger ist als die Zykluszeit. Um die gesamten 1280 Byte zyklisches Prozessabbild nutzen zu können, muss die Zykluszeit also mind. >= 200 µs sein.

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 Klemmenstatus 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 (ohne angeschlossene Klemme) im System Manager möglich. Beim Start prüft die EL6080, 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 EL6080 gelöscht. Die Datenstruktur kann gegen Veränderung durch Setzen des Lock-Objektes 0xF200:02 gesperrt werden.

Vorgehensweise Kurzform:

  1. Locked im CoE-Objekt 0xF200:02 = 0 setzen (manuell im System Manager 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:

Grundlagen zur Funktion 6:
Beliebiger Startzustand der EL6080

Die EL6080 beinhaltet nach dem Einschalten ein bereits geänderte oder die Default-Speicherstruktur. Wichtig sind im Folgenden die CoE-Objekte ab 0x2000 und 0x2F00. In Abb. Beliebiger Startzustand der EL6080 ist in der EL6080 bereits 1 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 EL6080 um konfiguriert werden auf die 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 EL6080 vorzunehmen. Diese Liste bei der EL6080 im Defaultzustand leer.

Grundlagen zur Funktion 7:
Hinzufügen eines neuen StartUp-Eintrages

Das wird durch New.. im Reiter StartUp der EL6080 erreicht.

Grundlagen zur Funktion 8:
Definition des StartUp-Eintrages

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 EL6080 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 live angeschlossene Klemme) und in der von Ihnen benutzten ESI (EtherCAT Slave Information, XML Beschreibung) der EL6080 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:

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

Grundlagen zur Funktion 9:
Neuer StartUp-Eintrag der EL6080

Nun muss diese Konfiguration zur EL6080 geladen und insbesondere der Statusübergang PREOP-->SAFEOP wie im StartUp-Eintrag definiert durchlaufen werden.
Klicken Sie den Reload-Button (Abb. Reload der Konfiguration):

Grundlagen zur Funktion 10:
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
Grundlagen zur Funktion 11:
Vollständiger Reload des CoE-Verzeichnisses

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

Grundlagen zur Funktion 12:
Geändertes CoE-Verzeichnis

Darstellung großer CoE-Objekte

Bei dem hier gewählten Beispiel wird der Inhalt des 3. 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 Beckhoff TcEtherCAT.lib wie z. B. FB_EcCoESdoWriteEx benutzt werden. Ein Schreibaufruf der Form

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=> );

wird im beiliegenden Beispielprogramm (Download) benutzt.

Ergänzende Einstellungen

Vorhandene Daten löschen

Wird im CoE-Objekt "Code Word" (0xF008) der Wert <BECF6080> eingetragen, löscht die EL6080 beim nächsten Neustart (Statusübergang INIT --> PREOP) alle vorhandenen Daten. Die Struktur der azyklischen Daten bleibt erhalten.

Dieser Reset löscht auch das LOCK in 0xF200:02.

Azyklische Struktur gegen Veränderungen schützen

Wird das CoE-Objekt 0xF200:02 auf <1> gesetzt, kann die Struktur aus CoE-Objekt 0x2F00 nicht mehr verändert werden.

Grundlagen zur Funktion 13:
Lock im CoE