-> 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
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