Grundlagen der Programmierung mit Strukturiertem Text

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
Einführung in die Informatik: Programmierung und Software-Entwicklung
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Zusammenfassung der Vorwoche
Telefonnummer.
10. Grundlagen imperativer Programmiersprachen
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
= = = = 47 = 47 = 48 = =
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
AC Analyse.
Prof. Dr. Bernhard Wasmayr
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
DVG Ablaufsteuerung
Schleifen mit der Turtle
Informatik Grundkurse mit Java
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
20:00.
Die Geschichte von Rudi
Informatik 1 Übung 2.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
für Weihnachten oder als Tischdekoration für das ganze Jahr
TWS/Graph HORIZONT Produktionsüberwachung für “TWS for z/OS”
Debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Einführung in die Programmierung
Einführung in die Programmiersprache C 4
Wiederholte Programmausführung
NEU! 1 2. Wo kommt diese Art von Rezeptor im Körper vor?
Analyse von Ablaufdiagrammen
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
PROCAM Score Alter (Jahre)
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Grundkonzepte des Programmierens (mit ActionScript)
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Symmetrische Blockchiffren DES – der Data Encryption Standard
Purga - Scriptengine Ein Einblick.
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
Einführung in PHP.
Einführung in PHP 5.
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Datentypen: integer, char, string, boolean
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
PHP: Operatoren und Kontrollstrukturen
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Variablen. var meineZahl:Number = 7; meineZahl 7 Name TypWert = Zuweisung von Variablen.
Hochschule Fulda – FB ET Sommersemester 2014
Befehle in der Kontaktplan-Programmierung
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Einführung in die Programmiersprache C 2
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
The Programming Language Pascal
 Präsentation transkript:

Grundlagen der Programmierung mit Strukturiertem Text Strukturierter Text Grundlagen der Programmierung mit Strukturiertem Text

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

Vorteile der ST Programmierung Einfach lesbarer Code Portabler Code (99%) zu IEC61131-3 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)

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

ST Editor Variablen Deklaration ST Programm Editor

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

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

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

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

Reservierte Schlüsselwörter: Syntax Regeln Reservierte Schlüsselwörter: Schlüsselwörter dürfen nicht verwendet werden, da diese für ST Kommandos reserviert sind. 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.. Sonderzeichen können nicht in Variabel Namen benutzt werden. Ausnahme: Tiefstrich “_” (nicht an erster Position) >, <=, >=, <>, :=, -, *, /, &, (*,*), %,$,@... 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…

Übung 1 Finde die 7 Fehler… : ;

Operatoren ( ) Ausführungs Priorisierung Value:=(1+2) *(3+4) // Value is 21 Priorität: ( ), NOT, **, * / , MOD, + - ** Exponent Value:= 2**8 ; // Value is 256 NOT Negierung Value:=NOT TRUE; //Value is FALSE * Multiplikation Value:=8 * 100; // Value is 800 / Division Value:=200 / 25; // Value is 8 + Addition Value:=200 + 25; // Value is 225 - Subtraktion Value:=200 - 25; // Value is 175 MOD Modulo (Rest) Value:=10 MOD 6; // Value is 4 <,>,<=,>= Vergleiche Value:= 60 > 10; // Value is TRUE = Vergleich (Ist gleich) Value:= 8=7; // Value is FALSE <> Vergleich (Ungleich) Value:= 8<>7; // Value is TRUE &, AND Logisches UND Value:=2#1001 AND 2#1100; //Value is 2#1000 XOR Logisches Exklusives ODER Value:=2#1001 XOR 2#1100; //Value is 2#0101 OR Logisches ODER Value:=2#1001 XOR 2#1100; //Value is 2#1101 120 NJ5_ST introduction_v3.2_E.ppt

ST Standard Kommandos Fallunterscheidungen Verzweigung Schleifen 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 Bedingung IF THEN Einfache Bedingung: IF .. THEN .. END_IF Die <Bedingung> wird geprüft, und die <Anweisung(en)> 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 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

ST Bedingung IF THEN 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 Wenn Bedingung erfüllt ist wird nur „Anweisung_1“ ausgeführt, wenn Bedingung nicht erfüllt ist, nur „Anweisung_2“

ST Bedingung IF THEN ELSIF Erweiterte IF Anweisung mit ELSIF <Bedingung_1> wird geprüft und <Anweisung_1> ausgeführt wenn nötig Nach <Bedingung_1> 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

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!

ST Verzweigung CASE Verzweigung mit CASE..OF … ELSE …END_CASE Abhängig vom <Status> 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.

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…

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

ST Verzweigung CASE Beispiel mit Enumerator ENUM Deklaration Variablen Deklaration

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

Übung 2 Lösung Erstellen sie den folgenden Ablauf

Übung 3 Lösung Erstellen sie den folgenden Ablauf

Übung 4 Lösung 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

ST Schleifen FOR Bedingte Schleifen: FOR.. (BY) .. DO..END_FOR Wiederholt die Anweisungen zwischen FOR und END_FOR in einer Schleife von <Anfangswert> bis <Endwert> Wenn Endwert erreicht ist wird zu END_FOR gesprungen Die <Schrittweite> 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 FOR.. (BY) .. DO..END_FOR Beispiel Ohne “BY“ Kommando, wird die Zählervariable bei jedem Durchlauf automatisch um +1 erhöht.

ST Schleifen WHILE Bedingte Schleifen: WHILE.. DO..END_WHILE Wiederholt die <Anweisungen> zwischen WHILE .. END_WHILE solange die <Bedingung> 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 WHILE..DO..END_WHILE Beispiel Die Schleife wird verlassen wenn counter den Wert 10 erreicht. Value wird 10 sein. ACHTUNG Endlosschleife !:

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

Übung 5b Lösung 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 Eingabe Ausgabe 1 2 3 4 5 6 8 7 13 21 9 34 10 55 11 89 12 144 ..

ST Schleifen REPEAT UNTIL Bedingte Schleifen: REPEAT .. UNTIL .. END_REPEAT 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 REPEAT..UNTIL..END_REPEAT Beispiel Nach END_REPEAT, counter ist gleich 142

ST Schleifen WHILE REPEAT Unterschied zwischen WHILE Schleife und REPEAT Schleife WHILE REPEAT 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 EXIT 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 EXIT Beispiel WHILE wird spätestens nach 40 Durchgängen mit EXIT Befehl abgebrochen

Übung 6 Schreiben sie eine Funktion um die Fakultät n! zu berechnen Tipps: 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

Übung 6 Lösung Function Programm Beispiel Aufruf:

Funktionsblock Aufruf in ST Ein Funktionsblock muss mit einer vorgängig deklarierten Instanz aufgerufen werden InstanzName (<Input_1>:=… , <Input_n>:=… , <Output_1> =>… , <Output_n> =>… , <Input_output_1> :=… , <Input_output_n>):=… ); Eingange werden zugewiesen mit “:= “ Ausgänge werden zugewiesen mit “ =>” Ein/Ausgänge können mit beidem zugewiesen werden (Vorzugsweise “:= “)

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

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

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

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

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

Strukturen Auf die Elemente einer Struktur kann mit dem “.” zugegriffen werden <variable>:= <Type> . <Type Element>; Name:= Person.Nachname; Beispiel: Strukturen können verschachtelt werden <variable>:= <Type_1> . <Type_2> . <Type_2 Element>; Vorname:= Person.Kind.Vorname; Beispiel:

Strukturen 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;

Übung 7 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 Lösung

Funktionsblock Aufruf in ST vs. KOP 

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

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.

Vergleich zwischen KOP und ST Flankenerkennung oder ….

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