Sonstiges Erstellen einer DATE_AND_TIME-Variable aus Eingangswörtern

newirobi

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich habe folgendes Problem. Ich bekomme durch einen externen Sensor dessen Jahr, Monat, Tag, Stunde, Minute und Sekunde jeweils als WORD an meinen Baustein geschrieben. Aus diesen 6 WORDs möchte ich mir nun intern eine Variable vom Typ DATE_AND_TIME basteln.

Kann mir vielleicht jemand sagen, ob das überhaupt so möglich ist und wenn ja wie genau?

Vielen Dank im Voraus!
 
bei time ist es noch recht einfach auszurechnen. TIME ist die zeit in ms nach 0 uhr.
bei date nicht mal eben. date ist die anzahl an tagen ab 1.1.1990

wenn du ein skriptfähiges panel hast könntest du das dem recht einfach erledigen lassen.
 
Hallo,
ja ... das ist möglich.
Sieh dir bitte dazu mal in der Step7-Hilfe den Aufbau der DateTime-Variablen an (ist der sehr gut beschrieben).

Gruß
Larry
 
du musst zunächst mal date und time berechnen. dann kannst du mit fc3 aus den iec-fp dt daraus machen.

so erzeugst du dir deine time
Code:
l stunden
l l#3600000
*d
t std
l minuten
l l#60000
*d
t min
l sekunden
l l#1000
*d
t sek
l min
+d
l std
+d
t zeit //das ist die zeit im format ToD
das ganze noch für date berechnen und fc3 anwenden.
nur das das mit dem date nicht so einfach ist.

deshalb die frage nach dem hmi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Byte Inhalt Bereich

0 Jahr (19)90.....(20)89
1 Monat 1....12
2 Tag 1....31
3 Stunde 0...23
4 Minute 0....59
5 Sekunde 0....59
6 MSD v. ms 00...99
7(MSB) LSV v. ms 0....9
7(LSB) Wochentag 1....7 (1 = Sonntag)

WORD in BCD wandeln und entsprechend der Datentyp-Deklaration zuweisen
zu beachten beim Jahr ist, dass es nur zweistellig ist und das Jahr (20)00 einschließt
 
Hallo,
ja ... das ist möglich.
Sieh dir bitte dazu mal in der Step7-Hilfe den Aufbau der DateTime-Variablen an (ist der sehr gut beschrieben).

Gruß
Larry
stimmt. warum denke ich eigentlich so kompliziert ??? über bytes geht das natürlich ganz einfach.
also vergesst meinen vorigen post. :)
 
Wie das DATE_AND_TIME Format aufgebaut ist weiß ich ja bereits aber trotzdem konnte ich nirgends ein Beispiel dafür finden wie ich dieses Format befülle.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wie larry schon schrieb. schau dir die hilfe vom dateandtime an

erzeugte in einem db ein var von diesem typ. nehmen wir an die liegt ab dbb0

nun gehst du folgendermassen vor
l jahr //2-stellig
itb
t dbx.dbb 0
l monat
itb
t dbx.dbb 1
usw. in welchem byte was zu stehen hat steht in der erwähnten hilfe.
 
Code:
function_block fb 2
title =
version : 0.1




var_input
  jahr : Word ;    
  monat : Word ;    
  tag : Word ;    
  stunde : Word ;    
  minute : Word ;    
  sekunde : Word ;    
end_var
var_output
  out_dat : Date_and_time ;    
end_var
begin
network
title =


      lar1  p##out_dat; 


      l     #jahr; 
      itb   ; 
      l     w#16#ff; 
      uw    ; 
      t     b [ar1,p#0.0]; 


      l     #monat; 
      itb   ; 
      t     b [ar1,p#1.0]; 


      l     #tag; 
      itb   ; 
      t     b [ar1,p#2.0]; 


      l     #stunde; 
      itb   ; 
      t     b [ar1,p#3.0]; 


      l     #minute; 
      itb   ; 
      t     b [ar1,p#4.0]; 


      l     #sekunde; 
      itb   ; 
      t     b [ar1,p#5.0]; 




end_function_block
 
Zuletzt bearbeitet:
Zurück
Oben