Hallo,
in der Doku zur Syslibfile.lib von Wago steht folgendes.
Dieser Befehl arbeitet blockierend. Es ist deshalb sinnvoll, File Operationen
in einer eigenen Task auszuführen.
Was ja soweit kein Problem wäre, aber bei allen Beispielen die ich gesehen habe läuft eigentlich das ganze Programm in dieser Task. Wenn ich aber das eigentliche Steuerungsprogramm in einer andern Task laufen lasse, damit es von dem Dateihandling nicht beeinträchtigt wird, muss ich die Daten die ich schreiben will von der einen in die andere Task übergeben. Wie kann ich das machen, ohne dass ein gleichzeitiger Zugriff, den Programmablauf stört.
Oder sehe ich da ein Problem, dass es nicht gibt?
Schönen Tag
Christian
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Zitat:
Oder sehe ich da ein Problem, dass es nicht gibt?
Doch das ist ein Problem.
Du kannst global eine Verriegelung einbauen. Dazu deklarierst du global eine BOOL-Variable. Wenn du in einem Task auf die Daten zugreifen willst, überprüfst du ob die Vraiable TRUE ist, wenn nicht setzt du sie TRUE und bearbeitest die Daten. Bist du fertig, setzt du die globale Variable wieder FALSE --> es kann wieder darauf zugegriffen werden.
Bsp.:
IF NOT g_boDataLog THENÂ Â g_boDataLog:=TRUE;Â Â Datenverarbeitung;Â Â g_boDataLog:=FALSE;END_IF
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Originally created by: ca
Hallo,
in der Doku zur Syslibfile.lib von Wago steht folgendes.
Dieser Befehl arbeitet blockierend. Es ist deshalb sinnvoll, File Operationen
in einer eigenen Task auszuführen.
Was ja soweit kein Problem wäre, aber bei allen Beispielen die ich gesehen habe läuft eigentlich das ganze Programm in dieser Task. Wenn ich aber das eigentliche Steuerungsprogramm in einer andern Task laufen lasse, damit es von dem Dateihandling nicht beeinträchtigt wird, muss ich die Daten die ich schreiben will von der einen in die andere Task übergeben. Wie kann ich das machen, ohne dass ein gleichzeitiger Zugriff, den Programmablauf stört.
Oder sehe ich da ein Problem, dass es nicht gibt?
Schönen Tag
Christian
Morgen,
Doch das ist ein Problem.
Du kannst global eine Verriegelung einbauen. Dazu deklarierst du global eine BOOL-Variable. Wenn du in einem Task auf die Daten zugreifen willst, überprüfst du ob die Vraiable TRUE ist, wenn nicht setzt du sie TRUE und bearbeitest die Daten. Bist du fertig, setzt du die globale Variable wieder FALSE --> es kann wieder darauf zugegriffen werden.
Bsp.: