Post on 28-Oct-2019
DIN EN 61131 Fachsprachen
Elektrotechnik und Informationstechnik Institut für Automatisierungstechnik, Professur Prozessleittechnik
VL Prozessleittechnik I (SS 2012) Professur für Prozessleittechnik
61131-3 Programmiersprachen
• 61131-3 spezifiziert fünf Programmiersprachen zur Implementierung von POE
• Standardfunktionen und Standardfunktionsbausteine • Typwandlungsfunktionen typ1_TO_typ2
17.04.2012 PLT-1 (c) 2008-2012, UR Folie 2
Textbasiert Grafisch
Anweisungsliste (AWL) Strukturierter Text (ST)
Kontaktplan (KOP) Funktionsbausteinsprache (FBS)
Ablaufsprache (AS)
17.04.2012 PLT-1 (c) 2008-2012, 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
17.04.2012 PLT-1 (c) 2008-2012, 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.3 I0.4
I0.3
I0.4
Step 0 R Q1.1
Step 1 S Q1.1
S0
17.04.2012 PLT-1 (c) 2008-2012, UR 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
17.04.2012 PLT-1 (c) 2008-2012, UR 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
17.04.2012 PLT-1 (c) 2008-2012, UR 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
17.04.2012 PLT-1 (c) 2008-2012, UR 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
17.04.2012 PLT-1 (c) 2008-2012, UR 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
17.04.2012 PLT-1 (c) 2008-2012, UR Folie 10
Einzelelementvariablen
&
I0.1
I0.0
&
Schalter 1 Schalter 2
Q1.1 Lampe
% Q X 7.3 Adresse der Variablen
X (Einzel-)Bit-Größe kein (Einzel-)Bit-Größe B Byte(8 Bit)-Größe W Word(16 Bit)-Größe D Doppelwort(32 Bit)-Größe L Langwort(64 Bit)-Größe
Speicherort I Eingang Q 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*,
17.04.2012 PLT-1 (c) 2008-2012, 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
17.04.2012 PLT-1 (c) 2008-2012, 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 *)
17.04.2012 PLT-1 (c) 2008-2012, UR Folie 13
Textbasiert Grafisch
Anweisungsliste (AWL) Strukturierter Text (ST)
Kontaktplan (KOP) Funktionsbausteinsprache (FBS)
Ablaufsprache (AS)
17.04.2012 PLT-1 (c) 2008-2012, 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 *)]
17.04.2012 PLT-1 (c) 2008-2012, 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
17.04.2012 PLT-1 (c) 2008-2012, 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
17.04.2012 PLT-1 (c) 2008-2012, UR Folie 18
Funktionsaufruf
• Eintrag Funktionsname in Operatorfeld • Argumente als nicht-formale Eingangsliste LIMIT(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
17.04.2012 PLT-1 (c) 2008-2012, 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
17.04.2012 PLT-1 (c) 2008-2012, 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-Eingangs von Argumenten Operatoren – LD A LD A
ST C10.PV PV C10 LD %IX10 LD %IX10 ST C10.CU CU C10 CAL C10
17.04.2012 PLT-1 (c) 2008-2012, 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!
17.04.2012 PLT-1 (c) 2008-2012, UR Folie 22
17.04.2012 PLT-1 (c) 2008-2012, 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 *)
Textbasiert Grafisch
Anweisungsliste (AWL) Strukturierter Text (ST)
Kontaktplan (KOP) Funktionsbausteinsprache (FBS)
Ablaufsprache (AS)
17.04.2012 PLT-1 (c) 2008-2012, 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
17.04.2012 PLT-1 (c) 2008-2012, 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;
17.04.2012 PLT-1 (c) 2008-2012, UR Folie 27
17.04.2012 PLT-1 (c) 2008-2012, 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
Textbasiert Grafisch
Anweisungsliste (AWL) Strukturierter Text (ST)
Kontaktplan (KOP) Funktionsbausteinsprache (FBS)
Ablaufsprache (AS)
17.04.2012 PLT-1 (c) 2008-2012, 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
17.04.2012 PLT-1 (c) 2008-2012, UR Folie 31
KOP Beispiel
( )
I0.1
I0.2
Q1.1
I0.3 I0.4 Q1.1
Eingang: Schaltkontakt --| |-- Ausgang: Relaisspule --( )-- Negation: --|/|-- --(/)--
Textbasiert Grafisch
Anweisungsliste (AWL) Strukturierter Text (ST)
Kontaktplan (KOP) Funktionsbausteinsprache
Ablaufsprache (AS)
17.04.2012 PLT-1 (c) 2008-2012, 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.
17.04.2012 PLT-1 (c) 2008-2012, UR Folie 34
FBS Beispiel
>1
&
=
I0.1 I0.2 Q1.1
Q1.1 I0.3
I0.4
Textbasiert Grafisch
Anweisungsliste (AWL) Strukturierter Text (ST)
Kontaktplan (KOP) Funktionsbausteinsprache (FBS)
Ablaufsprache (AS)
17.04.2012 PLT-1 (c) 2008-2012, 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.
17.04.2012 PLT-1 (c) 2008-2012, 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
17.04.2012 PLT-1 (c) 2008-2012, 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)