4. Programmierung SPS – AWL, FUP, SCL
Übersicht Programmiersprachen: Konzentration auf binäre Operationen!
Steuerungseinheit der SPS (CPU)
Laden und Transferieren von digitalen Daten
Elementare Datentypen (BOOL, BYTE, WORD, DWORD)
Elementare Datentypen (INT, DINT, REAL, S5TIME)
Logische Grundverknüpfungen
Zusammengesetzte logische Grundverknüpfungen
Direkte Adressierung für E, A, M
Zuweisen(=), Setzen(S), Rücksetzen(R)
Beispiel: Siloentleerung
RS-Flipflop: Prinzip / Gegenseitiges Verriegeln /Reihenfolgeverriegelung
Beispiel: Torsteuerung
Zeitfunktionen: Allgemein / SE,SV,SE,SS,SA / Beispiel Taktgeber
Zähler – Allgemein / Programmierung / Beispiel
Sprünge / Vergleichsoperationen
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 43 Nur für Lehrzwecke
Übersicht Programmiersprachen
S7-SCL
Sequential Function Chart SFC S7-Graph
Schwerpunkte im Kapitel HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
Quelle: IAS Stuttgart ST.ppt / Folie 44 Nur für Lehrzwecke
Steuerungseinheit der SPS (CPU)
Timer
Speicher = Ladespeicher + Arbeitsspeicher
Systemspeicher:
Prozessabbild: Eingänge, Ausgänge
Merker = Zwischenergebnisse
Timer, Zähler = Zahlenwerte der Zeit-/Zählerfunktionen
Akku = Akkumulatoren = Zwischenspeicher für ALU -> S7-300: 2 Stück!
HAW Hamburg Prof. Dr.-Ing. U. Meiners
Quelle: Wellenreuther
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 45 Nur für Lehrzwecke
AWL: Laden und Transferieren von (digitalen) Daten
Laden von Daten durch den L : L L L
EB10 MB120 MW10
//Lade Eingangsbyte (8 Bit) EB10 in AKKU1-L-L //Lade Merkerbyte (8 Bit) MB120 in AKKU1-L-L //Lade Merkerwort (16 Bit) MW10 in AKKU1-L
Inhalt von AKKU 1 (32 Bit) vor Ausführung der Ladeoperation nach Ausführung von L MB10 (L ) nach Ausführung von L MW10 (L ) nach Ausführung von L MD10 (L )
AKKU1-H-L XXXXXXXX 00000000 00000000
AKKU1-L-H XXXXXXXX 00000000
AKKU1-L-L XXXXXXXX
Transferieren von Daten durch den T-Befehl: Akku1 ->ZielAdr T T
AKKU1-H-H XXXXXXXX 00000000 00000000
AB10 MW14
//Transferiere den Inhalt von AKKU1-L-L in das Ausgangsbyte AB10 //Transferiere den Inhalt von AKKU1-L in das Merkerwort MW14
Akku1, Akku2 vorhanden – wichtig bei Ladebefehl!
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 46 Nur für Lehrzwecke
Elementare Datentypen (BOOL, BYTE, WORD, DWORD) Typ und Beschreibung
Größe in Bits
Formatoptionen
Bereich und Zahlendarstellung (niedrigster bis höchster Wert)
AWL-Beispiel
BOOL (Bit)
1
Bool-Text
TRUE/FALSE
TRUE
BYTE (Byte)
8
Hexadezimalzahl
B#16#0 bis B#16#FF
L B#16#10 L byte#16#10
WORD (Wort)
16
Dualzahl
2#0 bis 2#1111_1111_1111_1111
L 2#0001_0000_0000_0000
Hexadezimalzahl
W#16#0 bis W#16#FFFF
L W#16#1000 L word#16#1000
BCD
C#0 bis C#999
L C#998
Dezimalzahl ohne Vorzeichen
B#(0,0) bis B#(255,255)
L B#(10,20) L byte#(10,20)
Dualzahl
2#0 bis 2#1111_1111_1111_1111_ 1111_1111_1111_1111
L 2#1000_0001_0001_1000_ 1011_1011_0111_1111
Hexadezimalzahl
DW#16#0000_0000 bis DW#16#FFFF_FFFF
L DW#16#00A2_1234 L dword#16#00A2_1234
Dezimalzahl ohne Vorzeichen
B#(0,0,0,0) bis B#(255,255,255,255)
L B#(1, 14, 100, 120) L byte#(1,14,100,120)
DWORD (Doppelwort)
32
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 47 Nur für Lehrzwecke
Elementare Datentypen (INT, DINT, REAL, S5TIME) Typ und Beschreibung
Größe in Bits
Formatoptionen
Bereich und Zahlendarstellung (niedrigster bis höchster Wert)
AWL-Beispiel
INT (Ganzzahl)
16
Dezimalzahl mit Vorzeichen
-32768 bis 32767
L1
DINT (Ganzzahl, 32 Bit)
32
Dezimalzahl mit Vorzeichen
L#-2147483648 bis L#2147483647
L L#1
REAL (Gleitpunktzahl)
32
IEEE Gleitpunktzahl
Obere Grenze: 3.402823e+38 Untere Grenze: 1.175 495e-38
L 1.234567e+13
S5TIME (SIMATIC-Zeit)
16
S7-Zeit in Schritten von 10 ms (Default-Wert)
S5T#0H_0M_0S_10MS bis S5T#2H_46M_30S_0MS und S5T#0H_0M_9990S_0MS
L S5T#0H_1M_0S_0MS L S5T#1H_1M_0S_0MS
… weitere elementare und zusammengesetzte Datentypen siehe S7-Online-Hilfe
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 48 Nur für Lehrzwecke
Direkte Adressierung für E, A, M
Zugriff auf Bit, Byte, Word und Doppelwort:
Wortadressen:
Doppelwortadressen:
ED0 = EW0 + EW2 AD0 = AW0 + AW2
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 49 Nur für Lehrzwecke
Binäre (Logische) Grundverknüpfungen
Grundverknüpfungen UND / ODER / NICHT in Darstellung Boolesche Algebra / Zeitdiagramm / FUP / KOP / AWL / SCL: ST (S7-SCL) A4.0 := E0.1 AND E0.2;
A4.0 := E0.1 OR E0.2;
A = E1+E2 A4.0 := NOT E0.0;
=!E
A4.0 := NOT(E0.1 AND E0.2);
Andere gebräuchliche Notation Quelle: Wellenreuther
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 50 Nur für Lehrzwecke
AWL: Abfrageergebnis (AE) / Verknüpfungsergebnis (VKE) Beispiel:
AWL-Code gegeben. Annahme E1.0=0 und E1.1=0 …… …… = A4.0
AE ….
VKE ….
„Bedingte Operation“
UN E1.0 U E1.1
1 0
1 0
„Erstabfrage“ „Abfrageoperation“
=
0
0
„Bedingte Operation“
A8.0
Bedingte Operation Operationen, deren Ausführung vom Verknüpfungsergebnis abhängt. Beispiele = R, S, Starten von Zeiten und Zählern. Verändern das VKE nicht! Erstabfrage Erste nach einer bedingten Operation bearbeitete Abfrageoperation. AE -> VKE! Abfrageergebnis AE UN, ON, XN: Operand = 0/1 -> AE =1/0 U,O,X : Operand= 0/1 -> AE =0/1 Verknüpfungsergebnis VKE Gemäß der Abfrageoperation wird das Verknüpfungsergebnis (VKE) gebildet. HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 51 Nur für Lehrzwecke
AWL: Zusammengesetzte binäre Grundverknüpfungen
A = E1*E2*!E3+E1*!E2+E3
durch Klammerung
Quelle: Wellenreuther
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 52 Nur für Lehrzwecke
AWL: Zusammengesetzte binäre Grundverknüpfungen Klammerfunktionen: O
ODER-Verknüpfung von UND-Verknüpfungen
U(
Klammer auf mit UND-Verknüpfung
O(
Klammer auf mit ODER-Verknüpfung
X(
Klammer auf mit Exklusiv-ODER-Verknüpfung
UN(
Klammer auf mit Negation und UND-Verknüpfung
ON(
Klammer auf mit Negation und ODER-Verknüpfung
XN(
Klammer auf mit Negation und Exklusiv-ODER-Verknüpfung
)
Klammer zu
Merke:
Abfrageergebnis (AE) nach Klammer-auf-Anweisung ist immer eine Erstabfrage -> VKE wird neu gebildet
Abfrageergebnis (AE) nach Klammer-zu-Anweisung ist nie eine Erstabfrage!
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 53 Nur für Lehrzwecke
AWL-Beispiel: Klammerausdrücke (1) Bearbeitung von Klammerausdrücken:
(2) Beispiel für geschachtelte Klammerausdrücke:
Quelle: Berger
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 54 Nur für Lehrzwecke
Welche binäre Funktion wurde hier umgesetzt?
AWL-Code 1:
AWL-Code 2:
O O U U =
O O O U U =
HAW Hamburg Prof. Dr.-Ing. U. Meiners
S1 S2 S3 S4 A1
ST - Steuerungstechnik Sommersemester 2009
S1 S2 S3 S4 A2
ST.ppt / Folie 55 Nur für Lehrzwecke
Beispiel: Siloentleerung
Aufgaben = Systematische Lösung: a) Zuordnungstabelle für die Ein- und Ausgänge aufstellen! b) Funktionstabelle: Eingänge S3,S2,S1 -> Ausgänge P1,P2,H aufstellen! c) Boolesche Schaltfunktionen aus der Funktionstabelle ermitteln! (vereinfachen!) d) Kodierung als FUP, AWL und S7-SCL (Ablauf in OB1)!
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 58 Nur für Lehrzwecke
Zuweisen(=), Setzen(S), Rücksetzen(R) ST (S7-SCL)
Einfluß vom VKE:
VKE=0/1 -> A/M/D = 0/1
A8.0 := E1.0 AND E1.1;
=
S
R
VKE=1 -> A/M/D wird gesetzt =„1“ Rücksetzen durch R
IF (E1.2=1 AND E1.3=1) THEN A8.1:=1; END_IF;
VKE=1 -> A/M/D wird gelöscht =„0“ Setzen durch S
IF (E1.4=1 OR E1.5=1) THEN A8.1:=0; END_IF;
AWL: VKE gezielt löschen mit CLR VKE gezielt setzen mit SET
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 59 Nur für Lehrzwecke
RS-Flipflop: Prinzip FUP
AWL
ST (S7-SCL) IF E0.1=1 THEN A4.0:=1; END_IF; IF E0.0=1 THEN A4.0:=0; END_IF;
FUP
AWL
ST (S7-SCL) IF E0.0=1 THEN A4.1:=0; END_IF; IF E0.1=1 THEN A4.1:=1; END_IF;
RS- Flipflop = Element mit Speicherwirkung mit Setz- (S) und Rücksetzeingang (R); Je nachdem, an welchem Eingang VKE=0->1 anliegt, wird Ausgang bzw. Merker gesetzt/zurückgesetzt Optionen: Vorrangiges Setzen oder Zurücksetzen (üblich): S- oder R-dominant Einsatz: Gegenseitige Verriegelung / Reihenfolgeverriegelung
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 60 Nur für Lehrzwecke
RS-Flipflop: Gegenseitiges Verriegeln (1)
Prinzip Gegenseitige Verriegelung über Rücksetzeingänge (Annahme R-dominant)
„Speicher dürfen nicht gleichzeitig gesetzt sein!“
Beispiel Behälter-Füllanlage: Nur ein(!) Behälter soll nach erfolgter Leermeldung befüllt werden. Solange Füllen, bis Vollmeldung da ist! -> Verriegelung! Lösung in FUP (AWL, S7-SCL)?
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 61 Nur für Lehrzwecke
RS-Flipflop: Reihenfolgeverriegelung (1)
Prinzip Reihenfolgeverriegelung über Setzeingang: (R-dominante FFs)
A2 kann nur gesetzt werden, wenn A1 gesetzt=„1“ ist
Beispiel Kiesförderanlage
Band 1 darf nur eingeschaltet werden, wenn Band 2 läuft. Band 2 darf nur eingeschaltet werden, wenn Band 3 läuft. Umgekehrt beim Ausschalten. S0 = Not-Aus. Lösung mit R-dominanten FFs?
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 63 Nur für Lehrzwecke
Übung Verriegelung: Torsteuerung
Zu Hause!
Aufgaben: a)
Zuordnungstabelle der Ein-/Ausgänge aufstellen!
b)
Mit RS-Tabelle die Bedingungen für die Ansteuerung der Setzund Rücksetzeingänge der beiden R-dominanten RS-FFs K1 und K2 aufstellen!
c)
Kodierung als FUP und in AWL (Ablauf in OB1)!
Hinweis: S0, S4, S5 low-aktiv!
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 65 Nur für Lehrzwecke
Zeitfunktionen - Allgemein
Zeitfunktionen zur Generierung eines Impulses (SI) eines verlängerten Impulses (SV) einer Einschaltverzögerung (SE) einer Ausschaltverzögerung (SA) und
………
Allgemeiner Aufbau:
Vorgabewert Zeitdauer laden: z.B. in AWL durch L S5T#500ms für 500ms HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 66 Nur für Lehrzwecke
AWL FUP SCL
Zeitfunktionen SI, SV
SI S_IMPULS S_PULSE
SV S_VIMP S_PEXT
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 67 Nur für Lehrzwecke
Beispiel für AWL/SCL-Programmierung SV Aufgabe: Eingang E0.1 erzeugt verlängerten Impuls der Länge 1,5s am Ausgang A4.1 AWL:
SCL:
U L SV
E0.1 S5T#1S_500MS T1
L T LC T U =
T1 MW0 T1 AW12 T1 A4.1
// E0.1 als Starteingang nutzen // Zeitdauer vorbesetzen in Akku1 // Flankenwechsel 0->1 von Signal E0.1 // startet SV mit T1 // Restzeit binär codiert von T1 // in Merker MW0 transferieren // Restzeit BCD-codiert von T1 // in das Ausgang AW12 transferieren // Abfrage Zeitoperand T1 („Q-Ausgang von T1“)
BCD_ZEITWERT := S_PEXT ( T_NO:= T1, // BCD_ZEITWERT ist vom Typ S5TIME! S:= E0.1, TV:= t#1S_500MS, BI:= MW0, Q:= A4.1 );
Rot = „Essentials“ HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 68 Nur für Lehrzwecke
AWL FUP SCL
Zeitfunktionen SE, SS, SA SE S_EVERZ S_ODT
SS S_SEVERZ S_ODTS
!
SA S_AVERZ S_OFFDT
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 69 Nur für Lehrzwecke
Zeitfunktionen - Beispiel Taktgeber Schritt 1: - Verwendung SE-Funktion - bei Programmstart TIO=0 -> S=1 - TIO Ausgang führt nach jeweils 1Sekunde für die Dauer eines Programmzyklus lang ein „1“ Signal
Schritt 2: TIO Signal steuert Binäruntersetzer an: -> periodisches Taktsignal
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 70 Nur für Lehrzwecke
Zähler - Allgemein
Benötigt für: - Mengen oder Positionen durch Aufzählen zu erfassen - Realisierung von Steuerwerken
Allgemeiner Aufbau:
Muss als BCD-Zahl gesetzt werden!
Zählbereich von 000…999. Kein Überlauf. Zähler=0 -> Q=0.
Zähler0 -> Q=1.
Vorwärts- / Rückwärtszählen
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 72 Nur für Lehrzwecke
AWL: Zähler – Programmierung
U L S
E0.3 C#20 Z5
// Bei positiver Flanke an E0.3 wird // Zähler Z5 mit Zahlenwert 20 vorbesetzt //
U ZV
E0.4 Z5
// Bei positiver Flanke an E0.4 wird // Zähler Z5 um eins erhöht
U ZR
E0.5 Z5
// Bei positiver Flanke an E0.5 wird // Zähler um eins erniedrigt
U R
E0.7 Z5
// Bei E0.7=1 wird Zähler zurückgesetzt //
LC T
Z5 AW12
// Zählerstand wird als BCD Zahl ausgelesen // und nach AW12 transferiert
L T
Z5 MW4
// Zählerstand dual codiert ins // Merkerwort MW4 transferieren
U =
Z5 A8.3
// A8.3=1 falls Zählerstand0 („Ausgang Q von Z5“)
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 73 Nur für Lehrzwecke
SCL: Zähler – Programmierung
BCD_WERT
:= S_CUD (
// S_CUD = Vorwärts-, Rückwärtszähler
C_NO:= Z5,
// Zähler Z5 verwenden
CU:= E0.4,
// UP bei positiver Flanke auf E0.4
CD:= E0.5,
// DOWN bei positiver Flanke auf E0.5
S:= E0.3,
// Vorgabewert setzen bei positiver Flanke auf E0.3
PV:= 16#20,
// Vorgabewert (BCD) codiert
R:= E0.7,
// Rücksetzen bei E0.7=1
CV:= MW4,
// Zählwert dual in MW4 speichern
Q := A8.3
// A8.3=1 falls Zählerstand0
(„Ausgang Q von Z5“)
);
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 74 Nur für Lehrzwecke
AWL: Zähler – Beispiel „Lagerbereich mit Zähler“ (1)
Das folgende Bild zeigt ein System mit zwei Förderbändern und einem temporären Lagerbereich dazwischen. Förderband 1 transportiert die Pakete zum Lagerbereich. Eine Lichtschranke am Ende des Förderbandes 1 neben dem Lagerbereich ermittelt, wie viele Pakete in den Lagerbereich transportiert werden. Förderband 2 transportiert Pakete von diesem temporären Lagerbereich zu einer Laderampe, wo sie zur Auslieferung beim Kunden auf LKW verladen werden. Eine Lichtschranke am Ende des Förderbandes 2 neben dem Lagerbereich ermittelt, wie viele Pakete aus dem Lagerbereich heraus zur Laderampe transportiert werden. Fünf Anzeigeleuchten zeigen an, wie weit der temporäre Lagerbereich gefüllt ist. HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 75 Nur für Lehrzwecke
AWL: Zähler – Beispiel „Lagerbereich mit Zähler“ (2) U ZV
U ZR
E12.0 // Jeder durch die Lichtschranke 1 generierte Impuls erhöht Z1 // den Zählwert des Zählers Z1 um "1", wodurch die Zahl der // Pakete gezählt wird, die in den Lagerbereich transportiert // werden. E12.1 // Jeder durch die Lichtschranke 2 generierte Impuls Z1 // vermindert den Zählwert des Zählers Z1 um "1", // wodurch die Zahl der Pakete gezählt wird, die // den Lagerbereich verlassen
UN =
Z1 // Wenn der Zählwert "0" beträgt, schaltet sich die A12.0 // Anzeigeleuchte für die Meldung "Lagerbereich leer" ein.
U =
Z1 // Beträgt der Zählwert nicht "0", A12.1 // schaltet sich die Anzeigeleuchte für die Meldung "Lagerbereich nicht leer" ein.
L L =I =
Z1 90
L L >=I =
Z1 100
// Ist 50 kleiner oder gleich Zählwert, A15.2 // dann schaltet sich die Anzeigeleuchte für die Meldung "Lagerbereich zu 50% voll" ein.
// Ist der Zählwert größer oder gleich 90, A15.3 // dann schaltet sich die Anzeigeleuchte für die Meldung "Lagerbereich zu 90% voll" ein.
// Ist der Zählwert größer oder gleich 100, A15.4 // dann schaltet sich die Anzeigeleuchte für die Meldung "Lagerbereich voll" ein.
HAW Hamburg Prof. Dr.-Ing. U. Meiners
ST - Steuerungstechnik Sommersemester 2009
ST.ppt / Folie 76 Nur für Lehrzwecke
AWL: Sprünge / Vergleichfunktionen Operation
Operand
Bedeutung
SPA
Marke
Springe unbedingt
SPB
Marke
Springe bedingt bei VKE=1
SPBN
Marke
Springe bedingt bei VKE=0
SPZ
Marke
Springe bei AKKU1=0
SPN
Marke
Springe bei AKKU10
SPP
Marke
Springe bei AKKU1>0
SPM
Marke
Springe bei AKKU= größer gleich
L Zahl_1 L Zahl_2 >=I = Ergeb_1
Weitere Funktionen: >,