Zählerdifferenz mit bestimmtem Wert multiplizieren

Hallo zusammen
Ich nutze ips in der Firma als eine Art Betriebsdatenerfassung light, unter anderem habe ich einige Web-Count 6x Digital von WuT im Einsatz. Insgesamt haben wir knapp 30 Produktionsanlagen, wobei von jeder Anlage das Signal einer bestimmten Bewegung auf je einen Eingang der WuTs geht…die WuTs addieren jede Änderung des Eingangs in einem internen Zähler, dieser Zähler ist dann als geloggte Zählervariable in ips. Ich kann also über die letzten Jahre hinweg direkt sehen, wie viele Zyklen welche Anlage in welchem Zeitraum gemacht hat.
Zu jeder Anlage gibt es eine Seite, auf der der Schichtführer diverse Daten einträgt (welcher Artikel ist auf der Anlage, welche Rohmaterialien aus welcher Charge werden verwendet, welcher Maschinenbediener bedient die Anlage etc.)…daraus generiere ich dann u.a. am Schichtende automatisierte Reports, die eigentlich alles wichtige aufzeigen, was in der Schicht so passiert ist.
Ich würde nun gerne noch folgendes implementieren:
Da wir auf den Anlagen verschiedene Produkte fahren und die Werkzege dazu verschiedene Kavitätenanzahlen haben gibt es zu jeder Anlage eine Variable mit der Anzahl der Kavitäten, diese sagt dann quasi aus, wie viele Teile je Zyklus rauskommen.
Ich würde nun gerne noch in einer Variablen „produzierte Teile“ je Maschine darstellen, wie viele Teile produziert wurden, bin mir aber unsicher, auf welchem Weg ich das am Besten mache:
1.) Ein Skript, welches bei jeder Änderung des WuT Zählers gestartet wird und die eingetragene Kavitätenanzahl zu der Variablen „produzierte Teile“ addiert. Nachteil (eventuell): Zykluszeiten liegen bei uns zwischen 4 Sekunden und 16 Sekunden, sagen wir im Durchschnitt für jede Maschine die läuft alle 10 Sekunden ein Skript anstoßen…macht wenn alles läuft in jeder Sekunde 3 Skripte…hab da echt keine Vorstellung, ist so etwas nicht problematisch?
2.) Da mir die Aktualisierung der Variablen „produzierte Teile“ theoretisch auch im 5 Minuten Takt ausreichen würde könnte man ja alle 5 Minuten folgendes ablaufen lassen: Zählerstand jetzt - Zählerstand vor 5 Minuten und dann die Differenz davon multipliziert mit der Kavitätenanzahl zum Zähler „produzierte Teile“ addieren…Problem: Krieg ich durch viel copy und paste und rumprobieren aus verschiedenen Beiträgen vielleicht irgendwie hin, bin mir hier aber nicht so ganz sicher, was ich da dann tue…vor allem, weil manche Anlagen auch mal über 2 Wochen stehen…d.h., es gibt ja dann theoretisch keinen geloggten Zählerstand „vor 5 Minuten“, oder?
3.) Ich mache zu jeder Anlage eine Variable „Zyklenzähler_temp“ und alle 5 Minuten folgendes Script: Hole den „Zyklenzähler_temp“, hole den aktuellen Zyklenzählerstand aus dem WuT, hole die aktuelle Kavitätenanzahl, hole den Zählerstand „produzieret Teile“…jetzt Differenz der beiden Zyklenzähler multipliziert mit der Kavitätenanzahl zu „produzierte Teile“ hinzuaddieren und den „Zyklenzähler_temp“ durch den aktuellen Zyklenzählerstand ersetzen.

Im Moment tendiere ich zu Version 3, weil ich da weiß was ich tue und weil ich ehrlich gesagt nicht mehr Ahnung habe…

Zu welcher der oben genannten Varianten würdet ihr tendieren? Bzw., hätte wer einen besseren Ansatz für das Thema?

Bin wie gesagt leider jemand, der eigentlich nur mit viel Lesen und Probieren und durch die Hilfe vieler Beiträge hier im Forum überhaupt klar kommt, bitte steinigt mich daher nicht, falls das obige alles Blödsinn wäre und es viel einfacher geht…

Schon mal vielen Dank im Vorraus

Hi,

also spontan würde ich sagen, dass alle von dir genannten Lösungsvorschläge zum Ziel fühen.
Ich weiß nicht, auf was für einer Maschine dein IPS läuft. Aber bei Lösung 1) sehe ich jetzt wegen der Häufigkeit der Skriptausführungen und der gleichzeitig laufenden Skripe eigentlich keine Probleme. Hängt aber auch davon ab, wie viel sonst noch so parallel in IPS läuft.

Werden deine Zähler, die du mit der Anzahl Kavitäten multiplizieren willst regelmäßig zurückgesetzt oder sind das alles fortlaufende Werte, sodass auch die produzierten Teile fortlaufend steigen oder wird das am Ende des Tages / der Schicht alles auf 0 gesetzt?

Brauchst du für jede Änderung des Zählers einen aktuell berechneten Wert oder würde es dir auch reichen, wenn der Wert nach mehreren Änderungen des Zählers einmal berechnet wird.
Dann könntest du dir ja auch ein einziges Skript erstellen, welches periodisch einfach alle deine Zähler und Kavitäten auf einmal multipliziert und in den entsprechenden Variablen speichert. Das Skript führst du dann periodisch alle paar Sekunden aus. Keine Ahnung, wie schnell sich deine Daten ändern. Wenn der Zähler bei der 1. Ausführung beispielsweise auf 5 steht und bei der 2. Ausführung schon auf 7, dann käme bei der Multiplikation ja trotzdem der aktuelle Wert (für 7) raus, nur dass dir dann das Zwischenergebnis für den Zählerstand 6 für ein evtl. Logging fehlen würde. Da weiß ich nicht, ob das relevant ist.

Gruß
Slummi

Hallo Slumi

Vielen Dank für deinen Beitrag.
Die Werte sind fortlaufend.
Ich habe es jetzt so gelöst, dass alle 5 Minuten ein Skript abläuft, was die jeweiligen Zählerstände dann aktualisiert.

Läuft bisher problemlos :slight_smile: