Seminar: A26 System: Refresh vom Vortag 3.Tag Anlaufverhalten / Remanenz Zahlensysteme Elementare Datentypen Datentyp / Datenbreite Typgerechte Verwendung Abgeleitete Datentypen Typkonvertierung Vergleichsoperatoren IEC - Zählerbausteine Sprungoperatoren Seite 1
Anlaufverhalten Halt RESET HALT Warmstart HALT RESET RUN Anlauf Kaltstart RESET RUN M-RESET Anlauf Anlaufverhalten - Warmstart / Kaltstart Die PS4-200 bzw. PS4-141/151 können hardwareseitig über die Schalterstellung Halt und Betätigung des Reset-Tasters angehalten werden. Halt: Warmstart: Kaltstart: Wird während des laufenden Betriebes der Betriebsartenschalter auf Halt gesetzt und der Reset-Taster betätigt, so stoppt die Programmbearbeitung genau an dieser Stelle. Die SPS geht in den Zustand Ready (Wiederanlaufbereit). Steht der Wahlschalter auf Run, erfolgt bei Betätigung des Reset-Tasters ein Warmstart. Das Programm wird an der Stelle im Zyklus, an der der Halt erfolgte, fortgesetzt. Warmstart- und kaltstartremanente Merker bzw. Hilfsvariablne sowie warmstartremanente Funktionsbausteine arbeiten mit den alten Werten weiter. Alle anderen Hilfsvariablen, Merker und Funktionsbausteine werden zurückgesetzt. Steht der Wahlschalter auf Run / M-Reset, erfolgt bei Betätigung des Reset- Tasters ein Kaltstart. Die Programmabarbeitung erfolgt ab der ersten Anweisung. Alle Hilfsvariablen, Merker und Funktionsbausteine werden zurückgesetzt. Nur kaltstartremanente Merker behalten ihre alten Werte. Seite 2
Attribut / Initialwert Freier Modus : Syntax Modus : Remanenz / Initialwert: Initialwerte sind Startwerte, die die Variable beim Anlauf der SPS annimmt. Initialwerte, die nicht CONSTANT sind, können im laufendem SPS-Betrieb vom Anwenderprogramm überschrieben werden. Remanenz, d.h. Warmstartremanenz stellt man mit dem Atribut RETAIN ein. Achtung: Im Freien Modus müssen die Attribute mit VAR_CONSTANT / END_VAR beziehungsweise mit VAR_RETAIN / END_VAR eingegeben werden. Initialwerte werden mit := direkt hinter den Datentyp geschrieben! Seite 3
Programmparameter Konfigurationseinstellungen Über das Symbol Programmparameter gelangen Sie zur Programmparametrierung. Für jedes Programm können hier spezifische Einstellungen vorgenommen werden: Passwort: Versionsnummer: Zykluszeit: Verhalten nach NOT READY: Aktiver Merkerbereich: Erst Remanenzbereich: Zusätzlicher Schutz vor unbefugten Zugriffen; Max. 8 Zeichen (Buchstaben und Zahlen). Hier kann dem zu generierenden Programm eine max. 4-stellige Versionsnummer hinzugefügt werden. Die Standardeinstellung beträgt 60 ms, kann aber auf max. 255 ms heraufgesetzt werden (Watchdog). Das im folgenden beschriebene Startverhalten nach NOT READY ist nur bei Schalterstellung RUN wirksam. Halt: Warmstart: Kaltstart : Nach einem Fehler im Programm erfolgt kein Wiederanlauf. Es erfolgt ein Wiederanlauf per Warmstart. Es erfolgt ein Wiederanlauf per Kaltstart. In der Grundeinstellung sind keine Merker eingetragen (reserviert). wenn hier einen Eintrag vornimmt, belegt man im Speicher der SPS einen Bereich für Merker ==> %M... (Merker benötigt man bei: Kommunikation mit Textanzeigen, Touch Panel, Profibus DP, serielle Kommunikation zu Datenendgeräten und bei Kaltstartremanenz). Warmstartremanenter Bereich der Merker ==> %M... Rezepturbereich: Kaltstartremanenter Bereich der Merker ==> %M... Seite 4
() / BYTE Wertigkeiten in Binärsystemen : () 0 1 Wertigkeiten: 0 oder 1 Aufsteigende Wertigkeit Byte: 7 6 5 4 3 2 1 0 Exponent = Stelle im Byte Wertigkeit: 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 Basiszahl Dezimalwert: 128 64 32 16 8 4 2 1 255 Maximaler Dezimalwert im Byte () / BYTE Wertigkeiten in Binärsystemen Im Dezimalsystem lassen sich Zahlen von 0 bis 9, d.h. insgesamt 10 Zahlen darstellen. Daraus folgt, dass für das Dezimalsystem die Basiszahl 10 ist. Im Binär- oder auch Dualsystem lassen sich in einem () insgesamt zwei Werte darstellen (0 oder 1). Daraus ergibt sich die Basiszahl 2. Der Stelle, in der im Byte eine logische 1 steht, wird nun der Dezimalwert zugeordnet. Beispiel: 0 0 1 0 1 0 1 32 + 8 + 2 + 1 =? 43 dezimal Steht an allen Stellen im Byte eine logische 1, so addieren sich diese Werte zum Maximalwert von 255. Steht an allen Stellen im Byte eine 0, so ist der dezimale Gesamtwert im Byte ebenfalls 0. Es lassen sich also alle Dezimalzahlen von 0 bis 255 mit einem Byte darstellen. 1 Seite 5
BYTE / WORD Wertigkeiten in Binärsystemen Höherwertiges Byte Niederwertiges Byte 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 2 2 2 2 2 2 2 2 7 6 5 4 3 2 1 0 2 2 2 2 2 2 2 2 32768 8192 2048 512 128 64 32 16 8 4 2 1 16384 4096 1024 256 65535 maximaler Dezimalwert im Wort BYTE / WORD Wertigkeiten in Binärsystemen Ein binäres Wort ergibt sich immer aus zwei Bytes. Jedes Byte für sich selbst gesehen kann die Dezimalzahlen von 0 bis 255 darstellen. Sieht man dahingegen das gesamte Wort (16 ), so zählt die Wertigkeit von 8 bis 15 weiter. Daraus folgt, dass sich der Dezimale Zahlenbereich von 0 bis 65535 (65536 Dezimalzahlen) ergibt. Seite 6
Wertigkeiten im Hexadezimalsystem Zahlensystem mit 16 Zeichen: 0 1 2 3 4 5 6 7 8 9 10 - A 11 - B 12 - C 13 - D 14 - E 15 - F Beispiel: 8 4 2 1 8 4 2 1 8 4 2 1 8 4 2 1 1 1 0 1 1 1 1 1 1 0 1 0 0 1 0 0 13 15 10 4 D F A 4 Wertigkeiten im Hexadezimalsystem Im Hexadezimalsystem ist die Zahl 16 die Basiszahl. Um im Binärsystem die Dezimalzahlen von 0... 15 darzustellen, benötigt man 4 (Nibble): 1 1 1 1 8 + 4 + 2 + 1 = 15 15 = F Da die Zahlen ab der Dezimalzahl 10 zweistellig werden, benutzt man die Buchstaben A - F für die Zahlen 10-15. Somit lassen sich jeweils 4er -Gruppen bilden, um im Byte, Wort oder Doppelwort das muster hexadezimal darzustellen. Seite 7
BCD (Binär Codierte Dezimalzahl) 7 - Segment - Ein-/Ausgabe Tausender Hunderter Zehner Einer 8 4 2 1 8 4 2 1 8 4 2 1 8 4 2 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 BCD (Binär Codierte Dezimalzahl) In der Automatisierungstechnik gibt es Ein- und Ausgabeelemente, bei denen der Bediener einer Anlage direkt vom Bedienpult aus Zahlenwerte eingeben bzw. auslesen kann (Sollwerteingabe - Istwertanzeige z.b. von Zählerständen mittels BCD-Ein-/ Ausgabe). Liest man nun ein solches muster einer BCD-Eingabeeinheit in die SPS ein,so interpretiert diese die Eingabe als Byte (2 Dezimalstellen) oder Wort (4 Dezimalstellen). Beispiel BCD: 7 3 0 1 1 1 0 0 1 1 Dieser im Beispiel gezeigte Binärwert (Byte) ergibt dezimal den Wert 115, d.h. er stimmt nicht mehr mit dem vom Bediener eingestellten Wert überein. Dieser Wert muss in der SPS gewandelt werden, damit auch dort der Wert 73 verarbeitet werden kann. Die Sucosoft S40 bietet dazu sogenannte Konvertierfunktionen. Seite 8
Datentypen, was es bringt 0100 0001 2 0 + 2 6 = 65 41 H ASCII A Input 1 und 7 high SINT 2 0 + 2 6 = 65 0100 0001 Datentypen Im Deklarationsteil einer POE muss jede benutzte Variable mit Name und Datentyp bekannt gegeben werden. Der Datentyp legt dabei den Wertebereich sowie die Datenbreite der Variablen fest. Beispiel: Datentyp SINT 8 breit, Wertebereich von -128 bis +127 Darüber hinaus ist durch den Datentyp festgelegt, welche Operationen mit der Variablen durchgeführt werden können. Beispiel: Mit einer Variablen vom Typ SINT können arithmetische Operationen durchgeführt werden, jedoch keine logischen / binären! Durch die Angabe des Datentyps kann das Programmiersystem eine typgerechte Verwendung der Variablen überwachen. Seite 9
Elementare Datentypen Binär Integer Reell Zeichenkette Datum / Zeit BYTE WORD DWORD INT UINT SINT USINT DINT UDINT REAL STRING DATE DATE_AND_TIME TIME_OF_DAY TIME Elementare Datentypen Die elementaren Datentypen sind standardisierte, durch die IEC - Norm vordefinierte, Datentypen. Binäre : - ein oder mehrere s die keine Beziehung zueinander haben. Integer : - ganze Zahlen. Real : - Gleitkommazahlen. String: - Zeichenketten (Aneinanderreihung von alphanumerischen Zeichen). Datum/Zeit : - Datum, Datum und Zeit, Tageszeit (absolute Zeit), Zeitdauer, z.b. 4h30m (=4Stunden 30 Minuten). Seite 10
Deklaration von Datentypen Datenbreite Datentyp BIT BYTE WORD (X) B W DWORD D ANY BIT BYTE WORD DWORD SINT INT USINT UINT DINT UDINT ANY NUM REAL ANY STRING STRING ANY DA TE Messwert AT % IA W 0.0.0.4 : INT ; DATE TIME_OF_DAY DATE_AND_TIME TIME TIME Deklaration von Datentypen Der Operand gliedert sich in zwei getrennte Informationen: Die Datenbreite und den Datentyp. Die Datenbreite sagt etwas über die Anzahl der s aus ( X [optional] = 1 =, B = 8 = BYTE, W = 16 = WORD, D = 32 = Double ). Der Datentyp macht Angaben über den Inhalt der Information (INT, USINT,, WORD,...). Somit lassen sich auch nur Operanden mit gleichen Datentypen verknüpfen. Möchte man aber den Datentyp während des Anwenderprogramms wechseln, so bietet die S40 gemäß der IEC 61131 eine Fülle an Konvertierungs-Funktionen. So z.b.: BYTE_TO_USINT. Seite 11
Typgerechte Verwendung Byte ANY NUM -City Word DWord AND OR XOR ANY_INT REAL ANY Arith-Town ADD DIV MUL SUB Typgerechte Verwendung von Variablen Neben der Datenbreite und dem Wertebereich legt der Datentyp auch fest, welche Operationen mit der Variablen durchgeführt werden können. In bisherigen Programmiersystemen konnten Variablen, unabhängig vom Datentyp, willkürlich benutzt werden. Das bedeutete, dass die sogenannte "Typgerechte Verwendung" von Variablen vom Programmierer überwacht werden musste. Die daraus häufig resultierenden Fehler wurden auch erst zur Laufzeit des Programms erkannt. Programmiersysteme nach IEC 61131-3 sind in der Lage, die "Typgerechte Verwendung" von Variablen schon vor der Laufzeit zu prüfen und dadurch Fehler zu vermeiden. Seite 12
Abgeleitete Datentypen Aufzählungen Type Felder Type Passwort : (Otto,Fritz,Petra,Ludwig); Messwert : Array[1..10] OF INT; END_TYPE END_TYPE Strukturen (PS416 / PS4-341) Bereichseingrenzungen Type Sollwert : UINT (100..200); END_TYPE TYPE Ofendaten : STRUCT Temperatur : INT; Heizdauer : TIME; Alarm : ; END_STRUCT; END_TYPE Abgeleitete Datentypen Die IEC61131-3 stellt dem Anwender eine Reihe von vordefinierten, standardisierten Datentypen - die sogenannten elementaren Datentypen - zur Verfügung. Auf der Basis dieser elementaren Datentypen kann der Anwender eigene, seinen Anforderungen entsprechenden Datenmodelle realisieren. Diese selbsterstellten Datenmodelle werden als Abgeleitete Datentypen bezeichnet. Zur Erstellung der abgeleiteten Datentypen muss die Typdefinition "TYPE... END_TYPE" verwendet werden. Werden die Datentypen unter dem Aspekt VAR... END_VAR definiert, so entsteht kein neuer Datentyp und die Variable bleibt LOKAL! Insgesamt stehen in der Sucosoft S40 drei unterschiedliche Formen der abgeleiteten Datentypen zur Verfügung : - Felder : n Datenelemente des gleichen Datentyps. - Aufzählungen : die Variable kann einen Namen aus einer vordefinierten Liste annehmen. - Strukturen : n Datenelemente unterschiedlichen Datentyps. - Bereichseingrenzungen : die Variable kann Werte aus einem definierten Bereich annehmen. Beispiel: Seite 13
Typkonvertierung 1 4 Übernehmen 2 3 Typkonvertierung Unter der Typkonvertierung versteht man die Umwandlung von einem Datentyp in einen anderen Datentyp. In der Sucosoft S40 stehen dem Anwender eine große Anzahl dieser Hersteller-Funktionen zur Verfügung. Seite 14
Vergleichs - Operatoren EQ Gleich GE Größer gleich GT Größer als LE Kleiner gleich LT NE Kleiner als Ungleich Vergleichs Operatoren Der angegebene Operandenwert wird mit dem Inhalt des Arbeitsregisters verglichen. Der Operandenwert wird vom Wert des Arbeitsregisters subtrahiert. Der erfüllte Vergleich wird durch die boolesche 1 im Arbeitsregister angezeigt; eine 0 signalisiert einen nicht erfüllten Vergleich. Der ursprüngliche Inhalt des Arbeitsregisters wird überschrieben. Der Operandenwert wird nicht verändert. Erlaubte Datentypen: ANY_INT, ANY_DATE, ANY_BIT, STRING, TIME Seite 15
Zähler - Funktionsbausteine (IEC61131) CU CTU Q CD CTD Q ReSet Load INT PV CV INT INT PV CV INT CU CTUD CD QU INT ReSet Load PV QD CV INT Zähler - Funktionsbausteine (IEC61131) Operandenbedeutung CTU: CU Zählimpulse, steigende Flanke ReSet Rücksetzbedingung PV Zählgrenze Q Meldung: Zählerstand größer gleich PV CV Zählerstand Operandenbedeutung CTD: CD Zählimpulse, steigende Flanke Load Setzbedingung PV Anfangswert, wird mit Load = 1 übernommen Q Meldung: Zählerstand kleiner gleich 0 CV Zählerstand Operandenbedeutung CTUD: CU Zählimpulse zum Aufwärtszählen, steigende Flanke CD Zählimpulse zum Abwärtszählen, steigende Flanke ReSet Rücksetzbedingung Load Ladebedingung PV Ladewert QU Meldung: Zählerstand größer gleich PV QD Meldung: Zählerstand kleiner gleich 0 CV Zählerstand Seite 16
Sprungoperatoren JMP absoluter Sprung JMPC Sprung bei Akku = 1 JMPCN Sprung bei Akku = 0 Gilt NUR für FB s und Funktionen! RET absolute Rückkehr aus FB RETC Rückkehr aus FB bei Akku = 1 RETCN Rückkehr aus FB bei Akku = 0 LD Wahlschalter JMPCN Automatik Hier steht z.b. das Programm für den Handbetrieb LD... JMP Weiter Automatik: Hier steht z.b. das Programm für den Automatikbetrieb Sprung - Ziel: : Doppelpunkt am Ende des Namens! LD... Weiter:... Sprungoperatoren Der absolute oder auch unbedingte Sprung wird unabhängig vom Inhalt des Akkus immer dann ausgeführt, wenn der Adresszähler gerade an der Stelle ist um diese Anweisung abzuarbeiten. Dabei werden alle nachfolgenden Anweisungen nicht mehr bearbeitet. Dies gilt auch für den RET Befehl in einem FB. Die bedingten Sprünge werden immer dann ausgeführt, wenn der Adresszähler an die Stelle mit der Anweisung JMPC oder JMPCN kommt. Dabei wird der Sprung nur auf das sche Verknüpfungs-ergebnis im Akku 0 oder 1 ausgeführt. Seite 17