Step 7 Datum und Zeit nur einmal schreiben

Mcop2001de

Level-1
Beiträge
30
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten morgen

ich habe ein Problem mit dem schreiben von Datum und Zeit als Date_and_Time. Ich möchte das das Systemdatum und die Systemzeit bei auslösen eines Fehlers in einen DB geschrieben wird das klappt schon aber die Zeit wird bei jedem zuyclus überschrieben sodas ich die Zeit die beim ersten auslösen des Fehlers nicht mehr sehen kann.
mein Code sieht wiefolgt aus

Code:
//Zeit einlesen
   iError := READ_CLK (CDT := dDate_Time) ; 


// Fehler 1: Notaus Tür 1
IF NOT  "Notaus Tür 1 E 20.4" THEN
   iZaehler1:= iZaehler1 +1;
   Meldung[iZaehler1].Meldenr := 1;
   IF NOT "Notaus Tür 1 E 20.4" AND NOT bMerker1 THEN
    iZaehler2:= iZaehler2 + 1;
    MeldungSP[iZaehler2].Zeit := dDate_Time;
    MeldungSP[iZaehler2].Meldenr:= 1;
    bMerker1:= True;
   END_IF;
END_IF;

//Merker für dei sperre wird erst bei beheben des Fehlers zurückgestetzt
IF "Notaus Tür 1 E 20.4" AND bMerker1 THEN
    bMerker1:= False;
END_IF;
des erneute Speichern des Fehlers soll durch das setzten des bMerker1 verhindert werden was auch bei der Meldenr funktioniert aber nicht bei Datum und Uhrzeit.
wo ist mein Fehler?
Kann mir jemand Helfen?

Gruß Mcop2001de
 
Hallo,
wo hast du bMerker1 deklariert ? Im Bereich TEMP ? Du müßtest ihn im Bereich STAT deklarieren damit das System ihn sich über den aktuellen Zyklus hinaus speichern kann.

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Larry Laffer

ich habe die Merker als Var_Temp deklariert.
wenn ich sie als Var deklariere klappt es Danke.
Aber was ich nicht verstehe ist warum das eimalige Speichern der Meldenr denn funktioniert hat
 
Die TEMP-Variablen behalten ihren Inhalt nicht von Zyklus zu Zyklus.
Dein bMerker1 ist hier aber ein Sperr- oder Flankenmerker. Es soll also nur mit der positiven Flanke (also der Änderung von 0 -> 1) des "Notaus Tür 1 E 20.4" eine Speicherung erfolgen und nicht jeden Zyklus wieder, solange der Not-Aus betätigt ist.
Dieses "sich merken", wofür du den bMerker1 genommen hast kann eine TEMP-Variable nicht. Sie ist am Beginn eines Bausteinaufrufs undefiniert, meißtens aber eben nicht so, wie du sie bräuchtest.
TEMP's sind dann sinnvoll verwendet, wenn du sie für Zwischenergebnisse hernimmst - also sie erst definiert zuweist und dann verwendest - immer in dem gleichen Zyklus !!!

Gruß
Larry
 
Zurück
Oben