Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Strukturierter Text Grundlagen der Programmierung mit Strukturiertem Text.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Strukturierter Text Grundlagen der Programmierung mit Strukturiertem Text."—  Präsentation transkript:

1 1 Strukturierter Text Grundlagen der Programmierung mit Strukturiertem Text

2 2 Programmierung mit Strukturiertem Text Übersicht: Vorteile der ST Programmierung ST Editor Zuweisungen Kommentare Variablen Syntax Regeln Operatoren Standard Kommandos Bedingung IF THEN Verzweigung CASE Schleifen FOR Schleifen WHILE Schleifen REPEAT UNTIL Funktionsblock Aufruf in ST Funktions Aufruf in ST Strukturen FUB Aufruf ST vs. KOP Vergleiche zwischen KOP und ST

3 3 Vorteile der ST Programmierung Einfach lesbarer Code Portabler Code (99%) zu IEC Dritthersteller Editierbar in Text Editor Effizienter Code, besser als KOP oder FBD Bequeme Verwendung von Strukturen (komplexe Datentypen) Kürzere Entwicklungszeit Mischen von KOP und ST möglich (InLine ST)

4 4 ST Editor GRÜN: Kommentare GRÜN: Kommentare BLAU: Ablauf, Anweisungen, Operatoren BLAU: Ablauf, Anweisungen, Operatoren ROT: Globale Variablen, Globale Konstanten, Strings ROT: Globale Variablen, Globale Konstanten, Strings Syntax Einfärbung Standardfarben, diese können teilweise in den Optionen umgestellt werden SCHWARZ: Variablen, Konstanten, Funktionen, Funktionsblöcke SCHWARZ: Variablen, Konstanten, Funktionen, Funktionsblöcke

5 5 ST Editor Variablen Deklaration Variablen Deklaration ST Programm Editor ST Programm Editor

6 6 Zuweisungen Zuweisungen von Werten, Ausdrücken oder Zuständen mit := Es können Leerzeichen und Tabulatoren verwendet werden um die Lesbarkeit zu verbessern Anweisungen müssen am Zeilenende mit einem Semikolon abgeschlossen werden ;

7 7 Zuweisungen Integer Werte können auch Binär oder Hexadezimal eingegeben werden Komplexe, lange Ausdrücke können auf mehrere Linien gesplittet werden mittels Return ( ). Der Ausdruck wird mit dem Semikolon ; abgeschlossen

8 8 Blockkommentare können irgendwo im ST Programm platziert werden, verwendet als Zeilen oder Mehrzeilen Kommentar. Start mit (* Ende mit *) Kommentare Linienkommentare können mit // begonnen werden

9 9 Variablen Deklaration : –Der Compiler unterscheidet nicht zwischen Klein - und Großschreibung. In der Praxis ist empfohlen immer die gleiche Schreibweise zu verwenden um die Lesbarkeit zu verbessern. Nicht empfohlen Lesbar + Konsistent Variablen

10 10 Variablen Deklaration : –Noch nicht deklarierte Variablen werden mit einem blauen Rechteck markiert. –Durch anklicken dieser Markierung kann die Variable generiert werden (Lokal) –Jetzt muss nur noch der Datentyp eingegeben werden Variablen

11 11 –Sonderzeichen können nicht in Variabel Namen benutzt werden. Ausnahme: Tiefstrich _ (nicht an erster Position) >, =, <>, :=, -, *, /, &, (*,*), Reservierte Schlüsselwörter : –Schlüsselwörter dürfen nicht verwendet werden, da diese für ST Kommandos reserviert sind. –Datentypen, und benutzerdefinierte Typen können nicht als Vaiabelname verwendet werden BOOL, USINT, SINT, BYTE, UINT, INT,WORD, REAL, DINT, UDINT, DWORD, LREAL, LINT, ULINT, LWORD… AND, BY, CASE, DO, ELSE, ELSIF, EXIT, FALSE, FOR, IF, NOT, OF, OR, REPEAT, RETURN, THEN, TO, TRUE, UNTIL,WHILE, XOR, END_IF,END_WHILE, END_CASE, END_REPEAT.. Syntax Regeln

12 12 Übung 1 Finde die 7 Fehler… : ;

13 13 ( ) Ausführungs PriorisierungValue:=(1+2) *(3+4) // Value is 21 Priorität: ( ), NOT, **, * /, MOD, + - ** ExponentValue:= 2**8 ; // Value is 256 NOT NegierungValue:=NOT TRUE; //Value is FALSE * MultiplikationValue:=8 * 100; // Value is 800 / DivisionValue:=200 / 25; // Value is 8 + AdditionValue:= ; // Value is SubtraktionValue:= ; // Value is 175 MOD Modulo (Rest)Value:=10 MOD 6; // Value is 4, = VergleicheValue:= 60 > 10; // Value is TRUE = Vergleich (Ist gleich)Value:= 8=7; // Value is FALSE <> Vergleich (Ungleich)Value:= 8<>7; // Value is TRUE &, AND Logisches UNDValue:=2#1001 AND 2#1100; //Value is 2#1000 XOR Logisches Exklusives ODERValue:=2#1001 XOR 2#1100; //Value is 2#0101 OR Logisches ODERValue:=2#1001 XOR 2#1100; //Value is 2#1101 Operatoren

14 14 Fallunterscheidungen –IF..THEN....END_IF –IF..THEN….ELSE….END_IF –IF..THEN….ELSIF..THEN…END_IF Verzweigung –CASE..OF….END_CASE Schleifen –FOR.. (BY).. DO..END_FOR –WHILE..DO….END_WHILE –REPEAT...UNTIL…END_REPEAT –EXIT ST Standard Kommandos

15 15 Einfache Bedingung: IF.. THEN.. END_IF –Die wird geprüft, und die zwischen THEN und END_IF ausgeführt wenn die Bedingung zutrifft –Wenn die Bedingung nicht zutrifft werden die Anweisungen zwischen THEN und END_IF übersprungen. ST Bedingung IF THEN

16 16 ST Bedingung IF THEN IF..THEN..END_IF Beispiel: –Value wird auf 10 gesetzt, wenn Enable TRUE ist und PowerON FALSE. –Ist Enable FALSE oder PowerON TRUE, wird Value auf 0 gesetzt

17 17 ST Bedingung IF THEN –Wenn Bedingung erfüllt ist wird nur Anweisung_1 ausgeführt, wenn Bedingung nicht erfüllt ist, nur Anweisung_2 –Eine IF Anweisung wird nur ausgeführt wenn die Bedingung TRUE ist. Um auch den anderen Fall abzufangen, also wenn die Bedingung FALSE ist, brauchen wir die ELSE Anweisung. When TRUE When FALSE

18 18 ST Bedingung IF THEN ELSIF – wird geprüft und ausgeführt wenn nötig –Nach wird ein ELSIF nach dem anderen abgearbeitet. Es können also mehrere Bedingungen und Anweisungen durchlaufen werden –Wenn keine der Bedingung zutrifft wird die ELSE Anweisung ausgeführt Erweiterte IF Anweisung mit ELSIF

19 19 ST Bedingung IF THEN ELSIF – IF THEN ELSEIF Fallunterscheidungen können geschachtelt werden Jede verschachtelte Sektion muss mit END_IF abgeschlossen sein. Es ist sehr empfohlen die Sektionen einzurücken für bessere Lesbarkeit. Dies wird durch den Editor unterstützt. Theoretisch kann bis zu einer tiefe von 15 Stufen verschachtelt werden, was natürlich kein schöner Code ist!

20 20 ST Verzweigung CASE Verzweigung mit CASE..OF … ELSE …END_CASE –Abhängig vom wird der entsprechende Zweig ausgeführt. –Ist keine der Konditionen zutreffend kann optional eine ELSE Anweisung abgearbeitet werden –Es ist immer nur ein Zweig pro durchlauf aktiv.

21 21 ST Verzweigung CASE CASE..OF.. END_CASE Beispiel : Wichtig: Wird der Status innerhalb der Case Struktur geändert, wird dies erst im nächsten Zyklus aktiv. Am Ende des Zweigs wird immer zu END_CASE gesprungen. Dies kann ausgenützt werden um Zykluszeit zu sparen…

22 22 ST Verzweigung CASE value=20 Nächster Zyklus value=30 Nächster Zyklus value=40 Nächster Zyklus value=50 Immer nur ein Status innerhalb der Case Struktur ist aktiv Nächster Zyklus value=20 value=10

23 23 ST Verzweigung CASE Beispiel mit Enumerator ENUM Deklaration Variablen Deklaration

24 24 ST Verzweigung CASE Beispiel mit Mehrfachauswahl Mehrfachauswahl ist möglich, durch Kommagetrennte Werte oder mit.. als Bereichsangabe

25 25 Übung 2 Erstellen sie den folgenden Ablauf Lösung

26 26 Übung 3Lösung Erstellen sie den folgenden Ablauf

27 27 Übung 4 Erstellen sie ein Programm in ST für eine Pumpensteuerung: -Pumpe 1 einschalten bis Schalter 1 anspricht -Wenn Schalter 1 anspricht schaltet Pumpe 2 ebenfalls ein, bis Schalter 3 anspricht. -Wenn Schalter 3 anspricht 3. Pumpe einschalten. -Wenn Hauptschalter ausgeschaltet ist alle Pumpen ausschalten. Tipp: Lösen mit CASE und IF Lösung

28 28 Bedingte Schleifen: FOR.. (BY).. DO..END_FOR –Wiederholt die Anweisungen zwischen FOR und END_FOR in einer Schleife von bis –Wenn Endwert erreicht ist wird zu END_FOR gesprungen –Die Angabe ist optional. Standard ist 1 –Zähler, Anfangswert, Endwert und Schrittweite müssen vom selben Datentyp sein –Achtung! Die Schleife wird nicht unterbrochen. Zu viele Wiederholungen / Anweisungen oder Endlosschlaufen führen zu Zykluszeitverletzung ST Schleifen FOR

29 29 ST Schleifen FOR FOR.. (BY).. DO..END_FOR Beispiel –Ohne BY Kommando, wird die Zählervariable bei jedem Durchlauf automatisch um +1 erhöht.

30 30 Bedingte Schleifen: WHILE.. DO..END_WHILE –Wiederholt die zwischen WHILE.. END_WHILE solange die erfüllt ist. –Wenn die Bedingung nicht erfüllt ist, wird die Schleife beendet. –Die WHILE Schleife ist Kopfgesteuert (wird evtl. nie durchlaufen) –Die Programmabarbeitung bleibt solange in der WHILE Schleife bis die Bedingung nicht mehr erfüllt ist. Gefahr von Zykluszeitverletzung durch zu viele Anweisungen oder Endlosschlaufe ST Schleifen WHILE

31 31 WHILE..DO..END_WHILE Beispiel Die Schleife wird verlassen wenn counter den Wert 10 erreicht. Value wird 10 sein. ST Schleifen WHILE – ACHTUNG Endlosschleife !:

32 32 Übung 5a Schreiben sie ein Programm, welches ein Dreiecksignal generiert mit 200 Schritten, und in einem Array abspeichert Triangle: Array[1..200] Array value Lösung

33 33 Übung 5b Schreiben sie ein Programm welche die Fibonacci Zahl berechnen kann. Sie fangen mit 0 und 1 an, dann ist jede Fibonacci-Zahl gleich der Summe der beiden vorhergehenden Fibonacci-Zahlen EingabeAusgabe Lösung

34 34 –Anweisung wird ausgeführt, dann die Bedingung geprüft, ist die Bedingung FALSE, wird die Schleife weiter durchlaufen. Bis die Bedingung zutrifft. –REPEAT ist Fussgesteuert, wird also mindestens einmal durchlaufen –Die Programmabarbeitung bleibt solange in der WHILE Schleife bis die Bedingung nicht mehr erfüllt ist. Gefahr von Zykluszeitverletzung, durch zu viele Anweisungen oder Endlosschlaufe ST Schleifen REPEAT UNTIL Bedingte Schleifen: REPEAT.. UNTIL.. END_REPEAT

35 35 REPEAT..UNTIL..END_REPEAT Beispiel Nach END_REPEAT, counter ist gleich 142 ST Schleifen REPEAT UNTIL

36 36 Unterschied zwischen WHILE Schleife und REPEAT Schleife WHILEREPEAT –Bedingung wird VOR der Schleife geprüft –Schleife wird nie ausgeführt wenn Bedingung nicht erfüllt ist –Bedingung wird NACH der Schleife geprüft. –Die Schleife wird immer mindestens einmal durchlaufen ST Schleifen

37 37 Unterbrechen von bedingten Schleifen: EXIT –EXIT Kommando wird normalerweise in Verbindung mit Schleifen verwendet –EXIT ist zum unterbrechen der Schleife aufgrund einer Bedingung –EXIT Befehl kann hilfreich sein um Endlosschleifen zu verhindern und Zykluszeit zu sparen z.B. suchen bis gefunden –EXIT kann in allen Schleifen verwendet werden FOR / WHILE / REPEAT ST Schleifen EXIT

38 38 EXIT Beispiel –WHILE wird spätestens nach 40 Durchgängen mit EXIT Befehl abgebrochen ST Schleifen EXIT

39 39 Schreiben sie eine Funktion um die Fakultät n! zu berechnen Die Fakultät von 0! ist 1. Falls der eingegebene Wert negativ ist soll 0 returniert werden Die Ausgabe soll als DWORD erfolgen, maximaler Eingabewert: 31 Tipps: Übung 6

40 40 Function Programm Beispiel Aufruf: Übung 6 Lösung

41 41 Ein Funktionsblock muss mit einer vorgängig deklarierten Instanz aufgerufen werden Eingange werden zugewiesen mit := Ausgänge werden zugewiesen mit => Ein/Ausgänge können mit beidem zugewiesen werden (Vorzugsweise := ) Funktionsblock Aufruf in ST InstanzName ( :=…, :=…, =>…, =>…, :=…, ):=… ); InstanzName ( :=…, :=…, =>…, =>…, :=…, ):=… );

42 42 Beispiel Funktionsblock Aufruf Funktionsblock Aufruf in ST P_oN2( Axis := MC_Axis001, Enable := BB, Axis =>, Status =>ok2, Busy =>NotReady, Error =>Alarm, ErrorID =>ErrID); P_oN2( Axis := MC_Axis001, Enable := BB, Axis =>, Status =>ok2, Busy =>NotReady, Error =>Alarm, ErrorID =>ErrID); KOP: P_oN2 ist eine Instanz des Funktionsblock MC_Power

43 43 Die unbenutzten Ein- und Ausgänge können leergelassen oder gar weggelassen werden beim Aufruf Die weggelassenen Parameter werden auf default Werte gesetzt Beispiel Funktionsblock Aufruf in ST p_oN ( Axis := MC_Axis000, Enable := AA, Axis =>, Status => ok, Busy =>, Error =>, ErrorID =>); p_oN ( Axis := MC_Axis000, Enable := AA, Axis =>, Status => ok, Busy =>, Error =>, ErrorID =>); p_oN ( Axis := MC_Axis000, Enable := AA, Status => ok); p_oN ( Axis := MC_Axis000, Enable := AA, Status => ok);

44 44 Ausgangswerte können auch durch Zugriff auf die entsprechenden Elemente der (Instanz)Struktur ausgelesen werden Funktionsblock Aufrufe in ST ok:= p_oN.Status ; NotReady:= p_oN.Busy ; p_oN(Enable:=AA) ; p_oN ( Axis := MC_Axis000, Enable := AA, Axis =>, Status => ok, Busy => NotReady, Error =>, ErrorID =>); p_oN ( Axis := MC_Axis000, Enable := AA, Axis =>, Status => ok, Busy => NotReady, Error =>, ErrorID =>);

45 45 Eine Funktion kann normal aufgerufen werden, es ist keine Deklaration oder Instanz nötig Beispiel: Production_1:=ProductionSpeed( Enable:=TRUE, SetPoint:=45, Diameter:=345.6); Production_2 :=ProductionSpeed( Enable:=TRUE, SetPoint:=46, Diameter:=220); Production_1:=ProductionSpeed( Enable:=TRUE, SetPoint:=45, Diameter:=345.6); Production_2 :=ProductionSpeed( Enable:=TRUE, SetPoint:=46, Diameter:=220); := FunctionName(,…, ) Funktions Aufruf in ST

46 46 Die unbenutzten Eingänge können leergelassen oder weggelassen werden Die weggelassenen Parameter werden auf default Werte gesetzt Beispiel: Funktions Aufruf in ST Production_3:= ProductionSpeed ( Enable:=, Diameter:=345.6); Production_3:= ProductionSpeed ( Enable:=, Diameter:=345.6); Production_3:= ProductionSpeed( Diameter:=345.6); Production_3:= ProductionSpeed( Diameter:=345.6);

47 47 :=. ; :=.. ; Auf die Elemente einer Struktur kann mit dem. zugegriffen werden Strukturen Strukturen können verschachtelt werden Name:= Person.Nachname; Beispiel: Vorname:= Person.Kind.Vorname; Beispiel:

48 48 Beispiel: Motor_1.Enable:=TRUE; Motor_1.Setpoint:=459; Motor_1.Value:=0; EncoderValue:= Motor_1.Encoder; Motor_1.Status.StandStill:=TRUE; Motor_1.Status.StateCode:=100; Motor_1.Enable:=TRUE; Motor_1.Setpoint:=459; Motor_1.Value:=0; EncoderValue:= Motor_1.Encoder; Motor_1.Status.StandStill:=TRUE; Motor_1.Status.StateCode:=100; Strukturen

49 49 Erstelle folgenden Funktionsblock in ST: – Execute Eingang positiv Flanken getriggert –Mit jeder steigenden Flanke am Eingang soll die Ausgangsvariable Value um 1 erhöht werden bis 5, dann zurücksetzen –Ein Bit Ausgang soll mit jeder Flanke am Eingang Execute alternieren von ON-OFF-ON … –Ein Reset Eingang soll beide Ausgänge zurücksetzen Aufruf des Funktionsblockes aus ST Programm und KOP Übung 7

50 50 Übung 7 Lösung

51 51 Funktionsblock Aufruf in ST vs. KOP

52 52 Vergleich zwischen KOP und ST Logische Verknüpfung Bedingte Zuweisung Zuweisung

53 53 Vergleich zwischen KOP und ST Verzweigung *Die Lock Variable wird hier verwende um das CASE verhalten zu erreichen, das heißt nur ein Zweig pro Zyklus wird bearbeitet.

54 54 Vergleich zwischen KOP und ST Flankenerkennung oder ….

55 55 Vergleich zwischen KOP und ST Timer und Zähler Deklaration der FB Instanzen

56 56


Herunterladen ppt "1 Strukturierter Text Grundlagen der Programmierung mit Strukturiertem Text."

Ähnliche Präsentationen


Google-Anzeigen