Zeit und Datum in DB speichern

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen. Hab mal wieder ein Problem und brauch mal wieder Hilfe

Folgendes:
Ich möchte 2 Taster überwachen. Es sollte so sein das wenn einer von beiden gedrückt wird soll ein Eintrag in den DP gemacht werden in dem Datum, Uhrzeit und der gedrückte Taster stehen soll.

Kann ich den Daten typ Date and Time in den DB speichern??? hab leider gar keine ahnung wie ich dies anstellen soll.
Wie ich normle Zahlen die in MW stehen in den DB schreiben kann weis ich. Auch eine art Schieberegister bekomme ich hin das z.b. nach 10 Einträge schluss ist. Nur wie bekomme ich die Zeit+Datum in den DB da es ja nicht in ein ein MW passt. Ich denke ihr erkennt schon an meiner Schreibweise das ich nicht mehr weiter weis.

Würd mich mal wieder rießig freuen wenn ihr mir weiterhelfen könnt.
 
Hallo,

schau dir mal den OB1 im "Temp" an. Da kannst du dir alle Daten aus dem L-Register rausziehen. Notfalls kannst du auch die Bausteine "weiss gerade nicht welche (IECtime to xxx)" nehmen um die ganze Sache auf getrennte MW zu legen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Lokaldaten Datum Uhrzeit im OB 1


L LB 12
T DB100.DBB 6 /Jahr
L LB 13
T DB100.DBB 7 /Monat
L LB 14
T DB100.DBB 8 /Tag
L LB 15
T DB100.DBB 9 /Stunde
L LB 16
T DB100.DBB 10 /Minute
L LB 17
T DB100.DBB 11 /Sekunde
L LB 19
SLW 12
SRW 12
BTI
T DB100.DBB 47 /Wochentag 1=So 2=Mo 3=Di
 
lieg ich da dann richtig das ich in dem DB dann nur Datum und Uhrzeit lesen kann?
Es sollte halt so sein das ich eine Art schieberegister hab die mir z.b. die letzen 5 aktivitäten der Taster anzeigt in dem DB.
und wenn ich Datum + Uhrzeit seperat reinschreibe, hab ich ja 2 Zeilen und man verliert den überblick.
 
Hallo Gast,
uz71 hat ein Beispiel gegeben zum einmaligen Lesen von Datum/Uhrzeit aus den Lokaldaten des OB1 und den Transfer in den DB 100.
Auch eine art Schieberegister bekomme ich hin
Genau das musst Du jetzt noch machen, Beispiele dafür sollten sich hier im Forum finden.
Gruss
Question_mark
 
Hallo Gast,

in den Lokaldaten des OB1 steht zwar eine Uhrzeit, es ist jedoch die des letzten Starts des OB, wenn ich nicht irre. Die aktuelle Systemzeit musst du schon auslesen und selbst in die Lokaldaten schreiben. Dann kannst du über indirekte Adressierung darauf zugreifen. Alle Werte werden als HEX dargestellt.


Code:
//*** AR1 sichern
      TAR1  #AR1_TEMP
      SET   
      SAVE  

//*** CPU-Zeit lesen und AR1 auf TEMP_DT
      CALL  "READ_CLK"
       RET_VAL:=#TEMP_INT
       CDT    :=#TEMP_DT

      LAR1  P##TEMP_DT

      L     LB [AR1,P#0.0]              //BYTE 0 := JAHR 
      L     LB [AR1,P#1.0]              //BYTE 1 := MONAT
      L     LB [AR1,P#2.0]              //BYTE 2 := TAG 
      L     LB [AR1,P#3.0]              //BYTE 3 := STUNDEN
      L     LB [AR1,P#4.0]              //BYTE 4 := MINUTEN
      L     LB [AR1,P#5.0]              //BYTE 5 := SEKUNDEN
      L     LB [AR1,P#7.0]              //BYTE 7 = WOCHENTAG
      L     2#1111                         // hier die ms ausmaskieren
      UW    

//*** AR1-Register wiederherstellen
      LAR1  #AR1_TEMP
      BE

Gruss, Onkel


Nachtrag, 27.04.2005
Sorry, der OB1 wird in jeden Zyklus neu gestartet. Somit wird auch der Zeitstempel in den Lokaldaten neu gesetzt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gast,

was mir noch eingefallen ist: Du könntest natürlich auch den komletten Zeitstempel mittels der SFC20 in den DB kopieren. Dazu müsstest du einen "flexiblen" ANY für das Ziel (DSTBLK) entsprechend deiner Datenablage zusammenstellen. Beispiele dazu findest du im Forum.

Code:
//*** CPU-Zeit lesen 
      CALL  "READ_CLK"
       RET_VAL:=#TEMP_INT
       CDT    :=#TEMP_DT

//*** Zeitstempel kopieren
      CALL  "BLKMOV"
       SRCBLK :=#TEMP_DT
       RET_VAL:=#TEMP_INT
       DSTBLK :=???


Gruss, Onkel
 
Zurück
Oben