Alte S5-SPS


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Betriebsstundenzähler mit SPS


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)

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

Input Variablen

Output Variablen

Output Variablen

Sonstige 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

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

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.

Die Testschaltung

Testschaltung

Testschaltung

Kurzvideo zur Schaltung

Kurzvideo


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz