Kapitel 3: Fragen und Antworten

as Softwaremodell beschreibt die Architektur des Programmiersystems, die nachfolgend dargestellt ist.

Die Steuerungskonfiguration beschreibt die Hardware des Steuerungssystems. Diese umfasst i.d.R. verschiedene Ressourcen, wie z.B. CPU's, E/A-Karten, Kommunikationsprozessoren etc. Auf jeder CPU können verschiedene Tasks (z.B. Taks 1,.., Task M) ablaufen. Einer Task werden ein oder mehrere Programme zugeordnet, deren Ablauf sie organisiert. Somit laufen auf einer CPU mehrere Programme (z.B. Programm 1,.., Programm N). Jedes Programm kann eines mehreren Funktionen (Function Codes, FC) und Funktionsbausteinen (Function Blocks, FB) bestehen. Globale Variablen ermöglichen den Datenaustausch zwischen den Programmen.

Nach dem EVA-Prinzip werden in einer Task folgende Vorgänge organisiert:

  • Zuerst werden die Eingangsdaten aller Programme eingelesen,
  • dann werden die Programme nacheinander verarbeitet und
  • schließlich werden die Ausgangsdaten aller Programme ausgegeben.

Die Zeit, die ein Zyklus zwischen zwei Mal Einlesen beansprucht, nennt man Zykluszeit.

In einer CPU können mehrere Tasks mit unterschiedlichen Zykluszeiten ablaufen. Die Fähigkeit, mehrere Tasks quasi parallel ablaufen zu lassen, nennt man Multi-Tasking. Dies hat den Vorteil, dass schnelle Prozesse entsprechend schneller und träge Prozesse langsamer abgearbeitet werden. Somit kann die Rechenleistung besser verteilt werden.

Standard-Funktionen:

  • Boolsche Funktionen: z.B. AND; OR, NOT, XOR,
  • Bitfolge Funktionen: z.B. ROL; ROR, SHR, SHL,
  • Arithmetische Funktionen: z.B. ADD; SUB, MUL, DIV,
  • Numerische Funktionen: z.B. SIN; COS, LOG, EXP,
  • Funktionen für Auswahl: z.B. LIMIT, SEL; MAX, MIN,
  • Funktionen für Vergleich: z.B. LT;GT;EQ;LE;GE;NE,
  • Funktionen für Typumwandlung: z.B. INT_TO_REAL, BYTE_TO_WORD.

Standard-Funktionsbausteine:

  • Speicher: z.B. RS; SR,
  • Trigger: z.B. R_TRIG; F_TRIG,
  • Zähler: z.B. CTUD, CTU, CTD,
  • Timer: z.B. TON ; TOF ; TP.

Funktionen (FC) können mehrere Eingangsvariablen u, aber nur eine Ausgangsvariable v haben. Diese Ausgangsvariable ist der Rückgabewert der Funktion.

Eine Funktion hat im Unterschied zu einem Funktionsbaustein (FB) kein Gedächtnis. D.h. es ist in Funktionen nicht erlaubt, interne Zwischenwerte zu speichern. Somit darf kein FB aufgerufen werden.

Wenn ein konkreter Kanal (z.B. %IX6.0) in einem FB deklariert wird, kann der FB nicht instanziert werden, ohne dass alle Instanzen diesen Kanal ansprechen. Im Allgemeinen sollen FBe für verschiedene Geräte des gleichen Typs verwendet werden. Da jedes Gerät aber von einem anderen Kanal mit Daten versorgt wird, muss also die Adressierung des Kanals im Programm (für das Gerät) aber nicht im Funktionsbaustein (für den Gerätetyp) erfolgen.

  • globale Variablen mit dem Schlüsselwort VAR_GLOBAL,
  • lokale Variablen mit dem Schlüsselwort VAR,
  • Eingangsvariablen von FCs oder FBs mit dem Schlüsselwort VAR_INPUT,
  • Ausgangsvariablen von FBs mit dem Schlüsselwort VAR_OUTPUT,
  • Ein- und Ausgangsvariablen von FBs mit dem Schlüsselwort VAR_IN_OUT.

Globale Variablen sind in allen Programmen bekannt, lokale Variablen dagegen nur in den POEen, in denen sie deklariert wurden. Direkte Variablen beschreiben einen E/A-Kanal durch das Schlüsselwort AT (z.B. AT %IX6.0).

Standard-Datentypen:

  • BOOL,
  • BYTE, WORD, DWORD,
  • SINT, INT, DINT,
  • USINT, UINT, UDINT,
  • REAL,
  • TIME,
  • TIME_OF_DAY,
  • DATE,
  • STRING.

Innerhalb eines Programms wird die Kommunikation zwischen Funktionen und Funktionsbausteinen durch Verquellung der Ein- und Ausgangsvariablen ermöglicht.

Die Kommunikation zwischen verschiedenen Programmen kann nach IEC 61131 nur mittels globaler Variablen realisiert werden.

s gibt folgende SPS-Programmiersprachen nach IEC 61131

  • Grafische Sprachen:

    • Funktionsbausteinsprache (FBS, FUP),
    • Kontaktplan (KOP),
    • Ablaufsprache (AS).

  • Textsprachen:

    • Strukturierter Text (ST),
    • Anweisungsliste (AWL).

Anwenderdatentypen können einfach nur andere Namen für Standard-Datentypen sein, um dem Anwender durch den Namen des Datentyps direkt dessen Beschreibung zu liefern, wie beispielsweise der Typ HELLIGKEIT, der für den Datentyp USINT verwendet werden kann.
TYPE
 Helligkeit : USINT;
END_TYPE

Außerdem können Standard-Datentypen mit begrenztem Wertebereich, z.B. durch Aufzählung der Werte rot, grün, gelb, als Anwenderdatentyp deklariert werden.

TYPE
 Ampeldaten : (Rot,Gelb,Gruen);
END_TYPE

TYPE
 SubInt : INT (-4095..4095);
END_TYPE

Die wohl geläufigsten Anwender-Datentypen sind jedoch Datenfelder und Strukturen. Datenfeldern oder Arrays sind Vektoren oder Matrizen, deren Komponenten alle vom gleichen Datentyp sind, wie z.B. der Datentyp BILD. Dagegen ermöglichen es Strukturen wie der Datentyp MERKMAL, Variablen mit unterschiedlichen Datentypen zusammenzustellen.
TYPE
 Bild : ARRAY[0..8] OF Helligkeit;
END_TYPE

TYPE
 Merkmal : STRUCT
  X_POS : REAL;
  Y_POS : REAL;
  GROESSE : INT;
 END_STRUCT
END_TYPE

Der Gedanke der Objektorientierung, reale Objekte in der Software nachzubilden, kann folgendermaßen erreicht werden:

  • Für jedes Feldgerät in der Anlage wird ein eigenes Ansteuerprogramm in der SPS erstellt.
  • Für jeden Feldgerätetyp, z. B. Motor, Ventil, Regler oder Messsonde, wird ein Anwender-Funktionsbaustein entwickelt.
  • Für jede Instanz des Anwender-Funktionsbausteins wird eine globale Instanzvariable angelegt, die in Simatic STEP 7 auch als Datenbaustein bezeichnet wird.

Damit erreicht man eine einheitliche Struktur zwischen der realen Welt und der Steuerungssoftware, was der Verständlichkeit der SPS-Programme dient.

Instanzen von FBen können nur über die durch VAR_INPUT und VAR_OUTPUT festgelegten Schnittstellen von der Außenwelt manipuliert werden. Die Manipulationen wirken sich nur auf diese, aber keine anderen Instanzen des Bausteins aus. Ändert sich dagegen die innere Struktur des Funktionsbausteins, wirkt sich dies unmittelbar auf alle Instanzen aus (Datenkapselung).

Stufe 1: Softwarestrukturierung

  • Für jeden Feldgerätetyp, z. B. Motor, Ventil oder Messsonde, wird ein Funktionsbaustein entwickelt.
  • Für jedes Feldgerät in der Anlage wird ein eigenes Ansteuerprogramm mit der Instanz des entsprechenden Funktionsbausteins erstellt.

Stufe 2: Entwurf der Funktionsbausteine und Funktionen

  • Deklaration der Ein- und Ausgangsvariablen.
  • Entwurf der Schaltungslogik.

Stufe 3: Entwurf der Programme

  • Deklaration der Variablen für Mess- und Stellsignale xe bzw. ya und ihrer E/A-Zu-ordnung.
  • Deklaration der globalen Variablen für Steuer- und Statussignale u bzw. v möglichst für jeden Gerätetyp gesammelt als globale Strukturvariable.
  • Instanzierung der Funktionsbausteine aus Stufe 2.
  • Entwurf der Zusatzlogik, die nicht im Funktionsbaustein vorhanden, aber zur Ansteuerung erforderlich ist.

Stufe 4: Implementierung der Software

  • Implementierung der entworfenen Programme, Funktionsbausteine, Datentypen und Variablen.
  • Festlegung der Steuerungskonfiguration.
  • Taskzuordnung der implementierten Programme.

Stufe 5: Test und Inbetriebnahme

  • Test der implementierten Software in der Simulation.
  • Laden der Software in die SPS.
  • Inbetriebnahme von Software und SPS im Zusammenspiel mit der Anlange.
  • Protokollierung der Tests anhand der Entwurfsdokumentation aus Stufe 2 und 3.

Durch einen Testplan wird festgelegt, welche Schritte beim Testen der Software systematisch durchzuführen sind, damit der Test vollständig ist. Ein Testplan wird in Tabellenform erstellt. Die linke Spalte beschreibt den Testvorgang, die mittlere Spalte das Akzeptanzkriterium.

Um den Testplan später auch gleich als Testprotokoll verwenden zu können, wird die rechten Spalte für das Testergebnis vorgesehen.

Speicherprogrammierbare Steuerungen für die Fabrik- und Prozessautomation

4. Auflage erschienen im Hanser Verlag, 2015