Zähler in der SPS

Zähloperationen werden für verschiedene Belange in der Steuerungstechnik gebraucht, z.B. zum Erfassen von Stückzahlen oder Im­pulsen. In der Siemens SPS-Familie gibt es zwei Arten von Zähler (englisch Counter): Die S7-Zähler, auch Simatic-Zähler genannt und IEC-Counter. Beide Arten sind sowohl in den (alten) S7-300/400 Steuerungen als auch in den neuen S7-1500er pro­grammierbar. In den S7-1200er CPUs sind hingegen nur IEC-Counter pro­grammierbar. S7-Zähler sind in der CPU-Firmware ein­gebettet und in der Menge begrenzt. Je nach CPU ist die Anzahl an ver­fügbaren Zählern unter­schiedlich. Dagegen ist die Anzahl an IEC-Counter nur durch die Speicher­größe der SPS begrenzt. S7-Zähler haben einen stark ein­geschränkten Zähl­bereich (0 - 999), während der Bereich des IEC-Counter wesentlich größer ist. (z.B. bei Datentyp Integer (INT) -32.768 bis +32.767). IEC-Zähler sind in der Firm­ware der CPU ein­gebettete System-Funk­tions­bau­steine (SFB). Der Aufruf des IEC-Zählers erfolgt als Instanz.

Zähler-Arten

S7-Zähler

S7-Zähler werden über eine Nummer absolut adressiert. Durch diese Nummern­abhängigkeit sind Programm­bausteine mit S7-Zähler nicht mehrfach verwendbar. Der Zählbereich ist auf 0 - 999 begrenzt. Die Ausgabe des aktuellen Zählwertes erfolgt im BCD-Code und Hexadezimal, die Status­ausgabe Q des Zählers als Bool.

FUP-Darstellung S7-Zähler
15 8 7 0
x x x x 0 0 0 1 0 1 0 0 0 0 1 1
nicht 1 4 3
relevant Zählwert im BCD-Format
Ausgang DEZ
15 8 7 0
x x x x x x 0 0 1 0 0 0 1 1 1 1
nicht 143
relevant Zählwert im HEX-Format
Ausgang DUAL

Die Eingabe des Zählwertes (ZW) er­folgt im Word-Format (C#0 bis C#999). Für die Zähl­eingänge ZV (Vorwärts) und ZR (Rückwärts) sollten immer exakte Signale, z.B. mit positiver Flanken­aus­wertung angewendet werden.

IEC-Zähler

Die IEC-Zähler verfügen gegenüber den S7-Zählern über eine bessere Performance und einem wesentlich größeren Zählbereich. IEC-Zähler werden in dem Programmbaustein, in dem sie aufgerufen bzw. gebraucht werden deklariert. Jeder Zähler braucht eine Datenbaustein­struktur um die Daten zu speichern. Wird ein IEC-Zähler programmiert, erstellt Step 7 bzw. TIA-Portal automatisch den für den Zähler erforderlichen Instanz-DB.

IEC-Vor-/Rückwärtszähler

Die Eingabe des Zählwertes (PV) er­folgt mit 16-Bit-Ganzzahlen im Datenformat Integer. Für die Zähl­eingänge CU (count up) Vorwärts und CD (count down) Rückwärts sollten immer exakte Signale, z.B. mit positiver Flanken­aus­wertung angewendet werden.
Das Datenformat Integer (Int) für den Zählwert (PV) ist für alle Steuerungen der S7-Familie gültig. Bei den neuen 1200/1500er-CPUs können aber noch weitere Daten­formate, z.B. 32-Bit-Ganzzahlen Double Integer (Dint) oder Unsingned Double Integer (UDint) frei gewählt werden.

IEC-Zähler Auswahl Datenformat

Die max. möglichen Eingabewerte für den Zählbereich (PV) je nach Datenformat

Int -32.768 bis +32.767
Uint 0 bis 65535
Dint -2147483648 bis +2147483647
UDint 0 bis 4294967295
IEC-Zähler Datenformat DInt
IEC-Zähler Datenforma UDint
S7-Zähler
Parameter
Parameter: <Zähler_nr>**
Deklaration: Ein/Aus
Datentyp: Counter
Speicherbereich: Z
Funktion: Zähler der Anweisung
** Die Anzahl Zähler ist CPU abhängig
Parameter: DUAL
Deklaration: Ausgang
Datentyp: Word,S5Time/Date
Speicherbereich: E,A,M,D,L,P
Funktion: Aktueller Zählwert*
*(Hexadezimal)
Parameter: DEZ
Deklaration: Ausgang
Datentyp: Word,S5Time/Date
Speicherbereich: E,A,M,D,L,P
Funktion: Aktueller Zählwert*
*(BCD-Format)
Parameter: ZW
Deklaration: Eingang
Datentyp: Word
Speicherbereich: E,A,M,D,L,P
Funktion: Einstellung Zählwert*
*(C#0 bis C#999)
Parameter: S
Deklaration: Eingang
Datentyp: BOOL
Speicherbereich: E,A,M,T,Z,D,L
Funktion: Zähler voreinstellen
Parameter: R
Deklaration: Eingang
Datentyp: BOOL
Speicherbereich: E,A,M,T,Z,D,L
Funktion: Zähler rücksetzen
Parameter: Q
Deklaration: Ausgang
Datentyp: BOOL
Speicherbereich: E,A,M,D,L
Funktion: Status des Zählers
Parameter: ZV
Deklaration: Eingang
Datentyp: BOOL
Speicherbereich: E,A,M,D,L,T,Z
Funktion: Vorwärtszähleingang
Parameter: ZR
Deklaration: Eingang
Datentyp: BOOL
Speicherbereich: E,A,M,D,L,T,Z
Funktion: Rückwärtszähleingang

Vorwärtszähler
S7 Vorwärtszähler

Wenn der Signalzustand am Eingang S von „0“ auf „1“ wechselt, wird der Zählwert auf den Wert von Parameter ZW gesetzt. Ändert sich der Signal­zustand am Zähleingang ZV von „0“ auf „1“ (positive Signal­flanke), wird der aktuelle Zählwert um den Faktor eins erhöht. An den Ausgängen DUAL und DEZ wird der aktuelle Zählwert hexadezimal bzw. BCD-codiert aus­gegeben. Der Signal­zustand am Ausgang Q ist logisch „1“ wenn der Zählwert größer Null ist. Ist der Zählwert gleich Null, wird der Signalzustand am Ausgang Q lo­gisch „0“. Der Zählwert wird auf Null gesetzt, wenn der Rücksetzeingang R von „0“ auf „1“ wechselt. Steht an Rücksetzeingang R immer „1“ an, sind die Eingänge ZV und S wirkungslos.

Rückwärtszähler
S7 Rückwärtszähler

Der Rückwärtszähler funktioniert im Prinzip wie der Vorwärtszähler mit dem Unterschied, dass bei Änderung des Signal­zustandes von „0“ auf „1“ (positive Signal­flanke) am Zähleingang ZR der aktuelle Zählwert um den Faktor eins vermindert wird. Der Signal­zustand am Ausgang Q ist logisch „1“ wenn der Zählwert ungleich Null ist. Ist der Zählwert gleich Null, wird der Signalzustand am Ausgang Q lo­gisch „0“. Der Zählwert wird auf Null gesetzt, wenn der Rücksetzeingang R von „0“ auf „1“ wechselt. Liegt ständig „1“-Signal am Rücksetzeingang R an, sind die Eingänge ZR und S ohne Funktion.

Vor-/Rückwärtszähler
S7 Vor-/Rückwärtszähler

Der Vorwärts- und Rückwärtszähler erhöht den Zählwert um den Faktor eins, wenn der Signal­zustand am Zähleingang ZV von „0“ auf „1“ (positive Signal­flanke) wechselt und vermindert den Zählwert um den Faktor eins, wenn am Zähleingang ZR der Signal­zustand von „0“ auf „1“ (positive Signal­flanke) wechselt. Das Verhalten des Ausgang Q ist analog zu den Zählern mit nur einer Zählfunktion. Der Signal­zustand am Ausgang Q ist „1“ wenn der Zählwert größer Null ist. Ist der Zählwert gleich Null, liefert der Ausgang Q lo­gisch „0“. Der Zählwert wird auf Null gesetzt, wenn der Rücksetzeingang R von „0“ auf „1“ wechselt. Liegt ständig „1“-Signal am Eingang R an, sind ZV, ZR und S ohne Funktion.

S7 Vor-/Rückwärtszähler Diagramm
Signalzustandsdiagramm ZW=5

Das Signalzustandsdiagramm soll die Funktionsweise der Zähler, egal ob Vorwärts-, Rückwärts- oder Vor-/Rückwärtszähler verdeutlichen.

Parallel zu den „fertigen“ Zählern kann man die Einzelkomponenten eines Counters auch separat programmieren. Der aktuelle Zähler­stand kann bei dieser Variante nur mit einer Lade- und Transfer­funktion ermittelt und verarbeitet werden.

S7 Zähler als Einzelkomponenten

Bei den Programmierern sind/waren die S7-Timer eher unbeliebt und werden/wurden kaum verwendet. Der eingeschränkte Zählbereich (0-999) und die be­schränkte Anzahl an Zähler sind/waren sicherlich Gründe, aber auch das Verhalten von Ausgang Q ist nicht unbedingt Nobelpreiswürdig, denn dieser liefert ein „0“-Signal wenn er noch nicht gesetzt wurde und zusätzlich dazu auch bei Erreichen des Zählwertes. Mit anderen Funktionen der SPS (Ad­dition, Sub­traktion, Lade- und Transferfunktionen) konnten eigene, besser funktionierende Zähler pro­grammiert werden.


Fortsetzung folgt irgendwann..
irgendwann...