Seite 1
Vorwort Grundlegende Sicherheitshinweise Einleitung SIMOTION Erste Schritte mit ST SIMOTION SCOUT SIMOTION ST Structured Text ST-Grundlagen Funktionen, Funktionsbausteine, Programmier- und Bedienhandbuch Programme Objektorientierte Programmierung - OOP (ab Kernel V4.5) Einbindung von ST in SIMOTION Fehlerquellen und Programmtest Anhang Gültig ab Version 5.1...
Dokumentationen müssen beachtet werden. Marken Alle mit dem Schutzrechtsvermerk ® gekennzeichneten Bezeichnungen sind eingetragene Marken der Siemens AG. Die übrigen Bezeichnungen in dieser Schrift können Marken sein, deren Benutzung durch Dritte für deren Zwecke die Rechte der Inhaber verletzen kann. Haftungsausschluss Wir haben den Inhalt der Druckschrift auf Übereinstimmung mit der beschriebenen Hard- und Software geprüft.
Gültigkeitsbereich Das vorliegende Dokument ist Bestandteil des Dokumentationspaketes SIMOTION Programmieren. Das Dokument ist gültig für SIMOTION SCOUT, das Engineering System der Produktfamilie SIMOTION, in der Produktstufe V5.1 in Verbindung mit: ● Einem SIMOTION Gerät mit einem SIMOTION Kernel folgender Versionen: –...
Vorwort Konvertieren bestehender Projekte in die aktuelle Version des SIMOTION SCOUT Ein Hochkonvertieren bestehender Projekte auf die aktuelle Version des SIMOTION SCOUT und der Programmiersprache SIMOTION ST ist möglich. Eine Neuübersetzung mit der aktuellen Version des Compilers ändert unter Umständen die Versionskennungen in den Datenbereichen der Programme und bewirkt damit ein Löschen und Initialisieren aller...
Seite 5
● Weiterführende Links für den Download von Dokumenten ● Dokumentation online nutzen (Handbücher/Informationen finden und durchsuchen) https://support.industry.siemens.com/cs/ww/de/view/109479653 My Documentation Manager Unter folgendem Link finden Sie Informationen, wie Sie Dokumentation auf Basis der Siemens Inhalte individuell zusammenstellen und für die eigene Maschinendokumentation anpassen: https://support.industry.siemens.com/My/ww/de/documentation SIMOTION ST Structured Text...
Seite 6
Vorwort Training Unter folgendem Link finden Sie Informationen zu SITRAIN - dem Training von Siemens für Produkte, Systeme und Lösungen der Automatisierungstechnik: http://www.siemens.com/sitrain FAQs Frequently Asked Questions finden Sie in den SIMOTION Utilities & Applications, die im Lieferumfang von SIMOTION SCOUT enthalten sind, und in den Service&Support-Seiten unter Produkt Support: https://support.industry.siemens.com/cs/de/de/ps/14505/faq...
Inhaltsverzeichnis Vorwort.................................3 Grundlegende Sicherheitshinweise......................17 Allgemeine Sicherheitshinweise.....................17 Industrial Security........................18 Lebensgefahr bei Softwaremanipulation durch Verwendung von Wechselspeichermedien......................19 Einleitung..............................21 Höhere Programmiersprache....................21 Programmiersprache mit Technologiebefehlen..............21 Ablaufebenen.........................21 ST-Editor mit Werkzeugen für Erstellung und Test von Programmen........22 Erste Schritte mit ST...........................23 Einbindung von ST in SCOUT....................23 3.1.1 Elemente der Workbench kennenlernen................25 Voraussetzungen für die Programmerstellung...............26...
Seite 8
Inhaltsverzeichnis 3.3.6 Einstellungen für den Compiler vornehmen................62 3.3.6.1 Globale Einstellungen des Compilers..................62 3.3.6.2 Lokale Einstellungen des Compilers..................66 3.3.6.3 Wirksamkeit der globalen oder lokalen Einstellungen des Compilers........70 3.3.6.4 Bedeutung der Warnungsklassen..................73 3.3.6.5 Anzeige der Compileroptionen....................73 3.3.7 Know-how-Schutz für ST-Quellen..................75 3.3.8 Präprozessor-Definitionen vornehmen...................75 3.3.9 ST-Quelle exportieren, importieren und drucken..............77 3.3.9.1...
Seite 11
Inhaltsverzeichnis 6.2.1.1 Klassen (Basisklassen) definieren..................222 6.2.1.2 Deklarationsabschnitt einer Klasse..................222 6.2.1.3 Zugriffsbezeichner innerhalb von Klassen................223 6.2.2 Erstellung von Methoden.....................225 6.2.2.1 Methoden definieren......................225 6.2.2.2 Deklarationsabschnitt von Methoden...................226 6.2.2.3 Anweisungsabschnitt von Methoden..................229 6.2.3 Methoden innerhalb der Klasse aufrufen................230 6.2.3.1 Methode aufrufen.........................230 6.2.3.2 Parameterübergabe zu Eingangsparametern..............231 6.2.3.3 Parameterübergabe zu Durchgangsparametern..............231 6.2.3.4...
Seite 12
Inhaltsverzeichnis 7.1.1.7 Expressions..........................277 7.1.1.8 Klassen (ab Kernel V4.5).....................278 7.1.1.9 Methoden..........................280 7.1.1.10 Objektorientiertes Interface (ab Kernel V4.5)...............281 7.1.1.11 Deklarationsabschnitt......................282 7.1.1.12 Anweisungsabschnitt......................283 7.1.1.13 Datentypdefinition........................284 7.1.1.14 Variablendeklaration......................285 7.1.2 Veröffentlichung und Verwendung von ST-Quellen.............288 7.1.2.1 Bezeichnung der Unit......................288 7.1.2.2 Interfaceabschnitt einer veröffentlichenden Unit..............288 7.1.2.3 Beispiel für veröffentlichende Unit..................290 7.1.2.4 USES-Anweisung in einer verwendenden Unit..............290...
Seite 13
Inhaltsverzeichnis 7.3.4.3 Absoluter Zugriff auf das feste Prozessabbild der BackgroundTask (Absoluter PA- Zugriff)..........................352 7.3.4.4 Syntax für den Bezeichner für einen absoluten PA-Zugriff..........353 7.3.4.5 Symbolischer Zugriff auf das feste Prozessabbild der BackgroundTask (Symbolischer PA-Zugriff)..........................354 7.3.4.6 Mögliche Datentypen des symbolischen PA-Zugriffs............355 7.3.4.7 Beispiel für symbolischen PA-Zugriff...................356 7.3.4.8 I/O-Variable für Zugriff auf das feste Prozessabbild der BackgroundTask erstellen....356...
Seite 14
Inhaltsverzeichnis 8.2.1.3 Parameter Lebenszeichenüberwachung................408 8.2.2 Editieren der Programmquellen im Online-Modus...............408 8.2.3 Symbol-Browser........................410 8.2.3.1 Eigenschaften des Symbol-Browsers..................410 8.2.3.2 Symbol-Browser einsetzen....................410 8.2.4 Variablen in Watchtabelle beobachten.................413 8.2.4.1 Variablen in der Watchtabelle....................413 8.2.4.2 Watchtabelle einsetzen......................414 8.2.5 Status Variable........................415 8.2.6 Programm-Durchlauf......................417 8.2.6.1 Programm-Durchlauf: Anzeige von Codestelle und Aufrufpfad...........417 8.2.6.2 Parameter Programm-Durchlauf..................417 8.2.6.3...
Seite 15
Inhaltsverzeichnis A.1.3.2 Schreibweise von Konstanten (Literale)................463 A.1.3.3 Kommentare.........................471 A.1.3.4 Abschnitte der ST-Quelle.....................472 A.1.3.5 Gliederungen von ST-Quellen....................472 A.1.3.6 Programmorganisationseinheiten (POE)................475 A.1.3.7 Deklarationsabschnitte......................481 A.1.3.8 Aufbau der Deklarationsblöcke....................484 A.1.3.9 Datentypen...........................494 A.1.3.10 Anweisungsabschnitt......................499 A.1.3.11 Wertzuweisungen und Operationen..................500 A.1.3.12 Aufruf von Funktionen, Funktionsbausteinen und Methoden..........506 A.1.3.13 Kontrollanweisungen......................509 A.1.3.14...
Seite 16
Inhaltsverzeichnis SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Grundlegende Sicherheitshinweise Allgemeine Sicherheitshinweise WARNUNG Lebensgefahr bei Nichtbeachtung von Sicherheitshinweisen und Restrisiken Bei Nichtbeachtung der Sicherheitshinweise und Restrisiken in der zugehörigen Hardware- Dokumentation können Unfälle mit schweren Verletzungen oder Tod auftreten. ● Halten Sie die Sicherheitshinweise der Hardware-Dokumentation ein. ● Berücksichtigen Sie bei der Risikobeurteilung die Restrisiken. WARNUNG Lebensgefahr bei Fehlfunktionen der Maschine infolge fehlerhafter oder veränderter Parametrierung...
Industrial Security Hinweis Industrial Security Siemens bietet Produkte und Lösungen mit Industrial Security-Funktionen an, die den sicheren Betrieb von Anlagen, Systemen, Maschinen und Netzwerken unterstützen. Um Anlagen, Systeme, Maschinen und Netzwerke gegen Cyber-Bedrohungen zu sichern, ist es erforderlich, ein ganzheitliches Industrial Security-Konzept zu implementieren (und kontinuierlich aufrechtzuerhalten), das dem aktuellen Stand der Technik entspricht.
Grundlegende Sicherheitshinweise 1.3 Lebensgefahr bei Softwaremanipulation durch Verwendung von Wechselspeichermedien Lebensgefahr bei Softwaremanipulation durch Verwendung von Wechselspeichermedien WARNUNG Lebensgefahr bei Softwaremanipulation durch Verwendung von Wechselspeichermedien Die Ablage von Dateien auf Wechselspeichermedien birgt ein erhöhtes Risiko gegenüber Infektionen, z. B. mit Viren oder Malware. Durch fehlerhafte Parametrierung können Fehlfunktionen an Maschinen auftreten, die zu Körperverletzungen oder Tod führen können.
Seite 20
Grundlegende Sicherheitshinweise 1.3 Lebensgefahr bei Softwaremanipulation durch Verwendung von Wechselspeichermedien SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Verfügung, um die unterschiedlichen Aufgaben bei der Programmierung von Anwenderprogrammen bestmöglich zu unterstützen. SIMOTION SCOUT ist das Engineering System der Produktfamilie SIMOTION. ST ist die Hochsprache zur Programmierung von Anwenderprogrammen, wobei man in ST Anwenderprogramme für die verschiedenen Ablaufebenen entwickeln kann.
Der ST-Compiler übersetzt das editierte Programm in ausführbaren Code und zeigt jeden Syntaxfehler mit Angabe von Programmzeile und Fehlerursache an. Zum Testen der ST-Programme stehen Ihnen Testfunktionen im SIMOTION SCOUT zur Verfügung. Sie können Ihre Programme online visualisieren und testen.
Register der Detailanzeige ist der Symbol-Browser; dort können Sie Variablen beobachten und ändern. Die einzelnen Komponenten sind einfach und komfortabel zu handhaben. Sie sind direkt in die Workbench von SIMOTION SCOUT eingebunden. Näheres zur Bedienung der Workbench und deren Werkzeuge siehe Projektierungshandbuch SIMOTION SCOUT.
Seite 24
Erste Schritte mit ST 3.1 Einbindung von ST in SCOUT ① Editor ② Compiler ③ Status Programm ④ Detailanzeige (Register Ausgabe übersetzen / prüfen) Bild 3-1 Entwicklungsumgebung von ST SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
3.1.1 Elemente der Workbench kennenlernen Die Workbench stellt den Rahmen für den SIMOTION SCOUT dar. Mit deren Werkzeugen können Sie alle nötigen Schritte durchführen, um eine Maschine so zu konfigurieren, optimieren und programmieren, damit sie die gewünschte Aufgabe ausführen kann.
Projekt einfügen oder öffnen Das Projekt ist die oberste Hierarchiestufe der Datenverwaltung. Alle Daten, die z. B. zu einer Produktionsmaschine gehören, legt SIMOTION SCOUT in dem zum Projekt gehörenden Verzeichnis ab. Das Projekt bildet somit die Klammer für alle SIMOTION Geräte, Antriebe usw., die zu einer Maschine gehören.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Erst nach Konfiguration eines SIMOTION Geräts können Sie ST-Quellen einfügen und bearbeiten. Technologieobjekte einfügen und konfigurieren Die Funktionalität von Achsen, Nocken usw. wird in SIMOTION durch Technologieobjekte (TO) repräsentiert.
Seite 28
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen 4. Geben Sie den Namen der ST-Quelle ein. Namen für Programmquellen müssen den Regeln für Bezeichner (Seite 99) genügen: Sie sind aus Buchstaben (A … Z, a … z), Ziffern (0 … 9) oder einzelnen Unterstrichen (_) in beliebiger Reihenfolge zusammengesetzt, wobei das erste Zeichen ein Buchstabe oder ein Unterstrich sein muss.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Hinweis Mit OK wird die ST‑Quelle nur in das Projekt übernommen. Auf dem Datenträger werden die Daten erst zusammen mit dem Projekt gespeichert, z. B. durch Projekt > Speichern oder Projekt >...
Seite 30
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen 3. Wählen Sie Menü Bearbeiten > Objekteigenschaften. 4. Wählen Sie ggf. weitere Register, um dort lokale Einstellungen (nur für diese ST-Quelle gültig) vorzunehmen: – Register Allgemeines: Allgemeine Angaben zur ST-Quelle, z. B. Codegröße bei der letzten Übersetzung, Zeitstempel der letzten Änderung, Speicherort des Projekt (siehe Bild).
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Namen für Programmquellen müssen den Regeln für Bezeichner genügen: Sie sind aus Buchstaben (A … Z, a … z), Ziffern (0 … 9) oder einzelnen Unterstrichen (_) in beliebiger Reihenfolge zusammengesetzt, wobei das erste Zeichen ein Buchstabe oder ein Unterstrich sein muss.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Bild 3-5 Geöffnete ST‑Quelle im ST‑Editor 3.3.4.1 Syntaxcoloring Der ST-Editor stellt Sprachelemente mit verschiedenen Farben dar: ● Blau: Schlüsselwörter und Compiler-Buildin-Funktionen ● Magenta: Zahlen, Werte ● Grün: Kommentare ●...
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen So kopieren Sie Variablennamen aus dem Symbol-Browser in die ST‑Quelle: 1. Markieren Sie im Symbol-Browser die ganze Zeile der gewünschten Variablen. Klicken Sie dazu auf die Zeilennummer am Beginn der Zeile. 2.
Seite 34
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Bild 3-6 Einstellungen ST-Editor / Skripting Die Einstellungen sind auch gültig für den Skript-Editor. In der folgenden Tabelle finden Sie eine Beschreibung der einzelnen Parameter: Tabelle 3-1 Parameter Einstellungen ST-Editor / Skripting Parameter Beschreibung Zeilennummerierung anzeigen...
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Parameter Beschreibung Folding aktiv Wenn aktiv, wird links neben dem Editierbereich die Spalte mit den Faltungsinformationen eingeblendet. Sie können dann Blöcke in einer ST‑Quelle ausblenden, so dass nur die erste Zeile des Blocks sichtbar bleibt. Siehe: Falten (Blöcke ein- und ausblenden) (Seite 38).
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Blöcke automatisch ein- und ausrücken Der ST-Editor erkennt Blöcke, die durch ein Schlüsselwort eingeleitet und durch ein weiteres Schlüsselwort beendet werden, z. B.: ● INTERFACE / END_INTERFACE ● IMPLEMENTATION / END_IMPLEMENTATION ●...
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen So gehen Sie vor: 1. Markieren Sie den Textbereich im ST‑Editor, den Sie einrücken bzw. ausrücken wollen (siehe Text markieren (Seite 44)). Der markierte Textbereich muss mehrere Zeilen umfassen. 2.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen 3.3.4.5 Falten (Blöcke ein- und ausblenden) Sie können Blöcke in einer ST‑Quelle ausblenden, so dass nur die erste Zeile des Blocks sichtbar bleibt. Dies erhöht die Übersichtlichkeit beim Bearbeiten oder Lesen einer längeren ST‑Quelle.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Bild 3-9 ST‑Quelle mit ausgeblendetem IF-Block (einschließlich Blockkommentar) Falten aktivieren oder deaktivieren Um das Ein- und Ausblenden von Blöcken nutzen zu können, muss das Falten aktiviert sein. Die Spalte mit den Faltungsinformationen (links vom Editierbereich) ist dann eingeblendet. So aktivieren oder deaktivieren Sie das Falten: ●...
Seite 40
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen So blenden Sie Blöcke ein oder aus: ● Einzelnen Block ausblenden (Alternative): – Klicken Sie mit der Maus auf das Zeichen (Minus) in der Spalte mit den Faltungsinformationen. –...
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Hinweis Die Informationen über ein- und ausgeblendete Blöcke werden beim Schließen der ST‑Quelle im Projekt gespeichert. Beim Export der ST‑Quelle (Seite 77) werden diese Informationen nicht übernommen. 3.3.4.6 Editorfenster teilen Sie können das Fenster des ST‑Editor in zwei Segmente teilen.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Segmenthöhe anpassen Sie können die Höhe der beiden Segmente Ihren individuellen Erfordernissen anpassen: 1. Bewegen Sie mit der Maus den Cursor zur Trennlinie zwischen den beiden Segmenten, bis er die Form eines Doppelpfeils annimmt (siehe obiges Bild). 2.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen 3.3.4.8 Schriftgröße im ST-Editor ändern Sie können die Schriftgröße der ST-Quelle im Editor verändern. Dabei werden auch die Schriftgröße der Zeilennummern und die Größe anderer Anzeigeelemente (z. B. Faltmarkierungen, Lesezeichen) angepasst.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Die Einstellung wird wirksam bei allen ST-Quellen, die anschließend geöffnet werden. Sie wirkt sich nicht auf die aktuell geöffneten ST-Quellen aus. 3.3.4.9 Text markieren Text zeilenweise markieren So gehen Sie vor, um Text zeilenweise zu markieren: ●...
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Text spaltenweise markieren So gehen Sie vor, um Text spaltenweise zu markieren: ● Mit der Maus: – Drücken Sie die Taste ALT und überstreichen Sie gleichzeitig mit gedrückter linker Maustaste den zu markierenden Text.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Gesamten Text markieren So gehen Sie vor, um den gesamten Text zu markieren (Alternativen): ● Drücken Sie die Taste STRG und klicken gleichzeitig mit der linken Maustaste in die Spalte mit den Zeilennummern.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Berechnung der Folgenglieder Alle im ST‑Editor markierten Zahlen werden als mögliche Folgenglieder interpretiert. Die Anfangsglieder, aus denen die Folge berechnet wird, müssen hierbei ganzzahlige Werte darstellen. Bei der Ermittlung der Zahlenfolge wird angenommen, dass sich ein Folgenglied a aus dem jeweils vorhergehenden Folgenglied a mit einer linearen Funktion mit den ganzzahligen...
Seite 48
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Hinweis Die zur Berechnung verwendeten Anfangsglieder der Folge müssen ganzzahlige Werte darstellen. Sie können jedoch auch in der Gleitpunktdarstellung angegeben werden. Bei der Folgenberechnung zu berücksichtigende Zahlen müssen vollständig markiert werden. Nur Zahlen und ausgewählte Sonderzeichen (z.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen 3.3.4.11 Lesezeichen verwenden Sie können im ST‑Editor Lesezeichen setzen. Damit können Sie innerhalb der ST‑Quelle gezielt zu ausgewählten Zeilen springen. Bild 3-17 ST-Quelle mit Lesezeichen Lesezeichen setzen und löschen So gehen Sie vor, um an einer Zeile der aktiven ST‑Quelle ein Lesezeichen zu setzen bzw.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen So gehen Sie vor, um zum vorherigen Lesezeichen innerhalb der ST‑Quelle zu springen: ● Wählen Sie das Kontextmenü Lesezeichen > Vorheriges Lesezeichen. Alle Lesezeichen löschen So gehen Sie vor, um alle Lesezeichen in einer ST‑Quelle zu löschen: ●...
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen 4. Wählen Sie mit den Pfeiltasten auf/ab den gewünschten Bezeichner aus. 5. Übernehmen Sie den Bezeichner. Das aktuelle Wort wird überschrieben. Hinweis Wenn nur ein Bezeichner zur Auswahl steht, wird das Auswahlfenster nicht geöffnet und der Bezeichner sofort vervollständigt.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Das Verhalten ist abhängig von der Programmiersprache, in der die Quelle der aufgerufenen POE verfasst ist: ● Programmiersprache SIMOTION ST: Die entsprechende ST‑Quelle wird gegebenenfalls geöffnet. Der Cursor wird an den Anfang der entsprechenden POE im Implementationsabschnitt gesetzt.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Groß- und Kleinschreibung ändern Sie können die Schreibweise eines markierten Textes in Großschreibung oder Kleinschreibung ändern: 1. Markieren Sie den Text, dessen Schreibweise Sie ändern wollen, siehe Text markieren. 2.
Seite 54
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Symbol Bedeutung Status Programm Klicken Sie auf dieses Symbol, um den Testmodus Status Programm zu starten. Wäh‐ rend des Programmdurchlaufs können Sie die Werte der in der ST-Quelle markierten Variablen beobachten.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Symbol Bedeutung Alle Lesezeichen entfernen Klicken Sie auf dieses Symbol, um alle Lesezeichen aus der aktiven ST‑Quelle zu entfernen. Siehe: Lesezeichen verwenden (Seite 49). Gehe zu Blockanfang Klicken Sie auf dieses Symbol, um den Cursor an den Beginn des aktuellen bzw. über‐ geordneten Blocks zu verschieben.
Seite 56
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Funktion Bedeutung/Hinweis Zeilennummerierung an/aus Wählen Sie diesen Befehl, um in der aktiven ST‑Quelle die Zeilennummern ein- oder ausblenden. Siehe: Weitere Hilfsmittel des ST-Editors (Seite 52). Einrückhilfe Wählen Sie diesen Befehl, um in der aktiven ST‑Quelle die Ein- und Ausrückun‐ gen bei Blöcken durch senkrechte Hilfslinien (entsprechend der eingestellten Tabulatorweite) optisch hervorzuheben.
Seite 57
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Funktion Bedeutung/Hinweis Markierten Bereich einrücken ● Wenn kein Text markiert ist: Wählen Sie diesen Befehl, um den Text rechts vom Cursor zur nächsten Tabulatorposition zu verschieben. ● Wenn Text in einer einzigen Zeile markiert ist: Wählen Sie diesen Befehl, um den markierten Text zu löschen und den nachfolgenden Text zur nächsten Tabulatorposition zu verschieben.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Funktion Bedeutung/Hinweis Lokale Verwendung >> Wenn der Cursor innerhalb einer Variablen steht bzw. wenn die Variable markiert ist: Wählen Sie diesen Befehl, um zur nächsten Verwendung der Variablen in der ST‑Quelle zu springen.
Seite 59
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Tastenkürzel/Shortcut Beschreibung ● Wenn kein Text markiert ist: Text rechts vom Cursor zur nächsten Tabulatorposition verschieben. ● Wenn Text in einer einzigen Zeile markiert ist: Markierten Text löschen und den nachfolgenden Text zur nächsten Tabulatorposition verschieben.
Seite 60
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Tastenkürzel/Shortcut Beschreibung STRG+F5 Alle Haltepunkte (in allen Programmquellen) des SIMOTION Geräts entfernen (Menü De‐ bug > Alle Haltepunkte entfernen). STRG+F7 Ein- oder Ausschalten der Funktion Status Programm (Menü ST‑Quelle > Status Pro‐ gramm Ein/Aus).
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Tastenkürzel/Shortcut Beschreibung STRG+ALT+W Leerzeichen und Tabulatoren in der aktuellen ST‑Quelle ein- oder ausblenden. STRG+ADD (Ziffernblock) Schriftgröße in der aktuellen ST‑Quelle vergrößern. STRG+MINUS (Ziffernblock) Schriftgröße in der aktuellen ST‑Quelle verkleinern. STRG+DIV (Ziffernblock) Schriftgröße in der aktuellen ST‑Quelle 100 %.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Vorgehensweise 1. Klicken Sie in das Fenster mit dem ST‑Editor. Das dynamische Menü ST‑Quelle wird eingeblendet. 2. Wählen Sie Menü ST‑Quelle > Übernehmen und Übersetzen. Hinweis Das Menü ST-Quelle ist dynamisch. Es wird nur eingeblendet, wenn das Fenster des ST- Editors aktiv ist.
Seite 63
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Bild 3-19 Globale Einstellungen des Compilers Parameter Tabelle 3-7 Parameter für globale Einstellungen des Compilers Parameter Beschreibung Warnungsklassen anzeigen Zusätzlich zu den Fehlermeldungen kann der Compiler Warnungen und Informationen aus‐ geben.
Seite 64
Bei Speichern des Projekts im alten Projektformat: Das Verwenden von Sprachelementen, welche diese Compileroption voraussetzen, verhindert das fehlerfreie Übersetzen des Pro‐ jekts in Versionen des SIMOTION SCOUT kleiner als V4.5. Objektorientierte Program‐ Aktiv: Bei der Programmiersprache ST sind zusätzliche Sprachelemente zur objektorientier‐...
Seite 65
Ausführliches Meldungspro‐ Hier steuern Sie den Umfang des Meldungsprotokolls, das in der Detailanzeige der Work‐ tokoll beim Übersetzen des bench angezeigt wird, wenn Sie in SIMOTION SCOUT den Befehl Speichern und Änderun‐ Projekts / von Geräten erstel‐ gen übersetzen aufrufen.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen 3.3.6.2 Lokale Einstellungen des Compilers Die lokalen Einstellungen werden für jede ST-Quelle einzeln vorgenommen und überschreiben die globalen Einstellungen. Vorgehensweise 1. Öffnen Sie das Eigenschaftsfenster der ST-Quelle, siehe Eigenschaften einer ST-Quelle ändern (Seite 29): Markieren Sie im Projektnavigator die ST-Quelle und wählen Sie das Menü...
Seite 67
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Parameter Tabelle 3-8 Parameter für lokale Einstellungen des Compilers an der ST-Quelle Parameter Beschreibung Quelle von der Übersetzung Aktiv: Beim Übersetzen des Projekts, des Geräts oder der Bibliothek (z. B. Menü Projekt > ausschließen Speichern und alles neu übersetzen) wird diese Quelle nicht übersetzt.
Seite 68
Bei Speichern des Projekts im alten Projektformat: Das Verwenden von Sprachelementen, welche diese Compileroption voraussetzen, verhindert das fehlerfreie Übersetzen des Pro‐ jekts in Versionen des SIMOTION SCOUT kleiner als V4.5. Objektorientierte Program‐ Aktiv: Es sind zusätzliche Sprachelemente zur objektorientierten Programmierung gemäß...
Seite 69
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Parameter Beschreibung Warnungen ausgeben Zusätzlich zu den Fehlermeldungen kann der Compiler Warnungen und Informationen aus‐ geben. Sie können den Umfang der ausgegebenen Warnmeldungen einstellen. Warnungsklassen Checkbox "Warnungen ausgeben": Aktiv: Der Compiler gibt Warnungen und Informationen entsprechend der nachstehenden Auswahl der Warnungsklassen aus.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Parameter Beschreibung Globale Compilereinstellun‐ Aktiv: Die globalen Einstellungen des Compilers sind für alle Parameter unwirksam. Die gen ignorieren Checkboxen "Globale Einstellungen verwenden" sind nicht anwählbar und gegraut darge‐ (Das Programm wird bei Än‐...
Seite 71
Speichern und Änderungen übersetzen wird gewählt. Dies führt zu Problemen bei Bibliotheken, die mit einem Know-how-Schutz Programme (Seite 75) der Stufe "Hoch" versehen sind. Außerdem können bei Projekten, die von einer früheren Version des SIMOTION SCOUT konvertiert wurden, Online-Inkonsistenzen auftreten. SIMOTION ST Structured Text...
Seite 72
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Checkboxen für die weiteren Parameter Außerdem verfügt jeder Parameter, zu dem es auch eine globale Einstellung gibt, über mindestens 2 Checkboxen: ● Checkbox "Globale Einstellungen verwenden": Mit dieser Checkbox legen Sie fest, ob die globalen Einstellungen verwendet werden. Sie ist nur anwählbar, wenn die Checkbox "Quelle nicht neu übersetzen, wenn globale Compilereinstellungen geändert wurden"...
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Hinweis Die aktuellen Compileroptionen, die bei der nächsten Übersetzung der Programmquelle wirken, können Sie überprüfen: ● Wählen Sie das Register "Weitere Einstellungen" (Seite 73) im Eigenschaftsfenster der Programmquelle. 3.3.6.4 Bedeutung der Warnungsklassen In der Tabelle sind die Warnungsklassen und ihre Bedeutung aufgelistet.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Zum Anzeigen der beim letzten Übersetzen der Programmquelle verwendeten Compileroptionen: ● Wählen Sie das Register Übersetzung. Für die letzte Übersetzung der Programmquelle wird angezeigt: – Die Version des verwendeten Compilers. –...
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Compileroption Bedeutung Weitere Optionen Interne Optionen des SIMOTION Compilers. Zur Bedeutung der Compileroption: siehe "Lokale Einstellungen des Compilers" (Seite 66). Nur bei Aufruf des Compilers über die Kommandozeile, z. B. mittels Scripting. Hinweis Die Compileroptionen können auch beim Aufruf des Compilers über die Kommandozeile angegeben werden, z.
Seite 76
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Bild 3-21 Präprozessor-Definitionen Tabelle 3-10 Syntax der Präprozessor-Definitionen Syntax Bedeutung Bezeichner=Text Bezeichner wird definiert und in der ST‑Quelle durch den Der angegebene Text ersetzt. angegebenen ’Bezeichner=Text’ Erlaubte Zeichen: Siehe Fußteil der Tabelle. "Bezeichner=Text"...
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen 3.3.9 ST-Quelle exportieren, importieren und drucken Hier erhalten Sie einen Überblick über das Exportieren, Importieren und Drucken einer ST- Quelle. 3.3.9.1 ST-Quelle als Textdatei (ASCII) exportieren Sie können eine ST‑Quelle als Textdatei im ASCII‑Format exportieren. Sie können diese Datei wieder als ST‑Quelle importieren oder in jedem ASCII‑Editor bearbeiten Vorgehensweise So exportieren Sie eine ST-Quelle als ASCII-Datei:...
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen 3.3.9.2 ST-Quelle im XML-Format exportieren So exportieren Sie eine ST-Quelle im XML-Format: 1. Markieren Sie im Projektnavigator die ST-Quelle. 2. Wählen Sie das Kontextmenü Experte > Projekt speichern und Objekt exportieren. 3.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Alternativ: 1. Markieren Sie im Projektnavigator den Ordner PROGRAMME. 2. Wählen Sie das Kontextmenü Objekt importieren. 3. Wählen Sie die zu importierenden XML-Daten aus. Eine neue ST‑Quelle wird angelegt und die XML-Daten importiert. Diese ST‑Quelle erhält den in den XML-Daten gespeicherten Namen;...
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Einstellung zur Verwendung eines externen Editors Die Einstellungen nehmen Sie in der SCOUT-Workbench vor: 1. Wählen Sie das Menü Extras > Einstellungen. 2. Wählen Sie das Register ST-Externer Editor (siehe Bild). 3.
Beachten Sie unbedingt Folgendes beim Verwenden eines externen Editors: ACHTUNG Datenverlust möglich Wenn Sie ein Projekt schließen oder SIMOTION SCOUT beenden, bevor Sie alle Fenster des externen Editord geschlossen haben, besteht die Gefahr von Datenverlusten! Schließen Sie alle Fenster des externen Editors, bevor Sie ein Projekt schließen oder SIMOTION SCOUT beenden.
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Funktion Bedeutung/Hinweis Status Programm Ein/Aus Wählen Sie diesen Befehl, um den Testmodus Status Programm zu starten. Während des Programmdurchlaufs können Sie die Werte der in der ST-Quelle markierten Variablen be‐ obachten.
Seite 83
Erste Schritte mit ST 3.3 Mit dem ST-Editor und dem Compiler umgehen Funktion Bedeutung/Hinweis Experte Objekt importieren Wählen Sie diesen Befehl, um XML-Daten einer ST‑Quelle, die Sie in einem anderen Projekt exportiert hatten, in die markierte ST‑Quelle zu importieren. Die in der importierenden ST-Quelle vorhandenen Daten werden überschrieben.
Erste Schritte mit ST 3.4 Ein Beispielprogramm erstellen Funktion Bedeutung/Hinweis Querverweise Die Querverweisliste der markierten ST‑Quelle wird gebildet und angezeigt. Die Querverweisliste enthält die Deklaration und Verwendung aller Bezeichner der markierten ST‑Quelle. Siehe: Inhalt der Querverweisliste (Seite 376). Programmstruktur Die Programmstruktur der markierten ST‑Quelle wird gebildet und angezeigt. Die Programmstruktur enthält alle Unterprogrammaufrufe und deren Schachtelung innerhalb der markierten ST‑Quelle.
Erste Schritte mit ST 3.4 Ein Beispielprogramm erstellen 3.4.2 Projekt öffnen oder erstellen Projekte enthalten alle Informationen über Hardware und Konfiguration. Darin sind auch Programme enthalten, mit denen Sie diese Hardware steuern. Vorgehensweise Ist kein Projekt vorhanden, gehen Sie wie folgt vor: 1.
Erste Schritte mit ST 3.4 Ein Beispielprogramm erstellen 3.4.3 Hardware bekanntmachen Dieser Arbeitsschritt umfasst: 1. Neues SIMOTION Gerät (z. B. C240 V4.2) anlegen und konfigurieren. 2. Ausgang in der HW-Konfig auf Adresse 62 konfigurieren. Einzelheiten zu den Arbeitsschritten 1 und 2 siehe Online-Hilfe. Bild 3-24 Änderung in der HW-Konfig SIMOTION ST Structured Text...
Erste Schritte mit ST 3.4 Ein Beispielprogramm erstellen 3.4.4 Quelltext mit dem ST-Editor eingeben Vorgehensweise 1. Öffnen Sie im Projektnavigator den Baum Ihres SIMOTION Geräts (Programme sind dem SIMOTION Gerät zugeordnet, auf dem Sie später laufen sollen.). 2. Markieren Sie den Ordner Programme und wählen Sie den Menüpunkt Einfügen >...
Erste Schritte mit ST 3.4 Ein Beispielprogramm erstellen 5. Verwenden Sie so oft wie möglich Kommentare. Geben Sie Ihren Kommentar nach den Zeichen // ein, wenn es sich um einzeiligen Text handelt. Wenn der Kommentar über mehrere Zeilen geht, schließen Sie ihn zwischen den Zeichenpaaren (* und *) ein. 6.
Erste Schritte mit ST 3.4 Ein Beispielprogramm erstellen Eine ausführliche Beschreibung der Funktionen finden Sie in Mit dem ST-Editor umgehen (Seite 31) und in Einstellungen für den Compiler vornehmen (Seite 62). 3.4.4.2 Quelltext des Beispielprogramms Die Tabelle zeigt Ihnen den Quelltext des Beispielprogramms, so wie Sie ihn eingeben müssen, um lauffähigen Code erzeugen zu können.
Erste Schritte mit ST 3.4 Ein Beispielprogramm erstellen 3.4.5.2 Fehler korrigieren Der Compiler überprüft die Syntax der ST-Quelle. Im Register Ausgabe übersetzen/prüfen der Detailanzeige werden die erfolgreiche Übersetzung des Quelltextes bzw. Compiler-Fehler angezeigt. Die Fehlerangabe umfasst: Name der ST-Quelle, Zeilennummer, in welcher der Fehler aufgetreten ist, Fehlernummer und Fehlerbeschreibung.
Erste Schritte mit ST 3.4 Ein Beispielprogramm erstellen 3.4.5.3 Beispiel für Fehlermeldungen Bild 3-26 Fehlermeldung beim Übersetzen einer ST-Quelle Das Bild zeigt als Beispiel die Übersetzung der ST-Quelle ST_1 (siehe Quelltext des Beispielprogramms (Seite 89)), in der folgende Veränderung vorgenommen wurde: Am Ende der Zeile 18 mit der Anweisung "counterVar := counterVar + 1"...
Erste Schritte mit ST 3.4 Ein Beispielprogramm erstellen 3.4.6.1 Beispielprogramm einer Ablaufebene zuordnen Die Ablaufebenen legen die zeitliche Abfolge von Programmen fest. Jede Ablaufebene enthält eine oder mehrere Tasks, denen Sie Programme zuordnen können. Die Zuordnung eines Programmes zu einer Task kann nur nach dem Compilieren stattfinden und muss vor dem Laden des Programmes ins Zielsystem geschehen.
Gerät an, mit dem Sie verbunden sind. Am rechten unteren Bildschirmrand sehen Sie, dass Sie mit dem Zielsystem verbunden sind. Hinweis Nähere Informationen siehe Projektierungshandbuch SIMOTION SCOUT und Online-Hilfe SIMOTION SCOUT. SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Erste Schritte mit ST 3.4 Ein Beispielprogramm erstellen Bild 3-28 Verbindung mit dem Zielsystem herstellen 3.4.6.3 Beispielprogramm in das Zielsystem laden (Download) So laden Sie das Beispielprogramm in das Zielsystem: 1. Schalten Sie das Zielsystem auf STOP. 2. Wählen Sie in der Menüleiste Zielsystem > Laden > Projekt ins Zielsystem laden. 3.
Erste Schritte mit ST 3.4 Ein Beispielprogramm erstellen Bild 3-29 Beispielprogramm in das Zielsystem laden (Download) 3.4.6.4 Beispielprogramm starten und testen Beispielprogramm starten So starten Sie das Beispielprogramm: ● Schalten Sie Ihr Zielsystem auf RUN (siehe Hardwarebeschreibung). An den Ausgängen Ihres Zielsystems blinken die Lämpchen in sequentieller Folge. Beispielprogramm testen Siehe Programmtest (Seite 403).
Seite 96
Erste Schritte mit ST 3.4 Ein Beispielprogramm erstellen SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
ST-Grundlagen Sie erfahren in diesem Kapitel, welche Sprachmittel Ihnen ST zur Verfügung stellt und wie Sie mit diesen Sprachmitteln umgehen können. Beachten Sie, dass Funktionen, Funktionsbausteine und die Tasksteuerung in den nächsten Kapiteln behandelt werden. Eine vollständige formale Sprachbeschreibung mit allen Syntaxdiagrammen siehe Anhang Regeln (Seite 462).
ST-Grundlagen 4.2 Basiselemente der Sprache 4.1.2 Blöcke in Syntaxdiagrammen Ein Block ist ein Grundelement oder ein Element, das wiederum aus Blöcken zusammengesetzt ist. Das Bild zeigt die Symbolarten, die den Blöcken entsprechen: Bild 4-2 Blöcke Bei der Eingabe von Quelltexten, d. h., wenn Sie Blöcke oder Elemente eines Syntaxdiagrammes in Quelltext umsetzen, sind sowohl die formatpflichtigen Regeln als auch die formatfreien Regeln zu beachten, siehe Hilfen für die Sprachbeschreibung (Seite 447).
ST-Grundlagen 4.2 Basiselemente der Sprache In den Syntaxdiagrammen werden Terminale durch Kreise oder Ovale dargestellt, zusammengesetzte Elemente durch Rechtecke, siehe Blöcke in Syntaxdiagrammen (Seite 98). Hier erhalten Sie eine Auswahl der wichtigsten Terminale, eine vollständige Übersicht finden Sie in Grundelemente (Terminale) (Seite 449). 4.2.1 Der ST-Zeichensatz ST benutzt aus dem ASCII-Zeichensatz folgende Buchstaben und Ziffern:...
ST-Grundlagen 4.2 Basiselemente der Sprache Bild 4-3 Syntax: Bezeichner Dieses Syntaxdiagramm besagt, dass das erste Zeichen eines Bezeichners ein Buchstabe oder ein Unterstrich sein muss. Nach einem Unterstrich kommt zwingend ein Buchstabe oder eine Zahl, d. h. mehrere Unterstriche sind nicht erlaubt. Danach können Sie beliebig oft und in beliebiger Reihenfolge Unterstriche, Buchstaben oder Ziffern verwenden.
ST-Grundlagen 4.2 Basiselemente der Sprache Ungültiger Bezeichner Grund Leerzeichen sind nicht erlaubt, da Sonderzeichen. S Wert ARRAY, REAL und _sizeOf sind zwar formal gültige, aber reservierte Be‐ Array zeichner (Seite 101) , d. h. sie dürfen nur wie vorbestimmt benutzt werden. REAL Somit dürfen Sie diese Namen nicht selbst vergeben, z.
Seite 102
ST-Grundlagen 4.2 Basiselemente der Sprache BIGBYTEARRAY_TO_ANYTYPE BOOL BYTE BOOL_TO_BYTE BYTE_TO_BOOL BOOL_TO_DWORD BYTE_TO_DINT BOOL_TO_WORD BYTE_TO_DWORD BOOL_VALUE_TO_DINT BYTE_TO_INT BOOL_VALUE_TO_INT BYTE_TO_SINT BOOL_VALUE_TO_LREAL BYTE_TO_UDINT BOOL_VALUE_TO_REAL BYTE_TO_UINT BOOL_VALUE_TO_SINT BYTE_TO_USINT BOOL_VALUE_TO_UDINT BYTE_TO_WORD BOOL_VALUE_TO_UINT BYTE_VALUE_TO_LREAL BOOL_VALUE_TO_USINT BYTE_VALUE_TO_REAL CASE CTD_DINT CLASS CTD_UDINT CONCAT CONCAT_DATE_TOD CTU_DINT CONSTANT CTU_UDINT CONTINUE CTUD CTUD_DINT CTUD_UDINT...
Seite 103
ST-Grundlagen 4.2 Basiselemente der Sprache ELSE END_PROGRAM ELSIF END_REPEAT END_CASE END_STRUCT END_CLASS END_TYPE END_EXPRESSION END_VAR END_FOR END_WAITFORCONDITION END_FUNCTION END_WHILE END_FUNCTION_BLOCK ENUM_TO_DINT END_IF EXIT END_IMPLEMENTATION END_INTERFACE EXPD END_LABEL EXPRESSION END_METHOD EXPT END_NAMESPACE EXTENDS F_TRIG FROM_BIG_ENDIAN FALSE FROM_LITTLE_ENDIAN FINAL FUNCTION FIND FUNCTION_BLOCK GOTO INT_TO_SINT IMPLEMENTATION...
Seite 104
ST-Grundlagen 4.2 Basiselemente der Sprache LABEL LREAL_TO_REAL LEFT LREAL_TO_SINT LREAL_TO_STRING LIMIT LREAL_TO_UDINT LITTLEBYTEARRAY_TO_ANYTYPE LREAL_TO_UINT LREAL_TO_USINT LREAL_VALUE_TO_BOOL LOWER_BOUND LREAL_VALUE_TO_BYTE LREAL LREAL_VALUE_TO_DWORD LREAL_TO_DINT LREAL_VALUE_TO_WORD LREAL_TO_INT METHOD NAMESPACE NULL OVERLAP OVERRIDE PRIVATE PROTECTED PROGRAM PUBLIC R_TRIG REAL_VALUE_TO_DWORD REAL REAL_VALUE_TO_WORD REAL_TO_DINT REAL_TO_DWORD REF_TO REAL_TO_INT REPEAT REAL_TO_LREAL REPLACE...
Seite 105
ST-Grundlagen 4.2 Basiselemente der Sprache SINT_TO_WORD SINT_VALUE_TO_BOOL SQRT SINT STRING SINT_TO_BYTE STRING_TO_DINT SINT_TO_DINT STRING_TO_LREAL SINT_TO_DWORD STRING_TO_REAL SINT_TO_INT STRING_TO_UDINT SINT_TO_LREAL STRUCT SINT_TO_REAL StructAlarmId SINT_TO_UDINT STRUCTALARMID_TO_DINT SINT_TO_UINT StructTaskId SINT_TO_USINT SUPER THEN THIS TO_BIG_ENDIAN TIME TO_LITTLE_ENDIAN TIME_OF_DAY TIME_TO_INT TRUE TIME_TO_REAL TRUNC TYPE SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 106
ST-Grundlagen 4.2 Basiselemente der Sprache UDINT UINT_TO_USINT UDINT_TO_BYTE UINT_TO_WORD UDINT_TO_DINT UINT_VALUE_TO_BOOL UDINT_TO_DWORD UNIT UDINT_TO_INT UNTIL UDINT_TO_LREAL UPPER_BOUND UDINT_TO_REAL USELIB UDINT_TO_SINT USEPACKAGE UDINT_TO_STRING USES UDINT_TO_UINT USING UDINT_TO_USINT USINT UDINT_TO_WORD USINT_TO_BYTE UDINT_VALUE_TO_BOOL USINT_TO_DINT UINT USINT_TO_DWORD UINT_TO_BYTE USINT_TO_INT UINT_TO_DINT USINT_TO_LREAL UINT_TO_DWORD USINT_TO_REAL UINT_TO_INT USINT_TO_SINT UINT_TO_LREAL USINT_TO_UDINT...
ST-Grundlagen 4.2 Basiselemente der Sprache 4.2.3.2 Reservierte Bezeichner der Programmiersprache ST Die Tabelle enthält weitere reservierte Bezeichner, die künftigen Erweiterungen der Programmiersprache ST vorbehalten sind. Tabelle 4-2 Reservierte Bezeichner der Programmiersprache ST ACTION ADD_TIME ADD_TOD_TIME ADD_DT_TIME BCD_TO_BYTE BCD_TO_LWORD BCD_TO_DINT BCD_TO_SINT BCD_TO_DWORD BCD_TO_WORD BCD_TO_INT...
ST-Grundlagen 4.2 Basiselemente der Sprache SEMA SUB_DT_DT SINT_TO_BCD SUB_DT_TIME STEP SUB_TIME SUB_TOD_TIME SUB_DATE_DATE SUB_TOD_TOD TRANSITION ULINT VAR_ACCESS VAR_EXTERNAL VAR_ALIAS VAR_OBJECT WORD_TO_BCD 4.2.3.3 Weitere reservierte Bezeichner In Anwenderdefinitionen sind neben den geschützten Bezeichnern (Seite 101) und den reservierten Bezeichnern (Seite 107) der Programmiersprache ST auch Bezeichner zu vermeiden, die in SIMOTION eine definierte Bedeutung haben oder für künftige Erweiterungen vorgesehen sind.
ST-Grundlagen 4.2 Basiselemente der Sprache Eine Auflistung aller Bezeichner mit definierter Bedeutung finden Sie im Funktionshandbuch SIMOTION Basisfunktionen. Bezeichner, die für künftige Erweiterungen von SIMOTION vorgesehen sind Vermeiden Sie anwenderdefinierte Bezeichner, die für zukünftige Erweiterungen von SIMOTION vorgesehen sind. Sie treffen dadurch Vorsorge, dass auch in zukünftigen Versionen Ihre anwenderdefinierten Bezeichner keine in SIMOTION definierten Bezeichner verdecken.
ST-Grundlagen 4.2 Basiselemente der Sprache Im ST können Sie Ganzzahlen in unterschiedlichen Zahlensystemen darstellen. Das erfolgt durch Voranstellen eines Schlüsselwortes für das Zahlensystem. Dabei steht: ● 2# für das Binärsystem, ● 8# für das Oktalsystem und ● 16# für das Hexadezimalsystem. Gültige Darstellungen der Dezimalzahl 15 sind: 2#1111 8#17...
ST-Grundlagen 4.2 Basiselemente der Sprache 4.2.4.4 Boolesche Werte Boolesche Werte sind Bit-Konstanten. Sie müssen mit dem Wert Null (0) oder Eins (1) dargestellt werden oder durch die Schlüsselwörter FALSE bzw. TRUE. Beispiel: a := 1; // entspricht a := TRUE b := FALSE;...
ST-Grundlagen 4.3 Gliederung der ST-Quelle Tabelle 4-3 Zwei-Zeichen-Kombinationen für Sonderzeichen in Strings Zeichenkombination Bedeutung Dollarzeichen $ ($24) Apostroph (Hochkomma) ’ ($27) $’ oder Line Feed LF ($0A) oder Carriage Return + Line Feed CR + LF ($0D$0A) oder Form Feed FF ($0C) oder Carriage Return CR ($0D) oder...
Seite 113
ST-Grundlagen 4.3 Gliederung der ST-Quelle FUNCTION Test1 : REAL VAR CONSTANT PI : REAL := 3.1415; END _ VAR VAR _ INPUT r1 : REAL; END _ VAR Test1 := PI * r1 * r1; END _ FUNCTION Bild 4-4 Aufbau einer ST-Quelle Nicht jede Funktion müssen Sie selbst programmieren.
ST-Grundlagen 4.3 Gliederung der ST-Quelle 4.3.1 Anweisungen Der Anweisungsteil einer Programmorganisationseinheit (POE – Programm, Funktion, Funktionsbaustein) besteht aus wiederholten einzelnen Anweisungen. Er folgt dem Deklarationsabschnitt einer POE und endet mit dem Ende der POE. Er hat keine expliziten Schlüsselwörter für Anfang und Ende. Es gibt im ST drei grundlegende Anweisungen: ●...
ST-Grundlagen 4.4 Datentypen Bitte beachten Sie beim Einbau von Kommentaren: ● Innerhalb des Zeilenkommentars sind die Zeichenpaare (* und *) bedeutungslos. ● Die Schachtelung von Blockkommentaren ist standardmäßig nicht erlaubt. Möglich ist jedoch die Schachtelung von Zeilenkommentaren in Blockkommentaren. Nur bei akivierter Compileroption "Spracherweiterungen IEC61131‑3rd Edition zulassen": Es ist möglich, Blockkommentare zu schachteln.
ST-Grundlagen 4.4 Datentypen 4.4.1 Elementare Datentypen Elementare Datentypen definieren die Struktur von Daten, die nicht in kleinere Einheiten zerlegt werden können. Ein elementarer Datentyp beschreibt einen Speicherbereich mit fester Länge und steht für Bitdaten, Ganzzahlen, Gleitpunktzahlen, Zeitdauer, Uhrzeit, Datum und Zeichenstrings.
Seite 117
ST-Grundlagen 4.4 Datentypen Reserv. Wort Bitbreite Wertebereich Zeitdauer in Schritten TIME T#0d_0h_0m_0s_0ms bis T#49d_17h_2m_47s_295ms von 1 ms Maximal 2 Stellen für die Werte Tag, Stunde, Minute, Sekun‐ de; maximal 3 Stellen für Millisekunden. Initialisierung mit T#0d_0h_0m_0s_0ms Datum in Schritten von DATE D#1992-01-01 bis D#2200-12-31 1 Tag...
ST-Grundlagen 4.4 Datentypen Allgemeiner Datentyp Enthaltene Datentypen ANY_ELEMENTARY ANY_BIT, ANY_NUM, ANY_DATE, TIME, STRING ANY_ELEMENTARY, anwenderdefinierte Datentypen (UDT), Systemda‐ tentypen, Datentypen der Technologieobjekte Hinweis Allgemeine Datentypen können Sie nicht als Typbezeichner in Variablen- oder Typdeklarationen verwenden. Der allgemeine Datentyp bleibt erhalten, wenn ein anwenderdefinierter Datentyp (UDT) direkt von einem elementaren Datentyp abgeleitet wird (nur bei der Programmiersprache SIMOTION ST möglich).
ST-Grundlagen 4.4 Datentypen 4.4.2 Anwenderdefinierte Datentypen Anwenderdefinierte Datentypen oder UDT (user defined data types), erstellen Sie mit dem Konstrukt TYPE / END_TYPE in den Deklarationsabschnitten nachstehender Quelldatei- Abschnitte (siehe Gliederung der ST-Quelle (Seite 112) und Quelldatei-Abschnitte (Seite 267)): ● des Interfaceabschnitts ●...
Seite 121
ST-Grundlagen 4.4 Datentypen Die Vereinbarung der UDT wird durch das Schlüsselwort TYPE eingeleitet. Danach folgt für jeden zu vereinbarenden Datentyp, siehe Bild: 1. Bezeichnung (Name): Die Bezeichnung des Datentyps muss den Regeln für Bezeichner entsprechen. 2. Datentyp-Spezifikation: Datentyp sind zusammengefasst, siehe Ableitung elementarer oder Unter dem Begriff abgeleiteter Datentypen (Seite 123): –...
ST-Grundlagen 4.4 Datentypen 4.4.2.2 Ableitung elementarer oder abgeleiteter Datentypen Bei der Ableitung von Datentypen wird im Konstrukt TYPE / END_TYPE dem zu definierenden Datentyp ein elementarer bzw. anwenderdefinierter Datentyp (UDT) zugeordnet: TYPE Bezeichner : elementarer Datentyp { := Initialisierung } ; END_TYPE TYPE Bezeichner : anwenderdefinierter Datentyp { := Initialisierung } ;...
Seite 123
ST-Grundlagen 4.4 Datentypen Bild 4-7 Syntax: ARRAY-Datentyp-Spezifikation Die Indexspezifikation beschreibt die Grenzen des Feldes: ● Die Array-Grenzen geben den kleinst- und größtmöglichen Wert für den Index an. Sie können durch Konstanten oder Konstantenausdrücke vorgegeben werden; der Datentyp ist DINT (oder implizit nach DINT konvertierbar – siehe Konvertierung elementarer Datentypen (Seite 181)).
Seite 124
ST-Grundlagen 4.4 Datentypen Ein - und mehrdimensionale Felder Man unterscheidet mehrere ARRAY-Typen: ● Der eindimensionale ARRAY-Typ ist eine Liste von Datenelementen, die in aufsteigender Reihenfolge angeordnet sind. ● Der zweidimensionale ARRAY-Typ ist eine Tabelle von Daten, die aus Zeilen und Spalten besteht.
ST-Grundlagen 4.4 Datentypen Mit dem erzeugten Datentyp für die Tabelle deklarieren Sie eine Variable. Jede Dimension der Tabelle sprechen Sie über eckige Klammern an, in unserem Fall mit Angabe der Zeile und der Spalte. Redeklaration Datentyp-Definitionen von Felder (ARRAY) werden (auch in unterschiedlichen Quellen) als identisch erkannt, wenn nachstehende Bedingungen erfüllt sind: 1.
Seite 126
ST-Grundlagen 4.4 Datentypen Mit der Konvertierungsfunktion ENUM_TO_DINT erhalten Sie den numerischen Wert eines Aufzählungselements. Die Syntax dieser Funktion ist im Funktionshandbuch "SIMOTION Basisfunktionen" beschrieben. Beispiel Tabelle 4-15 Beispiele für Aufzählungsdatentypen TYPE C1 : (RED, GREEN, BLUE); END_TYPE myC11, myC12, myC13 : C1; END_VAR myC11 := GREEN;...
ST-Grundlagen 4.4 Datentypen 4.4.2.5 Abgeleiteter Datentyp STRUCT - Struktur Der abgeleitete Datentyp STRUCT oder Struktur umfasst im Konstrukt TYPE / END_TYPE einen Bereich aus einer festen Anzahl von Komponenten, deren Datentypen verschieden sein dürfen: TYPE Bezeichner : STRUCT-Datentyp-Spezifikation ; END_TYPE Bild 4-9 Syntax: STRUCT-Datentyp-Spezifikation Komponentendeklaration...
Seite 128
ST-Grundlagen 4.4 Datentypen Als Datentypen sind erlaubt: ● Elementare Datentypen ● Vorher vereinbarte UDT ● Systemdatentypen ● TO-Datentypen ● ARRAY-Datentyp-Spezifikation Optional können Sie Initialisierungswerte der Komponenten vorgeben, siehe "Initialisierung" in diesem Abschnitt. Hinweis Innerhalb einer Komponentendeklaration ist die direkte Verwendung folgender Datentyp- Spezifikationen nicht möglich: ●...
ST-Grundlagen 4.4 Datentypen Redeklaration Datentyp-Definitionen von Strukturen werden (auch in unterschiedlichen Quellen) als identisch erkannt, wenn nachstehende Bedingungen erfüllt sind: 1. Der Bezeichner des Datentyps ist identisch. 2. Alle Komponenten der Struktur sind identisch hinsichtlich: – Reihenfolge – Bezeichner – Datentypen bzw. ARRAY-Datentyp-Spezifikationen –...
Seite 130
ST-Grundlagen 4.4 Datentypen Bild 4-12 Syntax: Relative Adresse Wenn Sie relative Adressen der Strukturkomponenten vorgeben, müssen Sie dies bei allen Komponenten dieser Struktur tun. Die zulässigen relativen Adressen der Komponenten sind abhängig von deren Datentyp, siehe nachfolgende Tabelle: Tabelle 4-17 Zulässige Adressen und Länge verschiedener Datentypen Datentyp Zulässige Adresse Länge...
ST-Grundlagen 4.4 Datentypen Bei Verletzungen obiger Adressierungsregeln gibt der Compiler eine Fehlermeldung aus, in der auf den notwendiger Teiler hingewiesen wird. Tabelle 4-18 Beispiel für Struktur mit Angabe der relativen Adresse myLocatedStruct : STRUCT memb1 AT %B0 : INT; // Relative Adresse 0 // Byte 0 und 1 belegt memb2 AT %B8 : REAL;...
Seite 132
● Bei der Watchfunktion von IT DIAG _exportUnitDataSet und _importUnitDataSet , siehe Funktionshandbuch ● Für die Funktionen SIMOTION Basisfunktionen. ● Bei automatischen Anzeigen im SIMOTION SCOUT (z. B. Symbol-Browser (Seite 410), Status Programm (Seite 418)). Hinweis Verdeckte Komponenten können bei der Programmierung verwendet werden. Im ST‑Editor werden Sie bei der Funktion "Automatisches Vervollständigen"...
Seite 133
ST-Grundlagen 4.4 Datentypen Als Beispiel sind die sichtbaren Komponenten der folgenden Strukturdeklaration in der anschließenden Tabelle erläutert. Die nachfolgenden Beispiele einer Strukturdeklaration erläutern das Verhalten für sichtbare und verdeckte Komponenten. Die sichtbaren Komponenten und die dazugehörigen relativen Adressen sind jeweils in der anschließenden Tabelle angegeben. mystru : STRUCT OVERLAP AT %B0 : INT;...
ST-Grundlagen 4.4 Datentypen Die nachfolgenden Beispiele einer Strukturdeklaration erläutern dieses Initialisierungsverhalten. Die Initialisierungswerte der jeweiligen relativen Adressen sind jeweils in der anschließenden Tabelle angegeben. mystru_init : STRUCT OVERLAP AT %B0 : INT := 16#AAAA; // Warnung Initialisierungswert // Warnung OPC-XML AT %B6 : INT := 16#BBBB;...
ST-Grundlagen 4.4 Datentypen posaxis deklarieren und ihr eine Beispielsweise können Sie eine Variable mit dem Datentyp entsprechende Instanz einer Positionierachse zuweisen. Eine solche Variable wird oft als Referenz bezeichnet. Tabelle 4-21 Datentypen von Technologieobjekten (TO-Datentyp) Technologieobjekt Datentyp enthalten im Technologiepaket Drehzahlachse DriveAxis CAM, PATH...
ST-Grundlagen 4.4 Datentypen 4.4.3.2 Vererbung der Eigenschaften bei Achsen Vererbung bei den Achsen bedeutet, dass alle Datentypen, Systemvariablen und Funktionen des TO Drehzahlachse vollständig im TO Positionierachse enthalten sind. Die Positionierachse ist wiederum vollständig im TO Gleichlaufachse enthalten, die Gleichlaufachse im TO Bahnachse. Dies hat z. B. folgende Auswirkungen: ●...
ST-Grundlagen 4.4 Datentypen Das zweite Beispiel verzichtet auf eine Variable vom TO-Datentyp. Tabelle 4-24 Beispiel für die Verwendung eines Technologieobjekts myPos : LREAL; // Variable für Position der Achse retVal: DINT; // Variable für Rückgabewert der TO-Funktion END_VAR // Aufruf der Funktion ohne Variable vom TO-Datentyp // Name Axis1 wurde bei der Konfiguration der Achse // im Projektnavigator festgelegt.
ST-Grundlagen 4.5 Variablendeklaration Variablendeklaration Eine Variable definiert ein Datum mit variablem Inhalt, das in der ST-Quelle verwendet werden myVar1 ) und einem kann. Eine Variable besteht aus einem frei wählbaren Bezeichner (z. B. Datentyp (z. B. BOOL). Reservierte Bezeichner (siehe Reservierte Bezeichner (Seite 101)) dürfen nicht als Bezeichner verwendet werden.
Seite 139
ST-Grundlagen 4.5 Variablendeklaration Beachten Sie auch: ● Der Variablenname muss ein Bezeichner sein, d. h. er darf nur Buchstaben, Ziffern oder den Unterstrich enthalten, aber keine Sonderzeichen. ● Als Datentyp sind zulässig: – Elementare Datentypen – UDT (anwenderdefinierte Datentypen) – Systemdatentypen –...
ST-Grundlagen 4.5 Variablendeklaration 4.5.2 Übersicht aller Variablendeklarationen In den Variablen- und Parameterdeklarationen vereinbaren Sie Namen, Datentypen und Anfangswerte für Variablen. Diese Deklarationen führen Sie immer in folgenden Deklarationsabschnitten nachstehender Quelldatei-Abschnitte aus: ● Interfaceabschnitt ● Implementationsabschnitt ● POE (Programm, Funktion, Funktionsbaustein, Expression) Der Quelldatei-Abschnitt bestimmt auch, welche Variablen Sie deklarieren können (siehe Tabelle), sowie deren Reichweite.
ST-Grundlagen 4.5 Variablendeklaration Schlüsselwort Bedeutung Deklaration in folgenden Deklara‐ tionsabschnitten RETAIN Deklaration remanenter Variablen Nur als Zusatz: siehe Variablenmodell (Seite 293) ● zu VAR in POE: – Programm – Funktionbaustein – Klasse ● zu VAR_GLOBAL im: – Interfaceabschnitt – Implementationsabschnitt CONSTANT Deklaration von Konstanten Nur als Zusatz:...
Seite 142
ST-Grundlagen 4.5 Variablendeklaration Die Vorlegung einer Variablen oder eines anwenderdefinierten Datentyps mit Anfangswerten erfolgt mit einer Wertzuweisung (:=) nach der Datentypangabe: ● Weisen Sie elementaren Datentypen (bzw. von elementaren Datentypen abgeleiteten Syntax: Konstantenausdruck zu. Datentypen) einen Konstantenausdruck gemäß Bild ● Weisen Sie einem Feld (ARRAY) eine Feldinitialisierungsliste gemäß Bild Syntax: Feldinitialisierungsliste zu.
Seite 143
ST-Grundlagen 4.5 Variablendeklaration Bild 4-15 Syntax: Konstantenausdruck Bild 4-16 Syntax: Feldinitialisierungsliste SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 144
ST-Grundlagen 4.5 Variablendeklaration Bild 4-17 Syntax: Strukturinitialisierungsliste Tabelle 4-27 Beispiele für Variableninitialisierungen // Deklaration einer Variablen ... var1 : REAL := 100.0; // ... oder falls es mehrere Variablen desselben Typs gibt: var2, var3, var4 : INT := 1; var5 : REAL := 3 / 2; var6 : INT := 5 * SHL(1, 4);...
Seite 145
Hinweis Beim Speichern im alten Projektformat: Das Verwenden der aggregierten Bezeichner verhindert das fehlerfreie Übersetzen des Projekts in Versionen des SIMOTION SCOUT kleiner als V4.5. Innerhalb einer Strukturinitialisierungsliste können Sie beide Schreibweisen verwenden, sofern Sie unterschiedliche Komponenten initialisieren. SIMOTION ST Structured Text...
ST-Grundlagen 4.5 Variablendeklaration Felder innerhalb von Strukturen werden initialisiert, indem Sie der Komponente eine in eckigen Klammern "[" "]" eingeschlossene Feldinitialisierungsliste zuweisen. Siehe nachfolgendes Beispiel: Tabelle 4-29 Beispiele für die Initialisierung von Strukturen TYPE s_base : STRUCT i : INT; j : DINT;...
Seite 147
ST-Grundlagen 4.5 Variablendeklaration Bild 4-18 Syntax: Konstantenblock in einer POE Bild 4-19 Syntax: Unit-Konstanten im Interface- oder Implementationsabschnitt Bild 4-20 Syntax: Konstantendeklaration Zur Initialisierung einer Konstanten siehe "Initialisierung von Variablen oder Datentypen (Seite 141)". Der einer Konstanten zugewiesene Wert wird zum Zeitpunkt der Übersetzung aus dem Konstantenausdruck berechnet.
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke Wertzuweisungen und Ausdrücke Sie haben bisher ganz selbstverständlich Wertzuweisungen mit der Zeichenfolge := erstellt, Beispiele für Anweisungen in etwa beim Beispiel für eine Anweisung (siehe Tabelle Anweisungen (Seite 114)) oder bei der Initialisierung von Variablen im Deklarationsabschnitt eines Quelldatei-Abschnitts.
Seite 149
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke Bild 4-21 Syntax: Wertzuweisung In den folgenden Ausführungen finden Sie Erläuterungen und Beispiele zu der linken Seite der Wertzuweisung: ● Wertzuweisungen mit Variablen eines elementaren Datentyps (Seite 151) , ● Wertzuweisungen mit Variablen des abgeleiteten Datentyps Aufzählung (Enumerator) (Seite 155) ●...
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke 4.6.1.2 Wertzuweisungen mit Variablen eines elementaren Datentyps Ein Ausdruck mit einem elementaren Datentyp (Seite 116) kann einer Variablen zugewiesen werden, wenn eine der folgenden Bedingungen erfüllt ist: ● Ausdruck und Zielvariable haben den gleichen Datentyp. Beachten Sie den nachstehenden Hinweis zum Datentyp STRING (Seite 151).
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke Beispiele: byteVar := string20[5]; string20[10] := byteVar; Folgende Sonderfälle sind zu betrachten: 1. Bei der Zuweisung einer Variablen vom Datentyp BYTE an ein Stringelement (z. B. stringVar[n] := byteVar): – Das Stringelement, dem der Wert zugewiesen werden soll, liegt außerhalb der deklarierten Länge des Strings: Der String bleibt unverändert, TSI#ERRNO wird auf den Wert 1 gesetzt –...
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke 4.6.1.4 Wertzuweisungen mit Variablen eines Bitdatentyps Zugriff auf einzelne Bits einer Variablen eines Bitdatentyps Sie können auf die einzelnen Bits einer Variablen vom Datentyp BYTE, WORD oder DWORD zugreifen: ● Mit Standardfunktionen, siehe Funktionshandbuch SIMOTION Basisfunktionen: Mit den Funktionen _getBit, _setBit und _toggleBit können Sie ein beliebiges Bit eines Bitstrings lesen, schreiben bzw.
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke Tabelle 4-31 Beispiel für direkten Bitzugriff // Nur mit Compileroption "Spracherweiterungen zulassen" FUNCTION f : VOID VAR CONSTANT BIT_7 : INT := 7; END_VAR dw : DWORD; : BOOL; END_VAR b := dw.BIT_7; // Zugriff auf Bit 7 b := dw.3;...
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke 4.6.1.5 Wertzuweisungen mit Variablen des abgeleiteten Datentyps Aufzählung (Enumerator) Jeder Ausdruck und jede Variable des abgeleiteten Datentyps Aufzählung (siehe auch: Abgeleiteter Datentyp Aufzählung - Enumerator (Seite 125)) kann einer anderen typgleichen Variablen zugewiesen werden. type1 := BLUE;...
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke Gültige Angaben für eine Strukturvariable sind: struct1 // Bezeichner für eine Struktur struct1.elem1 // Bezeichner für Strukturkomponente struct1.array1 // Bezeichner eines einfachen Feldes // innerhalb einer Struktur struct1.array1[5] // Bezeichner einer Feldkomponente // innerhalb einer Struktur Für die Zuweisung von Strukturen an eine Variable gibt es zwei Varianten, Sie können komplette Strukturen oder Strukturkomponenten referenzieren: ●...
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke ST unterscheidet: ● Arithmetische Ausdrücke (Seite 160) ● Vergleichsausdrücke (Seite 163) ● Logische Ausdrücke und Bitfolgeausdrücke (Seite 165) 4.6.2.1 Ergebnis eines Ausdrucks Das Ergebnis eines Ausdrucks können Sie ● einer Variablen zuweisen, ● als Bedingung für eine Kontrollanweisung verwenden, ●...
Seite 157
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke Die Verarbeitung der Ausdrücke erfolgt nach bestimmten Regeln: ● Die Operatoren werden entsprechend ihrer Priorität bearbeitet (siehe Tabelle in Rangfolge der Operatoren (Seite 167)). ● Operatoren gleicher Priorität werden von links nach rechts bearbeitet. ● Das Voranstellen eines Minuszeichens vor einen Bezeichner ist gleichbedeutend mit der Multiplikation mit -1.
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke 4.6.3 Operanden Definition Operanden sind Objekte, mit denen Ausdrücke gebildet werden können. Operanden lassen sich durch das Syntaxdiagramm darstellen: Bild 4-23 Syntax: Operand Tabelle 4-33 Beispiele für Operanden intVar %I4.0 NOT TRUE axis1.motionStateData.actualVelocity SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke 4.6.4 Arithmetische Ausdrücke Ein arithmetischer Ausdruck ist ein mit arithmetischen Operatoren gebildeter Ausdruck. Solche Ausdrücke ermöglichen die Verarbeitung von numerischen Datentypen. Bild 4-24 Syntax: arithmetischer Operator Bild 4-25 Syntax: arithmetischer Basisoperator Die nachfolgende Tabelle zeigt für jede arithmetische Operation: ●...
Seite 160
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke Tabelle 4-34 Arithmetische Operatoren Operation Operator Datentyp 1. Operand 2. Operand Ergebnis Potenzierung ANY_REAL ANY_REAL ANY_REAL (siehe auch Funktion EXPT) unäres Minus ANY_NUM (kein) ANY_NUM Multiplikation ANY_NUM ANY_NUM ANY_NUM ANY_BIT ANY_BIT ANY_BIT TIME ANY_NUM TIME Division ANY_NUM ANY_NUM...
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke Hinweis Wird bei Operationen mit Variablen vom allgemeinen Datentyp ANY_REAL die Grenzen des Wertebereichs überschritten, enthält das Ergebnis das entsprechende Bitmuster nach IEEE 754. Um festzustellen, ob bei der Operation der Wertebereich überschritten wurde, können Sie mit _finite (siehe Funktionshandbuch SIMOTION Basisfunktionen ) das Ergebnis der Funktion überprüfen.
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke t1 / 2 T#12H_30M_30S_500MS DATE_AND_TIME_TO_TIME_OF_DAY(dt1) TOD#11:11:11.110 DATE_AND_TIME_TO_DATE(dt1) D#2004-01-11 4.6.5 Vergleichsausdrücke Definition Ein Vergleichsausdruck ist ein mit Vergleichsoperatoren (siehe Bild) gebildeter Ausdruck vom Datentyp BOOL. Bild 4-26 Syntax: Vergleichsoperatoren Vergleichsoperatoren vergleichen 2 Operanden bezüglich ihres Wertes (siehe Tabelle) und liefern als Ergebnis einen Booleschen Wert.
Seite 163
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke Die nachstehende Tabelle zeigt die für beide Operanden zulässigen Kombinationen der Datentypen und Vergleichsoperatoren. Tabelle 4-36 Vergleichsausdrücke: Zulässige Kombinationen der Datentypen und Vergleichsoperatoren Datentyp Zulässige Vergleichsoperatoren 1. Operand 2. Operand ANY_NUM ANY_NUM <, >, <=, >=, =, <> ANY_BIT ANY_BIT <, >, <=, >=, =, <>...
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke Tabelle 4-37 Beispiele für Vergleichsausdrücke IF A = 2 THEN ; //... END_IF; var_1 := B < C; // var_1 vom Datentyp BOOL IF D < E OR var_2 THEN // var_2 vom Datentyp BOOL ;...
ST-Grundlagen 4.6 Wertzuweisungen und Ausdrücke Der Ausdruck wird bezeichnet ● als logischer Ausdruck, wenn ausschließlich Operanden vom Datentyp BOOL verwendet werden. Die Operatoren wirken gemäß der nachfolgenden Wahrheitstabelle auf die Operanden. Das Ergebnis eines logischen Ausdrucks ist 1 (TRUE) oder 0 (FALSE). ●...
ST-Grundlagen 4.7 Kontrollanweisungen 4.6.7 Rangfolge der Operatoren In Ausdrücke (Seite 155) wurden einige allgemeine Regeln zur Bildung von Ausdrücken beschrieben. In der Tabelle sehen Sie die Rangfolge der einzelnen Operatoren innerhalb eines Ausdrucks. Operation Symbol Rangfolge Klammerung (Ausdruck) Höchste Funktions-Auswertung Bezeichner (Argument-Liste) z.
Seite 167
ST-Grundlagen 4.7 Kontrollanweisungen Die Ausführung der bedingten Anweisung bewirkt die Auswertung der angegebenen logischen Ausdrücke. Ist der Wert eines Ausdrucks TRUE, so gilt die Bedingung als erfüllt, bei FALSE als nicht erfüllt. Bild 4-27 Syntax: IF-Anweisung Bearbeitungsreihenfolge Die IF-Anweisung wird nach den folgenden Regeln bearbeitet: 1.
ST-Grundlagen 4.7 Kontrollanweisungen Beachten Sie, dass die ELSIF-Zweige und/oder der ELSE-Zweig fehlen können. Diese Fälle werden behandelt, als wären diese Zweige mit leeren Anweisungen vorhanden. Hinweis Die Verwendung eines oder mehrerer ELSIF-Zweige bietet gegenüber einer Sequenz von IF- Anweisungen den Vorteil, dass die einem gültigen Ausdruck folgenden logischen Ausdrücke nicht mehr ausgewertet werden.
Seite 169
ST-Grundlagen 4.7 Kontrollanweisungen Bild 4-28 Syntax: CASE-Anweisung Bearbeitungsreihenfolge Die CASE-Anweisung wird nach folgenden Regeln bearbeitet: 1. Der Auswahlausdruck (Selektor) wird berechnet. Er muss einen Wert vom allgemeinen Datentyp ANY_INT (Ganzzahl) oder von einem Aufzählungsdatentyp liefern. 2. Anschließend wird überprüft, ob der Wert des Selektors in der Wertliste enthalten ist. Jeder Wert in dieser Liste stellt einen der erlaubten Werte für den Auswahlausdruck dar.
Seite 170
ST-Grundlagen 4.7 Kontrollanweisungen Wertliste Die Wertliste enthält die erlaubten Werte für den Auswahlausdruck. Bild 4-29 Syntax: Wertliste Beachten Sie bei der Formulierung der Wertliste: Wert ), einer Konstantenliste ( Wert1, Wert2, ● Jede Wertliste kann mit einer Konstanten ( Wert3, … ) oder einem Konstantenbereich ( Wert1 .. Wert2 ) beginnen. ●...
ST-Grundlagen 4.7 Kontrollanweisungen 4.7.3 FOR-Anweisung Beschreibung Eine FOR-Anweisung oder auch Wiederholungsanweisung führt eine Anweisungsfolge in einer Schleife aus, wobei einer Variablen (der Laufvariablen) fortlaufend Werte zugewiesen werden. Die Laufvariable muss der Bezeichner einer lokalen Variablen vom Typ SINT, INT oder DINT sein. Die Definition einer Schleife mit FOR schließt die Festlegung eines Start- und Endwertes mit ein.
Seite 172
ST-Grundlagen 4.7 Kontrollanweisungen Bearbeitungsreihenfolge Die FOR-Anweisung wird nach folgenden Regeln bearbeitet: 1. Beim Start der Schleife wird die Laufvariable auf den Startwert gesetzt und nach jedem Schleifendurchlauf um die angegebene Schrittweite erhöht (positive Schrittweite) oder erniedrigt (negative Schrittweite), solange bis der Endwert erreicht ist. Nach dem ersten Schleifendurchlauf wird der Inhalt der Laufvariable als Aktualwert bezeichnet.
ST-Grundlagen 4.7 Kontrollanweisungen 4.7.4 WHILE-Anweisung Beschreibung Die WHILE-Anweisung erlaubt die wiederholte Ausführung einer Anweisungsfolge unter der Kontrolle einer Durchführungsbedingung. Die Durchführungsbedingung wird nach den Regeln eines logischen Ausdrucks gebildet. Hinweis Verwenden Sie die WHILE-Anweisung, wenn die Anzahl der Durchläufe bei der Programmierung nicht bekannt ist.
ST-Grundlagen 4.7 Kontrollanweisungen Beispiel Das folgende Beispiel veranschaulicht den Gebrauch der WHILE-Anweisung: Beispiel für die WHILE-Anweisung WHILE Index <= 50 DO Index:= Index + 2; END_WHILE; 4.7.5 REPEAT-Anweisung Beschreibung Eine REPEAT-Anweisung bewirkt die wiederholte Ausführung einer zwischen REPEAT und UNTIL stehenden Anweisungsfolge bis zum Eintreten einer Abbruchbedingung. Die Abbruchbedingung wird nach den Regeln eines logischen Ausdrucks gebildet.
ST-Grundlagen 4.7 Kontrollanweisungen Bearbeitungsreihenfolge Die REPEAT-Anweisung wird nach folgenden Regeln bearbeitet: 1. Nach jeder Ausführung des Anweisungsteils wird die Durchführungsbedingung ausgewertet. 2. Tritt der Wert FALSE auf, wird der Anweisungsteil erneut ausgeführt. 3. Tritt der Wert TRUE auf, wird die Ausführung der REPEAT-Anweisung beendet; die Programmabarbeitung wird nach END_REPEAT fortgesetzt.
ST-Grundlagen 4.7 Kontrollanweisungen 4.7.7 CONTINUE-Anweisung Beschreibung Die CONTINUE-Anweisung steht nur zur Verfügung, wenn die Compileroption Spracherweiterungen IEC61131-3rd Edition aktiviert ist, siehe Globale Einstellungen des Compilers (Seite 62) und Lokale Einstellungen des Compilers (Seite 66). Sie dient zum Sprung an den Anfang einer Schleife (FOR, WHILE oder REPEAT-Schleife) von einer beliebigen Stelle aus.
ST-Grundlagen 4.7 Kontrollanweisungen Beispiel Das folgende Beispiel veranschaulicht den Gebrauch der RETURN-Anweisung: Beispiel für die RETURN-Anweisung Index := 1; FOR Index := 1 to 51 BY 2 DO IF %I0.0 THEN RETURN; END_IF; END_FOR; Die folgende Wertzuweisung kommt nach dem regulären Ende der FOR-Schleife zur Ausführung, nicht jedoch nach Ausführung von RETURN.
Seite 178
ST-Grundlagen 4.7 Kontrollanweisungen Bild 4-33 Syntax: WAITFORCONDITION-Anweisung Expression - Bezeichnung ist ein mit EXPRESSION vereinbartes Konstrukt; ihr Wert bestimmt WITH Flankenauswertung ), ob die Bedingung als erfüllt gilt. (ggf. zusammen mit WITH Flankenauswertung ist optional. Dabei ist Flankenauswertung ein Ausdruck Die Folge Expression-Bezeichnung ausgewertet vom Datentyp BOOL;...
ST-Grundlagen 4.7 Kontrollanweisungen Beispiel Das folgende Beispiel veranschaulicht den Gebrauch der WAITFORCONDITION-Anweisung: Beispiel für die WAITFORCONDITION-Anweisung // ... // Aufruf des Befehls mit Namen der Expression WAITFORCONDITION myExpression WITH TRUE DO // hier mind. eine Anweisung, wird hochprior ausgeführt, z. B. %Q0.0 := TRUE;...
ST-Grundlagen 4.8 Datentyp-Konvertierungen Datentyp-Konvertierungen In diesem Kapitel erfahren Sie, wie Sie implizit und explizit zwischen elementaren Datentypen konvertieren können. Außerdem ist ein Überblick über ergänzende Konvertierungsmöglichkeiten enthalten. 4.8.1 Konvertierung elementarer Datentypen Die Tabelle gibt einen Überblick über die Konvertierungsmöglichkeiten zwischen numerischen Datentypen und Bit-Datentypen.
ST-Grundlagen 4.8 Datentyp-Konvertierungen 4.8.1.1 Implizite Datentyp-Konvertierungen Eine implizite Konvertierung ist immer dann möglich, wenn durch Vergrößerung des Wertebereichs kein Wertverlust gegeben ist, z. B. von REAL nach LREAL oder von INT nach REAL. Das Ergebnis ist immer definiert. Das folgende Bild zeigt alle impliziten Typkonvertierungsketten grafisch. Dabei stellt eine Stufe in einer Typkonvertierungskette –...
Seite 182
ST-Grundlagen 4.8 Datentyp-Konvertierungen Alle anderen Typkonvertierungen sind nicht implizit durchführbar (z. B. UDINT nach REAL), d. h. Sie müssen eine explizite Funktion (Seite 184) benutzen, siehe Funktionshandbuch SIMOTION Basisfunktionen. Hinweis In Ausdrücken wird das Ergebnis immer im größten Zahlenformat des Ausdrucks berechnet. Eine Wertzuweisung des Ausdrucks an eine Variable ist nur möglich: ●...
ST-Grundlagen 4.8 Datentyp-Konvertierungen Hinweis Geben Sie ggf. bei Zahlen den Datentyp explizit an (z. B. UINT#127, wenn die Zahl 127 vom Datentyp UINT statt USINT sein soll). 4.8.1.2 Explizite Datentyp-Konvertierungen Eine explizite Konvertierung ist immer dann notwendig, wenn Informationsverlust möglich ist, z.
ST-Grundlagen 4.8 Datentyp-Konvertierungen 4.8.2 Ergänzende Konvertierungen Über ST-Systemfunktionen und ST-Systemfunktionsbausteine sind außerdem folgende Konvertierungen möglich: ● Zusammenfassen von Bitstring-Datentypen Diese Funktionen fassen mehrere Variablen eines Bitstring-Datentyps zu einer Variablen eines übergeordneten Datentyps zusammen. ● Zerlegen von Bitstring-Datentypen Diese Funktionsbausteine zerlegen eine Variablen eines Bitstring-Datentyps in mehrere Variablen eines untergeordneten Datentyps.
Funktionen, Funktionsbausteine, Programme In diesem Kapitel erfahren Sie, wie Sie selbstdefinierte Funktionen und Funktionsbausteine erstellen und aufrufen. Standardfunktionen sind bereits im System vorhanden und stellen Ihnen Lösungen im Bereich Typumwandlung, Trigonometrie und Bitstrings zur Verfügung. Wie Sie Systemfunktionen und Funktionen der Technologieobjekte (TO-Funktionen) einsetzen, SIMOTION Basisfunktionen .
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Bild 5-1 Syntax: Funktion (FC) Geben Sie in folgender Reihenfolge ein, siehe Beispiel in Quelldatei mit Kommentaren (Seite 214)): ● das Schlüsselwort FUNCTION ● einen Bezeichner als FC-Namen ● Wenn die Funktion einen Rückgabewert hat, nach einem Doppelpunkt den Datentyp des Rückgabewerts Bei einer Funktion ohne Rückgabewert ist auch die Angabe des symbolischen Datentyps VOID möglich.
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Bild 5-2 Syntax: Funktionsbaustein (FB) Geben Sie in folgender Reihenfolge ein, siehe Beispiel in Quelldatei mit Kommentaren (Seite 214): ● das Schlüsselwort FUNCTION_BLOCK ● einen Bezeichner als FB-Namen Danach folgen: ●...
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Bild 5-3 Syntax: Funktionsbaustein (FB) mit Methoden Geben Sie in folgender Reihenfolge ein: ● das Schlüsselwort FUNCTION_BLOCK ● einen Bezeichner als FB-Namen Danach folgen: ● der optionale Deklarationsabschnitt (Seite 193) ●...
Seite 189
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Bild 5-4 Syntax: Methode im Funktionsbaustein Geben Sie in folgende Reihenfolge ein: ● das Schlüsselwort METHOD. ● den optionalen Zugriffsbezeichner FB (PUBLIC. PRIVATE oder INTERNAL), Voreinstellung PRIVATE. Zum Zugriffsbezeichner siehe Abschnitt "Zugriffsbezeichner innerhalb von objektorientierten FB"...
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen 5.1.2.4 Zugriffsbezeichner innerhalb von objektorientierten FB Innerhalb von objektorientierten Funktionsbausteinen ist bei Deklarationsblöcken oder Methoden die Angabe eines Zugriffsbezeichners möglich: ● Bei Deklarationsblöcken: Unmittelbar nach dem Schlüsselwort für den jeweiligen Block (z. B. TYPE, VAR). Der Zugriffsbezeichner ist gültig für alle Bezeichner innerhalb dieses Deklarationsblocks.
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Tabelle 5-1 Mögliche Zugriffsbezeichner innerhalb eines objektorientierten Funktionsbausteins Zugriffsbezeichner Bedeutung PRIVATE Die Bezeichner des jeweiligen Deklarationsblocks (Variablen, Datentypen usw.) bzw. die Methode sind nur innerhalb dieses Funktionsbausteins nutzbar. In abgeleiteten Klassen sind diese Bezeichner bzw. die Methode nicht nutzbar. INTERNAL Nur wenn der Bezeichner innerhalb eines objektorientierten Namensraums (Sei‐...
Seite 192
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Daten Syntax Methode in FB Eingangsparameter VAR_INPUT Vereinbarungsliste END_VAR Durchgangsparameter VAR_IN_OUT Vereinbarungsliste END_VAR Ausgangsparameter VAR_OUTPUT Vereinbarungsliste END_VAR Lokale statuische Vari‐ – – able Vereinbarungsliste END_VAR Lokale temporäre Vari‐ – able Vereinbarungsliste END_VAR...
Seite 193
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Die folgenden Bilder zeigen die Syntax für die Parameterdeklaration eines FB, einer FC bzw. einer Methode im FB. Bild 5-6 Syntax: Parameterblock FB SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 194
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Bild 5-7 Syntax: Parameterblock FC SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 195
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Bild 5-8 Syntax: Parameterblock Methode Außer Variablen können Sie in den Parameterblöcken auch deklarieren: ● im Parameterblock für Durchgangsparameter: – Instanzen von Funktionsbausteinen (Seite 207), – Felder (ARRAY) mit dynamischer Länge (Seite 200), ab Version V4.2 der SIMOTION Kernels.
Hinweis Bei Speichern des Projekts im alten Projektformat: Die Deklaration von Ausgangsparameters bei einer Funktion verhindert das fehlerfreie Übersetzen des Projekts in Versionen des SIMOTION SCOUT kleiner als V4.5. 5.1.4 Anweisungsabschnitt von FB und FC Der Anweisungsabschnitt der FC oder des FB beinhaltet Anweisungen, die mit dem Aufruf zur Ausführung kommen.
Seite 197
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Tabelle 5-3 Verwendung von Parametern und Variablen in FC und FB Parameter/Variable Verwendung Eingangsparameter Beim Aufruf einer FC oder eines FB weisen Sie den Eingangsparametern aktuelle Werte zu. Diese Werte werden innerhalb der FC bzw. des FB für die Bearbeitung von Daten verwendet, beispielsweise für Berechnungen, kön‐...
Bei Speichern des Projekts im alten Projektformat: Das Verwenden [*] zur Kennzeichnung eines dynamischen Arrays verhindert das fehlerfreie Übersetzen des Projekts in Versionen des SIMOTION SCOUT kleiner als V4.5. Verwendung eines ARRAYs mit dynamischer Länge Beim Aufruf der Funktion bzw. einer Instanz des Funktionsbausteins können Felder beliebiger Länge des deklarierten Datentyps übergeben werden.
Seite 199
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen array-name ) liefert die Anzahl der Indexgrenze bestimmen. Die Funktion _lengthIndexOf (in := Elemente des ARRAYs. Es gilt: _lengthIndexOf (x) := _lastIndexOf (x) - _firstIndexOf (x) + 1. Hinweis Bei aktivierter Compileroption (Seite 62) "Spracherweiterungen IEC61131-3rd Edition array-name ) zulassen"...
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Beispiel Tabelle 5-4 Beispiel für Verwendung eines ARRAYs mit dynamischer Länge FUNCTION_BLOCK example_dyn_array VAR_IN_OUT flexarray : ARRAY [..] OF DINT; END_VAR VAR_TEMP i : DINT := 0; END_VAR i := _firstIndexOf (in := flexarray); WHILE i <= _lastIndexOf (in := flexArray) DO flexArray[i] := i;...
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen 5.1.6.1 Prinzip der Parameterübergabe Beim Aufruf von FC und FB findet ein Datenaustausch zwischen dem aufrufenden und dem aufgerufenen Baustein statt. Die Parameter, die übergeben werden sollen, müssen im Aufruf als Parameterliste angegeben werden.
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Bei einem FB ist die Zuweisung von Aktualparametern optional. Wenn keine Eingangszuweisung angegeben wird, dann bleiben die Werte des letzten Aufrufs erhalten, da der FB ein Quelldatei-Abschnitt mit Gedächtnis ist. Bei einer FC ist die Zuweisung eines Aktualparameters optional, wenn bei der Deklaration des Formalparameters ein Initialisierungsausdruck angegeben wurde.
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Bei Verwendung des Datentyps STRING in Durchgangszuweisungen muss die deklarierte Länge des Aktualparameters größer oder gleich der Länge des formalen Durchgangsparameters sein (siehe nachfolgendes Beispiel). Tabelle 5-5 Beispiel für die Verwendung des Datentyps STRING in Durchgangszuweisungen FUNCTION_BLOCK REF_STRING VAR_IN_OUT io : STRING[80];...
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Ausgangszuweisungen sind bei der Parameterübergabe optional. Wenn keine Ausgangszuweisung für einen Ausgangsparameter existiert, gilt: ● Bei Funktionen (FC): Nach Beenden der FC sind die Werte der Ausgangsparameter verloren. ● Bei Funktionsbausteinen (FB): Sie können auch außerhalb eines FB jederzeit auf dessen Ausgangsparameter lesend zugreifen.
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Beispiele: y := sin(x); y := sin(in := x); y := sqrt (1 - cos(x) * cos(x)); Hinweis In der Funktion selbst wird das Ergebnis (Rückgabewert) dem Funktionsnamen zugewiesen. Funktion ohne Rückgabewert (kein Datentyp oder Datentyp VOID) Die Anweisung besteht nur aus dem Funktionsaufruf.
Seite 206
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Grundsätzlich gilt: Der Funktionsbaustein muss in der ST‑Quelle deklariert sein, bevor eine Instanz deklariert werden kann. Ausnahme: Ohne Initialisierung und mit Compileroption (Seite 62) "Vorwärtsdeklaration erlauben" ist die vorherige Definition eines POE‑Prototypen (Seite 396) ausreichend. Bild 5-14 Syntax: Instanzdeklaration FB Bespiel für die Instanzdeklaration eines FB mit Initialisierung:...
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Instanz eines Funktionsbausteins aufrufen Im Anweisungsabschnitt einer POE rufen Sie die Instanz des Funktionsbausteins auf (Syntax siehe Bild). FB-Parameter sind die durch Kommata getrennten Eingangs-, Durchgangs- und Ausgangszuweisungen. Bild 5-15 Syntax FB-Aufruf Das Beispiel der folgenden Tabelle ist gültig unter der Voraussetzung, dass die Funktionsbausteine...
Funktionen, Funktionsbausteine, Programme 5.1 Erstellung und Aufruf von Funktionen und Funktionsbausteinen Der Instanzname des FB selbst darf in einer Wertzuweisung nicht verwendet werden! Tabelle 5-7 Beispiel für Zuweisung an Eingangsparameter // Nur mit aktivierter Compileroption "Spracherweiterungen zulassen" var_fb : _WORD_TO_2BYTE; var_word : WORD;...
Funktionen, Funktionsbausteine, Programme 5.2 Funktionen und Funktionsbausteine im Vergleich 5.1.6.12 Fehlerquellen beim Aufruf eines FB Beachten Sie beim Aufruf einer Instanz eines FB: ● Weisen Sie Durchgangsparametern nur Variablen zu, die direkt im Speicher hinterlegt sind! Erlaubt sind als Aktualparameter nur: –...
Seite 211
Funktionen, Funktionsbausteine, Programme 5.2 Funktionen und Funktionsbausteine im Vergleich ● Für die Fläche des Kreises stehen beim FB und bei der FC unterschiedliche Möglichkeiten zur Verfügung: – Beim FB wird ein Ausgangsparameter definiert. – Bei der FC wird der Rückgabewert der FC verwendet; der Datentyp des Rückgabewerts wird entsprechend definiert.
Funktionen, Funktionsbausteine, Programme 5.2 Funktionen und Funktionsbausteine im Vergleich 5.2.2 Quelldatei mit Kommentaren Tabelle 5-8 Beispiel für die Unterschiede zwischen FB und FC Funktionsbaustein (FB) Funktion (FC) INTERFACE INTERFACE PROGRAM CircleCalc1; PROGRAM CircleCalc2; END_INTERFACE END_INTERFACE IMPLEMENTATION IMPLEMENTATION FUNCTION_BLOCK Circle1 FUNCTION Circle2 : LREAL // Konstantendeklaration // Konstantendeklaration VAR CONSTANT...
Seite 213
Funktionen, Funktionsbausteine, Programme 5.2 Funktionen und Funktionsbausteine im Vergleich Tabelle 5-9 Erläuterungen zum vorstehenden Beispiel für die Unterschiede zwischen FB und FC Funktionsbaustein (FB) Funktion (FC) Kommentare Reservierte Wörter für die Definition: Reservierte Wörter für die Definition: FUNCTION_BLOCK und END_FUNCTION_BLOCK FUNCTION und END_FUNCTION Kein Rückgabewert erlaubt.
Funktionen, Funktionsbausteine, Programme 5.3 Programme Funktionsbaustein (FB) Funktion (FC) Kommentare ● Den Durchgangsparametern weisen Sie beim Aufruf der ● Den Durchgangsparametern weisen Sie beim Aufruf der Instanz des FB eine Variable zu. Instanz des FB eine Variable zu. ● Die Ausgangsparameter können Sie beim Aufruf einer ●...
Funktionen, Funktionsbausteine, Programme 5.3 Programme 5.3.1 Zuordnung eines Programms im Ablaufsystem Standardmäßig werden Programme im Ablaufsystem einer Task zugeordnet. Das Ablaufverhalten der Programme, z. B. Initialisierung der Variablen, wird von der jeweiligen Task bestimmt. Näheres zum Ablaufsystem und zu den Tasks siehe Funktionshandbuch SIMOTION Basisfunktionen .
Funktionen, Funktionsbausteine, Programme 5.4 Expressions Expressions Die Expression ist ein Spezialfall einer Funktionsvereinbarung: ● Der Datentyp des Rückgabewerts ist als BOOL festgelegt und wird nicht explizit angegeben. Sie wird im Zusammenhang mit der WAITFORCONDITION-Anweisung (Seite 177) verwendet. Eine Expression kann ausschließlich im Implementationsabschnitt der ST-Quelle vereinbart werden.
Seite 217
Im folgenden Beispiel wird unterstellt, dass das Programm feeder in einer MotionTask abläuft. Für diese MotionTask ist die Option Aktivierung nach StartupTask ausgewählt. Die Zuordnung von Programmen zu Tasks nehmen Sie im SIMOTION SCOUT vor (siehe Funktionsbeschreibung SIMOTION Motion Control Basisfunktionen).
Seite 218
Funktionen, Funktionsbausteine, Programme 5.4 Expressions eine EXPRESSION mit Parametern verwenden und z. B. eine Zeitüberwachung in einer WAITFORCONDITION-Anweisung programmieren. SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Objektorientierte Programmierung - OOP (ab Kernel V4.5) Wichtiger Hinweis zur objektorientierten Programmierung Ab Version V4.5 stellt die Programmiersprache Structured Text Möglichkeiten zur objektorientierten Programmierung bereit. Sie können die objektorientierte Programmierung in einzelnen oder allen ST‑Quellen unter den nachstehenden Voraussetzungen nutzen. Voraussetzungen zur objektorientierten Programmierung Zur Nutzung der objektorientierten Programmierung in einer ST‑Quelle sind folgende Voraussetzungen zwingend erforderlich:...
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.2 Klassen und Methoden Klassen und Methoden 6.2.1 Erstellung von Klassen (Basisklassen) 6.2.1.1 Klassen (Basisklassen) definieren Eine Klasse definieren Sie im Vereinbarungsteil des Implementationsabschnitts möglichst vor dem Abschnitt der Quelldatei (Programm, FB, FC oder Klasse), in dem sie aufgerufen wird. Dabei verwenden Sie folgende Syntax: Bild 6-1 Syntax: Basisklasse...
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.2 Klassen und Methoden Bild 6-2 Syntax: Zugriffsbezeichner Klasse Tabelle 6-2 Mögliche Zugriffsbezeichner innerhalb einer Klasse Zugriffsbezeichner Bedeutung PRIVATE Die Bezeichner des jeweiligen Deklarationsblocks (Variablen, Datentypen usw.) bzw. die Methode sind nur innerhalb dieser Klasse nutzbar. In abgeleiteten Klassen sind diese Bezeichner bzw.
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.2 Klassen und Methoden 6.2.2 Erstellung von Methoden 6.2.2.1 Methoden definieren Die ausführbaren Anweisungen einer Klasse sind in Methoden zusammengefasst. Innerhalb einer Klasse werden die Methoden nach dem Deklarationsabschnitt der Klasse definiert. Eine Methode entspricht in etwa einer Funktion (Seite 185). Die Angabe eines Zugriffsbezeichner legt das Umfeld fest, aus dem die Methode aufgerufen werden kann.
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.2 Klassen und Methoden ● Die Schlüsselwörter FINAL, ABSTRACT und OVERRIDE sind nur für Methoden in abzuleitenden bzw. abgeleiteten Klassen relevant: – FINAL: Methode kann in einer abgeleiteten Klasse nicht überschrieben werden. – ABSTRACT: Methode kann nicht aufgerufen werden, sie muss in einer abzuleitenden Klasse überschrieben werden.
Seite 225
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.2 Klassen und Methoden Daten Syntax Ausgangsparameter VAR_OUTPUT Vereinbarungsliste END_VAR Lokale Variable VAR oder VAR_TEMP (temporär) Vereinbarungsliste END_VAR Vereinbarungsliste : die Liste der Bezeichner des Typs, der deklariert werden soll. Parameterblöcke Parameter gehören zu den Lokaldaten und sind Formalparameter einer Methode. Wenn die Methode aufgerufen wird, ersetzen die Aktualparameter die Formalparameter und bilden somit einen Mechanismus zum Informationsaustausch zwischen den aufgerufenen und aufrufenden Quelldatei-Abschnitten.
Seite 226
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.2 Klassen und Methoden Bild 6-4 Syntax: Parameterblock Methode Außer Variablen können Sie in den Parameterblöcken auch deklarieren: ● im Parameterblock für Durchgangsparameter: – Instanzen von Funktionsbausteinen (Seite 205), – Instanzen von Klassen (Seite 235), –...
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.2 Klassen und Methoden 6.2.2.3 Anweisungsabschnitt von Methoden Der Anweisungsabschnitt einer Methode beinhaltet Anweisungen, die mit dem Aufruf zur Ausführung kommen. Es gibt keine Unterschiede zu den formalen Regeln zur Bildung eines Anweisungsabschnitts, inhaltlich sollten Sie jedoch die Hinweise in der folgenden Tabelle beachten.
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.2 Klassen und Methoden 6.2.3 Methoden innerhalb der Klasse aufrufen 6.2.3.1 Methode aufrufen Innerhalb einer Klasse können Methoden in anderen Methoden aufgerufen werden. Der Aufruf erfolgt ähnlich wie bei Funktionen durch Angabe der Methodenbezeichnung und der Parameter liste (FC-Parameter).
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.2 Klassen und Methoden Methodenspezifikation Beschreibung SUPER. Bei abgeleiteten Klassen: Expliziter Aufruf einer Methode der Basisklasse (statische Bindung). Klassenbezeichnung. Expliziter Aufruf einer Methode der angegebenen Klasse (statische Bindung). Erlaubte Klassenbezeichnungen: Eigene Klasse und alle Basisklassen innerhalb einer Methodenimplementierung Instanzbezeichnung.
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.2 Klassen und Methoden Durchgangsparameter nur eine typgleiche Variable zuweisen, Datentypkonvertierungen sind nicht möglich. Die formalen Durchgangsparameter können Sie in Anweisungen innerhalb der Methode verwenden und verändern. Die Methode greift direkt auf die Variable des Aktualparameters zu und kann diese unmittelbar verändern.
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.2 Klassen und Methoden Die formalen Ausgangsparameter können Sie in Anweisungen innerhalb der Methode verwenden und verändern. Siehe auch Beispiel: Tabelle 6-8 Beispiel: Aufruf der Methoden der Klasse COUNTER (Seite 238) Ausgangszuweisungen sind bei der Parameterübergabe optional. Wenn keine Ausgangszuweisung für einen Ausgangsparameter existiert, sind nach Beenden der Methode die Werte der Ausgangsparameter verloren.
Seite 232
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.2 Klassen und Methoden Der Rückgabewert beider Methoden enthält den aktuellen Wert der Zählvariablen CV. Der Ausgangsparameter QU signalisiert jeweils, ob die obere Grenze MAX_Val erreicht bzw. die untere Grenze MIN_Val nicht erreicht ist. Tabelle 6-7 Beispiel: Auf- und Abwärtszähler als Klasse CLASS COUNTER...
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.2 Klassen und Methoden 6.2.5 Instanzen von Klassen anlegen und nutzen 6.2.5.1 Instanz einer Klasse deklarieren Instanz einer Klasse deklarieren Bevor Sie Methoden oder Variablen einer Klasse nutzen, müssen Sie eine Instanz der Klasse deklarieren.
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.2 Klassen und Methoden Bild 6-9 Syntax: Instanzdeklaration Klasse Beispiel für die Instanzdeklaration einer Klasse: Class_inst : Class_name := (Var_publ1 := 12, Var_publ2 := 123.456); Die Instanzdeklaration ist auch als Feld möglich, z. B.: Class_inst : ARRAY [1..2] OF Class_name;...
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.2 Klassen und Methoden 6.2.5.3 Außerhalb der Klasse auf deren öffentliche Variablen zugreifen So greifen Sie auf eine öffentliche lokale Variable einer Klasse (d. h. Variable mit Zugriffsbezeichner PUBLIC) zu: 1. Deklarieren Sie eine Instanz der Klasse (sofern noch nicht geschehen). Siehe hierzu Instanz einer Klasse deklarieren (Seite 233).
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.3 Vererbung von Klassen und Methoden Die vollständige ST‑Quelle enthält vor dem Programm CallCounter noch die Klasse COUNTER aus Tabelle 6-7 Beispiel: Auf- und Abwärtszähler als Klasse (Seite 232). Tabelle 6-8 Beispiel: Aufruf der Methoden der Klasse COUNTER PROGRAM CallCounter_ST C1 : COUNTER := (MAX_Val := 1000, MIN_Val := 0);...
Seite 237
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.3 Vererbung von Klassen und Methoden Bild 6-10 Syntax: Klasse Zur Ableitung einer Klasse verwenden Sie das Schlüsselwort EXTENDS mit Angabe des Bezeichners der Basisklasse. Die Eigenschaften der abgeleiteten Klasse können nun den neuen Gegebenheiten angepasst werden: ●...
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.3 Vererbung von Klassen und Methoden ● Zusätzliche Methoden können definiert werden. ● Bestehende Methoden können überschrieben werden. Hinweis Auf Datentypen, Variablen und Konstanten, die in der Basisklasse mit dem Zugriffsbezeichner PRIVATE deklariert wurden, kann in der abgeleiteten Klasse nicht zugegriffen werden. Ein Zugriff ist nur über Methoden möglich, die von der Basisklasse geerbt wurden.
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.3 Vererbung von Klassen und Methoden eine Klasse abstrakt ist, wenn sie mindestens eine abstrakte Methode enthält. Von abstrakten Klassen können keine Instanzen deklariert werden. 6.3.3 Beispiel: Zähler in 5er-Schritten durch Vererbung Das nachfolgende Beispiel basiert auf der Klasse COUNTER aus dem Beispiel Tabelle 6-7 Beispiel: Auf- und Abwärtszähler als Klasse (Seite 232).
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.3 Vererbung von Klassen und Methoden der Basisklasse, auf der rechten Seite stehen als Aktualparameter die Formalparameter der überschreibenden Klasse. Tabelle 6-9 Auf- und Abwärtszähler in 5er-Schritten CLASS COUNTER_5STEP EXTENDS COUNTER METHOD PUBLIC OVERRIDE UP: INT // Method override VAR_INPUT INC : INT := 1;...
Seite 241
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.3 Vererbung von Klassen und Methoden Die vollständige ST‑Quelle enthält vor dem Programm CallCounter_ST2 noch die Klassen COUNTER und COUNTER_5_STEP aus Tabelle 6-7 Beispiel: Auf- und Abwärtszähler als Klasse (Seite 232) bzw. Tabelle 6-9 Auf- und Abwärtszähler in 5er-Schritten (Seite 240). Tabelle 6-10 Sukzessiver Aufruf der Methoden des Klassen COUNTER und COUNTER_5STEP PROGRAM CallCounter_ST2 C1 : COUNTER;...
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.3 Vererbung von Klassen und Methoden Aufruf über Funktion Das nachfolgende Beispiel verlagert die gleichartigen Anweisungen, die im obigen Beispiel die Methoden der beiden Klassen aufrufen, in die Funktion CallSingleCounter. Die Übergabe der Klasse und weiterer Variablen an die Funktion erfolgt über Durchgangsparameter. Die Programmpflege wird dadurch wesentlich vereinfacht, weil die einzelnen Anweisungen zum Aufruf der Methoden UP und DOWN nicht doppelt gepflegt werden müssen.
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.3 Vererbung von Klassen und Methoden So ändern Sie die Initialisierungswerte der Variablen einer abgeleiteten Klasse: 1. Geben Sie hinter dem Namen der Basisklasse den Zuweisungsoperator := ein. 2. Anschließend geben Sie in Klammern die zu ändernden Variablen und deren Initialisierungswerte in Form einer Strukturinitialisierungsliste (Seite 144) an (ähnlich zur Initialisierung beim anwenderdefinierten Datentyp Struktur).
Seite 245
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.3 Vererbung von Klassen und Methoden So ändern Sie die Initialisierungswerte der Variablen einer Instanz: 1. Geben Sie hinter dem Namen der Klasse den Zuweisungsoperator := ein. 2. Anschließend geben Sie in Klammern die zu ändernden Variablen und deren Initialisierungswerte in Form einer Strukturinitialisierungsliste (Seite 144) an (ähnlich zur Initialisierung beim anwenderdefinierten Datentyp Struktur).
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.4 Abstrakte Klassen Abstrakte Klassen Definition Eine Klasse wird als abstrakt bezeichnet, wenn eine der beiden folgenden Bedingungen erfüllt ist: ● Die Klasse ist mit dem Schlüsselwort ABSTRACT gekennzeichnet, siehe Syntaxdiagramm Klasse (Seite 237). ●...
Seite 247
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.5 Objektorientiertes Interface Sie müssen immer vollständig deklariert sein, bevor sie bei der Deklaration einer implementierenden Klasse oder bei der Deklaration einer Interface-Variablen verwendet werden. Dieses Verhalten ist unabhängig von der Compileroption (Seite 62) "Vorwärtsdeklarationen erlauben".
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.5 Objektorientiertes Interface Methodenprototyp Ein Methodenprototyp legt die Aufrufschnittstelle einer Methode fest. Diese Aufrufschnittstelle umfasst: ● die Methodenbezeichnung (Name), ● optional den Datentyp des Rückgabewerts ● die Eimgangs- Durchgangs- und Ausgangsparameter der Methode Bild 6-12 Syntax: Methodenprototyp Diese Methodenprototypen müssen in den Klassen, die das Interface implementieren, als...
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.5 Objektorientiertes Interface 6.5.2 Implementierung objektorientierter Interfaces in Klassen Die Implementierung objektorientierter Interfaces erfolgt in Klassen. Die zu implementierenden Interfaces müssen in der ST‑Quelle zwingend vor der implementierenden Klasse deklariert sein. Das nachfolgende Bild wiederholt das Syntaxdiagramm für die Klasse aus dem Abschnitt "Vererbung von Klassen"...
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.5 Objektorientiertes Interface ● Optional: das Schlüsselwort EXTENDS mit der Bezeichnung einer abzuleitenden Basisklasse und ggf. der Initialisierung ● Optional: der Deklarationsabschnitt mit den lokalen Variablen und Datentypen der Klasse ● Zwingend: alle Methoden, die in den zu implementierenden Interfaces als Prototypen definiert wurden.
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.5 Objektorientiertes Interface Es sind alle Variablenarten der jeweiligen Programmorganisationseinheit möglich mit Ausnahme von: ● VAR_IN_OUT ist nicht erlaubt. Jedoch dürfen Felder, Strukturen, Funktionsbausteine oder Klassen, die Interface- Variablen enthalten, als VAR_IN_OUT übergeben werden. ●...
Seite 252
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.5 Objektorientiertes Interface Diese instanzspezifische Initialisierung kann für Variablen von objektorientierten Interfaces erzwungen werden. Geben Sie hierzu bei der Deklaration dieser Variablen in Klassen oder Funktionsbausteinen " := * " hinter dem Bezeichner des objektorientierten Interfaces an. Der entsprechende statische Variablenblock muss durch die Kennzeichnung mit OVERRIDE oder PUBLIC von außerhalb initialisierbar sein.
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.5 Objektorientiertes Interface 6.5.4 Beispiel zu Interface-Variablen Das nachfolgende Beispiel erläutert die Verwendung von Interface-Variablen. INTERFACE ITF1 METHOD m1 END_METHOD END_INTERFACE INTERFACE ITF2 METHOD m2 END_METHOD END_INTERFACE CLASS A IMPLEMENTS ITF1 METHOD PUBLIC m1 (* ... *) ; END_METHOD // ...
Seite 254
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.5 Objektorientiertes Interface PROGRAM P inst_a : A; // Instanz der Klasse A inst_b : B; // Instanz der Klasse B inst_c : C; // Instanz der Klasse C interf1: ITF1; // interf1 hat Wert NULL interf2: ITF2;...
Seite 255
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.5 Objektorientiertes Interface Zu den beiden Funktionen func_if1 und func_if2: ● Über eine Eingangsvariable i mit dem jeweiligen Typ des Interfaces erhalten sie die Möglichkeit, eine Interface-Variable zu übernehmen. ● Über die Abfrage " i<> NULL“ prüfen sie, ob i eine gültige Referenz enthält. IWenn die Referenz gültig ist, rufen die Funktionen die Methoden des jeweiligen Interfaces auf.
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.6 Vergleich abstrakte Klasse und objektorientiertes Interface Interfaces beschreiben die gemeinsamen Schnittstellen für entsprechende Programmmodule mit den zu implementierenden Methoden. Diese Datenbeschreibung kann dann zum Beispiel für einen Test in einem Programmbereich mit Dummy-Methoden und Daten durch die Referenzübergabe verwendet werden.
Seite 257
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.6 Vergleich abstrakte Klasse und objektorientiertes Interface Grundsätzlich lässt sich der Unterschied zwischen den beiden Konstrukten zusammenfassen: ● Eine abstrakte Klasse stellt einen Vertrag für die Nutzung in der Ableitungskette, also innerhalb der Klassenhierarchie, dar. ●...
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.7 Allgemeine Referenzen Allgemeine Referenzen 6.7.1 Allgemeine Referenzen definieren AllgemeineReferenzen enthalten die Adresszuordnung zu einer Variablen oder zu einer Instanz eines Funktionsbaustei bzw. einer Klasse. Hierzu wird mit dem Schlüsselwort REF_TO ein Datentyp erzeugt, der die Adresse zu einem bereits bekannten Datentyp (Referenz- Datentyp) enthalten kann: ●...
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.7 Allgemeine Referenzen Es sind alle Variablenarten der jeweiligen Programmorganisationseinheit möglich mit Ausnahme von: ● VAR_IN_OUT ist nicht erlaubt. Jedoch dürfen Felder, Strukturen, Funktionsbausteine oder Klassen, die allgemeine Referenzen enthalten, als VAR_IN_OUT übergeben werden. ●...
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.7 Allgemeine Referenzen Der Rückgabewert hat den Datentyp "Referenz auf den Datentyp des Eingangsparameters in ". Bit dem Zuweisungsoperator ":=" kann er einer Variablen zugewiesen werdem, die exakt type ). Eine Datentypkonvertierung ist nicht möglich. diesem Datentyp entspricht (REF_TO Hinweis Beachten Sie bei Instanzen von Funktionsbausteinen, die als Durchgangsparameter...
Seite 261
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.7 Allgemeine Referenzen Dynamische Typkonvertierung mit dem Operator "?=" Der Operator "?=" kann nur mit Referenzen auf Klassen und mit Interface-Variablen (Variablen von objektorientierten Interfaces) zur dynamischen Datentypkonvertiertung genutzt werden. Er unterstützt folgende Varianten: ●...
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.8 I/O-Referenzen (ab Kernel V5.1) I/O-Referenzen (ab Kernel V5.1) 6.8.1 I/O-Referenzen bilden I/O‑Referenzen deklarieren I/O‑Referenzen ermöglichen es, innerhalb Klassen und Funktionsbausteinen symbolisch auf I/O‑Variablen zuzugreiifen. Die Klassen und Funktionsbausteine sind somit auch in Bibliotheken verwendbar.
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.8 I/O-Referenzen (ab Kernel V5.1) Eine in der Initialisierung mit NULL gekennzeichnete I/O‑Referenz muss vor der Verwendung auf Gültigkeit überprüft werden, wie dies auch bei allen anderen Referenzarten üblich ist. Hierzu kann der Vergleich mit NULL herangezogen werden. FUNCTION_BLOCK myFB VAR OVERRIDE myInput AT %I* : INT := NULL;...
Seite 264
Objektorientierte Programmierung - OOP (ab Kernel V4.5) 6.8 I/O-Referenzen (ab Kernel V5.1) O‑Referenz können auch mit einzelnen Elementen einer I/O‑ARRAY-Variablen durch Angabe eines konstanten Indexwerts verbunden werden. VAR_GLOBAL myFbInst1 : myFB := (myInput := InputVarW3, myOutput := OutputVarW10); myFbInst2 : myFB := (myInput := InputVarW4, myOutput := OutputVarW14);...
Einbindung von ST in SIMOTION Sie erfahren in diesem Kapitel, welches Zusammenspiel zwischen ST-Programmen und dem SIMOTION SCOUT besteht. Quelldatei-Abschnitte Einen Überblick über die Bedeutung der Quelldatei-Abschnitte haben Sie bereits in Gliederung der ST-Quelle (Seite 112) bekommen. Hier erfahren Sie Einzelheiten, z. B.: ●...
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte 7.1.1.1 Interfaceabschnitt Der Interfaceabschnitt enthält Anweisungen für die Veröffentlichungund Verwendung von Daten (Datentypen, Variablen, Funktionsbausteinen, Funktionen, Programmen). Außerdem können Technologiepakete und Bibliotheken geladen werden. Der Interfaceabschnitt hat folgende Syntax: Syntax INTERFACE // Interfaceanweisungen (optional) END_INTERFACE Ein individueller Bezeichner des Abschnitts kann nicht angegeben werden.
Seite 267
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte 3. Verweis auf andere Units, um deren veröffentlichte Bestandteile zu verwenden. Die Syntax lautet USES unit_name-list; Näheres dazu siehe "USES-Anweisung in einer verwendenden Unit (Seite 290)". 4. Deklarationen und Angaben zur Veröffentlichung an andere Programmquellen: –...
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte Reihenfolge Der Interfaceabschnitt ist der 1. Abschnitt einer ST-Quelle. Hinweis Optional kann dem Interfaceabschnitt die Unit-Anweisung vorangestellt werden, siehe "Bezeichnung der Unit (Seite 288)". Die Reihenfolge der Interfaceanweisungen 1 bis 4 ist verbindlich. Innerhalb der Nr.
Seite 269
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte Zwischen den reservierten Wörtern IMPLEMENTATION und END_IMPLEMENTATION stehen optional die Implementationsanweisungen (der Hauptteil der ST-Quelldatei) in folgender Reihenfolge: 1. Verweis auf andere Units, um deren veröffentlichte Bestandteile zu verwenden. Die Syntax lautet: USES unit_name-list; Näheres dazu siehe "USES-Anweisung in einer verwendenden Unit (Seite 290)".
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte Bei aktivierter Compileroption (Seite 62) "Vorwärtsdeklarationen erlauben" gilt: ● Für die Reihenfolge der o. a. Implementationsanweisungen gilt: Die strikte Trennung zischen den Nummern 2 und 3 ist aufgehoben. Deklarationen dürfen beliebig zwischen Programmorganisationseinheiten erfolgen. Ausnahme: POE-Prototypen müssen deklariert werden, bevor die entsprechende Programmorganisationseinheit definiert oder verwendet wird.
Seite 271
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte Für die Reihenfolge der POE in einer ST-Quelle gilt: ● Standardmäßig müssen in der Quelldatei die aufgerufenen POE vor den aufrufenden POE stehen, damit sie den letzteren bekannt sind. ● Ausnahme: Nur bei aktivierter Compileroption (Seite 62) "Vorwärtsdeklarationen erlauben". Die Reihenfolge ist beliebig.
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte Häufigkeit Beliebig oft pro ST-Quelle. Pflichtteil Nein Weitere Informationen zu Funktionen (FC) Siehe Abschnitt "Erstellung und Aufruf von Funktionen und Funktionsbausteinen" (Seite 185). 7.1.1.5 Funktionsbausteine (FB) Funktionsbausteine (FB) gehören zu den Programmorganisationseinheiten (POE). Sie sind aus Programmen aufrufbare und parametrierbare Quelldatei-Abschnitte mit statischen Daten (interne Variablen behalten ihren Wert zwischen mehreren Aufrufen).
Seite 273
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte Sie können die Instanzdeklaration auch global (innerhalb VAR_GLOBAL / END_VAR im Interface- oder Implementationsabschnitt) durchführen. ● Bei nicht aktivierter Compileroption (Seite 62) "Vorwärtsdeklarationen erlauben" gilt: Dies ist nur mit FB möglich, die verwendete Programmquellen und Bibliotheken zur Verfügung stellen, jedoch nicht mit FB, die in derselben ST‑Quelle definiert werden.
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte Weitere Informationen zu Funktionsbausteinen (FB) Siehe Abschnitt "Erstellung und Aufruf von Funktionen und Funktionsbausteinen" (Seite 185). 7.1.1.6 Programme Programme gehören zu den Programmorganisationseinheiten (POE). Sie werden auf dem Ablaufsystem konfigurieren im Zielgerät gemäß ihrer Taskzuordnung aufgerufen (siehe SIMOTION Basisfunktionen ) und können Funktionen (FC) und Funktionshandbuch Funktionsbausteine (FB) sowie Methoden in Klassen und FB aufrufen.
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte 7.1.1.7 Expressions Expressions sind ein Spezialfall einer Funktionsvereinbarung mit dem festgelegten Datentyp BOOL des Rückgabewerts. Es wird der Ausdruck innerhalb der reservierten Wörter EXPRESSION <Expression-Bezeichner> … END_EXPRESSION ausgewertet, der dem Funktionsnamen zugewiesen wird. Mit dem Konstrukt WAITFORCONDITION (Seite 177) können Sie in einer MotionTask direkt auf ein programmierbares Ereignis bzw.
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte Weitere Informationen zu Expressions Siehe Abschnitt "Expressions" (Seite 216). Beispiele n Zusammenhang mit der WAITFORCONDITION-Anweisung: siehe Funktionshandbuch SIMOTION Basisfunktionen. 7.1.1.8 Klassen (ab Kernel V4.5) Klassen gehören zu den Programmorganisationseinheiten (POE). Sie bilden eine Kapsel für Variablen und Methoden (Seite 280).
Seite 277
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte Sie können die Instanzdeklaration auch global (innerhalb VAR_GLOBAL / END_VAR im Interface- oder Implementationsabschnitt) durchführen. ● Bei nicht aktivierter Compileroption (Seite 62) "Vorwärtsdeklarationen erlauben" gilt: Dies ist nur mit Klassen möglich, die verwendete Programmquellen und Bibliotheken zur Verfügung stellen, jedoch nicht mit Klassen, die in derselben ST‑Quelle definiert werden.
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte 7.1.1.9 Methoden Methoden gehören zu den Programmorganisationseinheiten (POE). Sie sind aufrufbare und parametrierbare Quelldatei-Abschnitte mit temporären Daten innerhalb von Klassen (Seite 276) oder Funktionsbausteinen (Seite 272). Alle internen Variablen verlieren nach Verlassen der Methode ihren Wert; beim nächsten Aufruf werden sie neu initialisiert. Methoden können nur bei aktivierter Compileroption (Seite 62) "Objektorientierte Programmierung zulassen"...
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte Häufigkeit Beliebig oft pro Klasse oder Funktionsbaustein. Pflichtteil Nein Weitere Informationen zu Methoden Siehe Abschnitt "Objektorientierte Programmierung - OOP (ab Kernel V4.5)" (Seite 219). 7.1.1.10 Objektorientiertes Interface (ab Kernel V4.5) Objektorientierte Interfaces definieren die Aufrufschnittstelle von öffentlichen Methoden (Seite 278) (Zugriffsbezeichner PUBLIC).
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte Besonderheiten In Klassen (Seite 276), die objektorientierte Interfaces implementieren, müssen alle Methoden (Seite 278), die in den Interfaces als Prototypen definiert sind, ausformuliert werden. Diese Methoden müssen immer als öffentlich (Zugriffsbezeichner PUBLIC) deklariert werden. Die im Interface vorgegebene Aufrufschnittstelle (Eingangs-, Ausgangs- und Durchgangsparameter) muss unverändert übernommen werden.
Seite 281
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte Reihenfolge Der Deklarationsabschnitt hat keine expliziten Schlüsselwörter am Anfang oder Ende. Er beginnt nach dem Schlüsselwort der jeweiligen Programmorganisationseinheit (POE) und endet mit der 1. ausführbaren Anweisung des Anweisungsteils. Er enthält in beliebiger Reihenfolge: ●...
Seite 282
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte Weitere Informationen zu Anweisungen Siehe folgende Abschnitte: ● Wertzuweisungen und Ausdrücke (Seite 148) ● Kontrollanweisungen (Seite 166) ● Aufruf von Funktionen und Funktionsbausteinen (Seite 200) ● Methode aufrufen (Seite 228) 7.1.1.13 Datentypdefinition Bei der Datentypdefinition legen Sie anwenderdefinierte Datentypen (UDT) fest. Sie können diese für Variablendeklarationen verwenden.
Seite 283
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte Häufigkeit Der Deklarationsblock TYPE / END_TYPE darf mehrfach in einem Quelldatei-Abschnitt auftreten; in einem Deklarationsblock sind beliebig viele UDT möglich. Pflichtteil Nein Weitere Informationen zu anwenderdefinierten Datentypen (UDT) Siehe Abschnitt "Anwenderdefinierte Datentypen" (Seite 120). 7.1.1.14 Variablendeklaration Ein Deklarationsabschnitt enthält Variablendeklarationen und kann in FC, FB und...
Seite 284
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte ● Im Deklarationsabschnitt eines Programms: VAR: Lokale Variable VAR CONSTANT: Lokale Konstante VAR_TEMP: Temporäre Variable ● Im Deklarationsabschnitt einer Expression: VAR: Lokale Variable VAR CONSTANT: Lokale Konstante VAR_INPUT: Eingangsparameter (ab Version 4.1 des SIMOTION Kernels) VAR_IN_OUT: Durchgangsparameter (ab Version 4.1 des SIMOTION Kernels) ●...
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte ● Im Deklarationsabschnitt einer POE (FC, FB, Programm, Expression): Syntax . Zulässige Schlüsselwörter in Abhängigkeit von der Art der POE: siehe oben unter Die Variablen sind nur lokal innerhalb der POE bekannt. Ausnahmen: –...
Interfaceabschnitt) setzen. Die Syntax lautet: UNIT name; name entspricht dem Namen der ST-Quelle, wie in SIMOTION SCOUT definiert, siehe ST- Quelle einfügen (Seite 27) oder Eigenschaften einer ST-Quelle ändern (Seite 29). Die Unit-Anweisung wird ignoriert, wenn der dort angegebene Name vom Namen der ST- Quelle abweicht.
Seite 287
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte ● Die zu veröffentlichenden POE (Funktionen, Funktionsbausteine, Programme und Klassen) Geben Sie jeweils die zu veröffentlichende POE (Funktion, Funktionsbaustein, Programm oder Klasse) mit dem entsprechenden Schlüsselwort an (optional innerhalb des Konstrukts TYPE / END_TYPE). Schließen Sie jeden Eintrag mit einem Strichpunkt ab. fb_name ;...
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte 7.1.2.3 Beispiel für veröffentlichende Unit myUnit_A ). Diese wird von Nachfolgend sehen Sie ein Beispiel für eine veröffentlichende Unit ( myUnit_B (siehe Beispiel für eine verwendende Unit (Seite 292)) importiert. Tabelle 7-1 Beispiel für veröffentlichende Unit UNIT myUnit_A;...
Seite 289
Einbindung von ST in SIMOTION 7.1 Quelldatei-Abschnitte unit_name-list ist eine durch Kommata getrennte Aufzählung der Units, die verwendet werden sollen. Beispiel: USES unit_1, unit_2, unit_3; Sie habe damit Zugriff auf folgende Elemente, die im Interfaceabschnitt der verwendeten Units (z. B. ST-Quelle, MCC-Quelle) veröffentlicht sind: ●...
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Hinweis Tipps zur Verwendung von Unit-Variablen erhalten Sie im Funktionshandbuch SIMOTION Basisfunktionen. 7.1.2.5 Beispiel für eine verwendende Unit myUnit_B ). Diese verwendet Nachfolgend sehen Sie ein Beispiel für eine verwendende Unit ( myUnit_A aus dem Beispiel für veröffentlichende Unit (Seite 288).
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION 7.2.1 Variablenmodell Die folgenden Tabellen zeigen alle Variablentypen, die Ihnen bei der Programmierung zur Verfügung stehen. ● Systemvariablen des SIMOTION Geräts und der Technologieobjekte ● Globale Anwendervariablen (I/O-Variablen, Geräteglobale Variablen, Unit-Variablen) ●...
Seite 292
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Globale Anwendervariablen Variablentyp Bedeutung I/O-Variablen Sie können den I/O-Adressen des SIMOTION Geräts oder der Peripherie symbolische Vari‐ ablennamen zuordnen. Dies ermöglicht Ihnen folgende Direktzugriffe und Prozessabbildzu‐ griffe auf die Peripherie: ● innerhalb des SIMOTION Geräts von allen Programmen ●...
Seite 293
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Lokale Anwendervariablen Variablentyp Bedeutung Anwenderdefinierte Variablen, auf die nur innerhalb des Programms (bzw. Funktion, Funkti‐ onsbaustein) zugegriffen werden kann, in dem sie definiert wurden. Variable eines Programms Variable wird in einem Programm deklariert. Nur innerhalb dieses Programms kann auf sie (Programmvariable) zugegriffen werden.
Seite 294
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Variablentyp Bedeutung Variable eines Funktions‐ Variable wird in einem Funktionsbaustein (FB) deklariert. Nur innerhalb dieses FB kann auf bausteins sie zugegriffen werden. Es wird zwischen statischen, temporären und remanenten Variablen unterschieden: ●...
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Hinweis Beachten Sie, dass der Download der ST-Quelle ins Zielsystem und ausführende Tasks die Initialisierung von Variablen und damit deren Inhalt beeinflussen, siehe Zeitpunkt der Variableninitialisierung (Seite 314). 7.2.1.1 Unit-Variablen Unit-Variablen sind in der gesamten ST-Quelle gültig, d. h. Sie können in jedem Quelldatei- Abschnitt auf diese Variablen zugreifen.
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION 7.2.1.2 Nicht remanente Unit-Variablen Nicht remanente Unit-Variablen verlieren bei einem Spannungsausfall ihren Wert. Bild 7-1 Syntax: Unit-Variablen Dieser Deklarationsblock darf innerhalb eines Interface- oder Implementationsabschnitts mehrfach auftreten. Dabei geben Sie bei der Variablendeklaration Variablenname und Datentyp an (siehe Übersicht aller Variablendeklarationen (Seite 140) und Initialisierung von Variablen oder Datentypen (Seite 141)).
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Tabelle 7-4 Beispiele für nicht remanente Unit-Variablen INTERFACE VAR_GLOBAL // Diese Variablen werden veröffentlicht. rotation1 : INT; field1 : ARRAY [1..10] OF REAL; flag1 : BOOL; motor1 : motor; // Instanzdeklaration END_VAR END_INTERFACE IMPLEMENTATION...
Quelldatei beanspruchen und die Variablen nach absteigender Größe des Datentyps sortieren! ● Überprüfen Sie im SIMOTION SCOUT den Füllstand des remanenten Speichers. Rufen Sie im Online-Modus die Gerätediagnose des zu überprüfenden SIMOTION Geräts auf (siehe Online-Hilfe). Im Register Systemauslastung. sehen Sie unter Remanente Daten den zur Verfügung stehenden Speicherplatz.
Seite 299
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Siehe auch: Initialisierung lokaler Variablen (Seite 319). Hinweis Auf lokale Variablen kann außerhalb des Quelldatei-Abschnitts, in dem sie deklariert wurden, nicht zugegriffen werden. Die folgende Tabelle gibt einen Überblick über die Deklaration remanenter, statischer und temporärer Variablen.
Seite 300
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Quelldatei-Ab‐ Schlüsselwörter zur Deklaration schnitt Statische Variablen Temporäre Variablen Remanente lokale Variablen (ab Kernel V4.5) Klasse VAR / END_VAR – VAR RETAIN / END_VAR Die Initialisierung der Variablen ist abhängig von der Initialisierung der deklarierten Instanz. Siehe Initialisierung von In‐ stanzen von Funktionsbausteinen (FB) oder Klassen (Seite 322).
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Tabelle 7-7 Beispiele für statische und temporäre Variablen IMPLEMENTATION FUNCTION testFkt // Deklaration temporärer Variablen flag : BOOL; END_VAR END_FUNCTION FUNCTION_BLOCK testFbst VAR RETAIN // Deklaration remanenter Variablen position1 : LREAL END_VAR // Deklaration statischer Variablen rotation1 : INT;...
Seite 302
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Statische Variablen gibt es in folgenden Quelldatei-Abschnitten: ● Programme ● Funktionsbausteine ● Klassen (ab Version V4.5 des SIMOTION Kernels und mit Compileroption "Objektorientierte Programmierung zulassen") Sie werden im statischen Variablenblock deklariert. Bild 7-3 Syntax: Statischer Variablenblock Im statischen Variablenblock können Sie laut Syntax aus dem Bild:...
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION 7.2.1.6 Temporäre Variablen Temporäre Variablen werden bei jedem Aufruf des Quelldatei-Abschnitts initialisiert. Ihr Wert bleibt nur während eines Ablaufs des Quelldatei-Abschnitts erhalten. Temporäre Variablen gibt es in folgenden Quelldatei-Abschnitten: ● Programme ●...
Seite 304
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Sie werden im remanenten lokalen Variablenblock deklariert. Bild 7-6 Syntax: Remanenter lokaler Variablenblock Im remanenten lokalen Variablenblock können Sie laut Syntax aus dem Bild: ● Variablen deklarieren (Namen und Datentyp), optional mit Initialisierung Ausnahme.
Offline-Modus befinden. Hier in Kurzform die Vorgehensweise: 1. Markieren Sie im Projektnavigator des SIMOTION SCOUT das Element GERÄTEGLOBALE VARIABLEN im Teilbaum des SIMOTION Geräts. 2. Wählen Sie in der Detailanzeige das Register Symbolbrowser und scrollen Sie bis zum Ende der Variablentabelle (leere Zeile).
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION In ST-Quellen können Sie eine geräteglobale Variable wie jede andere Variable verwenden. Hinweis var-name ) deklariert Wenn Sie Unit-Variablen oder lokale Variablen gleichen Namens (z. B. _device.var-name . haben, spezifizieren Sie die geräteglobale Variable mit Eine Alternative zu geräteglobalen Variablen ist die Deklaration von Unit-Variablen in einer eigenen Unit, die in andere Units importiert wird.
Seite 307
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Eine Erläuterung anhand eines Beispiels finden Sie im Abschnitt Beispiel für Speicherbereiche (Seite 311). Tabelle 7-8 Durch verschiedene Variablentypen belegte Speicherbereiche und deren Initialisierung Speicherbereich Zugeordnete Variablentypen Initialisierung Remanenter Speicher Beim Download gemäß den Einstellungen für ●...
Seite 308
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Speicherbereich Zugeordnete Variablentypen Initialisierung Lokaldatenstack der ● Referenz (Zeiger) zu dem in der Task Bei jedem Aufruf des Programms in der Task Task gerufenen Programm ● Mit VAR_TEMP deklarierte lokale Variablen des in der Task gerufenen Programms Bei jedem Aufruf der Instanz des Funktions‐...
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION 7.2.3.1 Beispiel für Speicherbereiche Tabelle 7-9 Beispiel für Speicherbereiche der Variablentypen - Teil 1 INTERFACE // Die Anweisungen im Interfaceabschnitt legen fest, // welche Quellinhalte veröffentlicht werden. FUNCTION FC1; FUNCTION_BLOCK FB1; PROGRAM p1;...
Seite 310
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Tabelle 7-10 Beispiel für Speicherbereiche der Variablentypen - Teil 2 // Fortsetzung //---------------------------------------------------------------------- FUNCTION_BLOCK FB1 // Die Deklaration einer Instanz // eines Funktionsbausteins bestimmt, wo deren Daten liegen: // - als VAR_GLOBAL in einer Unit: im Anwenderspeicher der Unit // - als VAR in einem Programm: standardmäßig im Anwenderspeicher der Task...
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Tabelle 7-11 Beispiel für Speicherbereiche der Variablentypen - Teil 3 // Fortsetzung //---------------------------------------------------------------------- FUNCTION FC1 : INT // Die Daten der Funktion liegen auf dem // Stack der aufrufenden Task; sie werden bei jedem Aufruf // der Funktion initialisiert.
1. Speichern Sie mit der Funktion Unit-Variablen oder geräteglobalen Variablen als Datensatz. 2. Wenden Sie in SIMOTION SCOUT die Funktion Variablen sichern an. Mit der Umkehrfunktion Variablen wiederherstellen können Sie diese Datensätze und Variablen wieder in das SIMOTION-Gerät laden (Download).
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION 7.2.4.1 Initialisierung remanenter globaler Variablen Remanente Variablen behalten bei Spannungsausfall ihren letzten Wert. Alle anderen Daten werden beim Wiedereinschalten neu initialisiert. Remanente globale Variablen werden initialisiert: ● Bei Ausfall der Stützung bzw. Pufferung der remanenten Daten. ●...
Seite 314
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Verhalten beim Download Tabelle 7-12 Initialisierung remanenter globaler Variablen beim Download Variablentyp Zeitpunkt der Variableninitialisierung Initialisierung der remanenten Pro‐ Remanente geräteglo‐ Das Verhalten beim Download ist abhängig von der Einstellung grammdaten und der remanenten geräteglobalen Variablen bale Variablen ●...
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Verhalten beim Hochrüsten oder Konfigurationswechsel Beim Hochrüsten des SIMOTION-Geräts auf eine neue Version SIMOTION Kernels oder beim Konfigurationswechsel werden die remanenten Variablen Variablen wie folgt initialisiert: Tabelle 7-13 Initialisierung remanenter globaler Variablen beim Hochrüsten oder Konfigurationswechsel Variablentyp Zeitpunkt der Variableninitialisierung Remanente geräteglo‐...
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Verhalten beim Download Tabelle 7-14 Initialisierung nicht remanenter globaler Variablen beim Download Variablentyp Zeitpunkt der Variableninitialisierung Initialisierung der nicht remanenten Nicht remanente gerä‐ Das Verhalten beim Download ist abhängig von der Einstellung Programmdaten und der nicht remanenten geräteglobalen Variablen teglobale Variablen ●...
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Sie können jedoch einstellen, dass die nicht remanenten globalen Variablen beim STOP-RUN- Übergang initialisiert werden: ● Ab Version V4.2 des SIMOTION Kernels durch Einstellung am SIMOTION Gerät (Seite 396), Checkbox Initialisierung der nicht remanenten globalen Variablen und Programmdaten beim STOP-RUN-Übergang.
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Tabelle 7-15 Initialisierung lokaler Variablen Variablentyp Zeitpunkt der Variableninitialisierung Lokale Variablen von Lokale Variablen von Programmen werden unterschiedlich initialisiert: Programmen ● Statische Variablen (VAR) werden gemäß dem Speicherbereich initialisiert, in dem sie abgelegt werden.
Seite 319
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Das Initialisierungsverhalten wird bestimmt vom Speicherbereich, in der die statischen Variablen abgelegt werden. Dies wird über die Compileroption (Seite 62) "Programminstanzdaten nur einmal anlegen" bestimmt. ● Bei nicht aktivierter Compileroption "Programminstanzdaten nur einmal anlegen" (Standard): Die statischen Variablen werden im Anwenderspeicher jeder Task abgelegt, der das Programm zugeordnet ist.
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION 7.2.4.5 Initialisierung remanenter lokaler Variablen von Programmen Die folgenden Ausführungen betreffen folgende remanente Variablen: ● mit VAR RETAIN deklarierte lokale Variablen der Programme einer Unit, ● mit VAR RETAIN innerhalb der Programme einer Unit deklarierte Instanzen von Funktionsbausteinen oder Klassen einschließlich der zugehörigen statischen Variablen (VAR, VAR_INPUT, VAR_OUTPUT).
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION ● Lokale Deklaration in einem Funktionsbaustein (innerhalb VAR / END_VAR): Initialisierung wie eine Instanz dieses Funktionsbausteins. ● Deklaration als Durchgangsparameter in einem Funktionsbaustein oder einer Funktion (innerhalb VAR_IN_OUT / END_VAR): Bei der Initialisierung der POE wird nur die Referenz (Zeiger) initialisiert, die Instanz des Funktionsbausteins bleibt unverändert.
Wenn an einem nicht zu initialisierenden Technologieobjekt ein Alarm ansteht, der nur mit Power On quittiert werden kann, wird der Download abgebrochen. Remanente Systemva‐ Nur wenn ein Technologieobjekt in SIMOTION SCOUT verändert wurde, werden dessen remanen‐ riablen te Systemvariablen initialisiert.
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION 7.2.4.9 Versionskennung globaler Variablen und deren Initialisierung beim Download Tabelle 7-17 Versionskennung globaler Variablen und deren Initialisierung beim Download Datensegment Beschreibung der Versionskennung Geräteglobale Variablen Remanente geräteglo‐ ● Eigene Versionskennung für jedes Datensegment der geräteglobalen Variablen. bale Variablen ●...
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Datensegment Beschreibung der Versionskennung Nicht remanente Unit- Nur ab Version V4.5 des SIMOTION Kernels. Variablen im Interface‐ ● Die remanenten Variablen aller Instanzen innerhalb eines Deklarationsblocks abschnitt (VAR_GLOBAL / END_VAR) werden zu einem eigenen remanenten Datenblock Nicht remanente Unit- zusammengefasst.
Seite 325
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION ● I/O-Variablen ● Geräteglobale Variablen ● Remanente und nicht remanente Unit-Variablen des Interfaceabschnitts (Voreinstellung). Diese Voreinstellung ändern Sie folgendermaßen: – In der Programmiersprache SIMOTION ST: Für jeden Deklarationsblock mit nachstehendem Pragma: { HMI_Export := FALSE;...
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Hinweis Die Gesamtgröße der Unit-Variablen, die an HMI-Geräte exportiert werden kann, ist auf 64 kByte pro Unit beschränkt. Die Wirkung des Pragmas { HMI_Export := FALSE; } / VAR_GLOBAL für HMI‑Geräte oder { HMI_Export := TRUE;...
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION Nicht exportierte Variablen Folgende Variablen werden nicht an HMI-Geräte exportiert und stehen dort nicht zur Verfügung: ● Remanente und nicht remanente Unit-Variablen des Implementationsabschnitts (Voreinstellung) Diese Voreinstellung ändern Sie folgendermaßen: – In der Programmiersprache SIMOTION ST: Für jeden Deklarationsblock mit nachstehendem Pragma: { HMI_Export := TRUE;...
Seite 328
Einbindung von ST in SIMOTION 7.2 Variablen in SIMOTION ● Nicht remanente statische Variablen (VAR) von Programmen, sofern die Compileroption (Seite 62) "Programminstanzdaten nur einmal anlegen" nicht aktiviert ist ● Nicht remanente geschützte oder private Variablen (VAR, VAR PROTECTED, VAR PRIVATE) von Klassen (Voreinstellung, ab Version V4.5 des SIMOTION Kernels) Diese Voreinstellung ändern Sie folgendermaßen: –...
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) 7.3.1 Überblick Zugriff auf Ein- und Ausgänge SIMOTION bietet mehrere Möglichkeiten, auf die Ein- und Ausgänge des SIMOTION Geräts sowie auf die zentrale und dezentrale Peripherie zuzugreifen: ●...
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) 7.3.2 Wichtige Eigenschaften von Direktzugriff und Prozessabbild Tabelle 7-19 Wichtige Eigenschaften von Direktzugriff und Prozessabbild Direktzugriff Zugriff auf Prozessabbild der Zugriff auf festes Prozessab‐ zyklischen Tasks bild der BackgroundTask Zulässiger Adressbe‐...
Seite 331
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Direktzugriff Zugriff auf Prozessabbild der Zugriff auf festes Prozessab‐ zyklischen Tasks bild der BackgroundTask Aktualisierung Die Aktualisierung erfolgt mit Die Aktualisierung erfolgt mit ● Bei der Onboard-Peripherie BackgroundTask : der zugeordneten Task: der SIMOTION-Geräte...
Seite 332
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Direktzugriff Zugriff auf Prozessabbild der Zugriff auf festes Prozessab‐ zyklischen Tasks bild der BackgroundTask Download neuer oder Nur im Betriebszustand STOP möglich. geänderter I/O‑Variab‐ Verwenden der absolu‐ Nicht möglich.
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Direktzugriff Zugriff auf Prozessabbild der Zugriff auf festes Prozessab‐ zyklischen Tasks bild der BackgroundTask Eingeschränkt möglich: Eingeschränkt möglich: Eingeschränkt möglich: ● Während der StartupTask ● Eingänge können gelesen ●...
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Direktzugriff Mit dem Direktzugriff greifen Sie direkt auf die entsprechende I/O‑Adresse zu. Den Direktzugriff verwenden Sie bevorzugt bei sequenzieller Programmierung (in MotionTasks). Hier ist der Zugriff auf den aktuellen Wert der Ein- und Ausgänge zu einem bestimmten Zeitpunkt besonders wichtig.
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Speicherbereich mit dem festen Prozessabbild der BackgroundTask ● Ab Version V4.2 des SIMOTION Kernels kann durch eine Einstellung am Gerät (Seite 396) "Gemeinsames Prozessabbild" gewählt werden, dass der Speicherbereich für das feste Prozessabbild der BackgroundTask eine Untermenge des Speicherbereichs für das Prozessabbilds der zyklischen Tasks ist.
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) 7.3.3.1 Adressbereich der SIMOTION Geräte Nachfolgend ist der Adressbereich der SIMOTION-Geräte in Abhängigkeit von der Version des SIMOTION Kernels angegeben. Bei Direktzugriff und Prozessabbild der zyklischen Tasks ist der gesamte Adressbereich nutzbar.
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) 7.3.3.2 Regeln für I/O-Adressen für Direktzugriff und das Prozessabbild der zyklischen Tasks Hinweis Bei den Adressen für I/O‑Variablen für Direktzugriff und das Prozessabbild der zyklischen Task (Seite 333) müssen Sie folgende Regeln beachten. Die Einhaltung der Regeln wird bei der Konsistenzprüfung des SIMOTION Projekts (z.
Seite 338
1. Wählen Sie in der Detailanzeige das Register "Adressliste" und wählen Sie das SIMOTION Gerät aus. oder Doppelklicken Sie im Projektnavigator des SIMOTION SCOUT auf das Element "ADRESSLISTE" im Teilbaum des SIMOTION Geräts. 2. Markieren Sie die Zeile, vor der Sie die I/O-Variable einfügen wollen, und wählen Sie im Kontextmenü...
Seite 339
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) 4. Optional können Sie noch eingeben oder wählen (nicht bei Datentyp BOOL): – Feldlänge (Größe des Arrays) – Prozessabbild oder Direktzugriff: Die Zuordnung ist nur möglich, wenn die Checkbox Nur lesen deaktiviert ist. Für Prozessabbild wählen Sie die zyklische Task, der Sie die I/O-Variable zuordnen wollen.
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Hinweis I/O-Variablen können Sie nur im Offline-Modus anlegen. Sie legen sie im SIMOTION SCOUT an und verwenden sie in Ihren Programmquellen (z. B. ST-Quellen, MCC‑Quellen, KOP/ FUP‑Quellen).
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Ausgang an logischer Adresse 63, Bit 3, Datentyp BOOL: PQ63.3. Hinweis Beachten Sie die Regeln für I/O-Adressen für Direktzugriff und das Prozessabbild der zyklischen Tasks (Seite 337). 7.3.3.5 Mögliche Datentypen der I/O-Variablen Den I/O-Variablen für Direktzugriff und Prozessabbild der zyklischen Tasks (Seite 333) können...
Seite 342
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Wert (DWORD) Bit x = 1 Bedeutung 16#0000_0004 Anstehende Warnung (Antriebswarnung, TM17-Warnung, …) Die angeschlossene Baugruppe hat eine Warnung gemeldet. Dies wurde im Diagnosepuffer eingetragen. Die genaue Ursache ist der Dokumentation der betreffenden Baugruppe zu entnehmen.
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Wert (DWORD) Bit x = 1 Bedeutung 16#0000_1000 PROFINET: Ausfall durch Modul erkannt (z. B. Submodul ausgefallen, gezogen, …) Die Verbindung zu dem angeschlossenen Gerät ist in Ordnung. Der Fehler ist in dem ange‐ schlossenen Gerät zu suchen.
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Die Größe des festen Prozessabbilds der BackgroundTask beträgt für alle SIMOTION-Geräte 64 Byte (Adressbereich 0 .. 63). Hinweis Mit dem festen Prozessabbild der BackgroundTask kann auf Adressen zugegriffen werden, die in der Peripherie nicht vorhanden oder in HW‑Konfig nicht projektiert sind.
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Gemeinsames Prozessabbild Separates Prozessabbild Zugriff auf Peripherie, die in der Byte- Gleiches Ergebnis wie beim Direktzu‐ Abhängig von angelegten I/O‑Variablen Anordnung Little Endian arbeit griff oder beim Prozessabbild der zykli‐ für Direktzugriff sind die Ergebnisse un‐...
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Eigenschaft des gemeinsamen Prozessabbilds 1. Der Speicherbereich für das feste Prozessabbild der BackgroundTask (Seite 343) ist eine Untermenge des Speicherbereichs für das Prozessabbild der zyklischen Tasks (Seite 333). 2.
Seite 347
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Es werden folgende drei Fälle betrachtet, die die unterscheiden, ob und welche I/O‑Variablen für Direktzugriff oder das Prozessabbild der zyklischen Tasks angelegt sind: 1. Fall A: Für die Adressen 60 und 61 sind keine I/O‑Variablen angelegt 2.
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Zugriff mit Fall A Fall B Fall C Zugriff auf das feste %IB60 16#08 16#08 16#08 Prozessabbild der %IB61 16#00 16#00 16#00 BackgroundTask %IW60 16#0800 16#0800 16#0800 %I60.3 TRUE TRUE...
Seite 349
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) 4. Auf das feste Prozessabbild der BackgroundTask wird immer mit der Byte-Anordnung Big Endian zugegriffen. 5. Diese beiden letzten Eigenschaften (Nr. 3 und 4) wirken sich aus beim Zugriff auf Ein- und Ausgänge, die mit der Byte-Anordnung Little Endian arbeiten (z.
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) In der folgenden Tabelle ist aufgelistet, welche Werte sich bei den nachfolgenden Zugriffen ergeben: ● Direktzugriffe: – Zugriff auf die einzelnen Bytes oder das Wort mit der jeweiligen I/O‑Variablen. –...
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Sie können den Bezeichner für den absoluten PA‑Zugriff wie eine normale Variable verwenden (Seite 353). Hinweis Ausgänge können Sie lesen und beschreiben, Eingänge nur lesen. 7.3.4.4 Syntax für den Bezeichner für einen absoluten PA-Zugriff Für den absoluten Zugriff auf das feste Prozessabbild der BackgroundTask (Seite 350) verwenden Sie nachstehende Syntax.
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Ausgang an logischer Adresse 63, Bit 3, Datentyp BOOL: %Q63.3. Hinweis Bis Version V4.1 des SIMOTION Kernels bzw. bei der Einstellung am Gerät "Separates Prozessabbild" (Seite 348) (ab Version V4.2 des SIMOTION Kernels) gilt: ●...
Einbindung von ST in SIMOTION 7.3 Zugriff auf Ein- und Ausgänge (Prozessabbild, I/O-Variablen) Bild 7-7 Deklaration eines symbolischen Zugriffs auf das Prozessabbild Zum absoluten PA‑Zugriff siehe "Syntax für den Bezeichner für einen absoluten PA‑Zugriff (Seite 351)". Die Breite des deklarierten Ganzzahlen oder Bitdatentyps muss der Breite des absoluten PA‑Zugriffs entsprechen, siehe "Mögliche Datentypen des symbolischen PA-Zugriffs (Seite 355)".
1. Wählen Sie in der Detailanzeige das Register "Adressliste" und wählen Sie das SIMOTION Gerät aus. oder Doppelklicken Sie im Projektnavigator des SIMOTION SCOUT auf das Element "ADRESSLISTE" im Teilbaum des SIMOTION Geräts. 2. Markieren Sie die Zeile, vor der Sie die I/O-Variable einfügen wollen, und wählen Sie im Kontextmenü...
Sie können nun mit der Adressliste oder jedem Programm des SIMOTION Geräts auf diese Variable zugreifen. Hinweis I/O-Variablen können Sie nur im Offline-Modus anlegen. Sie legen sie im SIMOTION SCOUT an und verwenden sie in Ihren Programmquellen. Beachten Sie, dass Sie Ausgänge lesen und beschreiben, Eingänge jedoch nur lesen dürfen.
Einbindung von ST in SIMOTION 7.4 Bibliotheken verwenden Bibliotheken verwenden Bibliotheken stellen Ihnen anwenderdefinierte Datentypen, Funktionen und Funktionsbausteine zur Verfügung, die Sie von allen SIMOTION Geräten aus nutzen können. Bibliotheken können in allen Programmiersprachen geschrieben werden; sie können in allen Programmquellen (z.
Einbindung von ST in SIMOTION 7.4 Bibliotheken verwenden 7.4.1 Bibliothek übersetzen In Bibliotheken können alle ST-Befehle, mit Ausnahme der in der Tabelle angegebenen, verwendet werden. Darüber hinaus sind auch einige Variablenzugriffe nicht erlaubt, auch diese sind in der Tabelle vermerkt. Tabelle 7-31 In Bibliotheken nicht erlaubte ST-Befehle und Variablenzugriffe Nicht erlaubte Befehle: _getTaskId (siehe Funktionshandbuch SIMOTION Basisfunktionen )
Einbindung von ST in SIMOTION 7.4 Bibliotheken verwenden 4. Wählen Sie die SIMOTION Geräte (mit Version des SIMOTION Kernels) und die Technologiepakete aus, bezüglich derer die Bibliothek übersetzt werden soll, siehe SIMOTION Basisfunktionen . Funktionshandbuch 5. Wählen Sie das Kontextmenü Übernehmen und Übersetzen. Die Bibliothek wird bezüglich aller ausgewählten SIMOTION Geräte, Versionen des SIMOTION Kernels und Technologiepakete (bzw.
Einbindung von ST in SIMOTION 7.4 Bibliotheken verwenden Sie können: ● Die einzelnen Quellen einer Bibliothek mit Know‑how-Schutz versehen: Es sind nur die Quellen vor unbefugtem Zugriff geschützt. Die Einstellung der SIMOTION Geräte einschließlich der Versionen des SIMOTION Kernels und der Technologiepakete, für welche die Bibliothek übersetzt werden soll, kann weiterhin vom Anwender geändert und angepasst werden.
Einbindung von ST in SIMOTION 7.5 Verwendung von gleichen Bezeichnern, Namensräume AS namespace können Sie einen Namensraum (Seite 367) Mit dem optionalen Zusatz definieren. ● Sie können dann auch auf Datentypen, Funktionen und Funktionsbausteine der Bibliothek zugreifen, die namensgleich mit einer solchen ST-Quelle des SIMOTION Geräts (im Ordner PROGRAMME) sind.
Einbindung von ST in SIMOTION 7.5 Verwendung von gleichen Bezeichnern, Namensräume Unit oder POE ein übergeordneter Bezeichner verdeckt wird, gibt der Compiler eine Warnung aus. Hinweis Der Compiler kann unter bestimmten Umständen keine Warnung absetzen, wenn z. B. das zugehörige Technologiepaket nicht importiert ist. Bezeichner in einer Programmorganisationseinheit (POE) Alle folgenden Bezeichner in einer POE müssen eindeutig sein: ●...
Einbindung von ST in SIMOTION 7.5 Verwendung von gleichen Bezeichnern, Namensräume Sie dürfen auch nicht mit nachstehenden Bezeichnern identisch sein: ● Reservierte Bezeichner. ● Unit-Variablen, Datentypen und POE importierter Units. ● Standardsystemfunktionen, Standardsystemfunktionsbausteine und zugehörige Datentypen. ● Systemfunktionen und Systemdatentypen des SIMOTION Geräts. ●...
Einbindung von ST in SIMOTION 7.5 Verwendung von gleichen Bezeichnern, Namensräume Beispiel Das nachstehende Beispiel veranschaulicht diesen Sachverhalt. Es zeigt, dass bei gleicher Bezeichnung von Unit-Variablen (großer Gültigkeitsbereich) und FC-Variablen (kleiner Gültigkeitsbereich) die in der Funktion deklarierten Variablen nur in diesem Quelldatei- Abschnitt gültig sind.
Einbindung von ST in SIMOTION 7.5 Verwendung von gleichen Bezeichnern, Namensräume (Seite 360). Um dennoch diese Bezeichner zu erreichen, können Sie in bestimmten Fällen Namensräume verwenden. 7.5.2.1 Namensräume für Bibliotheken und Technologiepakete Sie können in der Importanweisung für Bibliotheken und Technologiepakete Namensräume definieren, um Datentypen, Funktionen oder Funktionsbausteine dieser Bibliotheken und Technologiepaketen erreichen zu können.
Einbindung von ST in SIMOTION 7.5 Verwendung von gleichen Bezeichnern, Namensräume Hinweis Falls ein Namensraum für eine importierte Bibliothek oder Technologiepaket definiert ist, muss dieser immer angegeben werden, wenn eine Funktion, Funktionsbaustein oder Datentyp aus dieser Bibliothek oder diesem Technologiepaket verwendet wird. Siehe in obigem Beispiel: Cam1._enableAxis, Cam1.WHEN_COMMAND_DONE.
Seite 366
Einbindung von ST in SIMOTION 7.5 Verwendung von gleichen Bezeichnern, Namensräume Bild 7-8 Namensräume und Hierarchie der Bezeichner SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Einbindung von ST in SIMOTION 7.5 Verwendung von gleichen Bezeichnern, Namensräume 7.5.2.3 Objektorientierter Namensraum Deklaration objektorientierter Namensräume Objektorientierte Namensräume deklarieren Sie im Interface- oder Implementationsabschnitt einer ST‑Quelle bzw. innerhalb eines anderen objektorientierten Namensraums. Dabei verwenden Sie folgende Syntax: Bild 7-9 Syntax: Objektorientierter Namensraum Geben Sie nach dem Schlüsselwort NAMESPACE und optional INTERNAL einen Bezeichner für den Namen des Namensraums ein.
Seite 368
Einbindung von ST in SIMOTION 7.5 Verwendung von gleichen Bezeichnern, Namensräume Danach folgen: ● die im Namensraum erlaubten Anweisungen, z. B.: – Deklarationen anwenderdefinierter Datentypen – Globale Variablendeklarationen – Objektorientierte Interfaces – Programmorganisationseinheiten wie Klassen, Funktionen, Funktionsbausteine, Programme bzw. deren Prototypen –...
Einbindung von ST in SIMOTION 7.5 Verwendung von gleichen Bezeichnern, Namensräume Die Definition eines Namespaces muss nicht geschlossen erfolgen. Wird ein bereits definierter Namensraum mit gleichem Namen gefunden, wird der Inhalt der Deklaration in diesen integriert. Dies gilt auch, wenn die Namensraumangabe an der USES-Anweisung erfolgt. Vordefinierte Namensräume (Seite 365) (z.
Seite 370
Einbindung von ST in SIMOTION 7.5 Verwendung von gleichen Bezeichnern, Namensräume namespace_1 . namespace_11 . element . Da es sich typischerweise um einen Außenzugriff handelt, kann auf Elemente, die als INTERNAL dekklariert sind, nicht zugegriffen werden. Tabelle 7-34 Beispiel: Zugriff auf Elemente einer als INTERNAL deklarierten Klasse NAMESPACE ns1 CLASS INTERNAL cl_int METHOD PUBLIC m_public...
Seite 371
Einbindung von ST in SIMOTION 7.5 Verwendung von gleichen Bezeichnern, Namensräume FUNCTION_BLOCK fb_test1 v_cl : ns1.ns_int.cl; // Instanz nicht anlegbar. // ns_int ist INTERNAL in ns1. END_VAR ns1.vg_cl.m_public(); // Zugriff auf Methode m_public möglich. ns1.vg_cl.m_internal(); // Zugriff auf Methode m_internal nicht möglich. END_FUNCTION_BLOCK USING-Direktive Die USING-Direltive hat folfgende Syntax:...
Seite 372
Einbindung von ST in SIMOTION 7.5 Verwendung von gleichen Bezeichnern, Namensräume Die USING-Direktive kann an folgenden Stellen ggf. mehrfach hintereinander angegeben werden: ● Im Interfaceabschnitt der Quelle: Unmittelbar nach den Anweisungen zum Import von Technologiepaketen, Bibliotheken und anderen Quellen (USEPACKAGE, USELIB, USES). Damit können beispielsweise in Namensräumen von Bibliotheken vereinbarte Elemente in den globalen Namensraum eingeblendet werden.
Einbindung von ST in SIMOTION 7.6 Referenzdaten Hinweis Die USING Direktive kann nicht auf Namensräume angewendet werden, die Bestandteil des Namensraum-Pfads des aktuellen Quelldateiabschnitts sind. Tabelle 7-39 Beispiel: USING-Direktive auf übergeordneten Namensraum nicht möglich NAMESPACE ns1.ns11.ns111 CLASS cltest USING ns11; // Fehler: ns11 ist Bestandteil des eigenen Deklarationspfades // ...
Einbindung von ST in SIMOTION 7.6 Referenzdaten 7.6.1 Querverweisliste In der Querverweisliste sehen Sie alle Bezeichner in Programmquellen (z. B. ST-Quellen, MCC-Quellen): ● die als Variablen, als Datentypen oder als Programmorganisationseinheiten (Programm, Funktion, Funktionsbaustein) deklariert sind, ● die als vorher definierte Datentypen in Deklarationen verwendet werden, ●...
Seite 375
Einbindung von ST in SIMOTION 7.6 Referenzdaten Die Handhabung der Querverweisliste ist im Abschnitt "Mit der Querverweisliste umgehen (Seite 379)" beschrieben. Tabelle 7-41 Bedeutung der Spalten und ausgewählter Einträge in der Querverweisliste Spalte Eintrag in Spalte Bedeutung Name Name des Bezeichners Typ des Bezeichners Name ●...
Seite 376
Einbindung von ST in SIMOTION 7.6 Referenzdaten Spalte Eintrag in Spalte Bedeutung Name / taskbind.hid Name Ablaufsystem des SIMOTION Geräts Bereich Bereich innerhalb des SIMOTION Geräts oder der Programmquelle INTERFACE Inferfaceabschnitt der Programmquelle POE-Typ Name (d. h. Name innerhalb der Programmquelle. Programmorganisationseinheit (POE) Name , CLASS...
Einbindung von ST in SIMOTION 7.6 Referenzdaten 7.6.1.3 Mit der Querverweisliste umgehen Sie können in der Querverweisliste: ● Innerhalb der Spalten alphabetisch sortieren: – Klicken Sie hierzu in den Kopf der jeweiligen Spalte. ● Nach einem Bezeichner oder Eintrag suchen: –...
Einbindung von ST in SIMOTION 7.6 Referenzdaten Die Querverweisliste wird gemäß den ausgewählten Filtereinstellungen angezeigt. Hinweis Nach Erzeugen der Querverweisliste ist ein Filter standardmäßig aktiviert. 7.6.2 Programmstruktur In der Programmstruktur sehen Sie alle Funktionsaufrufe und deren Schachtelung innerhalb eines ausgewählten Elements. Sie können die Programmstruktur selektiv anzeigen für: ●...
Einbindung von ST in SIMOTION 7.6 Referenzdaten Zur Struktur der Einträge siehe Tabelle: Tabelle 7-42 Elemente der Anzeige für die Programmstruktur Element Beschreibung Wurzel Durch Komma getrennte Liste (deklarierte POE ● Bezeichner der Programmorganisationseinheit (POE) bzw. der Task bzw. verwendete Name_1::Name_2 bedeutet: Methode Name_2 innerhalb der Die Angabe Task))
Einbindung von ST in SIMOTION 7.6 Referenzdaten So gehen Sie vor: 1. Markieren Sie im Projektnavigator das entsprechende Element, dessen Codeattribute Sie anzeigen lassen wollen. 2. Wählen Sie Menü Bearbeiten > Referenzdaten anzeigen > Codeattribute. An Stelle des Registers Querverweise wird nun das Register Codeattribute in der Detailanzeige eingeblendet.
Einbindung von ST in SIMOTION 7.7 Präprozessor und Compiler durch Pragmas steuern Unter folgenden Voarussetzungen wird ein Bezeichner als Variable erkannt: 1. Der Bezeichner ist als Variable deklariert. Der Gültigkeitsbereich der Variablen schließt das jeweilige Fenster (ST‑Quelle, MCC‑Chart, KOP/FUP‑Programm) ein. 2.
Einbindung von ST in SIMOTION 7.7 Präprozessor und Compiler durch Pragmas steuern Pragmas sind in geschweiften Klammern { und } eingeschlossen und können enthalten (siehe Bild): ● Präprozessor-Anweisungen zum Steuern des Präprozessors, siehe Präprozessor steuern (Seite 384). Die in einer ST‑Quelle enthaltenen Pragmas mit Präprozessor-Anweisungen werden vom Präprozessor ausgewertet und als Steuerungsanweisungen interpretiert.
Einbindung von ST in SIMOTION 7.7 Präprozessor und Compiler durch Pragmas steuern Während des Übersetzens einer Programmquelle werden Sie über die Arbeit des Präprozessors informiert. Hierzu muss die Anzeige von Warnungen der Warnungsklasse 7 aktiviert sein, siehe Bedeutung der Warnungsklassen (Seite 73). Den Umfang der ausgegebenen Warnungen und Informationen legen Sie fest: ●...
Seite 384
Einbindung von ST in SIMOTION 7.7 Präprozessor und Compiler durch Pragmas steuern Bild 7-11 Syntax: Präprozessor-Anweisung Tabelle 7-43 Präprozessor-Anweisungen Anweisung Bedeutung #define Der angegebene Bezeichner wird im Folgenden durch den angegebenen Text ersetzt. Erlaubte Zeichen: Siehe Fußteil der Tabelle. #undef Die Ersetzungsvorschrift für den Bezeichner wird aufgehoben.
Seite 385
Einbindung von ST in SIMOTION 7.7 Präprozessor und Compiler durch Pragmas steuern Anweisung Bedeutung #endif Schließt Variantenbildung mit #ifdef oder #ifndef ab. Erlaubte Zeichen: ● Für Bezeichner: Entsprechend den Regeln für Bezeichner (Seite 99). ● Für Text: Folge beliebiger Zeichen außer \ (Backslash), ' (einfaches Hochkomma - single quote), "...
Einbindung von ST in SIMOTION 7.7 Präprozessor und Compiler durch Pragmas steuern 7.7.1.2 Beispiel für Präprozessor-Anweisungen Tabelle 7-44 Beispiel für Präprozessor-Anweisungen ST-Quelle Ausgabe des Präprozessors mit Präprozessoranweisungen INTERFACE INTERFACE FUNCTION_BLOCK fb1; FUNCTION_BLOCK fb1; VAR_GLOBAL VAR_GLOBAL g_var : INT; g_var : INT; END_VAR END_VAR // Präprozessor-Definitionen...
Einbindung von ST in SIMOTION 7.7 Präprozessor und Compiler durch Pragmas steuern 7.7.2 Compiler mit Attributen steuern Mit Attributen innerhalb eines Pragmas können Sie den Compiler steuern. Bild 7-12 Syntax: Attribut für Compileroptionen Tabelle 7-45 Zulässige Attribute für Compileroptionen Attributbezeichnung Attributwert Bedeutung _U7_PoeBld_CompilerOption...
Seite 388
Einbindung von ST in SIMOTION 7.7 Präprozessor und Compiler durch Pragmas steuern Attributbezeichnung Attributwert Bedeutung HMI_Export Das Attribut ändert die Standardvorgabe, welche Variablen auf HMI-Geräten zur Ver‐ fügung stehen. Es muss direkt nach dem jeweiligen Schlüsselwort folgender Deklara‐ tionsblöcke stehen: ●...
Seite 389
Einbindung von ST in SIMOTION 7.7 Präprozessor und Compiler durch Pragmas steuern Attributbezeichnung Attributwert Bedeutung BlockInit_OnChange Das Attribut ändert die Standardvorgabe, ob ein Download im RUN bei einer Änderung der Versionskennung des jeweiligen Deklarationsblocks möglich ist. Es muss direkt nach dem jeweiligen Schlüsselwort folgender Deklarationsblöcke stehen: ●...
Seite 390
Einbindung von ST in SIMOTION 7.7 Präprozessor und Compiler durch Pragmas steuern Tabelle 7-46 Beispiel für Attribute für Compileroptionen INTERFACE VAR_GLOBAL { HMI_Export := FALSE; BlockInit_OnChange := TRUE; } // Kein HMI-Export, Download im RUN möglich x : DINT; END_VAR FUNCTION_BLOCK fb1;...
Einbindung von ST in SIMOTION 7.7 Präprozessor und Compiler durch Pragmas steuern 7.7.3 Freie Compilermeldung ausgeben Sie können innerhalb eines Pragmas (Seite 381) den Compiler veranlassen, freie Compilermeldungen in das Register "Ausgabe übersetzen / prüfen" der Detailanzeige zu schreiben. Bild 7-13 Syntax: Freie Compilermeldung Die Schlüsselwörter haben folgende Bedeutung: Schlüsselwort...
● ? (Fragezeichen, ASCII-Code $3F), ● \ (Backslash, ASCII-Code $5C), ● | (Vertikale Linie, ASCII-Code $7C). Bezeichner für SIMOTION Geräte können nur in SIMOTION SCOUT bzw. HW Konfig festgelegt werden, in den Programmiersprachen können sie ausschließlich verwendet werden. Beispiele für gültige Gerätebezeichner ●...
– Bezeichner der Form n.n.n.n (n = 0 … 999). Verwendung von Gerätebezeichnern in SIMOTION SCOUT Bezeichner für SIMOTION Geräte, die nicht den allgemeinen Regeln für Bezeichner genügen, müssen bei Verwendung in SIMOTION SCOUT (z. B in den Programmiersprachen) in doppelte Hochkommata (", ASCII-Code $22) eingeschlossen werden. Beispiel: ●...
Einbindung von ST in SIMOTION 7.9 Vorwärtsdeklarationen 7.8.2 Einstellungen am Gerät vornehmen (ab Kernel V4.2) Ab Version V4.2 des SIMOTION Kernels können Sie unter Anderem folgende Einstellungen am SIMOTION Gerät vornehmen: ● Speicherbereich für das Prozessabbild der zyklischen Tasks und das feste Prozessabbild der BackgroundTaks: –...
Seite 395
Einbindung von ST in SIMOTION 7.9 Vorwärtsdeklarationen Vorwärtsdeklaration für Programmorganisationseinheiten (POE) Die Compileroption (Seite 62) Vorwärtsdeklarationen erlauben bewirkt Folgendes: ● Im Implementationsabschnitt einer ST‑Quelle dürfen Deklarationen (z. B. globale Variablendeklarationen) beliebig zwischen Programmorganisationseinheiten (POE) erfolgen. ● Folgende Anweisungen innerhalb des Konstrukts TYPE / END_TYPE im Interfaceabschnitt (Seite 266) oder Implementationsabschnitt (Seite 268) einer ST‑Quelle werden als Prototypen der der jeweiligen POE interpretiert: fb-name ;...
Seite 396
Einbindung von ST in SIMOTION 7.9 Vorwärtsdeklarationen ● Nach Deklaration des entsprechenden POE-Prototyps für eine Klasse oder einen Funktionsbaustein sind folgende Deklarationen möglich, bevor die entsprechende POE definiert ist: – Instanzdeklaration des Funktionsbausteins (Seite 205) als globale Variable oder als lokale Variable in einem Programm, einem anderen Funktionsbaustein oder in einer Klasse –...
Seite 397
Einbindung von ST in SIMOTION 7.9 Vorwärtsdeklarationen POE-Prototypen Bild 7-14 Syntax: POE-Prototypen Hinweis Wenn die POE-Prototypen innerhalb des Interfaceabschnitts deklariert sind, werden die entsprechenden POE veröffentlicht. Veröffentlichungsanweisungen für POE innerhalb des Interfaceabschnitts (z. B. fb‑name ;) werden ebenfalls als Prototypen interpretiert. FUNCTION_BLOCK Bei nicht aktivierter Compileroption (Seite 62) "Vorwärtsdeklarationen erlauben"...
Einbindung von ST in SIMOTION 7.9 Vorwärtsdeklarationen Beispiel Tabelle 7-47 Beispielprogramm mit Vorwärtsdeklaration Nur mit aktivierter Compileroption "Vorwärtsdeklaration erlauben". Wegen Aufruf eines Programms im Programm ist auch die Aktivierung folgender Compileroptionen nötig: "Spracherweiterungen zulassen" und "Programminstanzdaten nur einmal anlegen". INTERFACE PROGRAM prog_main;...
Einbindung von ST in SIMOTION 7.10 Sprunganweisung und -markierung FUNCTION fc_1: DINT VAR_INPUT x_in : DINT; END_VAR fc_1 := x_in; END_FUNCTION PROGRAM prog_1 var_int1, var_int2 : INT; END_VAR var_int1 := var_int2; END_PROGRAM END_IMPLEMENTATION 7.10 Sprunganweisung und -markierung Als zusätzliche Kontrollanweisung (Seite 166) steht eine Sprunganweisung zur Verfügung. Eine Sprunganweisung (Seite 179) programmieren Sie mit dem Befehl GOTO unter Angabe der Sprungmarke, zu der Sie springen wollen.
Seite 400
Einbindung von ST in SIMOTION 7.10 Sprunganweisung und -markierung Hinweis Die GOTO-Anweisung sollte nur in Sonderfällen (z. B. Fehlerbearbeitung) verwendet werden. Nach den Regeln der strukturierten Programmierung sollte sie nicht verwendet werden. Sprünge sind nur innerhalb einer POE zulässig. Folgende Sprünge sind nicht zulässig: ●...
Fehlerquellen und Programmtest Dieses Kapitel beschreibt mögliche Fehlerquellen beim Programmieren und zeigt Ihnen, wie Sie effizient programmieren können. Sie erfahren auch, welche Möglichkeiten Sie für den Programmtest haben. Alle möglichen Fehlermeldungen bei der Übersetzung, d. h. Compilerfehler siehe Fehlermeldungen des Compilers und deren Behebung (Seite 515). Zu jedem Fehler erhalten Sie Möglichkeiten der Behebung bzw.
Fehlerquellen und Programmtest 8.2 Programmtest 8.2.1 Betriebsmodi für Programmtest 8.2.1.1 Betriebsmodi der SIMOTION-Geräte Für den Programmtest stehen verschiedene Betriebsmodi der SIMOTION-Geräte zur Verfügung. Tabelle 8-1 Betriebsmodi eines SIMOTION Geräts Betriebsmodus Bedeutung Prozessbetrieb Der Programmablauf im SIMOTION-Gerät ist optimiert für maximale System-Performance. Folgende Diagnosefunktionen stehen zur Verfügung, sie sind aber teilweise wegen der Optimie‐...
Besonderheiten beim Debug-Modus Nur für ein SIMOTION-Gerät kann der Debug-Modus ausgewählt werden. Wenn Sie den Debug-Modus ausgewählt haben, wechselt nur SIMOTION SCOUT in den Debug-Modus, das SIMOTION-Gerät befindet sich im Testbetrieb. ● Der aktivierte Debug-Modus des SIMOTION SCOUT wird im Projektnavigator durch ein Symbol vor dem SIMOTION-Gerät angezeigt.
Deshalb ist auf eine hardwaremäßige Ausführung des NOT-AUS-Kreises zu achten. Hierzu sind vom Anwender die erforderlichen Maßnahmen zu treffen. In folgenden Fällen tauschen das SIMOTION-Gerät und SIMOTION SCOUT regelmäßig Lebenszeichen aus, um eine ordnungsgemäße Verbindung sicherzustellen: ● Im Debug-Modus bei aktivierten Haltepunkten.
Die Lebenszeichenüberwachung spricht unter anderem in folgenden Fällen an: ● Drücken der Leertaste. ● Wechsel in eine andere Windows-Anwendung. ● Zu hohe Kommunikationslast zwischen SIMOTION-Gerät und SIMOTION SCOUT (z. B. durch Hochladen von Tasktrace-Daten). Es werden folgende Reaktionen ausgelöst: ● Im Debug-Modus bei aktivierten Haltepunkten: –...
Editieren der Programmquellen im Online-Modus Online-Editieren im Prozess- oder Testbetrieb Wenn SIMOTION SCOUT mit dem Zielsystem verbunden ist, das sich im Betriebsmodus "Prozessbetrieb" bzw. "Testbetrieb" befindet, können Programmquellen (z. B. ST‑Quellen, MCC‑Quellen mit den MCC‑Charts) grundsätzlich editiert , übersetzt und im Betriebszustand STOP ins Zielsystem geladen werden.
"Beobachten des Programmablaufs" oder Leuchtspur aktiv sind, werden die Testfunktionen abgebrochen. Online-Editieren im Debug-Modus Wenn SIMOTION SCOUT sich im Betriebsmodus Debug-Modus befindet, ist das Editieren möglich, solange sich das SIMOTION-Gerät nicht im Debug-Modus befindet, also keine Haltepunkte aktiviert sind. Haltepunkte können Sie nur aktivieren und dadurch das SIMOTION-Gerät in den Debug- Modus schalten, wenn die entsprechende Programmquelle und alle ihrer POE gespeichert, aktuell übersetzt und konsistent mit dem Zielsystem sind.
Fehlerquellen und Programmtest 8.2 Programmtest 8.2.3 Symbol-Browser 8.2.3.1 Eigenschaften des Symbol-Browsers Im Symbol-Browser können Sie Name, Datentyp und Werte von Variablen betrachten und gegebenenfalls die Werte ändern. Im Einzelnen können Sie: folgende Variablen sehen: ● Unit-Variablen sowie statische Variablen eines Programms oder Funktionsbausteins ●...
Seite 409
Fehlerquellen und Programmtest 8.2 Programmtest Tabelle 8-3 Elemente im Projektnavigator und im Symbolbrowser zu beobachtende Variablen Im Symbolbrowser zu beobachtende Variablen Zu markierendes Element im Pro‐ jektnavigator Variablen im Anwenderspeicher der Unit oder im remanenten Speicher, siehe Spei‐ Programmquelle (Unit) cherbereiche der Variablentypen (Seite 306): ●...
Fehlerquellen und Programmtest 8.2 Programmtest Bild 8-1 Beobachten von Variablen im Symbol-Browser Status und Steuern von Variablen In der Spalte Statuswert wird der aktuelle Wert der Variablen angezeigt und periodisch aktualisiert. Sie können den Wert einer oder mehrerer Variablen ändern. Gehen Sie bei den zu ändernden Variablen wie folgt vor: 1.
Fehlerquellen und Programmtest 8.2 Programmtest Die von Ihnen eingegebenen Werte werden in die ausgewählten Variablen geschrieben. WARNUNG Gefährliche Anlagenzustände möglich Beim Steuern weisen Sie den Variablen die eingetragenen Werte sofort zu. Damit können gefährliche Anlagenzustände ausgelöst werden z. B. unvorhersehbare Achsbewegungen. Hinweis Beachten Sie, wenn Sie die Werte mehrerer Variablen ändern: Die Werte werden sequentiell in die Variablen geschrieben.
Fehlerquellen und Programmtest 8.2 Programmtest Im Offline-Modus können Sie den Datentyp der Variablen sehen. Im Online-Modus sehen Sie den Wert der Variablen und können ihn auch steuern. 8.2.4.2 Watchtabelle einsetzen Sie können Variablen verschiedener Programmquellen, Technologieobjekte, SIMOTION Geräte usw. (auch auf unterschiedlichen Geräten) in einer Watchtabelle zusammenfassen, gemeinsam beobachten und gegebenenfalls ändern.
Fehlerquellen und Programmtest 8.2 Programmtest Die von Ihnen eingegebenen Werte werden in die ausgewählten Variablen geschrieben. WARNUNG Gefährliche Anlagenzustände möglich Beim Steuern weisen Sie den Variablen die eingetragenen Werte sofort zu. Damit können gefährliche Anlagenzustände ausgelöst werden z. B. unvorhersehbare Achsbewegungen. Hinweis Beachten Sie, wenn Sie die Werte mehrerer Variablen ändern: Die Werte werden sequentiell in die Variablen geschrieben.
Seite 414
Fehlerquellen und Programmtest 8.2 Programmtest Voraussetzungen ● Stellen Sie sicher, dass eine Verbindung mit dem Zielsystem besteht und dass ein Projekt ins Zielsystem geladen ist. Zum Laden eines Projekts siehe "Beispielprogramm ausführen (Seite 91)". ● Die Programmquelle, in der sich Programmorganisationseinheit (POE) befindet, deren Variablen Sie beobachten wollen, ist mit dem Zielsystem konsistent.
Fehlerquellen und Programmtest 8.2 Programmtest ● Statische Variablen von Funktionsbausteinen, deren Instanzen als statische Variablen von Programmen deklariert sind ● I/O-Variablen 8.2.6 Programm-Durchlauf 8.2.6.1 Programm-Durchlauf: Anzeige von Codestelle und Aufrufpfad Sie können sich die Codestelle (z. B. Zeile einer ST-Quelle), die eine MotionTask aktuell durchläuft, sowie deren Aufrufpfad anzeigen lassen.
Fehlerquellen und Programmtest 8.2 Programmtest Tabelle 8-7 Parameterbeschreibung Programm-Durchlauf Feld Beschreibung Selektierte CPU Das ausgewählte SIMOTION-Gerät wird angezeigt. Aktualisieren Durch Klicken auf die Schaltfläche werden die aktuellen Codestellen aus dem SIMOTION-Gerät gelesen und im geöffneten Fenster ange‐ zeigt. Aufrufende Task Wählen Sie die Task aus, für die Sie die aktuell durchlaufene Code‐...
● Erst nach Verlassen des markierten Beobachtungsbereichs bzw. nach Abbruch der Aufzeichnung wird der Puffer zur Anzeige im SIMOTION SCOUT bereitgestellt. SIMOTION SCOUT ruft die bereitgestellten Werte in regelmäßigen Abständen ab und zeigt sie in dem Format an, das Sie bei den Einstellungen des ST-Editors (Seite 33) als "Format für Statusanzeige"...
Seite 418
Fehlerquellen und Programmtest 8.2 Programmtest Bei Funktionen und Funktionsbausteinen können Sie eine Stelle in einer ST-Quelle wählen, an der die Funktion bzw. die Instanz eines Funktionsbausteins gerufen wird (Aufrufpfad). Sie können damit die Variablenwerte gezielt für diesen Aufruf betrachten. Tabelle 8-9 Unterschiede zwischen Prozessbetrieb und Testbetrieb bei Status Programm Prozessbetrieb Testbetrieb...
Fehlerquellen und Programmtest 8.2 Programmtest 8.2.7.2 Status Programm einsetzen Bevor Sie mit Status Programm arbeiten können, müssen Sie dem System mitteilen, dass es in einem besonderen Modus ablaufen soll: 1. Stellen Sie sicher, dass beim Compilieren der ST-Quelle der zusätzliche Debugcode erzeugt wird: –...
Seite 420
Fehlerquellen und Programmtest 8.2 Programmtest Bild 8-2 Teil eines ST-Programms im Testmodus Status Programm So testen Sie mit Status Programm: 1. Markieren Sie in der linken Fensterhälfte den Abschnitt der ST-Quelle, den Sie testen wollen. 2. Wenn Sie einen Abschnitt einer POE markiert haben, der von mehreren Stellen einer Programmquelle oder in mehreren Tasks aufgerufen wird: Geben Sie den Aufrufpfad für Status Programm (Seite 423) an.
Fehlerquellen und Programmtest 8.2 Programmtest Wenn Ihnen die Anzeige der Variablenwerte zu schnell wechselt: ● Klicken Sie in der Funktionsleiste ST‑Editor (Seite 53) auf die Schaltfläche für Beobachten der Programmvariablen anhalten, um die Anzeige zu stoppen. ● Klicken Sie in der Funktionsleiste ST‑Editor (Seite 53) auf die Schaltfläche für Beobachten der Programmvariablen fortfahren, um die Anzeige weiterlaufen zu lassen.
Fehlerquellen und Programmtest 8.2 Programmtest 8.2.7.4 Parameter Aufrufpfad Status Programm Tabelle 8-10 Parameterbeschreibung Aufrufpfad Status Programm Feld Beschreibung Aufrufende Task Wählen Sie die Task aus. Zur Auswahl stehen alle Tasks, in denen die markierte Codestelle aufgerufen wird. Aktuelle Codestelle Der markierte Abschnitt der POE (Codestelle) wird angezeigt (mit Name der ST-Quelle, Zeilennummer, Name der POE) wird aufgerufen von Wählen Sie die aufrufende Codestelle aus.
Fehlerquellen und Programmtest 8.2 Programmtest Vorgehensweise So gehen Sie vor: 1. Wählen Sie für das betreffende SIMOTION-Gerät den Betriebsmodus "Debug-Modus", siehe Debug-Modus einstellen (Seite 425). 2. Legen Sie die anzuhaltenden Tasks fest, siehe Debug-Taskgruppe festlegen (Seite 426). 3. Setzen Sie Haltepunkte, siehe Haltepunkte setzen (Seite 430). 4.
Beachten Sie den Abschnitt: Wichtige Hinweise zur Lebenszeichenüberwachung (Seite 404). 6. Bestätigen Sie mit OK. SIMOTION SCOUT wechselt für dieses Gerät in den Debug-Modus; das SIMOTION-Gerät selbst verbleibt im Betriebsmodus "Testbetrieb", solange bis mindestens ein Haltepunkt aktiviert wird: Der aktivierte Debug-Modus des SIMOTION SCOUT wird Projektnavigator durch ein Symbol vor dem SIMOTION-Gerät angezeigt.
Seite 425
Fehlerquellen und Programmtest 8.2 Programmtest Vorgehensweise So ordnen Sie eine Task der Debug-Taskgruppe zu: 1. Markieren Sie im Projektnavigator das betreffende SIMOTION-Gerät. 2. Wählen Sie Kontextmenü Debug-Taskgruppe. Das Fenster Debug-Taskgruppe öffnet. 3. Wählen Sie die Tasks aus, die bei Erreichen eines Haltepunktes angehalten werden sollen: –...
Fehlerquellen und Programmtest 8.2 Programmtest Eigenschaft Anzuhaltende Tasks Einzelne ausgewählte Tasks Alle Tasks (Debug-Taskgruppe) Ausgänge Aktiv Das Verhalten der Ausgänge und Techno‐ logieobjekte ist abhängig von der Check‐ Technologie Regelung aktiv box Mit ’Fortsetzen’ werden die Ausgänge aktiviert (ODIS deaktiviert). ●...
Fehlerquellen und Programmtest 8.2 Programmtest Voraussetzung ist, dass sich das betreffende SIMOTION Gerät im Debug-Modus befindet, siehe Betriebsmodi der SIMOTION-Geräte (Seite 402). Tabelle 8-12 Parameterbeschreibung Debug-Einstellungen Feld Beschreibung Debug-Taskgruppe Wählen Sie diese Auswahlmöglichkeit, wenn Sie nur einzelne Tasks anhalten wollen. Das SIMOTION Gerät bleibt nach Erreichen eines aktivierten Haltepunktes im Betriebszustand RUN.
1. Die Programmquelle mit der POE (z. B. ST‑Quelle, MCC‑Chart, KOP/FUP‑Programm) ist geöffnet. 2. Eine Verbindung mit dem Zielsystem muss bestehen (Online-Modus). 3. SIMOTION SCOUT befindet sich für das betreffende SIMOTION-Gerät im Debug-Modus, siehe Debug-Modus einstellen (Seite 423). 4. Die anzuhaltenden Tasks sind festgelegt, siehe Debug-Taskgruppe festlegen (Seite 424).
Seite 429
Fehlerquellen und Programmtest 8.2 Programmtest So entfernen Sie einen Haltepunkt: 1. Wählen Sie die Codestelle mit dem Haltepunkt aus. 2. Führen Sie folgende Aktion aus (Alternativen): – Wählen Sie Menü Debug > Haltepunkt setzen / entfernen (Tastenkürzel F9). – Klicken Sie in der Funktionsleiste Haltepunkte auf die Schaltfläche So entfernen Sie alle Haltepunkte (in allen Programmquellen) des SIMOTION-Geräts: ●...
Fehlerquellen und Programmtest 8.2 Programmtest 8.2.8.7 Funktionsleiste Haltepunkte Diese Funktionsleiste enthält wichtige Bedienhandlungen zum Setzen und Aktivieren von Haltepunkten: Tabelle 8-14 Funktionsleiste Haltepunkte Symbol Bedeutung Haltepunkt setzen / entfernen Klicken Sie auf dieses Symbol, um an der ausgewählten Codestelle einen Haltepunkt zu setzen bzw.
1. Die Programmquelle mit der POE (z. B. ST‑Quelle, MCC‑Chart, KOP/FUP‑Programm) ist geöffnet. 2. Eine Verbindung mit dem Zielsystem muss bestehen (Online-Modus). 3. SIMOTION SCOUT befindet sich für das betreffende SIMOTION-Gerät im Debug-Modus, siehe Debug-Modus einstellen (Seite 423). 4. Die anzuhaltenden Tasks sind festgelegt, siehe Debug-Taskgruppe festlegen (Seite 424).
Seite 432
Fehlerquellen und Programmtest 8.2 Programmtest 3. Wählen Sie die Task aus, in der das Anwenderprogramm (d. h. alle Tasks in der Debug- Taskgruppe) angehalten wird, wenn der ausgewählte Haltepunkt erreicht wird. Zur Auswahl stehen: – alle Aufrufstellen ab dieser Aufrufebene Das Anwenderprogramm wird immer angehalten, wenn der aktivierte Haltepunkt in einer beliebigen Task der Debug-Taskgruppe erreicht wird.
Fehlerquellen und Programmtest 8.2 Programmtest Hinweis Den Aufrufpfad an einem aktuellen Haltepunkt sowie die Codestellen, an denen die anderen Tasks der Debug-Taskgruppe angehalten wurden, können Sie mit der Funktion "Call Stack anzeigen (Seite 442)" einsehen. Siehe auch Aufrufpfad für alle Haltepunkte festlegen (Seite 436) 8.2.8.9 Parameter Aufrufpfad/Taskauswahl Haltepunkt Tabelle 8-15 Parameterbeschreibung Aufrufpfad/Taskauswahl Haltepunkt...
1. Die Programmquelle mit der POE (z. B. ST‑Quelle, MCC‑Chart, KOP/FUP‑Programm) ist geöffnet. 2. Eine Verbindung mit dem Zielsystem muss bestehen (Online-Modus). 3. SIMOTION SCOUT befindet sich für das betreffende SIMOTION-Gerät im Debug-Modus, siehe Debug-Modus einstellen (Seite 423). 4. Die anzuhaltenden Tasks sind festgelegt, siehe Debug-Taskgruppe festlegen (Seite 424).
Seite 435
Fehlerquellen und Programmtest 8.2 Programmtest Vorgehensweise So legen Sie den Aufrufpfad für alle zukünftigen Haltepunkte in einer POE fest: 1. Wählen Sie eine Codestelle aus, an der kein Haltepunkt gesetzt ist: – SIMOTION ST: Setzen Sie den Cursor in eine entsprechende Zeile der ST-Quelle. –...
Fehlerquellen und Programmtest 8.2 Programmtest Weiteres Vorgehen: ● Aktivieren Sie die Haltepunkte, siehe Haltepunkte aktivieren (Seite 439). Hinweis Den Aufrufpfad an einem aktuellen Haltepunkt sowie die Codestellen, an denen die anderen Tasks der Debug-Taskgruppe angehalten wurden, können Sie mit der Funktion "Call Stack anzeigen (Seite 442)"...
1. Die Programmquelle mit der POE (z. B. ST‑Quelle, MCC‑Chart, KOP/FUP‑Programm) ist geöffnet. 2. Eine Verbindung mit dem Zielsystem muss bestehen (Online-Modus). 3. SIMOTION SCOUT befindet sich für das betreffende SIMOTION-Gerät im Debug-Modus, siehe Debug-Modus einstellen (Seite 423). 4. Die anzuhaltenden Tasks sind festgelegt, siehe Debug-Taskgruppe festlegen (Seite 424).
Seite 438
Fehlerquellen und Programmtest 8.2 Programmtest Haltepunkte aktivieren So aktivieren Sie einen einzelnen Haltepunkt: 1. Wählen Sie eine Codestelle aus, an der bereits ein Haltepunkt gesetzt ist: – SIMOTION ST: Setzen Sie den Cursor in eine entsprechende Zeile der ST-Quelle. – SIMOTION MCC: Markieren Sie einen entsprechenden Befehl im MCC-Chart. –...
– Wählen Sie Menü Debug > Alle Haltepunkte deaktivieren. – Klicken Sie in der Funktionsleiste Haltepunkte auf die Schaltfläche Nach dem Deaktivieren des letzten Haltepunkts schaltet das SIMOTION-Gerät in den Betriebsmodus "Testbetrieb"; SIMOTION SCOUT bleibt weiter im Debug-Modus. SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Fehlerquellen und Programmtest 8.2 Programmtest 8.2.8.13 Call-Stack anzeigen Mit der Funktion "Call‑Stack anzeigen" können Sie: ● den Aufrufpfad am aktuellen Haltepunkt ansehen, ● die Codestellen mit Aufrufpfad ansehen, an denen die anderen Tasks der Debug- Taskgruppe angehalten wurden. Voraussetzung Das Anwenderprogramm steht an einem aktivierten Haltepunkt, d. h., die Tasks der Debug- Taskgruppe (Seite 424) sind angehalten.
Fehlerquellen und Programmtest 8.2 Programmtest 8.2.8.14 Parameter Callstack Haltepunkte Wenn ein aktivierter Haltepunkt (Seite 437) erreicht ist, können Sie sich für jede Task in der Debug-Taskgruppe (Seite 424) anzeigen lassen: ● die Stelle im Programmcode (z. B. Zeile einer ST-Quelle) an der die Task angehalten wurde, ●...
Seite 442
Fehlerquellen und Programmtest 8.2 Programmtest Sie wird unter folgenden Bedingungen angezeigt: 1. SIMOTION SCOUT ist im Online-Modus. 2. Das betreffende SIMOTION Geräts ist aktiv, z. B. – Im Projektnavigator ist das SIMOTION Gerät oder ein Element in dessen Teilbaum (z. B.
Das Trace-Tool ist ausführlich in der Online-Hilfe beschrieben. 8.2.11 Projektvergleich Für SIMOTION SCOUT steht die Funktionalität Projektvergleich (Start über den Button Starte Objektvergleich ) zur Verfügung, um Objekte innerhalb desselben Projektes bzw. mit Objekten aus anderen Projekten (online oder offline) miteinander zu vergleichen.
Seite 444
Fehlerquellen und Programmtest 8.2 Programmtest SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Anhang Formale Sprachbeschreibung In diesem Kapitel finden Sie Übersichten zu den Grundelementen von ST und eine vollständige Zusammenstellung aller Syntaxdiagramme mit den Sprachelementen. Dieser Anhang stellt eine Kurzfassung der Grundlagen der Sprache ST dar. A.1.1 Hilfen für die Sprachbeschreibung Basis für die Sprachbeschreibung in den einzelnen Kapiteln sind Syntaxdiagramme. Sie geben Ihnen einen guten Einblick in den syntaktischen (d.
Anhang A.1 Formale Sprachbeschreibung Gültige Beispiele nach dieser dargestellten Regel wären: R_REGLER3 _A_FELD _100_3_3_10 A.1.1.2 Formatfreie Regeln (syntaktische Regeln) Aufbauend auf den lexikalischen Regeln wird in den syntaktischen Regeln die Struktur von ST beschrieben. Im Rahmen dieser Regeln können Sie Ihr ST-Programm formatfrei erstellen. Die Eigenschaft formatfrei bedeutet für Sie: ●...
Anhang A.1 Formale Sprachbeschreibung Gültige Beispiele nach dieser dargestellten Regel wären: VARIABLE_1 := 100; SWITCH := FALSE; //Dies ist ein Kommentar VARIABLE_2 := 3.2 + VARIABLE_1; A.1.2 Grundelemente (Terminale) Ein Terminal ist ein Grundelement, das nicht durch eine weitere Regel, sondern verbal erklärt wird.
Seite 448
Anhang A.1 Formale Sprachbeschreibung In folgenden Tabellen finden Sie die Formatierungs- und Trennzeichen der lexikalischen und syntaktischen Regeln. Dazu erhalten Sie eine Beschreibung sowie alle Regeln, in denen die Formatierungs- und Trennzeichen als Terminale verwendet werden (siehe Regeln (Seite 462)). Tabelle A-2 Formatierungs- und Trennzeichen in den lexikalischen Regeln Zeichen...
Anhang A.1 Formale Sprachbeschreibung A.1.2.3 Formatierungs- und Trennzeichen für Konstanten Nachfolgend sehen Sie alle Formatierungs- und Trennzeichen für Konstanten mit Angabe der lexikalischen Regel, in denen sie benutzt werden. Tabelle A-4 Formatierungs- und Trennzeichen für Konstanten Zeichen Kennzeichen für Lexikalische Regel Ganzzahl-Konstante Binärziffernfolge Ganzzahl-Konstante...
Anhang A.1 Formale Sprachbeschreibung A.1.2.6 Reservierte Wörter Nachfolgend finden Sie Schlüsselwörter, vordefinierte Bezeichner und Standardfunktionen des ST-Grundsystems alphabetisch aufgelistet. Dazu erhalten Sie eine Beschreibung sowie Regeln , in der sie als Terminale verwendet werden. Eine die syntaktische Regel aus Ausnahme stellen Standardfunktionen dar, die nur implizit in der syntaktischen Regel Funktionsaufruf als Standardfunktionsname enthalten sind.
Seite 452
Anhang A.1 Formale Sprachbeschreibung Schlüsselwörter / Bezeichner Beschreibung Regel BOOL_VALUE_TO_UDINT Standardfunktion für Typkonvertierung Funktionsaufruf BOOL_VALUE_TO_UINT Standardfunktion für Typkonvertierung Funktionsaufruf BOOL_VALUE_TO_USINT Standardfunktion für Typkonvertierung Funktionsaufruf Einleitung der Schrittweite FOR-Anweisung (Seite 511) BYTE Elementarer Datentyp Bitdatentyp BYTE_TO_BOOL Standardfunktion für Typkonvertierung Funktionsaufruf BYTE_TO_DINT Standardfunktion für Typkonvertierung Funktionsaufruf BYTE_TO_DWORD...
Seite 453
Anhang A.1 Formale Sprachbeschreibung Schlüsselwörter / Bezeichner Beschreibung Regel DINT_TO_LREAL Standardfunktion für Typkonvertierung Funktionsaufruf DINT_TO_REAL Standardfunktion für Typkonvertierung Funktionsaufruf DINT_TO_SINT Standardfunktion für Typkonvertierung Funktionsaufruf DINT_TO_STRING Standardfunktion für Typkonvertierung Funktionsaufruf DINT_TO_UDINT Standardfunktion für Typkonvertierung Funktionsaufruf DINT_TO_UINT Standardfunktion für Typkonvertierung Funktionsaufruf DINT_TO_USINT Standardfunktion für Typkonvertierung Funktionsaufruf DINT_TO_WORD...
Seite 454
Anhang A.1 Formale Sprachbeschreibung Schlüsselwörter / Bezeichner Beschreibung Regel END_LABEL Abschluss der LABEL-Anweisung Sprungmarkendeklaration (Seite 490) END_METHOD Abschluss der Methode Methode in Klasse (Sei‐ te 478), Methode in FB (Sei‐ te 480), Methodenprototyp (Seite 479) END_NAMESPACE Abschluss des Namensraums Namensraum END_PROGRAM Abschluss des Programms Programm (Seite 476)
Seite 455
Anhang A.1 Formale Sprachbeschreibung Schlüsselwörter / Bezeichner Beschreibung Regel INSERT Standardfunktion für Stringbearbeitung Funktionsaufruf Elementarer Datentyp für Ganzzahl einfacher Numerischer Datentyp Genauigkeit (integer) im Wertebereich -2**15 .. 2**15‑1 INT_TO_BYTE Standardfunktion für Typkonvertierung Funktionsaufruf INT_TO_DINT Standardfunktion für Typkonvertierung Funktionsaufruf INT_TO_DWORD Standardfunktion für Typkonvertierung Funktionsaufruf INT_TO_LREAL Standardfunktion für Typkonvertierung...
Seite 456
Anhang A.1 Formale Sprachbeschreibung Schlüsselwörter / Bezeichner Beschreibung Regel Standardfunktion für Auswahl Funktionsaufruf METHOD Einleitung der Methode Methode in Klasse (Sei‐ te 478), Methode in FB (Sei‐ te 480), Methodenprototyp (Seite 479) Standardfunktion für Stringbearbeitung Funktionsaufruf Standardfunktion für Auswahl Funktionsaufruf Arithmetischer Operator für Divisionsrest Arithmetischer Basisoperator Standardfunktion für Auswahl...
Seite 457
Anhang A.1 Formale Sprachbeschreibung Schlüsselwörter / Bezeichner Beschreibung Regel REAL_VALUE_TO_DWORD Standardfunktion für Typkonvertierung Funktionsaufruf REAL_VALUE_TO_WORD Standardfunktion für Typkonvertierung Funktionsaufruf Bildung allgemeiner Referenzen Allgemeine Referenz REF_TO Deklaration allgemeiner Referenzen Allgemeine Referenz REPEAT Einleitung der Kontrollanweisung zur Schleifen‐ REPEAT-Anweisung (Sei‐ bearbeitung te 512) REPLACE Standardfunktion für Stringbearbeitung Funktionsaufruf...
Seite 458
Anhang A.1 Formale Sprachbeschreibung Schlüsselwörter / Bezeichner Beschreibung Regel StructTaskId Datentyp für TaskId – SUPER Schlüsselwort zum Aufruf des Methode der Ba‐ Methodenaufruf Klasse sisklasse Numerische Standardfunktion Funktionsaufruf THEN Einleitung der Folgeaktionen, wenn Bedingung IF-Anweisung erfüllt THIS Schlüsselwort zum Aufruf der aktuell gültigen Methodenaufruf Klasse, Me‐...
Seite 459
Anhang A.1 Formale Sprachbeschreibung Schlüsselwörter / Bezeichner Beschreibung Regel UINT_TO_INT Standardfunktion für Typkonvertierung Funktionsaufruf UINT_TO_LREAL Standardfunktion für Typkonvertierung Funktionsaufruf UINT_TO_REAL Standardfunktion für Typkonvertierung Funktionsaufruf UINT_TO_SINT Standardfunktion für Typkonvertierung Funktionsaufruf UINT_TO_UDINT Standardfunktion für Typkonvertierung Funktionsaufruf UINT_TO_USINT Standardfunktion für Typkonvertierung Funktionsaufruf UINT_TO_WORD Standardfunktion für Typkonvertierung Funktionsaufruf UINT_VALUE_TO_BOOL...
Anhang A.1 Formale Sprachbeschreibung Bild A-4 Nummer A.1.3.2 Schreibweise von Konstanten (Literale) Literale Bild A-5 Literal Bild A-6 Ganzzahl SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 462
Anhang A.1 Formale Sprachbeschreibung Bild A-7 Gleitpunktzahl Bild A-8 Exponent Bild A-9 Zeitliteral SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 463
Anhang A.1 Formale Sprachbeschreibung Bild A-10 Zeichenstring SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 464
Anhang A.1 Formale Sprachbeschreibung Bild A-11 Zeichen SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 465
Anhang A.1 Formale Sprachbeschreibung Ziffernfolgen Bild A-12 Dezimalziffernfolge Bild A-13 Binärziffernfolge Bild A-14 Oktalziffernfolge Bild A-15 Hexadezimalziffernfolge SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 466
Anhang A.1 Formale Sprachbeschreibung Datum und Zeit Bild A-16 Datum Bild A-17 Zeitdauer Bild A-18 Tageszeit SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 467
Anhang A.1 Formale Sprachbeschreibung Bild A-19 Datum und Zeit Bild A-20 Datumsangabe Bild A-21 Tageszeitangabe SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 468
Anhang A.1 Formale Sprachbeschreibung Bild A-22 Stufendarstellung Bild A-23 Dezimaldarstellung SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Anhang A.1 Formale Sprachbeschreibung A.1.3.3 Kommentare Bitte beachten Sie Folgendes beim Einbau von Kommentaren: ● Innerhalb des Zeilenkommentars sind die Zeichenpaare (* und *) bedeutungslos. ● Die Schachtelung von Blockkommentaren ist standardmäßig nicht erlaubt. Möglich ist jedoch die Schachtelung von Zeilenkommentaren in Blockkommentaren. Nur bei akivierter Compileroption "Spracherweiterungen IEC61131‑3rd Edition zulassen": Es ist möglich, Blockkommentare zu schachteln.
Anhang A.1 Formale Sprachbeschreibung A.1.3.4 Abschnitte der ST-Quelle Abschnitte der ST-Quelle A.1.3.5 Gliederungen von ST-Quellen Bild A-27 ST-Quelle SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 471
Anhang A.1 Formale Sprachbeschreibung Bild A-28 Unit-Definition Bild A-29 Interfaceabschnitt SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 472
Anhang A.1 Formale Sprachbeschreibung Bild A-30 Implementationsabschnitt Bild A-31 POE-Prototypen SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Anhang A.1 Formale Sprachbeschreibung A.1.3.6 Programmorganisationseinheiten (POE) Bild A-32 Expression Bild A-33 Funktion FC SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 474
Anhang A.1 Formale Sprachbeschreibung Bild A-34 Funktionsbaustein FB Bild A-35 Programm SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 475
Anhang A.1 Formale Sprachbeschreibung Bild A-36 Syntax: Klasse SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 476
Anhang A.1 Formale Sprachbeschreibung Bild A-37 Syntax: Methode Bild A-38 Syntax: Zugriffsbezeichner Klasse SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 477
Anhang A.1 Formale Sprachbeschreibung Bild A-39 Syntax: Objektorientiertes Interface Bild A-40 Syntax: Methodenprototyp SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 478
Anhang A.1 Formale Sprachbeschreibung Bild A-41 Syntax: Funktionsbaustein (FB) mit Methoden Bild A-42 Syntax: Methode im Funktionsbaustein SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Anhang A.1 Formale Sprachbeschreibung Bild A-49 Methoden-Deklarationsabschnitt A.1.3.8 Aufbau der Deklarationsblöcke Konstantenblöcke Bild A-50 Konstantenblock Bild A-51 Unit-Konstanten / Globaler Konstantenblock SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 483
Anhang A.1 Formale Sprachbeschreibung Variablenblöcke Bild A-52 Unit-Variablen / Globaler Variablenblock Bild A-53 Remanenter globaler Variablenblock Bild A-54 Temporärer Variablenblock FC/Methode Bild A-55 Temporärer Variablenblock im FB/Programm SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 484
Anhang A.1 Formale Sprachbeschreibung Bild A-56 Statischer Variablenblock Bild A-57 Syntax: Remanenter lokaler Variablenblock SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 485
Anhang A.1 Formale Sprachbeschreibung Parameterblöcke Bild A-58 Parameterblock FB SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 486
Anhang A.1 Formale Sprachbeschreibung Bild A-59 Parameterblock FC SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 487
Anhang A.1 Formale Sprachbeschreibung Bild A-60 Parameterblock Methode Bild A-61 Deklaration eines ARRAY mit dynamischer Länge SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 488
Anhang A.1 Formale Sprachbeschreibung Sprungmarken Bild A-62 Sprungmarkendeklaration Deklarationen Bild A-63 Konstantendeklaration Bild A-64 Variablendeklaration SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 489
Anhang A.1 Formale Sprachbeschreibung Bild A-65 Symbolischer PA-Zugriff Bild A-66 Instanzdeklaration FB Bild A-67 FB-ARRAY-Spezifikation SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 490
Anhang A.1 Formale Sprachbeschreibung Bild A-68 Syntax: Instanzdeklaration Klasse Initialisierung Bild A-69 Initialisierung SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 491
Anhang A.1 Formale Sprachbeschreibung Bild A-70 Konstantenausdruck Bild A-71 Feldinitialisierungsliste SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Anhang A.1 Formale Sprachbeschreibung A.1.3.11 Wertzuweisungen und Operationen Wertzuweisung und Ausdruck Bild A-90 Wertzuweisung SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 499
Anhang A.1 Formale Sprachbeschreibung Bild A-91 Ausdruck SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 500
Anhang A.1 Formale Sprachbeschreibung Operanden Bild A-92 Operand Bild A-93 Strukturierte Variable SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 501
Anhang A.1 Formale Sprachbeschreibung Bild A-94 Absoluter PA-Zugriff Bild A-95 Konstante Bild A-96 Aufzählungswert SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 502
Anhang A.1 Formale Sprachbeschreibung Bild A-97 Externe Variable Bild A-98 Zugriff auf FB-Ausgangsparameter Bild A-99 Zugriff auf FB-Eingangsparameter SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 503
Anhang A.1 Formale Sprachbeschreibung Bild A-100 Bitzugriff Operatoren Bild A-101 Logischer Basisoperator Bild A-102 Arithmetischer Operator SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Anhang A.1 Formale Sprachbeschreibung Wiederholungs- und Sprunganweisungen Bild A-117 Wiederholungs- und Sprunganweisung Bild A-118 FOR-Anweisung SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 510
Anhang A.1 Formale Sprachbeschreibung Bild A-119 WHILE-Anweisung Bild A-120 REPEAT-Anweisung Bild A-121 EXIT-Anweisung Bild A-122 RETURN-Anweisung SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Seite 511
Anhang A.1 Formale Sprachbeschreibung Bild A-123 WAITFORCONDITION-Anweisung Bild A-124 GOTO-Anweisung SIMOTION ST Structured Text Programmier- und Bedienhandbuch, 07/2017, A5E33437165A...
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Bild A-127 Syntax: Attribut für Compilerausgaben Bild A-128 Syntax: Freie Compilermeldung Fehlermeldungen des Compilers und deren Behebung Dieses Kapitel gibt Ihnen einen Überblick über die Fehlermeldungen des Compilers und deren Behebung. A.2.1 Dateizugriffsfehler (1000 …...
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 1003 Ein Lese-Schreibfehler beim Öffnen der angegebenen Datei ist aufgetreten. Bitte schließen Sie die Applikation und versuchen Sie es erneut! 1100 Die Option zur Angabe einer Präprozessor-Definition enthält einen ungültigen Bezeichner als defi‐ niertes Token.
Seite 515
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 3011 Die TASK-Anweisung ist in der Unit nicht zulässig. Verwenden Sie die Taskkonfiguration in der Workbench. 3012 Der angegebene Bezeichner wurde bereits an anderer Stelle deklariert. Eine nochmalige Verwen‐ dung als Bezeichner einer Funktion ist nicht möglich. 3013 Der angegebene Bezeichner wurde bereits an anderer Stelle deklariert.
Seite 516
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 3061 Die angegeben Methodeneigenschaft kann nicht übernommen werden. Beispielsweise kann inner‐ halb eines FUNCTION_BLOCK eine Methode nicht OVERRIDE, ABSTRACT oder FINAL deklariert werden. In CLASS ist OVERRIDE für Methoden nur anwendbar, wenn es eine Basisklasse gibt und dort die Methode bereits deklariert wurde.
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 3077 Das angegebene INTERFACE wird nicht im Interfaceabschnitt der Unit exportiert bzw. stammt aus einer im Implementationsabschnitt importierten Unit und kann daher an einer exportierten CLASS nicht genutzt werden (IMPLEMENTS). ●...
Seite 518
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 4011 Eine Konstantendeklaration erfordert zwingend die Angabe eines Initialisierungswertes. Beispiel: x : DINT := 5; 4012 Der angegebene Datentyp muss außerhalb der POE deklariert sein. Bei VAR_INPUT, VAR_OUT‐ PUT, VAR_IN_OUT dürfen die Typbezeichner nicht lokal in der POE deklariert sein, da sie zum Zweck der Parameterübergabe auch außerhalb bekannt sein müssen.
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung A.2.5 Deklarationsfehler in Variablendeklarationen (5001 … 5509) Tabelle A-12 Deklarationsfehler in Variablendeklarationen (5001 … 5509) Fehler Beschreibung 5001 Der angegebene Konstantenwert führt zu einer Wertebereichsüberschreitung und kann nicht in den geforderten Typ konvertiert werden. 5002 Der angegebene Bezeichner wurde bereits verwendet.
Seite 520
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 5042 Der angegebene Datentyp kann nicht innerhalb einer Deklaration remanenter Variablen (VAR RE‐ TAIN, VAR_GLOBAL RETAIN)verwendet werden. Der Datentyp enthält wenigstens einen System‐ funktionsbaustein in den Instanzdaten oder ist selbst ein solcher. Da dessen Informationen nicht wiederherstellbar sind, kann dieser Datentyp nicht in remanent genutzt werden.
Seite 521
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 5072 Der angegebene Datentyp wurde per Vorwärtsdeklaration vereinbart. Die Angabe von instanzspe‐ zifischen Initialisierungswerten ist an der angebenen Stelle nicht möglich. Wenn es sich um eine Variable im Implementationsabschnitt der Quelle handelt, prüfen Sie, ob sie diese hinter die Dekla‐ ration der betreffenden CLASS oder des FUNCTION_BLOCK verschieben können.
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung A.2.6 Fehler im Ausdruck (6001 … 6302) Tabelle A-13 Fehler im Ausdruck (6001 … 6302) Fehler Beschreibung 6001 Syntaxfehler: Es wird eine Anweisung erwartet, die mit einem Semikolon abgeschlossen ist, z. B. a := b*c; 6002 Syntaxfehler: Es wird ein Ausdruck erwartet, z.
Seite 523
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 6020 Syntaxfehler bei der Angabe von direkt dargestellten Variablen. Inputs müssen die Syntax %Ix.y und Outputs die Syntax %Qx.y haben. Weitere gültige Adressangaben sind %IBx bzw. %QBx für Byte-Zugriffe, %IWx bzw. %QWx für Wort-Zugriffe und %IDx bzw. %QDx für Doppelwortzugriffe. 6021 Der angegebene Byteoffset der direkt dargestellten Variablen liegt außerhalb des zulässigen Ad‐...
Seite 524
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 6039 Die angegebene POE (Funktion oder Funktionsbaustein) ist nicht anwendbar. Mögliche Ursachen: ● Die Definition der POE im Implementationsabschnitt fehlt. Es wurde nur der Prototyp im Interfaceabschnitt angegeben. ● Die POE wird erst nach ihrer Verwendung (z. B. Aufruf, Instanzdeklaration) vollständig definiert. Verschieben Sie gegebenenfalls in der Programmquelle diese POE vor die POE, in der sie verwendet wird.
Seite 525
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 6080 Die angegebene Variable ist keine direkt zugreifbare Eingangs- oder Ausgangsvariable. Eine solche Variable muss am I/O-Container des betroffenen Geräts mit der Syntax PI* oder PQ* vereinbart werden. 6085 Die angegebene Variable wurde innerhalb der Quelle mit einem per Vorwärtsdeklaration verein‐ barten Datentyp angelegt.
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 6250 Die angegebene Methode ist nicht veröffentlicht. Sie ist nicht PUBLIC deklariert und kann daher nicht aufgerufen werden. 6251 SUPER ist im aktuellen Kontext nicht anwendbar. SUPER kann nur innerhalb von Klassen-Metho‐ den eingesetzt werden, wenn die betreffende Klasse eine Basisklasse besitzt (EXTENDS erforder‐...
Seite 527
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 7003 Bei der Intervallangabe muss der Anfangswert kleiner oder gleich dem Endwert sein. Dies gilt bei der Vereinbarung von Arrays und bei der Intervallangabe in CASE-Auswahlbedingungen. 7004 Es wird ein Initialisierungswert erwartet. Dies muss eine Konstante sein. Konstanten können vor‐ gegeben werden: ●...
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung A.2.8 Fehler beim Binden einer Quelle (8001 … 8010) Tabelle A-15 Fehler beim Binden einer Quelle (8001 … 8010) Fehler Beschreibung 8001 Die angegebene POE ist im INTERFACE-Abschnitt exportiert worden, eine Implementierung im IMPLEMENTATION-Abschnitt fehlt jedoch.
Seite 529
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 10004 Die exportierten Symbole der angegebenen Unit konnten nicht geladen werden. Übersetzen Sie die angegebene Unit und versuchen Sie es erneut. Alternativ führen Sie "Speichern und Änderun‐ gen übersetzen" aus. 10005 Es liegt eine Rekursion beim Laden der Pakete vor.
Seite 530
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 10022 Das angegebene Technologiepaket wird mit unterschiedlichen Versionsständen benutzt. Korrigie‐ ren Sie die Einstellungen zur Auswahl des Technologiepakets am Gerät und ggf. an der Bibliothek. Sie können nur einen Versionsstand eines Technologiepakets auf einem Gerät verwenden. Tritt diese Meldung nach einem Hochrüsten der CPU-Version auf, wählen Sie "Speichern und alles neu übersetzen".
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 10050 Alle durch die angegebenen Bibliotheken exportierten POEs sind identisch. Eine gleichzeitige Ver‐ wendung dieser Bibliotheken ist nicht möglich. Modifizieren Sie mindestens ein exportiertes Ele‐ ment in einer der betroffenen Bibliotheken. Hinweis: Typischerweise tritt dieser Fehler im Zusammenhang mit Know-how-geschützen Biblio‐...
Die Angabe eines Bitoffsets an einer Bitstring-Variablen ist nur unter Nutzung der Compileroption "Spracherweiterungen zulassen" (-C lang_ext) möglich. 15700 Das angegebene Konstrukt wird von der Version des SIMOTION SCOUT, in die konvertiert werden soll, nicht unterstützt. A.2.11 Warnungen (16001 … 16700) Die Ausgabe von Warnungen und Informationen können Sie steuern:...
Seite 533
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Tabelle A-18 Warnungen (16001 … 16700) Fehler Beschreibung 16001 (Warnungsklasse: 0) Nur in Verbindung mit Compileroption "Selektives Linken". Die angegebene Funktion, der Funkti‐ onsbaustein oder das Programm werden nicht exportiert und nicht in der eigenen Unit aufgerufen. Es wird kein Code erzeugt.
Seite 534
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 16014 (Warnungsklasse: 2) Bei der angegebenen Operation wird eine Datentypkonvertierung zwischen vorzeichenbehaftet (signed) und nicht vorzeichenbehaftet (unsigned) vorgenommen. Da hier der Bitstring übernommen wird, kann das Ergebnis im Zahlenwert vom angegebenen Wert abweichen. 16015 (Warnungsklasse: 2) Bei der Zuweisung der Zeichenkettenkonstanten zu der Variablen wird nur ein Teil der Zeichenket‐...
Seite 535
A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 16026 (Warnungsklasse: 1) Der angegebene Bezeichner ist von SIEMENS für potentielle Erweiterungen reserviert. Die Ver‐ wendung dieses Bezeichners kann in späteren Ständen zu Compilerfehlermeldungen führen. Wenn Sie dies vermeiden wollen, ändern Sie diesen Bezeichner. 16027 (Warnungsklasse: 1) Der angegebene Bezeichner, der zum Zugriff auf I/O-Qualities reserviert ist, ist bereits am Gerät...
Seite 536
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 16151 (Warnungsklasse: 7) Es wurde versucht, mittels #undef die Definition des angegebenen Bezeichners zu löschen. Der Bezeichner ist jedoch nicht definiert, oder die Definition ist bereits gelöscht. Mit dieser Warnung kann die Arbeit des Präprozessors verfolgt werden. 16152 (Warnungsklasse: 7) Die angegebene Definition wird bei der Codegenerierung nicht berücksichtigt.
Seite 537
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 16260 (Warnungsklasse: 4) Die angegebene Funktion hat mit den gegebenen Werten keine Wirkung. Code wird optimiert er‐ zeugt. 16261 (Warnungsklasse: 4) Der Rückgabewert der Funktion oder Methode wurde nicht zugewiesen. Das Funktionsergebnis geht damit verloren.
Seite 538
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 16440 (Warnungsklasse: 10) Es wurde eine globale Variable im remanenten Speicherbereich angelegt, die keinerlei sicherbare Anwenderdaten enthält. Die Deklaration derartiger Variablen in RETAIN-Bereichen sollte nicht vor‐ genommen werden. Die Angabe RETAIN ist hier nicht sinnvoll und wird nur aus Kompatibilitätsa‐ spekten unterstützt Datentypen bei denen diese Meldung ausgegeben wird sind beispielsweise TO-Referenzen.
0 Byte. Die Instanzdeklaration in Form eines ARRAYs ist nicht sinnvoll. 16700 (Warnungsklasse: 3) Das SIMOTION Gerät kann auch mit früheren Versionen des SIMOTION SCOUT bearbeitet wer‐ den. Das angegebene Konstrukt wird nicht von allen früheren Versionen des Compilers unterstützt. Siehe auch...
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung A.2.13 Informationen (32010 … 32653) Die Ausgabe der Informationen steuern Sie gemeinsam mit den Warnungen (Seite 532): Tabelle A-20 Informationen (32010 … 32653) Fehler Beschreibung 32010 (Warnungsklasse: 6) Der angegebene Sprungmarkenbezeichner wurde deklariert, aber nicht verwendet. 32020 (Warnungsklasse: 10) Die angegebene Variable wurde in dieser Quelle oder in einer anderen Quelle global mit dem...
Seite 541
Anhang A.2 Fehlermeldungen des Compilers und deren Behebung Fehler Beschreibung 32030 (Warnungsklasse: 0) Die angegebene Feldinitialisierung ist nicht konform zu IEC 61131-3. Für portable Programme sollten sie die Feldinitialisierungswerte in eckige Klammern einschließen. Beispiel für eine norm‐ konforme Feldinitialisierung: x : ARRAY [0..1] OF INT := [ 1, 2]; 32050 (Warnungsklasse: 0) Die maximale Größe, die über HMI erreichbar ist beträgt 65536 Byte.
Anhang A.3 Template für Beispiel-Unit Template für Beispiel-Unit A.3.1 Vorabinformationen In diesem Kapitel ist das ausführlich kommentierte Template abgedruckt, das Sie in der Online- Hilfe aufrufen können. Sie können es als Vorlage für eine neue ST-Quelle verwenden. //============================================================================ //(organisation) //(division / place) //(c)Copyright 2009 All Rights Reserved //-----------------------------------------------------------------------------...
Anhang A.3 Template für Beispiel-Unit // USES header; // Mittels USES werden die von einer anderen Quelle (NAME hier "header") // exportierten Inhalte importiert und in "sttemp_l_de" nutzbar gemacht. // Falls die Quelle mit dem Namen "header" nicht im Projekt existiert, // wird die Fehlermeldung // "Fehler 10018 Quelle "header"...
Anhang A.3 Template für Beispiel-Unit sCollection : STRUCT toAxisX : posaxis; aInStructDim1 : ai16Dim1; eTrafficInStruct : eTrafficLight; i16Counter : INT; b16Status : WORD; END_STRUCT; // Hier wird eine anwenderdefinierte Struktur erzeugt. Es können // elementare Datentypen (hier INT und WORD) oder bereits definierte // Anwenderdatentypen (hier "array1dim"...
Anhang A.3 Template für Beispiel-Unit gtMyTime : TIME := T#0d_1h_5m_17s_4ms; // ...wie elementare Zeittypen und abgeleitete Datentypen. geMyTraffic : eTrafficLight := RED; // Hier wird ein Enumerator vom Typ "eTrafficLight" angelegt und // mit dem Wert "RED" vorbelegt. gi16MyInt : INT := -17; // Variablen elementarer numerischer Datentypen können in // Variablendeklarationen ebenso deklariert werden...
Anhang A.3 Template für Beispiel-Unit TYPE END_TYPE // Die Typdefinition kann auch im IMPLEMENTATION Teil vorgenommen werden. // Allerdings ist diese Definition dann nicht in einer anderen Quelle // importierbar. Die Typdefinition kann jedoch für Variablen in allen POEs // der Quelle "sttemp_l_de" verwendet werden. Die Definition von Typen muss // vor der Deklaration der Variablen erfolgen.
Seite 547
Anhang A.3 Template für Beispiel-Unit TYPE END_TYPE // Die Typdeklaration kann auch in POEs vorgenommen werden. Der // grundlegende Unterschied besteht im Gültigkeitsbereich der // Typdekaration. Ein in einer POE deklarierter Typ kann nur für // Variablen innerhalb der betreffenden POE verwendet werden. VAR_INPUT // Im Stack der aufrufenden TASK, wird bei Aufruf auf // Stack gelegt, optional zu belegen.
Anhang A.3 Template für Beispiel-Unit A.3.6 Function Block // ****************************************************** // * FUNCTION_BLOCK // ****************************************************** // Die Deklaration eines FB oder FC muss vor der eigentlichen Verwendung // (dem Aufruf) in der Quelle platziert werden, damit der Code des // Bausteins an der aufrufenden Stelle bereits bekannt ist. FUNCTION_BLOCK FBmyFirst // Hier beginnt der Anweisungsteil der POE FUNCTION_BLOCK.
Anhang A.3 Template für Beispiel-Unit A.3.7 Program // ****************************************************** // * PROGRAM // ****************************************************** PROGRAM myPRG // Hier beginnt der Anweisungsteil der POE PROGRAM. VAR CONSTANT END_VAR TYPE END_TYPE // Die Typdefinition kann auch in POEs vorgenommen werden. Der // grundlegende Unterschied besteht im Gültigkeitsbereich der // Typdefinition.
Seite 550
Anhang A.3 Template für Beispiel-Unit instFBMyFirst (); // Aufruf des FB mit einer gültigen Instanz. retFCMyFirst := FCmyFirst(); // Aufruf des FC und Zuweisung des Rückgabewerts. WAITFORCONDITION xCond WITH TRUE DO // Die hier programmierten Anweisungen kommen sofort zur // Ausführung wenn die in der zugehörigen EXPRESSION definierte // Bedingung "xcond"...