NBerger
Level-3
- Beiträge
- 1.414
- Reaktionspunkte
- 395
-> Hier kostenlos registrieren
Hallo,
Habe da mal wieder ein Problem:
Ich lese im OB1 (Zyklisch) die Lokalzeit aus und weise diese als Uhrzeit einer TIME Variablen zu.
"Akt".Uhrzeit wird nur hier geschrieben !!!
Die "Akt".Uhrzeit nutze ich unter anderem im OB30 (alle 100ms).
In genau diesem OB kommt es nun sporadisch zu Fehler. In diesen Fällen ist die "Akt".Uhrzeit = t#0s (also Mitternacht) (im zyklischen Programm geschieht dies nicht)
Als temporäre Lösung vergleiche ich die Variable im OB30 auf 0 und beschreibe bei ungleich eine weitere Uhrzeitvariable mit der "Akt".Uhrzeit.
Das funktioniert jetzt erstmal, ABER ich habe Angst!!!
"Akt".Uhrzeit ist vom Typ TIME, also ein Doppelwort!
Das Verhalten scheint nun so zu sein: Im OB1 wird mit
die Akt".Uhrzeit zunächst gelöscht (T#0s) dann der neue Wert ermittelt und zugewiesen wird. Kommt genau jetzt ein Zeitalarm (OB30 Aufruf) hat die Variable "Akt".Uhrzeit einen FALSCHEN Wert !!!
Kann das mit jeder Variablen geschehen ??? Ist hier global die Datenkonsistenz in Gefahr ???
Muss ich jetzt jede Variable die ich in einem Zeit-OB lese dreifach anlegen und um zyklischen Programm nacheinander zuweisen damit ich im Zeit-OB auswerten kann ob zumindest die ersten oder letzten zwei Werte gleich sind (also konsistent)???
Edit: TIA V16.0.0.3 CPU 1511F 6ES7 511-1FK01-0AB0 V2.8.3
Habe da mal wieder ein Problem:
Ich lese im OB1 (Zyklisch) die Lokalzeit aus und weise diese als Uhrzeit einer TIME Variablen zu.
Code:
#RETURNVALUE := RD_LOC_T("Akt".Localzeit);
"Akt".Uhrzeit := DTL_TO_TOD("Akt".Localzeit);
Die "Akt".Uhrzeit nutze ich unter anderem im OB30 (alle 100ms).
In genau diesem OB kommt es nun sporadisch zu Fehler. In diesen Fällen ist die "Akt".Uhrzeit = t#0s (also Mitternacht) (im zyklischen Programm geschieht dies nicht)
Als temporäre Lösung vergleiche ich die Variable im OB30 auf 0 und beschreibe bei ungleich eine weitere Uhrzeitvariable mit der "Akt".Uhrzeit.
Das funktioniert jetzt erstmal, ABER ich habe Angst!!!
"Akt".Uhrzeit ist vom Typ TIME, also ein Doppelwort!
Das Verhalten scheint nun so zu sein: Im OB1 wird mit
Code:
"Akt".Uhrzeit := DTL_TO_TOD("Akt".Localzeit);
Kann das mit jeder Variablen geschehen ??? Ist hier global die Datenkonsistenz in Gefahr ???
Muss ich jetzt jede Variable die ich in einem Zeit-OB lese dreifach anlegen und um zyklischen Programm nacheinander zuweisen damit ich im Zeit-OB auswerten kann ob zumindest die ersten oder letzten zwei Werte gleich sind (also konsistent)???
Edit: TIA V16.0.0.3 CPU 1511F 6ES7 511-1FK01-0AB0 V2.8.3
Zuletzt bearbeitet: