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

  1. 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ü SettingsLanguages – Wählen Sie die deutsche Sprache.

  2. Verbinden Sie sich in EC-Engineer zum EtherCAT-Feldbus:

    1. Klicken Sie im Geräte-Editor (Startseite) auf TCP/IP — Remote Konfiguration.

      images/download/attachments/414779368/ECEngineer-version-1-modificationdate-1534428151274-api-v2.png
    2. Wählen Sie EtherCAT Master Unit (Class A) und drücken Sie OK.

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

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

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

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

  1. Ziehen Sie die ENI-Datei und die ESI-Dateien in einen beliebigen Ordner des logi.CAD 3-Projekts.

  2. Konfigurieren/Erweitern Sie das SPS-Objekt des Projekts so:

    1. Öffnen Sie das SPS-Objekt, das die anzusprechende SPS repräsentiert.

    2. 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").

    3. 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 }
    4. 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 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 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.

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

      Beispiel
      RESOURCE local ON WindowsX86 { ON_CHANNEL := LocalChannel }
      { IO_IMPORT PROVIDER := EtherCatProvider, SERVICE := EtherCAT, PARAMS := "src/EK1110.xml", GLOBALS := "src/GlobalsEK1110" }
      {INCLUDE_GLOBALS GlobalsEK1110}
    6. 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.
      images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/information.svg 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-Task
      TASK 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-Service
      TASK DefaultTask(INTERVAL := TIME#500ms, PRIORITY := 38229);
      { IO := EtherCAT } TASK FastTask(INTERVAL := TIME#2ms, PRIORITY := 2);
    7. 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 Vorgehenweise.

    8. Speichern Sie das SPS-Objekt: Menü DateiSpeichern

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

  1. Öffnen Sie ein ST-Objekt.

  2. 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 Syntax, die für die externe Variable erforderlich ist.

  3. Verwenden Sie im ST-Objekt die externe Variable innerhalb der Deklaration der POE (z.B. verwenden Sie die externe Variable in einer Zuweisung).

  4. Speichern Sie das ST-Objekt: Menü DateiSpeichern

Diagnose-Möglichkeiten


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.