Zeitglieder sind wie bei STEP 5 konzipiert. Im PRAP-TYP sind sie bei "Variable Usage" als INPUT zu deklarieren, der Timer ist dann als formale Größe bekannt mit seinem Namen. Die aktuellen Timer sind in den Instanzen zu übergeben.
Falls erforderlich, dürfen auch Timer direkt adressiert verwendet werden, sie sind dann in den Instanzen nicht mehr änderbar! Die aktuale Größe, z.B. T12, ist als Adresse zu betrachten, "Variable Usage" muß dann als ADDRESS MEMORY deklariert werden.
Als Datentyp, eigentlich Standard-Funktionsbaustein-Typ, gilt grundsätzlich "TON" und darf nicht verändert werden!
Eingegebene Soll-Zeitwerte werden automatisch mit dem Einschalten des Timers geladen, sofern Sie einen konstanten Wert angeben. Der Datentyp ist immer "TIME"[1].
Ist der Zeitwert irgendwie veränderlich und daher über Instanzierung oder Speicherplatz für den Timer als Typfunktion verfügbar, müssen Sie eine Funktion FC40 aus der
Step7-Standard-Bibliothek in das Step7-Projekt[2]
einsetzen.
Der Timer-Ausgang Q wechselt seinen Wert bei Erreichen des Sollwertes. Falls der Ausgang nicht benötigt wird, braucht er nicht projektiert zu werden.
Zählglieder sind vorwärts oder rückwärts zählend oder für beides im PRAP-TYP projektierbar. Es können nur positive Werte von 0 bis 999 gezählt werden. Geben Sie für Zählwerte als Datentyp "INT" an.
Der Zähler-Ausgang Q = 0/1 hängt vom inneren Zählerwert ab. Es ist daher nur möglich, rückwärts gezählte Ereignisse über Q zu erfassen: Sobald der Zähler-Inhalt Null ist, wechselt der Q-Wert. Reine Vorwärtszähler geben über Q folglich nicht den erreichten Sollwert an!
Natürlich ist die Sollzahl mit dem Einschalten des Zählers zu laden (wird automatisch erledigt).
Zählglieder (formale Zähler) bei "Variable Usage" mit "INPUT" deklarieren. In den Instanzen sind die aktuellen Zähler zuzuweisen. Festgelegte Counter, z.B. Z12, sind als Adresse zu betrachten und in das Feld ADDRESS einzutragen, und "VARIABLE USAGE" ist ADDRESS MEMORY.
Der "DATA TYPE" = CTUD gilt einheitlich. Der Precompiler ermittelt, ob nur vorwärts oder nur rückwärts gezählt wird und schreibt automatisch den richtigen Typ in das Compilat.
Datentyp-Wandel ist wie folgt[3] möglich:
BCD<-->INTBCD<-->DINT
BCD<-->WORDBCD<-->DWORD
SINT-->INT-->DINT-->REAL
REAL-->DINT mit RND (round) oder TRUNC
RND wird automatisch erzeugt oder durch REAL_TO DINT(variable name),
TRUNC(variable name) erfolgt nicht automatisch!
Bit-Schiebe-Operationen
benötigen zwei Daten, die Variable - den Operanden - und die Anzahl der zu schiebenden Bit.
Der Operand darf WORD oder INT bzw. DWORD oder DINT als Datentyp haben, die Anzahl BYTE oder SINT. Nur eine positive Anzahl ist zulässig. Denken Sie auch daran, daß die Anzahl höchtens 16 bzw. 32 sein darf.
[1] Die Eigenschaft "Datentyp" einer Variablen bestimmt die Codierung der zur Verfügung stehenden Bit, zur Darstellung bzw. Speicherung der Variablen.
Der Typ BOOL nutzt nur ein Bit, wobei die Adressierung von Hersteller zu Hersteller der SPS recht unterschiedlich ist.In SPAS wird nach dem Byte.Bit-Prinzip adressiert. Die Kennung E, A, M oder I, O, M am einfachsten nicht davorschreiben, da sie automatisch ergänzt wird.
Byte- und Word-Typen (BYTE, WORD, DWORD, LWORD)ebenso wie Unsigned-Typen (USINT, UINT, UDINT, ULINT) schöpfen den Wertebereich der 8, 16, 32 oder 64 Bit voll aus. Unsigned-Typen sind bei konventionellen SPS wie S5 oder S7 derzeit NICHT verwendbar!
Integer-Typen (SINT, INT, DINT, LINT)nutzen das höchste Bit (niedrigstes Bit ist Bit 0), also Bit 7, 15, 31 oder 63 als Vorzeichen-Kennung, wodurch sich der Wertebereich etwa halbiert.
TIME ist ein Datentyp identisch mit DINT, jedoch vordefiniert mit der Einheit Millisekunde. Damit sind folglich 2,1474 * (10 hoch 9)ms als Höchstwert erreichbar, das sind 2,1474*(10 hoch 6)s oder 35791,33min oder 596,522h.
Real-Typen (REAL), auch Gleitkomma-Zahlen genannt, haben 32 Bit gemäß der Internationalen Norm IEEE 754 (aus dem Jahr 1985), wobei das Bit 31 als Vorzeichen genutzt wird, die Bit 30 bis 23 dienen zur Darstellung des Exponenten e und die Bit 22 bis 0 der Mantisse. Damit sind die Werte
-3.402823E+38 ... -1.175495E-38,0,+1.175495E-38 ... +3.402823E+38
darstellbar.
Neben diesen Typen gibt es noch Funktions-Baustein-Typen:
TON, TIME - Zeitbausteine /TIMER mit Zeitwert
CTUD - Zählbausteine mit Zähler-Werten i.a. vom Typ INT
R_TRIG, F_TRIG und RF_TRIG - Flanken-Erkennung
und andere. Hierzu gehören PRAP-Typen, die mit ihrer IDENTIFICATION im Projekt eingebunden sind.
Die BCD-Typen (BCD) sind in der IEC 1131-3 nicht vorgesehen, 16 und 32 Bit groß und stellen nur Ziffern im Bereich 0 bis 9 auf Tetraten (4 Bit) dar. Sie werden wie Word-Typen behandelt und sollten nur für Ausgaben z.B. an Ziffernanzeigen benutzt werden, wobei INT_TO_BCD bzw. DINT_TO_BCD zur Verfügung gestellt werden.
Weiterhin können abgeleitete, strukurierte Datentypen eingesetzt werden:
[2] Im Steuerungsprojekt gibt es keine Veränderung. Wenn Sie jedoch das Step7-Projekt vorbereiten zum Import der Symbolliste und der AWL, dann müssen Sie eine Function FC40 in die "Bausteine" wie folgt einfügen:
Im SIMATIC MANAGER anklicken: Datei | Öffnen | Bibliotheken
Doppelklick auf "Standard Library", Mitteilung über geschützte Datei mit OK quittieren.
Rechtes Fenster: Doppelklick auf "IEC Function Blocks"
Rechtes Fenster: Doppelklick auf "Blocks"
"FC40" mit der linken Maustaste festhalten und in das dahinter geöffnete Fenster "Bausteine" im Step7-Projekt ziehen (Drag and Drop).
[3]
Datentyp-Wandel, Type conversion functions
Datentypen sind geordnet nach ihrer Bit-Anzahl und ihrer Kodierung, d.h. Bedeutung der Bit oder Bitgruppen. In diesem Sinne ist der kleinste Datentyp "BOOL" und der größte "REAL" bzw. "LREAL". Die "L"-Datentypen nutzen 64 Bit, derzeit gibt es keine Verwendung.
Es gibt für spezielle Zwecke auf 16-Bit-Typen eine BCD-Zahlendarstellung, die je Tetrade (4bit) nur 0 bis 9 zulassen (sprachabhängig!). Die Norm IEC 1131-3 erfaßt BCD nicht als Datentyp.
Die sogenannte Aufwärts-Konvertierung von SINT zu REAL wird für arithmetische Ausdrücke, Kopierfunktion, auch Vergleicherausdrücke, automatisch vollzogen. Das bedeutet, Sie dürfen in solchen Ausdrücken, auch in reinen Zuweisungen,also in Kopierfunktionen, die Variablen ohne Datentypwandel schreiben.
Jeder Typenwandel "abwärts" ist durch eine Konvertierungsfunktion auszudrücken, wobei es KEINE KONTROLLE gibt, ob der Inhalt unzulässig verstümmelt wird. Hierzu gehören auch Übergänge zwischen Word- und Integertypen.
Zusammenstellung zu Datentyp-Konvertierungen einer Variablen:
AUTOMATISCHE KONVERTIERUNG:
SINT-->INT-->DINT-->REAL
REAL-->DINT mit Rundungsfunktion ROUND
TIME<-->DINT
INT<-->WORD
BCD-->INT / WORD
BCD-->DINT / DWORDKONVERTIERUNGSFUNKTIONEN einer Variablen var:
DINT_TO_REAL(var)
REAL_TO_DINT(var) mit Rundungs-Funktion ROUND
TRUNC(var) mit Abschneiden der Nachkommazahlen
REAL_TO_INT(var) ohne Wertekontrolle
DINT_TO_INT(var) ohne Wertekontrolle
DINT_TO_DWORD(var)
INT_TO_SINT(var) ohne Wertekontrolle
INT_TO_BCD(var) drei Stellen mit Vorzeichen
INT_TO_WORD(var)
DINT_TO_BCD(var)sieben Stellen mit Vorzeichen
DWORD_TO_DINT(var)
WORD_TO_INT(var)
![]() |
|