Skip to main content

Registerkarte: <Gerätename> E/A-Abbild

Geräte mit E/A-Kanälen

Diese Registerkarte erscheint in Geräteeditoren für Geräte mit E/A-Kanälen. Sie zeigt die verfügbaren Kanäle und erlaubt die Abbildung der Eingangs-, Ausgangs- und Speicheradressen des Steuerungsgeräts auf Variablen oder ganze Funktionsbausteine der Applikation. Damit erstellen Sie das sogenannte „E/A-Abbild“ („Mapping“).

Für weitere Informationen siehe: Geräte konfigurieren und E/A-Abbild konfigurieren

Welche Applikation die E/A-Behandlung übernehmen soll, definieren Sie in der Registerkarte SPS-Einstellungen.

Tipp

Wenn es vom Gerät unterstützt wird, können Sie den „Online-Konfigurationsmodus“ verwenden. In diesem Modus können Sie auf die E/As der Hardware zugreifen ohne vorher eine reelle Applikation auf das Gerät geladen haben zu müssen.

Tipp

Wenn ein E/A-Kanal nicht in der Applikation referenziert sind, dann wird dessen Wert nicht aktualisiert. Wenn Sie nicht referenzierte E/A-Kanäle monitoren wollen, müssen Sie die Option Variablen immer aktualisieren auf der Registerkarte: SPS-Einstellungen aktivieren. Alternativ können Sie diese Option auch auf der Registerkarte E/A-Abbild eines Geräts aktivieren. Dann ist die Aktivierung nur für dieses eine Gerät und dessen Kinder gültig.

Abbilden „zu großer“ Datentypen

Wenn Sie eine Variable eines Datentyps, der größer ist als ein Byte, auf eine Byteadresse abbilden, wird dort der Wert der Variablen auf Byte-Größe abgeschnitten! Für das Monitoring des Variablenwerts im Dialog E/A-Abbild bedeutet dies: Im Wurzelelement der Adresse wird der Wert angezeigt, den die Variable im Projekt aktuell hat. In den Bit-Elementen darunter werden nacheinander die einzelnen aktuellen Bit-Werte des Bytes dargestellt, was aber gegebenenfalls nicht für den gesamten Variablenwert ausreicht.

Beispiel der Registerkarte <Gerätename> E/A-Abbild für einen CAN-Bus Slave:

_cds_img_io_mapping_dialog.png

Die Registerkarte enthält eine Tabelle zum Bearbeiten des E/A-Abbilds. Die dargestellten Informationen zu den Eingängen und Ausgängen stammen aus der Gerätebeschreibung.

Suche (1)

Eingabefeld für eine Zeichenfolge, nach der die Mapping-Tabelle durchsucht werden soll

Die Suchergebnisse werden gelb markiert.

Filter (2)

Auswahlliste mit Filtern für die in der Mapping-Tabelle dargestellten E/A-Zuweisungen:

  • Alles anzeigen

  • Nur Ausgänge anzeigen

  • Nur Eingänge anzeigen

  • Nur nicht-gemappte Variablen anzeigen

  • Nur gemappte Variablen anzeigen

  • Nur Mappings auf bestehende Variablen anzeigen

  • Nur Mappings auf neue Variablen anzeigen

_cds_icon_add_fb.pngFB für E/A-Kanal hinzufügen (11)

Geräteabhängig verfügbar, wenn ein Kanaleintrag in der Mapping-Tabelle selektiert ist

Öffnet den Dialog Funktionsbaustein auswählen zur Auswahl des Bausteins, der mit dem Kanal direkt verknüpft werden soll

_cds_icon_goto_definition.pngGehe zu Instanz (12)

Verfügbar, wenn ein Eintrag in der Mapping-Tabelle selektiert ist

Springt zum entsprechenden Eintrag in der Registerkarte <Gerätename> IEC-Objekte

Variable

Abhängig vom Gerät erscheinen die Eingänge und Ausgänge des Geräts als Knoten, darunter eingerückt die zugehörigen Kanäle, oder je nach Gerät nur die implizit angelegte Geräteinstanz.

Das Symbol zeigt den Kanaltyp an:

_cds_icon_input_channel.png: Eingang

_cds_icon_output_channel.png: Ausgang

Ein Doppelklick auf die Zelle öffnet ein Eingabefeld.

  • Möglichkeit 1: Die Variable existiert bereits.

    Kompletten Pfad eintragen: <Applikationsname>.<Bausteinname>.<Variablenname>

    Beispiel: app1.plc_prg.ivar; Eingabehilfe über _cds_icon_three_dots.png

  • Möglichkeit 2: Die Variable existiert noch nicht.

    Einfachen Namen eingeben

    Wird automatisch intern als globale Variable angelegt

Abhängig vom Gerät können Eingänge oder Ausgänge direkt mit einem Funktionsbaustein verknüpft werden. In diesem Fall ist die Schaltfläche _cds_icon_add_fb.pngFB für E/A-Kanal hinzufügen bedienbar. Siehe oben.

Mapping (3)

Typ des Abbilds:

  • _cds_icon_map_to_existing_variable.png: Bereits existierende Variable

  • _cds_icon_create_new_variable.png: Neue Variable

  • _cds_icon_map_fb.png: Abbild auf Funktionsbaustein-Instanz

Kanal (4)

Symbolischer Name des Kanals.

Adresse (5)

Adresse des Kanals, beispielsweise %IW0

Durchgestrichene Adresse: Zeigt an, dass Sie dieser Adresse keine weitere Variable zuweisen sollten. Grund: Die hier angegebene Variable wird - als bereits bestehende - zwar an einem anderen Speicherplatz verwaltet, aber es könnten Mehrdeutigkeiten beim Schreiben der Werte entstehen, speziell bei Ausgängen.

_cds_icon_address_fixed.png: Zeigt an, dass diese Adresse bearbeitet und fixiert wurde

Wenn sich die Anordnung der Geräteobjekte im Gerätebaum ändert, passt CODESYS diese Adresse nicht automatisch an.

Typ (6)

Datentyp des Kanals, beispielsweise BOOL

In der Gerätebeschreibung definierte Strukturen oder Bitfelder werden nur angezeigt, wenn sie Teil der IEC-Norm sind und als IEC-Datentyp in der Gerätebeschreibung gekennzeichnet sind. Ansonsten bleibt die Tabellenzelle leer.

Beim Abbilden von strukturierten Variablen verhindert der Editor, dass Sie sowohl die Strukturvariable (beispielsweise auf %QB0) als auch einzelne Strukturelemente (beispielsweise auf %QB0.1 und QB0.2) eintragen können. Wenn es einen Haupteintrag mit einem Unterbaum von Bitkanal-Einträgen in der Mapping-Tabelle gibt gilt deshalb: Sie können entweder in der Zeile des Haupteintrags eine Variable eingeben, oder in den Zeilen der Unterelemente (Bitkanäle), aber nicht in beiden.

Standardwert

Standardwert des Parameters, der auf dem Kanal anliegt: Erscheint nur, wenn in den SPS-Einstellungen für das Verhalten der Ausgänge bei Stop die Option Alle Ausgänge auf Standardwert setzen aktiviert ist.

Hinweis: Ab Compilerversion V3.5 SP11 wird für ein Mapping auf eine bestehende Variable automatisch der Initialisierungswert der Variablen als Standardwert verwendet. Das Feld Standardwert können Sie nur noch bearbeiten, wenn Sie ein Mapping auf eine neu erzeugte Variable vornehmen. In älteren Versionen musste der Anwender explizit dafür sorgen, dass Standardwert und Initialisierungswert identisch sind.

Einheit (7)

Einheit für den Parameterwert, beispielweise ms für Millisekunden

Beschreibung (8)

Kurzbeschreibung des Parameters

Aktueller Wert

Istwert des auf dem Kanal anliegenden Parameters, erscheint nur im Onlinebetrieb

Tipp

Die Änderung des Standardwerts durch einen Online-Change ist erlaubt, jedoch wird der Wert erst nach einem „Reset kalt“ oder „Reset warm“ angewendet.

Mapping zurücksetzen (9)

CODESYS setzt die Mapping-Einstellungen auf die durch die Gerätebeschreibungsdatei definierten Standardwerte zurück.

Variablen aktualisieren (10)

Festlegung für das Geräteobjekt bezüglich der Aktualisierung der E/A-Variablen

Der Standardwert ist in der Gerätebeschreibung definiert:

  • Einstellungen des übergeordneten Geräts verwenden: Aktualisierung gemäß den Einstellungen des übergeordneten Geräts.

  • Aktiviert 1 (Buszyklustask verwenden, wenn in keiner Task verwendet): CODESYS aktualisiert die E/A-Variablen in der Buszyklustask, falls sie in keiner anderen Task verwendet werden.

  • Aktiviert 2 (immer in Buszyklustask): CODESYS aktualisiert alle Variablen in jedem Zyklus der Buszyklustask, unabhängig davon ob sie verwendet werden und ob sie auf einen Ein- oder Ausgangskanal abgebildet sind.

Tipp

Wenn eine UNION durch E/A-Kanäle im Mapping-Dialog vertreten ist, hängt es vom Gerät ab, ob auch ein Abbilden auf das Wurzelelement möglich ist.

Für weitere Informationen siehe: Feldbusgeräte und E/A-Treiber

Geräte mit E/A-Treiber

Bei Geräten mit E/A-Treiber können Sie hier auf der Registerkarte E/A-Abbild die Buszyklus-Task einstellen, wenn nicht die allgemeine Einstellung (Registerkarte SPS-Einstellungen) verwendet werden soll.

Tabelle 50. Buszyklus-Optionen

Buszyklus-Task

Die Auswahlliste bietet alle Tasks an, die in der Task-Konfiguration der aktiven Applikation definiert sind, wie biespielsweise MainTask. Im Fall von Zykluseinstellungen des übergeordneten Busses verwenden werden die Einstellungen des Vaterknotens verwendet.



Allgemeine Informationen zur Buszyklus-Task

Grundsätzlich werden für jede IEC-Task die verwendeten Eingangsdaten am Beginn jeder Task gelesen (1) und die geschriebenen Ausgangsdaten am Ende der Task (3) zum E/A-Treiber übertragen. Die Implementierung im E/A-Treiber ist entscheidend für den weiteren Transport der E/A-Daten. Sie ist verantwortlich dafür, in welchem Zeitraster und zu welchem Zeitpunkt die tatsächliche Übertragung auf das jeweilige Bussystem stattfindet.

Die Buszyklustask der SPS kann für alle Feldbusse global in den SPS-Einstellungen festgelegt werden. Bei einigen Feldbussen können Sie diese jedoch unabhängig von der globalen Einstellung verändern. Als Buszyklustask wird automatisch die Task mit der kürzesten Zykluszeit verwendet (Einstellung: unspezifiziert in den SPS-Einstellungen). In dieser Task werden normalerweise die Nachrichten auf den Bus gesendet.

Weitere Tasks kopieren nur die E/A-Daten aus einem internen Puffer, der nur in der Buszyklustask mit der realen Hardware ausgetauscht wird.

_task_diagram_standard.png
(1) Lesen der Eingänge vom Eingangspuffer             (2) IEC-Task
(3) Schreiben der Ausgänge in den Ausgangspuffer      (4) Buszyklus
(5) Eingangspuffer                                    (6) Ausgangspuffer
(7) Daten vom/zum Bus kopieren
(9) Buszyklustask, Priorität 1, 1ms
(10) Buszyklustask, Priorität 5
(11) Buszyklustask, Priorität 10, unterbrochen durch Task 5

Taskverwendung

In der Registerkarte Taskaufstellung steht Ihnen eine Übersicht der verwendeten E/A-Kanäle, der eingestellten Buszyklustask und der Verwendung der Kanäle zur Verfügung.

Warnung

Wenn ein Ausgang in verschiedenen Tasks geschrieben wird, so ist der Zustand undefiniert, da dieser jeweils überschrieben werden kann.

Bei Verwendung von gleichen Eingängen in verschiedenen Tasks kann es passieren, dass sich der Eingang während der Abarbeitung einer Task verändert. Dies geschieht, wenn die Task durch eine Task mit höherer Priorität unterbrochen und damit das Prozessabbild erneut eingelesen wird. Abhilfe: Am Beginn der IEC-Task die Eingangsvariablen in Variablen kopieren und dann im weiteren Code nur noch mit den lokalen Variablen arbeiten.

Fazit: Eine Verwendung von gleichen Ein- und Ausgängen in mehreren Tasks ist nicht sinnvoll und kann in manchen Fällen zu unvorhergesehenen Zuständen führen.