Auf Hardware-IOs via EC-Engineer zugreifen
In logi.CAD 3: Projekt erstellen
Falls nicht bereits erfolgt, starten Sie logi.CAD 3 und erstellen 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
logi.CAD 3 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 Datei RTSIO.cfg auf der SPS wird der EtherCAT-Feldbus gefunden und durchsucht. Der Projekt-Explorer von EC-Engineer zeigt einen Eintrag Slave_xxxx (pro Klemme auf dem Feldbus).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 logi.CAD 3 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 logi.CAD 3 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 logi.CAD 3: ENI-Datei und ESI-Dateien ins Projekt ziehen, Global-Objekt erstellen, SPS-Objekt konfigurieren und GLOBALS-Abschnitt inkludieren
Wechseln Sie zu logi.CAD 3 und führen Sie die folgenden Schritte durch:
Ziehen Sie die ENI-Datei und die ESI-Dateien in einen beliebigen Ordner des logi.CAD 3-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 hinter ON 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 Vorlage ioe 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 wurdeRESOURCE 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 logi.CAD 3 eingetragen werden sollen. Hier wird GlobalsEK1110 im Ordner src spezifiziert.
Das Attribut PARAMS 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ür INCLUDE_GLOBALS ein und ergänzen Sie diese um den Namen des Globals-Objekts, wie er für das Attribut GLOBALS spezifiziert wurde.
Ergebnis, sofern das Global-Objekt nicht vorhanden ist: Die Angabe für INCLUDE_GLOBALS wird als fehlerhaft gekennzeichnet. Ignorieren Sie diese Kennzeichnung, da das Global-Objekt durch einen späteren Schritt erstellt wird.BeispielRESOURCE 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 Tasks im SPS-Objekt deklarieren" über Details zur Vorgehenweise.
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 und durch die Anwendung nicht mehr abgefragt bzw. geschrieben werden können. Erfahrungsgemäß ist ein INTERVAL 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-TaskTASK DefaultTask(INTERVAL := TIME#500ms, PRIORITY := 38229);
{ IO } TASK FastTask(INTERVAL := TIME#2ms, PRIORITY := 2); (* Das ist der 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.
Beispiel für einen Testaufbau mit einem IO-Task und IO-ServiceTASK 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 ProgramminstanzenPROGRAM Program1 WITH DefaultTask :
Program1;
PROGRAM AccessIO WITH FastTask:
Program1;
Informieren Sie sich unter "Mehrere Programmtypen zuordnen (= neue Instanzen erstellen)" über Details zur Vorgehenweise.
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 im Ordner src) wird nun erstellt oder – falls es bereits vorhanden ist – aktualisiert. Die benötigten Deklarationen für die Ressource-globalen Variablen werden darin im GLOBALS-Abschnitt eingetragen. Diese Ressource-globalen Variablen repräsentieren die Hardware-IOs, die physikalischen Adressen sind bereits eingetragen (nach dem Schlüsselwort AT).
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
logi.cals empfiehlt, dass Sie
den Name des GLOBALS-Abschnitts nicht ändern.
Grund: Andernfalls kann die entsprechende Referenz für INCLUDE_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 logi.CAD 3: 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:
Öffnen Sie ein ST-Objekt.
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 VariablenVAR_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 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 logi.CAD 3 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.