« Previous - Version 21/22 (diff) - Next » - Current version
rrauch, 07/13/2017 03:28 pm


ETHyPLC-S5 unter Linux

Die ETHyPLC-S5 Runtime steht für embedded Systeme mit Linux Betriebssystem zur Verfügung.
Die Runtime muß für die jeweilige Target-Plattform kompiliert werden.
Der Betrieb der Runtime kann parallel zu anderen Prozessen erfolgen. So ist auch der Parallelbetrieb mit einer IEC 61131 Runtime möglich.

Dies erlaubt bei S5-Retrofit Projekten einen schrittweisen Übergang auf neue Technologien:

  1. Ersatz der S5-Hardware mit "State-of-the-Art" - Steuerungssystem
    --> zuverlässige, ausfallsichere Hardwarebasis
    --> Ersatzteilversorgung für einen weiteren Lebenszyklus gewährleistet
  2. Übernahme der S5-Anwendungsprogramme ohne Programmieraufwand
    --> geringe Entwicklungskosten
    --> keine Reprogrammierung
    --> kein S5-KnowHow notwendig
    --> Anlage schnellstmöglich wieder im Produktiv-Betrieb
  3. Funktionserweiterungen durch IEC61131 Programmierung
    --> "State-of-the-Art" Programmiermodell
    --> Programmiertools verfügbar
    --> Fachkräfte verfügbar, kein S5-KnowHow notwendig

Frontpanel

Das Frontpanel-Interface ist hardware-spezifisch implementiert. Die Anpassung des Frontpanel-Interfaces ist im Sourcecode der Runtime
in der Abstraktionslayer durchzuführen.

Phoenix Contact Axiocontrol

Auf den Phoenix Contact Axiocontrol Steuerungen kann die ETHyPLC-S5 Runtime über den Front-Schalter bedient werden.
Weiterhin zeigen Frontpanel LEDs den aktuellen Betriebszustand der Runtime an:

Schalter

Über die Schalterbedienung wird sowohl die IEC61131 Runtime als auch die ETHyPLC-S5 Runtime gesteuert:

Schalterstellungen

Schalterstellung Beschreibung
STOP Während sich der Betriebsartenschalter in der Stellung STOP befindet, ist die S5-Anwenderprogramm im zyklischen Betrieb gesperrt
RUN Während sich der Betriebsartenschalter in der Stellung RUN befindet, ist das S5-Anwenderprogramm für den zyklischen Betrieb freigegeben
MRES In der Schalterstellung MRES wird die Urloeschanforderung aktiviert

Bedienung und Zustandsübergänge

Bedienung Beschreibung
STOP->RUN Anlauf-Anforderung
Ein Anlauf der zyklischen Programm-Bearbeitung wird durchgeführt.
Treten während dem Anlauf keine Fehler auf, wechselt der Betriebsmodus der S5 Runtime in den Zustand RUN
RUN-->STOP Stop-Anforderung
Befindet sich die S5 Runtime im zyklischen Betrieb (Zustand RUN),
wird eine STOP-Anforderung durch Schalterbedienung ausgelöst.
Nach Bearbeitung der STOP-Anforderung wechselt der Betriebsmodus der S5 Runtime in den Zustand STOP
STOP->MRES Sequenz Urloeschanforderung starten
Um Urlöschen auszuführen, muß der Schalter für mind. 3 Sekunden auf der Stellung MRES gehalten werden
Diese Wartezeit wird durch Blinken der "BOOT"-LED signalisiert.
Wird innerhalb dieser Wartezeit der MRES-Schalter losgelassen, wird die Urloesch-Anforderung wieder zurückgenommen.
Wird der Schalter länger als 3 Sekunden auf der MRES-Position gehalten, wird Urloeschen ausgeführt.
Die BOOT-LED wechselt dann auf Dauer-ROT, um den Ablauf der Wartezeit anzuzeigen. Die BOOT-LED bleibt an, bis der MRES-Schalter losgelassen wird

LEDs

Für die Anzeige der Betriebszustände der ETHyPLC-S5 Runtime werden Frontpanel LEDs der Axiocontrol Steuerung verwendet, die nicht von der IEC61131 Runtime verwendet werden. Damit gibt es keine Konflikte zwischen den Anzeigen der IEC1131 Runtime und der ETHyPLC-S5 Runtime.

LED Farbe Status Beschreibung
BOOT ROT
BLINKT Anzeige der Wartezeit beim Ablauf der Urlösch-Anforderung
AN Wartezeit der Urlösch-Anforderung abgelaufen, Urloeschen durchgeführt
AUS ---
S5-MODE
(unbeschriftet)
ROT
AUS S5 Runtime im zyklischen Betrieb (Betriebszustand RUN)
AN S5 Runtime im Betriebszustand STOP ohne Fehler
BLINKT S5 Runtime im Betriebszustand STOP aufgrund eines Fehler

Kommandozeilen-Interface

Die ETHyPLC-S5 Runtime verfügt über ein Kommandozeilen-Interface. In der Linux Umgebung können über die Kommandozeile grundlegende Einstellungen zum Betrieb der Runtime konfiguriert werden.

root@axc3051:/bin# s5rt -?
PLC Runtime Startup...CMD: s5rt -?

syntax:
   s5rt [ -? | -options ]

where:

   options:

   -?              print out helptext only
   -i              interactive
   -l n            log level ( 0: nothing, 1:error, ... 9: all
   -p n            realtime priority level n
   -f fname        file name for user program backup/restore

root@axc3051:/bin#
Option Beschreibung
-? Ausgabe Hilfstext Syntax Kommandozeile
-i Runtime im Interactive Mode starten
Im Interactive Mode steht zeilenbasiertes Runtime Menu für Test und Diagnose zur Verfügung
-l Log Level
( 0: nothing, 1:error, ... 9: all )
Mit dieser Option wird die Ausgabe von Log-Messages gesteuert
-p realtime priority level n
Der Runtime Prozess startet mehrere Threads.
Den zeitkritischen Threads wird als höchste Priorität die hier angegebene Realtime Priority zugewiesen
-f fname Dateiname für Backup/Restore des Anwenderprogrammes
Wird dieser Parameter angegeben, wird das S5-Anwenderprogramm automatisch in diese Datei gesichert und beim Neustart des Anwenderprogrammes wieder geladen.
Die Bausteine werden immer nach dem Übertragen durch das PG gesichert. Änderungen zur Laufzeit werden nicht gesichert.

DX1 Konfiguration

Das System-Interface zum Linux Environment und anderen Prozessen wird über den erweiterten Datenbaustein DX1 konfiguriert.
Der prinzipielle Aufbau des DX1 ist hier beschrieben: DX1 Allgemein

Folgende Linux-spezifischen Kommunikationsobjekte können konfiguriert werden:

Shared Memory

Linux Shared Memory Bereiche können zum Datenaustausch mit anderen Prozessen genutzt werden.
Es sind die Shared Memory Bereiche zu definieren, die von der ETHyPLC-S5 Runtime addressierbar sind.

DX1 Parameterblock:

  • Blockkennung ( 1 Byte ): KH=81
  • Blocklänge ( 1 Byte): Gesamtlänge des Parameterblocks
  • Sub-Block Shared Memory Configuration
    • Kennung SubBlock (1 Byte): KH=10
    • S5 interne Referenz-ID des Shared Memories ( 1 Byte ): KF=0..255
    • Linux Key des Shared Memories ( 4 Byte): z.B. KC='PSPS'
    • Shared Memory Größe ( 2 Byte ): KH=0..FFFF

Mapping Peripherie-Bereich (P)

Peripherie Eingangsbereich

DX1 Parameterblock:

  • Blockkennung ( 1 Byte ): KH=82
  • Blocklänge ( 1 Byte): Gesamtlänge des Parameterblocks
  • Sub-Block Kachel Konfiguration
    • Kennung SubBlock (1 Byte): KH=50
    • reserviert ( 1 Byte ): KH=00
    • reserviert ( 1 Wort ); KH=0000
    • Offset des Bereiches im externen Shared Memory ( 4 Byte ): KH=0..FFFFFFFF
    • reserviert ( 2 Byte): KH=0000

Peripherie Ausgangsbereich

DX1 Parameterblock:

  • Blockkennung ( 1 Byte ): KH=82
  • Blocklänge ( 1 Byte): Gesamtlänge des Parameterblocks
  • Sub-Block Kachel Konfiguration
    • Kennung SubBlock (1 Byte): KH=70
    • reserviert ( 1 Byte ): KH=00
    • reserviert ( 1 Wort ); KH=0000
    • Offset des Bereiches im externen Shared Memory ( 4 Byte ): KH=0..FFFFFFFF
    • reserviert ( 2 Byte): KH=0000

Mapping erweiterter Peripheriebereich (Q)

Erweiterte Peripherie Eingangsbereich

DX1 Parameterblock:

  • Blockkennung ( 1 Byte ): KH=82
  • Blocklänge ( 1 Byte): Gesamtlänge des Parameterblocks
  • Sub-Block Kachel Konfiguration
    • Kennung SubBlock (1 Byte): KH=51
    • reserviert ( 1 Byte ): KH=00
    • reserviert ( 1 Wort ); KH=0000
    • Offset des Bereiches im externen Shared Memory ( 4 Byte ): KH=0..FFFFFFFF
    • reserviert ( 2 Byte): KH=0000

Erweiterte Peripherie Ausgangsbereich

DX1 Parameterblock:

  • Blockkennung ( 1 Byte ): KH=82
  • Blocklänge ( 1 Byte): Gesamtlänge des Parameterblocks
  • Sub-Block Kachel Konfiguration
    • Kennung SubBlock (1 Byte): KH=71
    • reserviert ( 1 Byte ): KH=00
    • reserviert ( 1 Wort ); KH=0000
    • Offset des Bereiches im externen Shared Memory ( 4 Byte ): KH=0..FFFFFFFF
    • reserviert ( 2 Byte): KH=0000

Kacheln

Kacheln sind 2 kWorte große Memoryfenster, die im Adressraum des S5-Anwenderprogrammes eingeblendet werden und über spezielle Kacheloperationen adressiert werden können.
Zum adressieren einer Kachel muß diese vorher aufgeschlagen werden (über die Kachelnummer).

Die Kacheln sind im DX1 zu parametrieren und liegen immer im Adressbereich eines Shared Memories.

DX1 Parameterblock:

  • Blockkennung ( 1 Byte ): KH=82
  • Blocklänge ( 1 Byte): Gesamtlänge des Parameterblocks
  • Sub-Block Kachel Konfiguration
    • Kennung SubBlock (1 Byte): KH=4B
    • Kachelnummer ( 1 Byte ): KH=0..255
    • reserviert ( 1 Byte)
    • Referenz-ID des Shared Memories ( 1 Byte): KF=0..255
    • Offset der Kachel im Shared Memory ( 4 Byte ): KH=0..FFFFFFFF
    • Adressierungs-Modus ( 2 Byte): KH=0,1
      0: Byteweise Adressierung
      1: Wordweise Adressierung
Im S5-Anwenderprogramm sind Kacheln über den ACR-Befehl aufzuschlagen (Parameter: Kachelnr.)
Danach kann über die Befehle LWCW, LWCD, TWCW, TWCW auf die Kachel zugegriffen werden
Der Adressierungsmodus der Kachel bestimmt die Adressumrechnung beim Zugriff auf die Kachel.
  • Byteweise Adressierung: Die resultierende Adresse beim Kachelzugriff ergibt die Byte Adresse im Kachelfenster
    Beispiel: LWCW 1 ergibt die Byteadresse 1 im Kachelfenster
  • Wortweise Adressierung: Die resultierende Adresse beim Kachelzugriff ergibt die Wort Adresse im Kachelfenster
    Beispiel: LWCW 1 ergibt die Woradresse 1 im Kachelfenster (-->Byte Adresse 2)

Dies ist hilfreich bei der Übernahme von bestehenden S5-Programmen.
Durch eine entsprechende Konfiguration im DX1 wird eine Neu-Programmierung von Kachelzugriffen vermieden.

Synchronisierungs-Events

Aus dem S5-Anwenderprogramm heraus können andere Prozesse über ein Betriebssystem-Event signalisiert werden.
Als Linux Betriebssystem-Resource wird dazu die Socket-Kommunikation verwendet.
Die entsprechende Linux-Resource wird im DX1 konfiguriert:

DX1 Parameterblock:

  • Blockkennung ( 1 Byte ): KH=84
  • Blocklänge ( 1 Byte): Gesamtlänge des Parameterblocks
  • Sub-Block Socket Event Resource
    • Kennung SubBlock (1 Byte): KH=10
    • Event-ID des Synchronisationsobjekts ( 1 Byte ): KF=0..255
      Die Event-ID muß bei Generierung des Events im S5-Anwenderprogramm angegeben werden
    • Linux Event-ID ( 2 Byte): KH=0..FFFF
      Wird im Socket Datagramm bei Eventauslösung übertragen
    • Linux Taskname ( 4 Byte): KH=0..FFFFFFFF
      Adressinformation des Linux Socket Datagrams

Beispiel DX1

System spezifische Sonderfunktionen

OB210 Event Generierung

Durch Aufruf der integrierten Sonderfunktion OB210 kann ein Betriebssystem-Event generiert werden.
Das Event muß im DX1 parametriert werden.

Die Übergabe der Parameter für diesen Sonder-OB erfolgt in den Akkumulatoren Akku1 und Akku2:

Parameter:

  • AKKU-2-L: Funktionsnummer
    KF=0: reserviert
    KF=1: Event auslösen
    KF=2: reserviert
  • AKKU-1-L: KF=0..255 Event-ID.
    ID des Events, im DX1 konfiguriert

Aufrufbeispiel



         LKF 1
         LKY 0,10
         SPAOB 210

_______________________________________________________________________________________________________________
Attached files:

phoenix-contact-axio-front.png (326 KB) rrauch, 10/12/2016 01:51 pm

DX1_Example.png (13.6 KB) rrauch, 11/17/2016 11:02 am

axc3050.png - AxioControl (684 KB) rrauch, 07/13/2017 03:28 pm