38
DIN EN 61131 Fachsprachen Elektrotechnik und Informationstechnik Institut für Automatisierungstechnik, Professur Prozessleittechnik VL Prozessleittechnik I (SS 2011) Professur für Prozessleittechnik

IEC 61131 – Ein abstraktes Modell eines Prozessrechners · 61131-3 Programmiersprachen • 61131-3 spezifiziert fünf Programmiersprachen zur Implementierung von POE • Standardfunktionen

Embed Size (px)

Citation preview

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.2011 PLT-1 (c) 2008-2011, UR Folie 34

FBS Beispiel

>1

&

=

I0.1

I0.2

Q1.1

Q1.1

I0.3

I0.4

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)‏