Mit einem Betriebsstundenzähler werden gewöhnlich die Arbeitsstunden seit Inbetriebnahme einer Maschine oder
Anlage gezählt. Nicht selten trifft man auf Betriebsstundenzähler, die als Erweiterung Stunden einer besonderen Betriebsart einer
Maschine zählen. S7 stellt solche Betriebsstundenzähler als vorgefertigte Bausteine zur Verfügung. Der Programmierer muss lediglich
einen solchen Baustein in sein SPS-Programm einfügen und parametrieren. In S7 heißt die entsprechende Anweisung RTM.
In dem folgenden Beispiel verzichten wir auf vorgefertigte Programmteile und konstruieren einen Betriebsstundenzähler selbst.
Der Zähler, den wir zusammenfassend als einen Funktionsbaustein aufbauen, soll uns fünf einzelne Betriebsstundenzähler zur
Verfügung stellen. Mit dem ersten Zähler (Z1) wird die Gesamtzeit des Maschinenlaufs gemessen. Der Zähler läuft, sobald die Steuerung
eingeschaltet wird. Der zweite Zähler (Z2) zählt die Stunden der Betriebsart „Einrichten“. Zähler Nummer drei (Z3) ist für die
Betriebsart „Halbautomatik“ zuständig. Mit dem vierten Zähler (Z4) sollen schließlich die Stunden der Betriebsart „Automatik“
gezählt werden. Der letzte Zähler (Z5) zählt die Stunden, die seit der letzten Inspektion der Maschine abgelaufen sind. Er ist der
einzige Zähler im Gespann, den man wieder nullen kann. Er zählt die Stunden nur während der Betriebsarten „Halbautomatik „ und
„Automatik“ und wird nach erfolgten Instandhaltungsarbeiten zurückgesetzt.
S7-1200 (CPU)
Die CPU 1215C (215-1AG40-0XB0) stellt 12 Eingänge und 9 Ausgänge zur Verfügung. Je nachdem, welche weitere Baugruppen an die
CPU angeschlossen werden, kann die Anzahl der Ein- bzw. Ausgänge erheblich erhöht werden.
Funktionsbaustein „Betriebsstundenzähler“ anlegen
Ein Funktionsbaustein kann in der Projektnavigation unter „Programmbausteine“ im Dialog „Neuen Baustein hinzufügen“
angelegt werden. Bei der Operation muss man sich für die Programmiersprache für den Baustein entscheiden. Hier wählen wir SCL.
Bevor das Programm erstellt wird, definieren wir im Kopfbereich des Bausteines die notwendigen Variablen:
Input Variablen
Output Variablen
Sonstige Variablen
Die Variablen „Sekunden“, „Minuten“ und „Stunden“ werden als remanent definiert. Dadurch wird sichergestellt, dass
sie ihre Werte auch nach Abschaltung der CPU nicht verlieren.
Nachdem die Eingänge und Ausgänge in der PLC-Variablentabelle definiert wurden (E0.0 = Einrichten, E0.1 = Halbautomatik,
E0.2 = Automatik, E0.3 = Reset, A0.0 = Signalleuchte Inspektion) muss noch in den CPU-Eigenschaften unter der Auswahl „System- und
Taktmerker“ ein Taktmerkerbyte aktiviert werden. Seine Adresse legen wir mit 100 fest. Mit M100.5 steht uns anschließend ein
Taktmerker mit der Frequenz von 1 Hz. zur Verfügung.
Nachdem der so definierte Funktionsbaustein „Betriebsstunden“ in das Hauptprogramm eingebunden und alle seine Ein- und
Ausgänge entsprechend verknüpft wurden, sieht das betreffende Netzwerk wie folgt aus:
Netzwerk mit dem Baustein "Betriebsstundenzähler".
Die von uns als Input definierten Variablen erscheinen auf der linken Seite. Die als Output definierten Variablen werden auf der
rechten Seite des Bausteines sichtbar. Sie können, nachdem der Baustein in ein Netzwerk eingefügt wurde, mit diversen im Hauptprogramm
definierten Variablen, Merker, Ein- bzw. Ausgängen oder Variablen verknüpft werden. Sie bilden die Schnittstelle des
Bausteins.
Der Schaltplan
Schaltplan
Das Programm
// ************************************************************************************************** // 5-facher Betriebsstundenzähler // TIA-Portal V16 // STEP 7 Professional / SCL // ************************************************************************************************** // VOREINSTELLUNGEN ---------------------------------------------------------------------------------
IF (NOT #"1Hz_Takt") THEN // Positive Flanke selbst behandeln
#Positive_Signalflanke := FALSE; // Positive Flanke zurücksetzen
END_IF;
#Zähler_5_OK := False; // Ausgang Zähler 5 AUS // ZEIT-MESSUNG -------------------------------------------------------------------------------------
IF (#"1Hz_Takt" AND NOT #Positive_Signalflanke) THEN // Zählerstände erhöhen 1 pro Sekunde
#Positive_Signalflanke := TRUE; // Positive Flanke für 1 Zyklus setzen
#Sekunden[1] += 1; // Sekunden Zähler 1 inkrementieren
IF #Zähler_2 THEN // Sekunden Zähler 2
#Sekunden[2] += 1; // Inkrementieren (wenn Zähler aktiviert)
END_IF;
IF #Zähler_3 THEN // Sekunden Zähler 3
#Sekunden[3] += 1; // Inkrementieren (wenn Zähler aktiviert)
END_IF;
IF #Zähler_4 THEN // Sekunden Zähler 4
#Sekunden[4] += 1; // Inkrementieren (wenn Zähler aktiviert)
END_IF;
IF #Zähler_5 THEN // Sekunden Zähler 5
#Sekunden[5] += 1; // Inkrementieren (wenn Zähler aktiviert)
END_IF;
FOR #i := 1 TO 5 DO // Nach 60 Sek. Minuten aktualisieren
IF #Sekunden[#i] >= 60 THEN
#Minuten[#i] += 1; // Minuten inkrementieren
#Sekunden[#i] := 0; // Sekundenzähler zurücksetzen
END_IF;
IF #Minuten[#i] >= 60 THEN // Nach 60 Min. Stunden aktualisieren
#Stunden[#i] += 1; // Stunden inkrementieren
#Minuten[#i] := 0; // Minutenzähler zurücksetzen
END_IF;
END_FOR;
END_IF;
// INSPEKTION ---------------------------------------------------------------------------------------
IF #Zähler_5_Max <= #Stunden[5] THEN // Zeit nächste Inspektion abgelaufen
#Zähler_5_OK := True; // Ausgang Inspektion fällig setzen
END_IF;
// RESET --------------------------------------------------------------------------------------------
IF #Reset THEN // Inspektion durchgeführt, Zähler 5 nullen
#Sekunden[5] := 0;
#Minuten[5] := 0;
#Stunden[5] := 0;
END_IF;
// AUSGABE ------------------------------------------------------------------------------------------
#Sek := #Sekunden[1]; // Aktuelle Zählerstände anzeigen (OUT)
#Minuten_Z1 := #Minuten[1];
#Stunden_Z1 := #Stunden[1];
#Minuten_Z2 := #Minuten[2];
#Stunden_Z2 := #Stunden[2];
#Minuten_Z3 := #Minuten[3];
#Stunden_Z3 := #Stunden[3];
#Minuten_Z4 := #Minuten[4];
#Stunden_Z4 := #Stunden[4];
#Minuten_Z5 := #Minuten[5];
#Stunden_Z5 := #Stunden[5];
// **************************************************************************************************
Die Aufgabe des Programms reduziert sich praktisch zur Zählung der Sekunden, Minuten und Stunden. Die
aktuellen Werte werden in den remanenten Speicher der CPU abgelegt, was dazu führt, dass sie nach Abschaltung der
Steuerung nicht verloren gehen. Für die richtige Zählung der Sekunden sorgt der Systemmerker M1005, der mit Frequenz von
1Hz vom System generiert wird. Der Ausgang „Sek“ des Bausteines dient lediglich der visuellen
Kontrolle, dass die Zählung läuft.
Eine Aktion gibt es nur im Bezug auf den Zähler Nr. 5. Wenn sein Zählerstand den vorgegeben Wert am Eingang
„Zähler_5_Max“ erreicht hat, wird der Ausgang A0.0 gesetzt. Hier ist eine Kontrollleuchte angeschlossen. Sie informiert,
dass eine Inspektion der Maschine oder Steuerung fällig ist. Mit der Taste „Reset“ kann der Zähler, nachdem die
Instandhaltungsarbeiten durchgeführt wurden, wieder zurückgesetzt werden.