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