IEC 61131 – Ein abstraktes Modell eines Prozessrechners · 61131-3 Programmiersprachen •...
Transcript of IEC 61131 – Ein abstraktes Modell eines Prozessrechners · 61131-3 Programmiersprachen •...
DIN EN 61131 Fachsprachen
Elektrotechnik und Informationstechnik Institut für Automatisierungstechnik, Professur Prozessleittechnik
VL Prozessleittechnik I (SS 2011)Professur für Prozessleittechnik
61131-3 Programmiersprachen
• 61131-3 spezifiziert fünf Programmiersprachen zur Implementierung von POE
• Standardfunktionen und Standardfunktionsbausteine
• Typwandlungsfunktionen typ1_TO_typ2
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 2
Textbasiert Grafisch
Anweisungsliste (AWL)
Strukturierter Text (ST)
Kontaktplan (KOP)
Funktionsbausteinsprache (FBS)
Ablaufsprache (AS)
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 3
Übersicht
• Beispiel:
– Setze Ausgang Q1.1 auf 1, wenn folgende Bedingungen gleichzeitig erfüllt sind:
• Eingänge I0.1 oder I0.2 oder Ausgang Q1.1 gesetzt
• Eingang I0.3 gesetzt
• Eingang I0.4 gesetzt
• Zu realisierender boolscher Ausdruck:
Q1.1 = ( I0.1 ˅ I0.2 ˅ Q1.1) ˄ I0.3 ˄ I0.4
Lösung in den verschiedenen Fachsprachen
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 4
LD %IX0.1
OR %IX0.2
OR %QX1.1
AND %IX0.3
AND %IX0.4
ST %QX1.1
Q1.1:=(I0.1 OR I0.2 OR Q1.1)
AND I0.3
AND I0.4;
( )
I0.1
I0.2
Q1.1
I0.3 I0.4 Q1.1
>1
&
=
I0.1
I0.2
Q1.1
Q1.1
I0.3
I0.4
S0
S1
T0
T1
I0.1
I0.2 I0.3I0.4
I0.3
I0.4
Step 0
R Q1.1
Step 1
S Q1.1
S0
19.10.2010 PLT1 (c) Urbas 2008-2010 Folie 5
Gemeinsame Elemente der Programmiersprachen
• Zeichensatz
– Textelemente Spalten 002-007 der ISO/IEC-646 IRV
– Zusätzlich Kleinbuchstaben (aber nicht case sensitiv), # oder £, $ oder ¤, | oder !
• Bezeichner:
– Folge von Buchstaben, Ziffern und Unterstrich
– Muss mit Buchstaben oder Unterstrich beginnnen
– Mehrere oder angehängte Unterstriche sind nicht zulässig
– Mindestens sechs Zeichen werden zur eindeutigen Unterscheidung genutzt, Maximum impl.-abh.
• Leerzeichen, Kommentare (* *), Numerische Literale, Zeichenfolgeliteral, Zeitdauer
19.10.2010 PLT1 (c) Urbas 2008-2010 Folie 6
Zahlen- und Zeitdauerliterale
• Zahlen
– Unterstriche zur Strukturierung erlaubt• 100_000_000 3.14159_26
– Basis 2/8/16 Literale möglich• 2#1111_1111 8#377 16#ff
– Literale mit Typangaben• BOOL#0 UINT#16#FF
• Zeitdauern
– kurzes/langes Präfix• TIME#14ms T#14.7s
– mit/ohne Unterstrichen• t#5d14h12m18s3.5ms t#5d_14h_12m_18s_3.5ms
19.10.2010 PLT1 (c) Urbas 2008-2010 Folie 7
Elementare Datentypen
• Wahrheitswert: • BOOL1
• Ganzzahl mit/ohne Vorzeichen: • SINT8, INT16, DINT32, LINT64 / USINT8, UINT16, UDINT32,
ULINT64
• Reele Zahl: • REAL32, LREAL64
• Zeiten: • TIME, DATE, TIME_OF_DAY/TOD, DATE_AND_TIME/DT
• Variabel lange Zeichenkette: • STRING8, WSTRING16
• Bit-Folgen: • BYTE8, WORD16, DWORD32, LWORD64
19.10.2010 PLT1 (c) Urbas 2008-2010 Folie 8
Hierarchie der allgemeinen Datentypen(zur Festlegung von Ein/Ausgängen von POE)
ANY
+---- ANY_DERIVED
+---- ANY_ELEMENTARY
+---- ANY_MAGNITUDE
| +---- ANY_NUM
| | +---- ANY_REAL
| | | +---- LREAL, REAL
| | |
| | +---- ANY_INT
| | +---- LINT, DINT, INT, ULINT, SINT,
| | ULDINT, UDINT, UINT, USINT
| +---- TIME
|
+---- ANY_BIT
| +---- LWORD, DWORD, WORD, BYTE, BOOL
|
+---- ANY_STRING
| +---- STRING, WSTRING
|
+---- ANY_DATE
+---- DATE_AND_TIME, DATE, TIME_OF_DAY
19.10.2010 PLT1 (c) Urbas 2008-2010 Folie 9
Abgeleitete Anwender- oder herstellerdefinierte Datentypen
• TYPE Bezeichner : ... END_TYPE
• Aufzählung– TYPE A_SIG : (SINGLE, DIFF) ; END_TYPE
• Bereich– TYPE A_DATA : INT (-32000..32512) ; END_TYPE
• Feld– TYPE A_8IN : ARARY [1..16] OF A_DATA; END_TYPE
• Struktur– TYPE Bezeichner : STRUCT ... END_STRUCT;
END_TYPE
– Kann geschachtelt werden
19.10.2010 PLT1 (c) Urbas 2008-2010 Folie 10
Einzelelementvariablen
&I0.1
I0.0&
Schalter 1
Schalter 2Q1.1 Lampe
% Q X 7.3 Adresse der Variablen
X (Einzel-)Bit-Größekein (Einzel-)Bit-GrößeB Byte(8 Bit)-GrößeW Word(16 Bit)-GrößeD Doppelwort(32 Bit)-GrößeL Langwort(64 Bit)-Größe
SpeicherortI EingangQ Ausgang
M Merker
Kennung einer direkten Variablen (Optional)
IEC 61131-3 Standardfunktionen 1/2
• Mit einer numerischen Variablen
– ABS, SQRT, LN, LOG, EXP, SIN, COS, TAN, ASIN,
ACOS, ATAN
• Arithmetische Funktionen
– ADD*, MUL*, SUB, DIV, MOD, EXPT,
• Bitfolgefunktionen– SHL, SHR, ROR, ROL
• Bitweise boolsche Standardfunktionen
– AND*, OR*, XOR*, NOT,
• Auswahl
– SEL, MAX*, MIN*, LIMIT, MUX*,
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 11
IEC 61131-3 Standardfunktionen 2/2
• Vergleich
– GT*, GE*, EQ*, LE*, LT*, NE
• Zeichenfolgen
– LEN, LEFT, RIGHT, MID, CONCAT*, INSERT, DELETE,
REPLACE, FIND
• Zeit (DATE, TIME, TIME_OF_DAY,DATE_AND_TIME)– ADD, SUB, CONCAT_DATE_TOD
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 12
IEC 61131-3 Standardfunktionsbausteine
• Bistabile Funktionsbausteine
– SR (* vorrangig Setzen *)
– RS (* vorrangig Rücksetzen *)
• Flankenerkennung
– R_TRIG (* steigende Flanke *)
– F_TRIG (* fallende Flanke *)
• Zähler
– CTU, CTU_(D|L|UD|UL)INT (*Aufwärtszähler*)
– CTD, CTD_(D|L|UD|UL)INT (*Abwärtszähler*)
• Zeitgeber
– TON, TOF (* Ein/Ausschaltverzögerung *)
– TP (* Puls *)
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 13
12.04.2011PLT-1 (c) 2008-2011, UR Folie 14
Textbasiert Grafisch
Anweisungsliste (AWL)
Strukturierter Text (ST)
Kontaktplan (KOP)
Funktionsbausteinsprache (FBS)
Ablaufsprache (AS)
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 15
Anweisungsliste AWL (engl. Instruction List, IL, STEP7: AWL)
• AWL: universell einsetzbare Maschinensprache, vergleichbar mit einem Assembler.
– Nach wie vor am weitesten verbreitet.
– wenig Möglichkeiten zur strukturierten Programmierung.
– In den jeweiligen Implementierungen zum Teil unterschiedliche Operatoren und Sprachumfänge
AWLs „Virtuelle Maschine“
• AWL definiert implizit eine virtuelle Maschine mit
– AKU
– Variablen (funktionale Speicher)
• Zentrales Element ist der AKKUMULATOR (AKU)
– Grundlegende Semantik von Operatoren
• Ergebnis := Ergebnis Operator Operand
– Ergebnis und Operand müssen denselben Datentyp besitzen
• Formale Syntax:
[Marke:] Operator Operand [(* Kommentar *)]
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 16
Modifzierer für Negation, Zurückstellung, bedingte Auswertung
• N: Negation
– ANDN %IX2 Erg := Erg AND NOT %IX2
• (: Zurückstellung der Auswertung bis zum Operator )
– AND( %IX1 Erg := Erg AND (%IX1 OR %IX2)OR %IX2
)
• C: Bedingung, Anweisung wird nur durchgeführt, wenn der vorherige Ausdruck eine boolsche 1 ergeben hatte
– Achtung: Modifizierer gelten nur für bestimmte Befehle
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 17
Operatoren der Anweisungsliste
Nr. Operator N ( C Bedeutung
1 LD N Erg := Operand
2 ST N Operand := Erg
3 S, R Operand := (bool) Erg
4-7 AND,&,OR,XOR N ( Erg := Erg OP Operand
7a NOT Einerkomplement
8-11a ADD,SUB,MUL,DIV,MOD
( Erg := Erg OP Operand
12-17 GT,GE,EQ,NE,LE,LT
( Erg := Erg OP Operand
18-20 JMP, CAL, RET N C Sprung, Aufruf, Rücksprung
21 ) Bearbeitung rückgesteller OP
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 18
Funktionsaufruf
• Eintrag Funktionsname in Operatorfeld
• Argumente als nicht-formale EingangslisteLIMIT(1,B,5)
Argumente als formale Eingangsliste
LIMIT(
EN:=COND,
IN:=B,
MN:=1,
MX:= 5,
ENO => TEMPL
)
• Zurückgegebener Wert (RET) wird Ergebnis
– ST A
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 19
Einschub: Ausführungssteuerung mit EN/ENO
• Für Funktionen und Funktionsbausteine können ein zusätzlicher Freigabeeingang EN (Enable) und Ausgang ENO (Enable Out) oder beide zur Verfügung gestellt werden
VAR_INPUT EN: BOOL := 1 ; END_VAR
VAR_OUTPUT ENO: BOOL ; END_VAR
• EN == False
– Operation wird nicht ausgeführt, durch SPS ENO := False
• ENO == False
– Werte der Funktionsausgänge implementierungsabhängig
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 20
Funktionsbausteinaufruf
• Aufruf FBS mit nicht-formaler oder formaler Argumentliste– CAL C10(%IX10, FALSE, A, OUT, B)
– CAL C10(
CU := %IX10,
Q=> OUT)
• Aufruf mit Laden/Speichern mit FBS-Eingangsvon Argumenten Operatoren
– LD A LD A
ST C10.PV PV C10
LD %IX10 LD %IX10
ST C10.CU CU C10
CAL C10
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 21
Unvollständige formale Argumentliste oder Eingangsoperatoren
• Fehlende Argumente werden von der letzten Zuweisung (ggf. Initialisierung) übernommen
– Fehlende Argumente ändern sich also nicht!
• Beispiel
VAR C10: CTU;
LD 15
PV C10
• Zähler C10 wird bei steigender Flanke auf Eingang CU inkrementiert
– CU ist nicht angegeben
keine Änderung, Zähler zählt nicht!
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 22
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 23
AWL Beispiel
LD %IX0.1 (* Lade Eingang 0.1 in Akku *)
OR %IX0.2 (* Akku=Akku oder Eingang 0.2 *)
OR %QX1.1 (* Akku=Akku oder Ausgang 1.1 *)
AND %IX0.3 (* Akku=Akku und Eingang 0.3 *)
AND %IX0.4 (* Akku=Akku und Eingang 0.4 *)
ST %QX1.1 (* Ausgang 1.1=Akku *)
12.04.2011PLT-1 (c) 2008-2011, UR Folie 24
Textbasiert Grafisch
Anweisungsliste (AWL)
Strukturierter Text (ST)
Kontaktplan (KOP)
Funktionsbausteinsprache (FBS)
Ablaufsprache (AS)
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 25
Strukturierter Text(engl. Structured Text, ST, STEP7 SCL)
• Pascal-ähnliche, höhere Programmiersprache
• Vorteile:
– sehr kompakte Formulierung
– abstrakte maschinenferne Befehle
– übersichtlicher Aufbau durch Anweisungsblöcke
– umfangreiche, komplexe Aufgaben realisierbar
• Nachteile:
– Qualität des Maschinencode ist abhängig von Compiler (Übersetzer).
– Bei einigen Compilern Effizienzverlust zur Laufzeit durch höhere Abstraktion (ST-Code i.d.R. langsamer als AWL-Code)
Ausdrücke
• Auswertungsreihenfolge
– Rangfolge (Punkt vor Strich): A+B*C
– Auswertung von links nach rechts: A+B+C
– Auswertung linker Operand zuerst: SIN(A)*SIN(B)
• Boolsche Ausdrücke
– Lazy Evaluation ist erlaubt: (A>B)&(C>D)
• Operatoren
– Funktionsaufruf, e.g. SIN(A)
– - (Negation), NOT, **, *, / MOD, +, -,
– <,>,<=,>=, =, <>
– &, AND, XOR, OR
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 26
Anweisungen
• Zuweisung: A := B; C := SIN(X);
• FBS-Aufruf: TMR(IN:=%IX5, PT:=T#300ms);
A := TMR.Q;
• Bed. Ausführung: IF B1 THEN … ELSIF B2 THEN …
ELSE … END_IF;
• Falluntersch.: CASE B1 OF
1,5: …
7..10: …
ELSE … END_CASE;
• Wiederholung: FOR I:= 1 TO 3 DO … END_FOR;
WHILE B1 DO … END_WHILE;
REPEAT … UNTIL B1 END_REPEAT;
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 27
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 28
ST Beispiele (Viele Wege führen nach Rom)
• Beispiel 1:
Q1.1:=(I0.1 OR I0.2 OR Q1.1) AND I0.3 AND I0.4;
• Beispiel 2:
M = Q1.1; Q1.1:=0;
IF (I0.1 OR I0.2 OR M) THEN
IF (I0.3 AND I0.4) THEN
Q1.1:=1;
END_IF;
END_IF;
• Negativbeispiel 3:Q1.1:=((I0.1+I0.2+Q1.1)>0)*I0.3*I0.4
12.04.2011PLT-1 (c) 2008-2011, UR Folie 29
Textbasiert Grafisch
Anweisungsliste (AWL)
Strukturierter Text (ST)
Kontaktplan (KOP)
Funktionsbausteinsprache (FBS)
Ablaufsprache (AS)
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 30
Kontaktplan KOP (engl. Ladder Diagramm, LD, STEP7: KOP)
• Funktionen werden durch Schaltsymbole aus der Elektrotechnik dargestellt:
– Schließer, Öffner usw., die schaltbildähnlich zu Netzwerken zusammengefügt werden.
– An den Seiten befinden sich zwei Stromschienen, zwischen denen die Relaislogik liegt (90° Drehung zur Anpassung an Computer/Textschreiben)
• Programmiersprache beschränkt sich im Wesentlichen auf boolsche Signale
– Reihenschaltung: UND
– Parallelschaltung: ODER
– Negation: Arbeitskontakt / Ruhekontakt
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 31
KOP Beispiel
( )I0.1
I0.2
Q1.1
I0.3 I0.4 Q1.1
Eingang: Schaltkontakt --| |--
Ausgang: Relaisspule --( )--
Negation: --|/|--
--(/)--
12.04.2011PLT-1 (c) 2008-2011, UR Folie 32
Textbasiert Grafisch
Anweisungsliste (AWL)
Strukturierter Text (ST)
Kontaktplan (KOP)
Funktionsbausteinsprache
Ablaufsprache (AS)
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 33
Funktionsbausteinsprache FBS (engl. Function Block Language, FB, STEP7: FUP)
• Symbolik der Digitalen-Schaltungen
• UND- , ODER-Gatter,
• INVERTIERTER Eingang, usw.
• gut strukturierte und übersichtliche Programmierung bool´scher Verknüpfungen.
• Grafisch anschauliche Programmierung des Informationsfluss von ganzzahligen und Gleitkomma-Operationen.
12.04.2011PLT-1 (c) 2008-2011, UR Folie 35
Textbasiert Grafisch
Anweisungsliste (AWL)
Strukturierter Text (ST)
Kontaktplan (KOP)
Funktionsbausteinsprache (FBS)
Ablaufsprache (AS)
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 36
Ablaufsprache AS (engl. Sequential Function Chart Language, SFC)
• Industrielle Automatisierungsaufgaben lassen sich häufig als Sequenz einzelner Schritte darstellen.
– Die Ausführung der Schritte hängt vom Erreichen einer Bedingung ab
– Verschiedene Schritte können/müssen auch parallel ausgeführt werden
• Vereinfachte Petrinetze:
– Übergang von einem Schritt zu einen oder mehreren (parallelen) folgenden Schritten erfolgt durch eine Übergangsbedingung (Transition).
– Aktionen und Transitionen werden in einer der vorgenannten Sprachen spezifiziert.
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 37
AS Beispiel
S0
S1
T0
T1
I0.1
I0.2 I0.3 I0.4
I0.3
I0.4
Step 0
R Q1.1
Step 1
S Q1.1
S0
12.04.2011 PLT-1 (c) 2008-2011, UR Folie 38
Siemens STEP7 vs. IEC 61131-3
• Aus TIA, Anhang II, IEC 61131:– Die Programmiersprachen KOP und FUP entsprechen
den in der Norm DIN EN 61131-3 (int. IEC 61131-3) festgelegten Sprachen „Kontaktplan“ und „Funktionsbaustein-Sprache“. […]
– AWL entspricht der in der Norm DIN EN 61131-3 (int. IEC 61131-3) festgelegten Sprache „Anweisungsliste“, wobei hinsichtlich der Operationen wesentliche Unterschiede bestehen. […]
– Die Ablaufsprache S7-GRAPH entspricht der in der Norm DIN EN 61131-3 (int. IEC 61131-3) festgelegten Sprache „Sequential Function Chart“.
– Zusätzlich S7-HiGraph (Zustandsgraphen)