Transcription of 10 Programmiersprache Strukturierter Text ST (SCL)
1 350 10 programmiersprache strukturierter text st (SCL) In der DIN EN 61131-3 ist die Programmiersprache Strukturierter Text ST neben der Anwei-sungsliste AWL als zweite Textsprache f r SPSen definiert. Bei STEP 7 wird die entsprechen-de Programmiersprache SCL ( structured control language ) genannt. ST (SCL) ist optimiert f r die Programmierung von Speicherprogrammierbaren Steuerungen und enth lt sowohl Sprachelemente aus der Programmiersprache PASCAL als auch typische SPS-Elemente, wie z. B. Ein-/Ausg nge, Zeiten und Z hler. Die Programmiersprache ST (SCL) ist besonders f r folgende Aufgaben geeignet: x Programmierung komplexer Algorithmen f r digitale Variablen x Programmierung mathematischer Funktionen x Daten- bzw. Rezepturverwaltung x Prozessoptimierung Bausteine in ST (SCL) Die Programmiersprache ST (SCL) kann in allen von der DIN EN 61131-3 definierten Pro-grammorganisationseinheiten verwendet werden. Der Aufbau der Programmorganisationsein-heiten besteht aus den Bereichen: Bausteinanfang, Deklarationsteil, Anweisungsteil und Bau-steinende.
2 Bausteinanfang und -ende Der Quelltext f r einen einzelnen Baustein wird abh ngig von der Bausteinart mit einem Stan-dardbezeichner f r den Anfang des Bausteins und der Bausteinbezeichnung eingeleitet. Abge-schlossen wird er bei STEP 7 mit einem Standardbezeichner f r das Ende des Bausteins. Die Syntax f r die verschiedenen Bausteinarten zeigt folgende Tabelle: Bausteinart Name Syntax in STEP 7 Syntax in CoDeSys Programm PRG PROGRAM xxxx Organisationsbaustein OB ORGANIZATION_BLOCK OBxx .. END_ORGANIZATION_BLOCK Funktion FC FUNCTION FCxx : TYP .. END_FUNCTION FUNCTION FCxx : TYP Funktionsbaustein FB FUNCTION_BLOCK FBxx .. END_FUNCTION_Block FUNCTION_BLOCK FBxx Datenbaustein DB DATA_BLOCK DBxx .. END_DATA_Block UDT-Baustein (Datenstruktur) UDT TYPE UDTxx .. END_TYPE Bausteine in ST (SCL) 351 Deklarationsteil Der Deklarationsteil dient zur Vereinbarung der lokalen Variablen, Eingangs-, Ausgangs- bzw.
3 Durchgangs-Parameter und Konstanten. Dar ber hinaus bieten die beiden Programmiersyste-me STEP 7 und CoDeSys noch weitere spezifische Daten zur Deklaration an. Der Deklarationsteil gliedert sich in unterschiedliche Vereinbarungsbl cke, die jeweils durch ein eigenes Schl sselwortpaar gekennzeichnet sind. Jeder Block enth lt eine Deklarationsliste f r gleichartige Daten. Die Reihenfolge dieser Bl cke ist beliebig. In der nachfolgenden Tabelle zeigt die m glichen Vereinbarungsbl cke in einem Funktions-baustein an Beispielen: Daten Syntax in STEP 7 Syntax in CoDeSYS Eingangsparameter (Eingangsvariable) VAR_INPUT IN1:BOOL:=FALSE; END_VAR VAR_INPUT IN1:BOOL:=FALSE; END_VAR Ausgangsparameter (Ausgangsvariable) VAR_OUTPUT OUT1:BOOL:=TRUE; END_VAR VAR_OUTPUT OUT1:BOOL:=TRUE; END_VAR Durchgangsparameter (Durchgangsvariable) VAR_IN_OUT INOUT1:INT:=123; END_VAR VAR_IN_OUT INOUT1:INT; END_VAR Statische Variable VAR VAR1:REAL:= ; END_VAR VAR VAR1:REAL:= ; END_VAR Konstanten CONST Wert:=16#FFFF; END_CONST VAR CONSTANT Wert:WORD:=16#FFFF END_VAR Tempor re Variable VAR_TEMP VAR2:REAL; END_VAR Remanente Variable VAR RETAIN VAR3:INT:=123; END_VAR Sprungmarken LABEL Marke1, Make2; END_LABEL Hinweis: Die Initialisierung der Werte ist nur in Funktionsbausteinen und bei STEP 7 in Da-tenbausteinen m glich.
4 In Funktionen oder Programmen k nnen den Variablen keine An-fangswerte zugewiesen werden. Anweisungsteil Der Anweisungsteil beinhaltet Anweisungen, die nach dem Aufruf eines Codebausteins zur Ausf hrung kommen sollen. Eine Anweisung ist dabei die kleinste selbstst ndige Einheit des Anwenderprogramms. Sie stellt eine Arbeitsvorschrift f r den Prozessor dar. ST (SCL) kennt folgende Arten von Anweisungen: Wertzuweisungen, die dazu dienen, einer Variablen einen Wert, das Ergebnis eines Ausdrucks oder den Wert einer anderen Variablen zuzuweisen. 352 10 programmiersprache strukturierter text st (SCL) Kontrollanweisungen, die dazu dienen, Anweisungen oder Gruppen von Anweisungen zu wiederholen oder innerhalb eines Programms zu verzweigen. Unterprogrammbearbeitungen, die zum Aufrufen von Funktionen und Funktionsbausteinen dienen. Regeln f r den Anweisungsteil: Regel STEP 7 CoDeSys Jede Anweisung endet mit einem Semikolon. x x Alle verwendeten Bezeichner m ssen vorher vereinbart sein.
5 X x Der Anweisungsteil wird mit dem Schl sselwort BEGIN eingeleitet. x - Der Anweisungsteil endet mit dem Schl sselwort f r das Bausteinende. x - Vor jeder Anweisung k nnen optional Sprungmarken stehen. x - Ausdr cke, Operanden und Operatoren bersicht Ein Ausdruck ist ein Konstrukt, das bei Auswertung einen Wert liefert, der zur Laufzeit des Programms berechnet wird. Ausdr cke bestehen aus Operanden (z. B. Konstanten, Variablen oder Funktionsaufrufe) und Operatoren (z. B. *, /, + oder ). Der Datentyp des Operanden und der verwendete Operator bestimmen den Typ des Ausdrucks. ST (SCL) unterscheidet arithme-tische Ausdr cke, Vergleichs-Ausdr cke und logische Ausdr cke Die Auswertung eines Ausdrucks erfolgt durch Anwenden der Operatoren auf die Operanden in bestimmter Reihenfolge. Diese ist festgelegt durch die Priorit t der beteiligten Operatoren, der links-rechts Reihenfolge oder durch die vorgenommene Klammerung. Das Ergebnis eines Ausdrucks kann einer Variablen zugewiesen werden, als Bedingung f r eine Abfrage oder als Parameter f r den Aufruf einer Funktion oder eines Funktionsbausteines verwendet werden.
6 Operatoren Die meisten Operatoren verkn pfen zwei Operanden und werden deshalb als bin r bezeichnet. Andere Operatoren arbeiten mit nur einem Operanden, daher bezeichnet man sie als un r. Bin re Operatoren werden zwischen die Operanden geschrieben (z. B. A + B). Eine un re Operation steht immer unmittelbar vor seinem Operand (z. B. B). Wenn ein Ausdruck mehrere Operationen enth lt, muss der linke Operand zuerst ausgewertet werden. Zum Beispiel muss im Ausdruck SIN(X) * TAN(Y) die Operation SIN(X) zuerst ausgewertet werden, gefolgt von TAN(Y) und danach wird die Multiplikation ausgef hrt. Die folgenden Bedingungen bei der Ausf hrung von Operatoren f hren zu Fehlern: x Division durch Null x Operanden haben nicht den f r die Operation erforderlichen Datentyp. x Das Ergebnis berschreitet den Wertebereich des Datentyps. Ausdr cke, Operanden und Operatoren 353 Zusammenstellung der Operatoren der Sprache ST (SCL): Klasse Operation Symbol Rang Hinweis Zuweisungsoperation Zuweisung := 11 Arithmetische Operationen Potenz un res Plus un res Minus Multiplikation Division Modulo-Funktion ganzzahlige Division Addition Subtraktion ** + - * / MOD DIV + - 2 3 3 4 4 4 4 5 5 Vergleichsoperationen Kleiner Gr er Kleiner gleich Gr er gleich Gleichheit Ungleichheit < > <= >= = <> 6 6 6 6 7 7 Logische Operationen Negation UND ODER EXCLUSIV-ODER NOT AND od.
7 & OR XOR 3 8 10 9 Klammerungszeichen Klammer auf/zu ( ) 1 Funktionsbearbeitung (Auswahl) Exponent e hoch N Exponent 10 hoch N Exponent M hoch N Nat rlicher Logarithmus Dekad. Logarithmus Betrag Quadrat Quadratwurzel Arcus-Cosinus Arcus-Sinus Arcus-Tangens Cosinus Sinus Tangens EXP EXPD EXPT LN LOG ABS SQR SQRT ACOS ASIN ATAN COS SIN TAN Bei STEP 7 Bei CoDeSys Bei STEP 7 Hinweis: In den Kapiteln 4, 5 und 7 ist die Syntax der Operationen in ST (SCL) bei der allge-meinen Darstellung der Operatoren in der Programmiersprache STEP 7 und CoDeSys bereits beschrieben. Operanden Ein Operand kann eine Konstante, eine Variable, ein Funktionsaufruf oder ein Ausdruck sein. Die Operandenkennzeichen sind in Kapitel 2 beschrieben und gelten f r ST (SCL) gleicher-ma en. 354 10 programmiersprache strukturierter text st (SCL) Ausdr cke Man unterscheidet arithmetische Ausdr cke, logische Ausdr cke und Vergleichsausdr cke. Das Ergebnis eines logischen Ausdrucks und eines Vergleichsausdrucks ist ein boolescher Wert.
8 Die Verarbeitung von Ausdr cken erfolgt nach den folgenden Regeln: x Ein Operand zwischen zwei Operationen von unterschiedlicher Priorit t ist immer an die h herrangige gebunden. x Die Operationen werden entsprechend der hierarchischen Rangfolge bearbeitet. x Operationen gleicher Priorit t werden von links nach rechts bearbeitet. x Das Voranstellen eines Minuszeichens vor einen Bezeichner ist gleichbedeutend mit der Multiplikation mit 1. x Arithmetische Operationen d rfen nicht direkt aufeinander folgen. Deshalb ist der Aus-druck a * b ung ltig, aber a*( b) erlaubt. x Das Setzen von Klammerpaaren kann den Operationenvorrang au er Kraft setzen, d. h., die Klammerung hat die h chste Priorit t. x Ausdr cke in Klammern werden als einzelner Operand betrachtet und immer als Erstes ausgewertet. x Die Anzahl von linken Klammern muss mit der von rechten Klammern bereinstimmen. x Arithmetische Operationen k nnen nicht in Verbindung mit Zeichen oder logischen Daten angewendet werden.
9 Deshalb sind Ausdr cke wie 'A' + 'B' und (n <= 0) + (m > 0) falsch. Anweisungen Anweisungen m ssen durch ein Semikolon abgeschlossen werden. Die maximal erlaubte L n-ge von Anweisungen ist ein implementierungsabh ngiger Parameter. Man unterscheidet drei Arten von Anweisungen: Wertzuweisungen, Kontrollanweisungen und Bausteinaufrufe. Wertzuweisungen Wertzuweisungen ersetzen den momentanen Wert einer Variablen mit einem neuen Wert, der ber einen Ausdruck angegeben wird. Dieser Ausdruck kann auch Bezeichner von Funktionen enthalten, die dadurch aktiviert werden und entsprechende Werte zur ckliefern . Beispiele: Wertzuweisung einer Konstanten zu einer Variablen SCHALTER_1 := -15 ; SOLLWERT_1 := ; ABFRAGE_1 := TRUE ; ZEIT_1 := T#1H_20M_10S_30MS ; ZEIT_2 := T#2D_1H_20M_10S_30MS ; DATUM_1 := D#1996-01-10 ; Wertzuweisung einer Variablen zu einer Variable SOLLWERT_1 := SOLLWERT_2 ; SCHALTER_2 := SCHALTER_1 ; Wertzuweisung eines Ausdrucks zu einer Variablen SCHALTER_2 := SCHALTER_1 * 3 ; Anweisungen 355 Wertzuweisungen von Feldkomponenten Feldname_1[ n ] := Feldname_2[ m ] ; Feldname_1[ n ] := Ausdruck ; Bezeichner_1 := Feldname_1[ n ] ; Feldname_1 := Feldname_2 Wertzuweisungen mit Variablen vom Typ STRING MELDUNG_1 := 'Fehler in Modul 3' ; MELDUNG_2 := ; Wertzuweisungen mit Variablen vom Typ DATE_AND_TIME ZEIT_1 := DATE_AND_TIME#1995-01-01-12:12 ; := DT#1995-02-02-11:11:11 ; ZEIT_1 :=.
10 Der Zugriff auf SPS-Operanden wie Eing nge, Ausg nge, Merkern, sowie bei STEP 7 Daten-bausteine und UDTs unterscheidet sich bei den beiden Programmiersystemen. Bei CoDeSys k nnen die Variablennamen durch die absolute SPS-Adresse ersetzt werden. Bei STEP 7 gibt es die M glichkeiten eines absoluten, indizierten und symbolische Zugriffs. Beispiele f r Wertzuweisungen mit SPS-Operanden bei STEP 7: Absoluter Zugriff: STATUSWORT1 := EW4 ; := TRUE ; Wert1 := ; Wert1_1[1] := Indizierter Zugriff: STATUSWORT3 := EB[ADRESSE] ; A[ ]:= Wert2; Symbolischer Zugriff: Messwert_1:= Sens_1 //In der Symboltabelle ist die absolute //Adresse E f r Sens_1 festgelegt. Kontrollanweisungen Mit Kontrollanweisungen wird der Programmfluss in Abh ngigkeit von Bedingungen beein-flusst, um in verschiedene Anweisungsfolgen zu verzweigen. Man unterscheidet Auswahl-anweisungen, Wiederholungsanweisungen (Schleifenbearbeitung) und Programmspr nge.