Periodisches Data-Logging von 750-880 in MySQL via WAGOLibMySQL

Beck

Level-1
Beiträge
64
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich versuche mich an der Nutzung der WAGOLibMySQL in CodeSys 2.3 für eine 750-880.
DB-Schema habe ich gemäß des Anwendungshinweises und des ganz netten Videos von Wago-Kurt (http://www.youtube.com/watch?v=0isTiU06bbA) aufgesetzt:
timestamp, id_tag (Variablenindex), id_value (Variablenwert).

Die Routine, in der ich den MySQLExecute (Ausführen der INSERT-Kommandos) aufrufe, soll ja nur alle x Sekunden laufen. Daher habe ich eine eigene Task mit zyklischem Aufruf alle 10 Sekunden angelegt.
Wenn ich dort allerdings mehrere SQL-Aufrufe hintereinander setze (weil ich mehrere Variablen zum selben Zeitstempel speichern möchte), läuft immer nur einer, da das Datenbankobjekt noch mit der Ausführung dieses einen blockiert ist.
Wenn ich die Einzelaufrufe in Abhängigkeit zueinander setze (2.MYSQLExecute erst aufrufen, wenn xStart des 1.MySQLExecute gelöscht ist).
Dann werden die Variablen immer nur im 10-Sekunden-Abstand gespeichert.
z.B.
0:00:00 Var1 Wert1
0:00:10 Var2 Wert2
0:00:20 Var3 Wert3
0:00:30 Var1 Wert4
0:00:40 Var2 Wert5
0:00:50 Var3 Wert6

Erreichen möchte ich aber:
0:00:00 Var1 Wert1
0:00:00 Var2 Wert2
0:00:00 Var3 Wert3
0:00:10 Var1 Wert4
0:00:10 Var2 Wert5
0:00:10 Var3 Wert6

Muss ich dafür einen langen SQL-String mit mehreren INSERTs bauen und MySQLExecute nur einmal aufrufen?
Oder gibt es eine elegantere Variante?

Generell zur Verwendung: Muss die MySQLexecute in der "Dauerschleife" der PLC_PRG (oder einer ebenso oft aufgerufenen Subroutine) liegen, auch wenn ich nur alle x Sekunden loggen will? Oder reicht der einmalige Aufruf, um die vollständige Abarbeitung des INSERTs sicherzustellen?


Wo finde ich generell noch weitere Hinweise/Beispiele zur Nutzung der WagoLibMySQL?

Vielen Dank,

Beck.
 
Zurück
Oben