Step 7 S7-200 : Betriebsstundenzähler (ausfallsicher)

smartie

Level-1
Beiträge
298
Reaktionspunkte
22
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich arbeite gerade an einer bestehenden Anlage mit einer S7-224. Dort habe ich schon vor einiger Zeit einen simplen
Betriebsstundenzähler programmiert:

Mit einem zeitgesteuerten Intervall zähle ich die Millisekunden. Sobald mein Millisekundenwert >= 60.000 ms erhöhe ich den
Minuten Zähler und subtrahiere 60.000 vom Millisekundenzähler. Das gleiche Prinzip wende ich für Minuten und Sekunden an.

Das funktioniert soweit ganz gut und ist auch ausreichend für den Betriebsstundenzähler.

Jetzt möchte der Kunde ganz gerne das wir alle 8 Stunden (bzw. nach einem einstellbaren Intervall) den aktuellen Zählerstand
umkopieren und so die letzten neun Schichten (9 x 8 Stunden) speichern. Darüber möchte der Kunde gerne auswerten wie sehr
seine Maschine ausgelastet ist.

Auch das stellt vom Prinzip her erst mal kein Problem dar. Könnte man doch einfach alle x Stunden die Werte umkopieren.

Das Problem besteht aber darin das die Maschine vom Bedienpersonal im Störungsfall gerne mal neu gestartet wird...
- Während dieser Zeit und natürlich wenn sie am Wochenende generell ausgeschalten wird läuft also der oben erwähnte
Millisekunden Zähler nicht weiter. - Die entstehenden "Fehlzeiten" wirken sich dann auf alle folgenden Schichten aus.

Mein Ansatz wäre jetzt gewesen mit der Echtzeituhr der S7-200 zu arbeiten, aber scheinbar gibt es hierfür keine brauchbaren
Bausteine um mit den Zeitwerten zu rechnen (z.B. Differenz zwischen zwei Zeiten berechnen).

Bestimmt könnte man einen entsprechenden Baustein selber bauen, aber der (vom Kunden zu zahlende) Zeitaufwand hierfür liegt
bestimmt irgendwo im Bereich der Unrentabilität. Für das Geld könnte ich wahrscheinlich eine S7-1200 einbauen und in Betrieb nehmen.
(Soweit ich das auf die schnelle geprüft habe würde ich mit den dort vorhandenen Funktionen (speziell T_DIFF) zu Recht kommen).

Aber vielleicht stehe ich ja auch nur auf dem Schlauch und jemand von euch hat eine Idee die mich weiter bringt?
- Gerne auch ein ganz anderer Lösungsansatz.

Gruß smartie
 
Mein Ansatz wäre jetzt gewesen mit der Echtzeituhr der S7-200 zu arbeiten, aber scheinbar gibt es hierfür keine brauchbaren
Bausteine um mit den Zeitwerten zu rechnen (z.B. Differenz zwischen zwei Zeiten berechnen).
Die gibt es doch:
BGN_ITIME
MicroWin-Hilfe schrieb:
Die Operation liest den aktuellen Wert des integrierten 1-ms-Zählers und speichert den Wert in OUT.Das maximale Zeitintervall für einen Millisekundenwert vom Typ DWORD ist 2 hoch 32 bzw. 49,7 Tage.
und CAL_ITIME
MicroWin-Hilfe schrieb:
Die Operation berechnet den Zeitunterschied zwischen der aktuellen Zeit und der Zeit in IN. Die Differenz wird in OUT gespeichert.Das maximale Zeitintervall für einen Millisekundenwert vom Typ DWORD ist 2 hoch 32 bzw. 49,7 Tage.Die Operation CAL_ITIME bearbeitet den Überlauf der 1-ms-Zeit, der im Maximalintervall auftritt, automatisch, je nachdem, wann die Operation BGN_ITIME ausgeführt wurde.



Davon mal abgesehen, findet man auch Bibliotheken für Wochentimer, die an dieser Stelle vlt. besser geeignet sind.
Sieh' Dir ruhig auch mal die gesamte S7-200.net-Seite an, da findet man noch einiges in der Richtung, z.B. auch das Auslesen der Echtzeituhr als INT-Werte.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein Beispiel mit CAL_ITIME (hab' mal bloß die Symbolnamen angegeben, läßt sich also nicht unbedingt einfach kopieren):
Code:
[FONT=Courier New]Network 1 //Startzeit speichern
LD     SM0.1
BITIM  #Zeitspeicher

Network 2 //Zeitdifferenz bestimmen
LD     SM0.0
CITIM  #Zeitspeicher, #Zeitspanne

Network 3 // Zeitvergleich
// 8h * 60min * 60s * 1.000ms = 28.800.000
// BS-Zähler umkopieren &
// neue Startzeit
LDD>=  #Zeitspanne, 28800000
MOVD   #BS_Zaehler, #BS_Speicher
BITIM  #Zeitspeicher[/FONT]
Was für Deinen 8 Stundenrhytmus immer blöd ist, wenn zum eigentlichen Kopier-Zeitpunkt die SPS aus ist und deshalb erst später der neue Startzeitpunkt gespeichert wird. Dann verschiebt sich da natürlich auch der 8h-Rhythmus.
Daher würde ich doch sehen, ob sich das mit dem Wochentimer nicht besser macht.
 
Hallo hucki,

vielen Dank für den kleinen Denkanstoss. Ich war gestern (bevor ich den Beitrag erstellt habe) auch schon auf S7-200.net und habe mir den RTC_I Baustein, zum Auslesen der
Echtzeituhr als Integer Werte angesehen. - Die mit LOGO! gekennzeichneten Bausteine hatte ich dabei aber ignoriert. (Weil LOGO! dabei steht dachte ich die sind für die LOGO!)

Ich werde sie mir jetzt aber mal anschauen. Die von dir genannten, vorhandenen S7-200 Bausteine (BGN_TIME, CAL_ITIME) finde ich auch interessant, aber wahrscheinlich ungeeignet.


Danke erst mal für deine Hilfe.

Gruß smartie
 
Zurück
Oben