Zählerfunktionen, Counter mit einer SPS realisieren

In vielen SPS-Programmen benötigt man Zählerfunktionen, damit bei einem Impuls ein Zähler hoch- oder runtergezählt werden kann. So kann man viele Produktionsschritte mengenmäßig erfassen. Beispielsweise könnte man erfassen, wie hoch die Produktionszahl war und wie oft der Ausschusszylinder bewegt wurde, um die Fehlerquote messbar zu machen. Man könnte auch realisieren, dass eine Aktion nur solange gestartet werden kann, solange der Zählerstand unter einem bestimmten Wert liegt. Der Einsatzgebiet von Zählern ist vielfältig und im Grunde könnte man jeden Produktionsschritt zählen.

In einem Steuerungsprogramm werden drei Arten von Zählern eingesetzt:

  • Vorwärtszähler: Zählen bei einem Impuls +1
  • Rückwärtszähler: Zählen bei einem Impuls -1
  • Vorwärts- und Rückwärtszähler: Diese haben 2 Eingänge, um +1 und -1 zählen zu können.

Die Zählimpulse können dabei auf zwei verschiedene Art und Weisen erfasst werden:

  • Zählen im Programm: Bei dieser Variante werden entweder fertige Funktionsbausteine benutzt, die einen Eingang zum Vorwärts- und/oder Rückwärtszählen haben, oder es wird ein Speicherbereich mit dem Datentyp INT oder DINT mit der Zahl 1 addiert oder subtrahiert. Dieser Speicherbereich kann ausgelesen und auf einer Anzeige wiedergegeben werden. Der Nachteil des Zählens im Programm ist, dass man externe Zählimpulse nur bedingt berücksichtigen kann, da die Verarbeitungsmöglichkeit von der Zykluszeit abhängt.
  • Zählen über eine Baugruppe: Bei dieser Variante werden Zähler als Teil der CPU oder als zusätzliche Baugruppe benutzt. Damit ist es möglich, externe Zählimpulse unabhängig von der Zykluszeit zu erfassen. Solche Zähler werden auch schnelle Zähler genannt, da sie sehr schnelle Zählimpulse erfassen können. Im Programm können die Zählerstände ausgelesen werden.

Die Programmiernorm DIN EN 61131-3 beschreibt drei Arten von Zählerfunktionen als Standardfunktionsbausteine:

  • CTU: Count-Up, Vorwärtszähler
  • CTD: Count-Down, Rückwärtszähler
  • CTUD: Count-Up-Down, Vorwärts- und Rückwärtszähler

Bei allen drei Zählerfunktionen erfolgt der Zählimpuls über eine positive Flanke an den Zähleingängen, auch beim Rückwärtszähler.

Übersicht über die drei Zählerfunktionen nach DIN EN 61131-3:

Übersicht über die drei Zählerfunktionen nach DIN EN 61131-3

Vorwärtszähler

Vorwärtszähler

Rückwärtszähler

Rückwärtszähler

Vorwärts-/Rückwärtszähler

Vorwärts- und Rückwärtszähler

Die Eingangs- und Ausgangsoperanden der Zählerfunktionen nach DIN EN 61131-3 sind wie folgt:

  • CU - Zähleingang zum Vorwärtszählen
  • CD - Zähleingang zum Rückwärtszählen
  • LD - Ladeeingang
  • R - Rücksetzeingang
  • PV - Ladewert
  • QU - Abfrage des Status Zählerstand (unter der Voraussetzung das CV größer gleich dem Ladewert ist)
  • QD - Abfrage des Status Zählerstand (unter der Voraussetzung das CV kleiner gleich 0 ist)
  • CV - Zählerstand

Zeitfunktionen in der Programmiersoftware

Wie bei den Zeitfunktionen waren die in der Programmiernorm 61131-3 festgelegten Standardfunktionsbausteine den Ansprüchen mancher SPS-Programmierer nicht gerecht. Daher haben viele Hersteller von Programmiersoftware eigene, firmenspezifische Zählerfunktionen. In Step7 sind das folgende Zählerfunktionen:

  • Z_VORW: Vorwärtszähler
  • Z_RUECK: Rückwärtszähler
  • ZAEHLER: Vorwärts- und Rückwärtszähler

Funktionsplandarstellung der Zähler in Step7:

Vorwärtszähler

Vorwärtszähler in S7

Rückwärtszähler

Rückwärtszähler in S7

Vorwärts-/Rückwärtszähler

Vorwärts- und Rückwärtszähler in S7

Falls man in Step7 trotzdem die drei Zählerfunktionen nach der Programmiernorm 61131-3 CTU, CTD und CTUD benutzen möchte, muss man hierfür folgende Systemfunktionsbausteine benutzen:

  • SFB0: Für CTU
  • SFB1: Für CTD
  • SFB2: Für CTUD

Sollten diese Systemfunktionsbausteine benutzt werden, muss man hierfür auch jeweils einen Instanzdatenbaustein zuordnen, damit als statische Lokalvariablen die notwendigen Daten verfügbar sind.