brausefüllung
Level-1
- Beiträge
- 7
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo,
ich versuche Momentan im Ramen eines Projekts, Daten in eine selbst erstellte .csv Datei zu loggen, was prinzipiell auch funktioniert.
Das Problem ist nun, dass mein Programm nur jeden 4. Zyklus in die .csv Datei schreibt. Gewünscht ist dass jede Sekunde einmal geschrieben wird. Dafür habe ich 2 Counter, wobei der erste immer eine Sekunde hochzählt und der zweite dann jede Sekunde um 1 erhöht wird. Dabei wird jedes mal wenn counter2 erhöt wird ein Flag auf true gesetzt sodass der WriteStruct() Befehl ausgeführt wird. In meiner Theorie sollte so jede Sekunde geloggt werden, woraus leider alle 4 Sekunden wird.
Es ändert übrigens nichts ob ich 1 mal pro Sekunde oder 10 mal pro Sekunde loggen möchte, es werden immer 3 Zyklen übersprungen.
Ich habe ein Testprogramm geschrieben wo nur der counter2 geloggt wird um das Problem zu veranschaulichen.

Liegt das Problem and meiner Programierung oder habe ich etwas nicht bedacht?
Gruß
ich versuche Momentan im Ramen eines Projekts, Daten in eine selbst erstellte .csv Datei zu loggen, was prinzipiell auch funktioniert.
Das Problem ist nun, dass mein Programm nur jeden 4. Zyklus in die .csv Datei schreibt. Gewünscht ist dass jede Sekunde einmal geschrieben wird. Dafür habe ich 2 Counter, wobei der erste immer eine Sekunde hochzählt und der zweite dann jede Sekunde um 1 erhöht wird. Dabei wird jedes mal wenn counter2 erhöt wird ein Flag auf true gesetzt sodass der WriteStruct() Befehl ausgeführt wird. In meiner Theorie sollte so jede Sekunde geloggt werden, woraus leider alle 4 Sekunden wird.
Es ändert übrigens nichts ob ich 1 mal pro Sekunde oder 10 mal pro Sekunde loggen möchte, es werden immer 3 Zyklen übersprungen.
Ich habe ein Testprogramm geschrieben wo nur der counter2 geloggt wird um das Problem zu veranschaulichen.
st_DataTest.Counter := Counter2;
counter1 := counter1 +1;
IF counter1 >=100
THEN counter1 := 0;
Counter2 := Counter2 +1;
bFlag := TRUE;
ELSE
bFlag := FALSE;
END_IF
IF bFlag THEN
fbPLCDBWrite1.WriteStruct( hDBID:= 1,
sTableName:= sTableNameTest,
pRecord:= ADR(st_DataTest),
cbRecord:= SIZEOF(st_DataTest),
pColumnNames:= ADR(ColumnNameTest) ,
cbColumnNames:= SIZEOF(ColumnNameTest));
END_IF

Liegt das Problem and meiner Programierung oder habe ich etwas nicht bedacht?
Gruß