-> Hier kostenlos registrieren
Moin,
ich bräuchte mal euren Rat bei den Überlegungen zur TwinCAT-Zykluszeit.
Meine Anlage (PLC) läuft mit Zykluszeit 10 ms. Der Produktionsprozess dauert etwa 5 s und wird im Dauerlauf wiederholt.
Innerhalb des Produktionsprozesses läuft eine Messwertaufnahme über 2 Sekunden. Die Messung erfolgt mit 100-fach Oversampling, dabei werden in jedem PLC-Zyklus die 100 Datenpunkte an ein entsprechend großes Array[20.000] angefügt. Nach den 2 s Messen habe ich das Array also voll.
Jetzt stehen 3 Sekunden zur Verfügung, um die Datenpunkte des Arrays zu skalieren, ein JSON-String zu erstellen, und per MQTT rauszusenden. Die Frage ist, wie ich diese Aufgaben (ohne Echtzeitanforderung) organisiere.
Macht es hier Sinn, einen seeehr langsamen Task einzurichten (Zykluszeit im Sekundenbereich) die JSON-Erstellung und den MQTT-Versand dort auszuführen, oder lieber irgendwie kleinere JSON-Pakete erstellen und die dann absenden? Hier ist aber die Frage, wie ich dann das Optimum als JSON-Paket-Größe und Zykluszeit ermittle. Oder gibt es irgendwie die Möglichkeit das als Task laufen zu lassen, der nicht unterbrochen wird, wenn der nächste Tick fällig ist, sondern so lange laufen darf, bis er fertig ist?
Viele Grüße,
clumsi
ich bräuchte mal euren Rat bei den Überlegungen zur TwinCAT-Zykluszeit.
Meine Anlage (PLC) läuft mit Zykluszeit 10 ms. Der Produktionsprozess dauert etwa 5 s und wird im Dauerlauf wiederholt.
Innerhalb des Produktionsprozesses läuft eine Messwertaufnahme über 2 Sekunden. Die Messung erfolgt mit 100-fach Oversampling, dabei werden in jedem PLC-Zyklus die 100 Datenpunkte an ein entsprechend großes Array[20.000] angefügt. Nach den 2 s Messen habe ich das Array also voll.
Jetzt stehen 3 Sekunden zur Verfügung, um die Datenpunkte des Arrays zu skalieren, ein JSON-String zu erstellen, und per MQTT rauszusenden. Die Frage ist, wie ich diese Aufgaben (ohne Echtzeitanforderung) organisiere.
Macht es hier Sinn, einen seeehr langsamen Task einzurichten (Zykluszeit im Sekundenbereich) die JSON-Erstellung und den MQTT-Versand dort auszuführen, oder lieber irgendwie kleinere JSON-Pakete erstellen und die dann absenden? Hier ist aber die Frage, wie ich dann das Optimum als JSON-Paket-Größe und Zykluszeit ermittle. Oder gibt es irgendwie die Möglichkeit das als Task laufen zu lassen, der nicht unterbrochen wird, wenn der nächste Tick fällig ist, sondern so lange laufen darf, bis er fertig ist?
Viele Grüße,
clumsi