Auf Hardware-IOs via EC-Engineer zugreifen
Vorheriger Artikel: Laufzeitsystem für Einsatz von EC-Master konfigurieren
In diesem Artikel: |
---|
In Neuron Power Engineer: Projekt erstellen
Falls nicht bereits erfolgt, starten Sie Neuron Power Engineer und erstellen Sie ein Projekt, in dem Sie auf die Hardware-IOs zugreifen wollen.
In EC-Engineer: Zum Feldbus verbinden, Feldbus durchsuchen, ENI-Datei exportieren, ESI-Dateien anfordern
Neuron Power Engineer benötigt die ENI-Datei ("EtherCAT Network Information"-Datei) im XML-Format, die in →EC-Engineer erzeugt wird. Anhand der folgenden Schritte können Sie diese ENI-Datei schnell erstellen. Falls Sie mehr Hilfe zur Verwendung von EC-Engineer benötigen, schlagen Sie in der Dokumentation von EC-Engineer nach (Menü Hilfe in EC-Engineer).
-
Starten Sie EC-Engineer. Stellen Sie die deutsche Sprache ein, damit Sie die folgenden Schritte einfacher nachvollziehen können.
So können Sie die Sprache in EC-Engineer umschalten: Menü Settings – Languages – Wählen Sie die deutsche Sprache. -
Verbinden Sie sich in EC-Engineer zum EtherCAT-Feldbus:
-
Klicken Sie im Geräte-Editor (Startseite) auf TCP/IP — Remote Konfiguration.
-
Wählen Sie EtherCAT Master Unit (Class A) und drücken Sie OK.
-
Geben Sie im Geräte-Editor unter Slaves sind mit einem Remotesystem verbunden die IP-Adresse der SPS (des Windows-PC) ein. Drücken Sie Auswählen.
Falls Sie einen Windows-PC als SPS verwenden, achten Sie darauf, dass Sie nicht die IP-Adresse der reservierten Netzwerkkarte eingeben. -
Im Menü Netzwerk wählen Sie EtherCAT-Netzwerk durchsuchen.
Ergebnis: Aufgrund der Einträge in der DateiRTSIO.cfg
auf der SPS wird der EtherCAT-Feldbus gefunden und durchsucht. Der Projekt-Explorer von EC-Engineer zeigt einen Eintrag Slave_xxxx (beachten Sie, dass pro Klemme auf dem Feldbus xxxx ein Platzhalter für den tatsächlichen Text ist). -
Stellen Sie sicher, dass die Namen der Variablen (im Geräte-Editor, Register Variablen angeführt) →IEC-Bezeichner sind. Falls Sonderzeichen in den Namen enthalten sind, wie z.B. Umlaute (
ä
,ö
,ü
) oderß
, kann Neuron Power Engineer auf die Hardware-IOs nicht zugreifen.
-
-
Drücken Sie Export ENI in der Symbolleiste. Speichern Sie die ENI-Datei in einen beliebigen Ordner.
Die ENI-Datei darf einen beliebigen Namen haben. Beispiel:EK1110.xml
Zusätzlich benötigt Neuron Power Engineer die entsprechende ESI-Dateien ("EtherCAT Slave Information"-Datei) im XML-Format. Eine ESI-Datei enthält die EtherCAT-Gerätebeschreibung und kann vom Gerätehersteller angefordert werden.
In Neuron Power Engineer: ENI-Datei und ESI-Dateien ins Projekt ziehen, Global-Objekt erstellen, SPS-Objekt konfigurieren und GLOBALS-Abschnitt inkludieren
Wechseln Sie zu Neuron Power Engineer und führen Sie die folgenden Schritte durch:
-
Ziehen Sie die ENI-Datei und die ESI-Dateien in einen beliebigen Ordner des Neuron Power Engineer-Projekts.
-
Konfigurieren/Erweitern Sie das SPS-Objekt des Projekts so:
-
Öffnen Sie das SPS-Objekt, das die anzusprechende SPS repräsentiert.
-
Nur für das Alternativszenario erforderlich (Engineering-PC ≠ SPS): Suchen Sie die Zeile mit
ADDRESS
bzw.PORT
und ersetzen Sie die eingetragene IP-Adresse bzw. die eingetragene Portnummer durch die entsprechenden Angaben für Ihre SPS (Details: siehe unter "SPS im SPS-Objekt konfigurieren"). -
Suchen Sie den Textteil
RESOURCE ... ON
. Ersetzen Sie die hinterON
eingetragene Plattform durch die erforderliche Plattform:Die SPS ist:
Verwenden Sie diese Plattform:
Beispiel für geänderte Zeile im SPS-Objekt
ein Windows-PC
WindowsX86
RESOURCE local ON WindowsX86 { ON_CHANNEL := LocalChannel }
-
Tragen Sie nach dieser Zeile die Angabe für
IO_IMPORT
ein. Am besten verwenden Sie dafür die verfügbare Vorlageioe
aus der Inhaltshilfe.
Vervollständigen Sie die eingefügte Angabe entsprechend. Verwenden Sie wieder die Inhaltshilfe zum Vervollständigen, wo diese eine Liste zur Verfügung stellt.Beispiel für eine Ressource mit einer ENI-Datei EK1110.xml, die in den Ordner 'src' gezogen wurde RESOURCE local ON WindowsX86 { ON_CHANNEL := LocalChannel }
{ IO_IMPORT PROVIDER := EtherCatProvider, SERVICE := EtherCAT, PARAMS := "src/EK1110.xml", GLOBALS := "src/GlobalsEK1110" }
Das Attribut
GLOBALS
spezifiziert den projektrelativen Pfad und den Namen für das Global-Objekt, in dem anschließend die Deklarationen für die Ressource-globalen Variablen von Neuron Power Engineer eingetragen werden sollen. Hier wirdGlobalsEK1110
im Ordnersrc
spezifiziert.
Das AttributPARAMS
spezifiziert den projektrelativen Pfad und den Namen der ENI-Datei, auf deren Basis anschließend die Deklarationen erzeugt werden. -
Tragen Sie nach der Zeile mit
IO_IMPORT
die Angabe fürINCLUDE_GLOBALS
ein und ergänzen Sie diese um den Namen des Globals-Objekts, wie er für das AttributGLOBALS
spezifiziert wurde.
Ergebnis, sofern das Global-Objekt nicht vorhanden ist: Die Angabe fürINCLUDE_GLOBALS
wird als fehlerhaft gekennzeichnet. Ignorieren Sie diese Kennzeichnung, da das Global-Objekt durch einen späteren Schritt erstellt wird.Beispiel RESOURCE local ON WindowsX86 { ON_CHANNEL := LocalChannel }
{ IO_IMPORT PROVIDER := EtherCatProvider, SERVICE := EtherCAT, PARAMS := "src/EK1110.xml", GLOBALS := "src/GlobalsEK1110" }
{INCLUDE_GLOBALS GlobalsEK1110}
-
Deklarieren Sie mehrere Tasks, wobei Sie einen der Tasks als IO-Task auszeichnen müssen. Informieren Sie sich unter "Mehrere Programmtypen zuordnen (= neue Instanzen erstellen)" über Details zur Vorgehensweise.
Achten Sie darauf, dass der IO-Task bei Einsatz des EC-Masters für den Buszugriff verantwortlich ist. Ist die Zykluszeit zu hoch, so besteht die Möglichkeit, dass Ein- bzw. Ausgangsmodule in einen „Failsafe“-Zustand gehen. Infolgedessen erhält die Anwendung möglicherweise keine Daten mehr bzw. kann keine Daten mehr schreiben. Erfahrungsgemäß ist einINTERVAL
im Bereich weniger Millisekunden (z.B. 2 ms) passend. Weiters sollte dem IO-Task bei Verwendung des EC-Masters eine hohe Priorität (niedrige Zahl) zugewiesen werden.Beispiel für einen Testaufbau mit einem IO-Task TASK DefaultTask(INTERVAL := TIME#500ms, PRIORITY := 38229);
{ IO } TASK FastTask(INTERVAL := TIME#2ms, PRIORITY := 2); (* This is the IO-task. *)
Als Option können Sie das IO-Service für den IO-Task spezifizieren, wie es bei der Angabe für IO_IMPORT definiert wurde.
IO_IMPORT
Beispiel für einen Testaufbau mit einem IO-Task und IO-Service TASK DefaultTask(INTERVAL := TIME#500ms, PRIORITY := 38229);
{ IO := EtherCAT } TASK FastTask(INTERVAL := TIME#2ms, PRIORITY := 2);
-
Deklarieren Sie mehrere Programminstanzen und weisen Sie die zuvor deklarierten Tasks entsprechend zu:
Beispiel für mehrere Programminstanzen PROGRAM Program1 WITH DefaultTask :
Program1;
PROGRAM AccessIO WITH FastTask:
Program1;
Informieren Sie sich unter "Mehrere Programmtypen zuordnen (= neue Instanzen erstellen)" über Details zur Vorgehensweise.
-
Speichern Sie das SPS-Objekt: Menü Datei – Speichern
-
-
Synchronisieren Sie die Ressource mit der ENI-Datei: Kontextmenü für das SPS-Objekt, Befehl Mit IO-Anbietern synchronisieren
Ergebnis: Das Global-Objekt (hier:GlobalsEK1110
) wird nun erstellt oder – falls es bereits vorhanden ist – aktualisiert. Die benötigten Deklarationen für die Ressource-globalen Variablen werden darin imGLOBALS
-Abschnitt eingetragen Diese Ressource-globalen Variablen repräsentieren die Hardware-IOs, die physikalischen Adressen sind bereits eingetragen (nach dem SchlüsselwortAT
).Beispiel für den synchronisierten Inhalt /***** Generated File - DO NOT EDIT - Last updated: 2017-04-24 09:41:41 *****/
/** generated from RESOURCE "myResource" with the following directive: **/
/** { IO_IMPORT PROVIDER := EtherCatProvider, SERVICE := EtherCAT, PARAMS := "src/EK1110.xml", GLOBALS := "src/GlobalsEK1110" } **/
GLOBALS GlobalsEK1110
VAR_GLOBAL
Slave_1002EL1008Channel1Input AT %IX1.0.0 : BOOL;
Slave_1002EL1008Channel2Input AT %IX1.0.1 : BOOL;
Slave_1004EL3102Channel1Status AT %IB1.1 : BYTE;
Slave_1004EL3102Channel2Value AT %IW1.5 : INT;
END_VAR
END_GLOBALS
-
Keine der Ressource-globalen Variablen ändern
Neuron empfiehlt, dass Sie
-
den Name des
GLOBALS
-Abschnitts nicht ändern.
Grund: Andernfalls kann die entsprechende Referenz fürINCLUDE_GLOBALS
im SPS-Objekt nicht aufgelöst werden. -
keine dieser Ressource-globalen Variablen ändern.
Grund: Die Deklarationen der Ressource-globalen Variablen werden durch den Befehl Mit IO-Anbietern synchronisieren synchronisiert und aktualisiert (siehe "Geänderte Hardware-IOs berücksichtigen" für Details zur Aktualisierung).
-
In Neuron Power Engineer: Auf die deklarierten Variablen im ST-Code zugreifen
Nun können Sie auf die deklarierten globalen Variablen im Kontext von →POE über →externe Variablen zugreifen:
-
Deklarieren Sie im ST-Objekt eine externe Variable – und zwar innerhalb der Deklaration jener POE, in der der Zugriff erforderlich ist. Möglich ist der Zugriff innerhalb der Deklaration des Programms, der Deklaration eines Funktionsbausteins oder der Deklaration einer Funktion.
Beispiel für Deklarationen der externen Variablen
VAR_EXTERNAL
Slave_1002EL1008Channel1Input : BOOL;
Slave_1002EL1008Channel2Input : BOOL;
Slave_1004EL3102Channel1Status : BYTE;
Slave_1004EL3102Channel2Value : INT;
END_VAR
Informieren Sie sich unter "Deklaration von externen Variablen in ST" über die ST-Syntax, die für die externe Variable erforderlich ist.
-
Verwenden Sie im ST-Objekt die externe Variable innerhalb der Deklaration der POE (z.B. verwenden Sie die externe Variable in einer Zuweisung).
-
Speichern Sie das ST-Objekt: Menü Datei – Speichern
Diagnose-Möglichkeiten
-
Falls Sie Informationen über den EC-Master im ST-Code benötigen, stellt Ihnen Neuron Power Engineer Bausteine für Acontis zur Verfügung. Verwenden Sie diese Bausteine entsprechend im ST-Objekt.
-
Siehe "Probleme bei Verwendung von EtherCAT-Feldbussen" für Fehlersuche/-behebung.
Nach diesen Schritten können Sie bereits auf die Hardware-IOs im ST-Code zugreifen.
Im Artikel "Geänderte Hardware-IOs berücksichtigen" finden Sie noch die durchzuführenden Schritte, falls sich Hardware-IOs am EtherCAT-Feldbus ändern. Im Artikel "Physikalische Adressen auf Basis von EC-Master und EC-Engineer" finden Sie Hintergrund-Informationen zu den physikalischen Adressen.