3 Die Sprache ST bzw. SCL im Detail

Ähnliche Dokumente
IEC Windows- Programmiersoftware für APS-Systeme

4.Grundsätzliche Programmentwicklungsmethoden

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Inhaltsverzeichnis. Vorwort NXTundNXC DerNXT NXC Not exactly C Compiler Zusammenfassung 17

IEC Windows- Programmiersoftware für CPS500

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Roboter programmieren mit NXC für LEGO MINDSTORMS NXT

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Welche Informatik-Kenntnisse bringen Sie mit?

- Speicherprogrammierte Steuerung: Realisierung durch ein Programm, welches auf einem SPS-Baustein ausgeführt wird. Regelungs- und Steuerungstechnik

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife

Vorkurs Informatik WiSe 16/17

RO-Tutorien 3 / 6 / 12

Thomas Binzinger. Jetzt lerne ich. Delphi. Markt+Technik Verlag

KOP / FBS - Programmierung

Folge 9: Parametrierbare Funktionen und Einstieg in die AWL Programmierung

Inhaltsverzeichnis.

Elementare Konzepte von

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

6. Zeiger Allgemeines Definition eines Zeigers

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Inhaltsverzeichnis. Mehr Informationen zum Titel

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Kapitel 3: Variablen

Einführung in die Programmierung mit VBA

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

Automatisierungstechnik nach internationaler Norm programmieren (3) Folge 3: Einführung in die Handhabung von POE s und Bibliotheken

Repetitorium Informatik (Java)

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Kapitel 05. Datentypen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Einführung und Übersicht

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Algorithmen und Programmierung II

Webbasierte Programmierung

Modul SPS-Programmierung im TIA Portal

Übungspaket 14 Eindimensionale Arrays

Inhaltsverzeichnis. 1 Grundlagen 1. 2 Einfache Programme 21

2. Programmierung in C

Werkzeuge zur Programmentwicklung

Kurze Einführung in die Programmiersprache C++ und in Root

Vorkurs C++ Programmierung

4. Ablaufsteuerung (Kontrollstrukturen) 4.1 Anweisungen 4.2 Selektion (bedingte Anweisung) 4.3 Iteration 4.4 Flussdiagramm (Programmablaufplan)

+ C - Array (Vektoren, Felder)

Programmieren in C/C++ und MATLAB

Programmieren I. Kapitel 5. Kontrollfluss

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

Einführung in die C-Programmierung

Realisierung von UMCM über den IBH Link UA mit Simatic S5 und S7 Steuerungen

Sin-Funktion vgl. Cos-Funktion

GI Vektoren

SPS-Grundlagen. Aufbau, Programmierung (IEC 61131, S7), Simulation, Internet, Sicherheit. Bearbeitet von Jens von Aspern

Felder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden

Ein NI-LabVIEW-Toolkit für die Erstellung von vollwertigen, virtuellen SPS-Funktionen

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

Einstieg in die Informatik mit Java

Grundkurs Software- Entwicklung mit C++

SPS S90U. 1. Grundlagen SPS Funktion

Grundlagen der Programmierung Teil1 Einheit III Okt. 2009

8. Einsatz von Funktionen

Einführung in Automation Studio

Deklarationen in C. Prof. Dr. Margarita Esponda

Institut für Computational Science Prof. Dr. H. Hinterberger. Praxismodul 1. Einführung in die Programmierung Erste Programme

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Imperative vs. Funktionale Programmierung

Lua Grundlagen Einführung in die Lua Programmiersprache

Programmieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff

Objektorientierte Programmierung OOP Programmieren mit Java

Modellierung und Programmierung 1

Wo sind wir? Kontrollstrukturen

Kontrollstrukturen. Wo sind wir? Anweisung mit Label. Block. Beispiel. Deklarationsanweisung

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

3.14 Die Programmieroberfläche Programmierung

C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue

Wie entwerfe ich ein Programm?

Grundlagen der Programmierung

VisualBasic - Variablen

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Kontrollstrukturen

Übungspaket 23 Mehrdimensionale Arrays

Kontrollstrukturen Blöcke / Schleifen / Bedingungen

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 12

Prof. H. Herbstreith 10. Juli Uhr bis 11:00 Uhr Leistungsnachweis Informatik 1 SS 2001

2. Programmierung in C

Grundlagen der Fortran Sprache

Übungspaket 23 Mehrdimensionale Arrays

ALGOL 68 im Aspekt einer modernen Programmiersprache???

Tutorium für Fortgeschrittene

Programmiertechnik Kontrollstrukturen

Felder (1) Allgemeines

Klausur zur Wirtschaftsinformatik II im Grundstudium

Schleifen in Javascript

Automatisierungstechnik nach internationaler Norm programmieren. Folge 2: Gestaltung einer ersten Programmorganisationseinheit

E-PRIME TUTORIUM Die Programmiersprache BASIC

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002

Einführung in die Programmierung 1

Objektorientierte Programmierung OOP Programmieren mit Java

Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3

Kompatibilität Integrated. Technology. Integrated system diagnosis. Safety. Integrated. V11/V12 Kompatibilität. Migration von STEP7 V5.

C-Programmierung unter TOS ATARI ST

Transkript:

3 Die Sprache ST bzw. SCL im Detail 3.1 Unterschiede in den einzelnen Sprachen ST/SCL Obwohl gerade die Übertragbarkeit des ST in der Industrie gelobt wird, haben die Tests in diesem Buch auch gravierende Unterschiede gezeigt, auf die in diesem Buch immer wieder eingegangen werden muss. An dieser Stelle sollen einige markante Punkte zusammengefasst werden. 3.1.1 Unterschiede in der Variablendarstellung Durch die Unterschiede in der Variablendarstellung innerhalb des Programm- Codes wird die Möglichkeit, mittels Kopieren der Inhalte der Programme oder von Baustein-Teilen diese zu übertragen stark eingeschränkt. Hier hilft die Funktion <Suchen><Ersetzen> oder <Suchen><Löschen> vielfach weiter. Das wichtigste Element ist das # und die -Zeichen in den SCL-Programmen. Statement SCL (* DB _Waschm1 = Name des Datenbausteins, x_x5verschlusszu = Name der Variablen *) #x_motor := #x_start AND "DB_Waschm1".x_X5VerschlussZu ; Anmerkung für SCL: # Kennung für eine lokale Variable Datenbaustein.Variable Statement ST x_motor := x_start AND x_x5verschlusszu ; Hinweis: Wenn ST-Code zum TIA Portal/SCL eingefügt wird, ergänzt der SCL-Editor (TIA Portal) die Variablen automatisch.

68 3 Die Sprache ST bzw. SCL im Detail Beispiel: PC-Worx-Programm x_motor := x_in1 AND x_in2 OR (i_anzahl =0 ) ; Nach dem Kopieren zum TIA Portal x_motor := "x_in1" AND "x_in2" OR (i_anzahl = 0); Nach der Bekanntgabe der Variablen im TIA Portal #x_motor := "x_in1" AND "x_in2" OR (#i_anzahl = 0); # = Variable Lokal, = Variable Global 3.1.2 Unterschiede in der Programmierung Beim Aufruf von Funktionen oder Funktionsbausteinen zeigen sich deutliche Unterschiede. Diese Unterschiede sollten bekannt sein, bilden aber keine Nachteile, da jedes Problem auf unterschiedlichen Wegen gelöst werden kann. Im Weiteren werden einige Hinweise dazu gegeben. 3.1.2.1 PC Worx Ansprache eines Arrays (zweidimensional) Die Unterschiede bestehen (insbesondere bei PC Worx) in der Bekanntgabe eines mehrdimensionalen Felds und auch hinsichtlich der Ansprache der einzelnen Array- Felder. Vergleich: Ansprache eines Arrays (2D) im PC Worx: i_erg := Arri_Messwerte[5][7]; Ansprache eines Arrays (2D) bei Codesys 2.3/TIA Portal/logi.CAD 3 Sonst ST oder SCL: i_erg := Arri_Messwerte[5,7]; Wenn Softwareinhalte übertragen werden sollen, können die notwendigen Korrekturen mit <Suchen><Ersetzen> durchgeführt werden.

3.1 Unterschiede in den einzelnen Sprachen ST/SCL 69 3.1.2.2 Unterschiede bei der Bekanntgabe von Startwerten (Initialisierung) Bei Codesys 2.3 und dem TIA Portal können die Start- oder Initialwerte direkt bei der Variablendeklaration vorgegeben werden. Bei PC Worx oder logi.cad 3 geschieht diese Initialisierung als Zuweisung im Programm, oder in getrennten, speziellen Funktionsbausteinen. Dieser Weg kann sehr hilfreich sein, da damit auch Umschaltungen (Sprache, Rezepturen, Nockenschaltwerke) ohne Neustarts während des laufenden Betriebs möglich sind. Ebenso können durch Import neuer Funktionsbausteine neue Sprachen, Rezepturen, Programmsteuerungen u. v. m. integriert werden, ohne in die Details der Steuerung einzugreifen (siehe auch Kapitel 4 und 10). 3.1.2.3 PC Worx Unterschiede Bekanntgabe von Arrays oder Strukturen Der Weg Arrays bekannt zu geben, differiert am deutlichsten bei PC Worx. Bei dieser Softwareumgebung wird das Array als eigener Datentyp definiert und zur Anwendung in den einzelnen Bausteinen instanziiert, bzw. wie in einer Mutter-Kind-Beziehung vererbt (siehe auch Kapitel 2 und 4). 3.1.2.4 PC Worx Unterschiede bei Zuweisungs- und Testaktionen Bei allen arithmetischen Funktionen und Vergleichen geht der Compiler von dem Typ INTEGER oder höher aus. Wird der Wert einem USINT, WORD usw. zugewiesen oder dagegen getestet, muss der Typ vorangestellt werden (siehe Beispiele). Arithmetik PC Worx (beachte usint#1) usi_xnr := usint#1; (* Schrittzeiger rücksetzen *) Testaktion PC Worx (beachte word#16#1) WHILE w_sk001copy <> word#16#1 DO 3.1.2.5 Ansprache von Bit in Byte WORD,... Allgemein lassen es die getesteten Systeme zu, Elemente einer Variablen direkt abzufragen (Bit in Byte oder WORD bzw. Doppelword, Byte in WORD oder Doppelword, WORD in Doppelword). Die Syntax weicht jedoch teilweise ab. Aufgabe: Das 5. Bit eines Status-Word (w_status) wird einem Motor zugewiesen (x_motor5).

70 3 Die Sprache ST bzw. SCL im Detail Beispiel Codesys 2.3: x_motor5 := w_status.5 ; Beispiel PC Worx: x_motor5 := w_status.x5 ; Beispiel TIA Portal (SCL): eingeben wird: x_motor5 := w_status.x5 ; Es erscheint automatisch: x_motor5 := w_status.%x5 ; 3.1.2.6 Unterschiede bei den Funktionen Je nachdem wie stark sich die einzelnen Systeme an der IEC 61131-3 ausrichten, fallen die Möglichkeiten der Funktionen unterschiedlich aus. Jede Norm bringt viele Vorteile für den Anwender, schränkt aber auch die Möglichkeiten, Kreativität und Flexibilität der Hersteller ein. Diese Tatsache bestimmt sehr stark die Freiheiten der Funktionen und die Art der Realisierung. 3.1.2.6.1 PC Worx In PC Worx kann der Anwender den Funktionsausgang nutzen (keine zusätzlichen Ausgänge) und dieser Funktionsausgang kann nur ein Grund-Datentyp sein (kein Array und keine Struktur). Anmerkung: Darin liegt kein Nachteil, da alle Funktionen auch problemlos als Funktionsbaustein realisiert werden können. 3.1.2.6.2 Codesys 2.3 Codesys 2.3 lässt nur den Funktionsausgang zu, erlaubt aber als Funktionsausgänge Arrays und Strukturen, sowie innerhalb der Funktion den Zugriff auf globale Variablen. Damit hat der Anwender viele Freiheiten. 3.1.2.6.3 TIA Portal (SCL) Das TIA Portal (SCL) lässt neben der Datenausgabe über den Funktionsausgang weitere Ausgänge zu, ebenso höhere Datentypen und Strukturen.

3.2 Mittel für den grafischen Vorentwurf 71 3.1.2.7 Zusätzliche Möglichkeiten der Programmsteuerung mit SCL: GOTO SCL (S7-1200) hat zur Programmsteuerung noch zusätzlich das GOTO. Diese Anweisung in einem Programm würde bewirken, dass es kaum noch auf andere Steuerungshersteller übertragbar ist. Gerade das GOTO sollte daher kritisch gesehen werden, da es aus der Basic-Welt stammt oder der historischen AWL mit JMP-Befehlen usw. Details hierzu finden sich im Abschnitt zu Kontroll- und Schleifenanweisungen. 3.1.2.8 Unterschiede bei den CASE-Anweisungen SCL lässt überschneidende Schaltziele oder CASE-Werte zu, während PC Worx und Codesys auf derartige Überschneidungen beim anschließenden Kompilieren bzw. Übersetzen mit einer Fehlermeldung reagieren. Details werden unter CASE- Anweisungen beschrieben. 3.2 Mittel für den grafischen Vorentwurf In der Automatisierungstechnik werden häufig zum Erstentwurf Darstellungsmittel benutzt, mit denen die Steuerung noch nicht direkt programmiert werden kann. Diese Entwurfsmittel sind also unabhängig von dem Automatisierungssystem und der verwendeten Programmiersprache. Zu diesen Beschreibungsmitteln gehören Struktogramme (Nassi-Schneidermann-Diagramm), Flussdiagramme, Petri-Netze u. v. m. 3.2.1 Struktogramme (bekannt unter Nassi-Schneidermann-Diagramm) Die Struktogramme entsprechen sehr stark dem strukturierten Text und sehen keine Rücksprünge vor. Soweit diese notwendig wären, sind sie durch fertige Befehle (Kontrollstrukturen) abgedeckt (Case-, Repeat-, While-Anweisungen usw.).