Uhrzeitformat umwandeln?

bastler

Level-2
Beiträge
258
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ist es möglich, den Datentyp "Time_of_Day" in einen anderen Datentyp zu wandeln? Ich möchte auf meiner Visu "IPS" die Uhrzeit anzeigen lassen, in dem ich den DB auslese, in dem die Uhrzeit drin steht. Meine Visu kennt aber diesen Datentyp nicht. Wie kann ich das realisieren?

MfG
bastler
 
Hallo,
da gibt es mehrere Möglichkeiten :
-Du rechnest dir deinen Time_of_Day (Millisekunden, die seit 0:00 Uhr vergangen sind) in Stunde, Minute und Sekunde um und zeigst die seperat an.
-Du baust dir aus dem Format Date_Time einen String und zeigst den an.

Was ist dir lieber ?

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich kann in der Visu aber nur Bytes oder Worde (ein Byte oder ein Word)aus der S7 lesen, als Statusvariable (die Variable, die z.B. aus DB3.DBB0 ließt) nimmt die Visu nur den Datentyp Integer an.

MfG
bastler
 
Zuletzt bearbeitet:
@bastler

Du nimmst in der SPS den Time_of_Day (Format hat ja Larry schon erklärt).
Aus diesen X Millisekunden seit 0:00 Uhr kannst du nun die Stunden, Minuten und Sekunden einzeln berechnen (du brauchst dazu Modulo, Division und Subtraktion) und in je eine Int schreiben, die du dann nebeneinander in der Visualisierung anzeigst. Probiers mal, schreib deinen Weg hier rein, bei Problemen hilft sicher jemand nach.
 
Hallo Bastler,

vielleicht solltest du deinem Namen mal alle Ehre machen und ein bisschen Basteln ;)

Wie bereits von Ralle und Larry Laffer erwähnt zeigt der Datentyp TOD die abgelaufenen Millisekunden seit Mitternacht an.

Mit ein bissel Gehirnschmalz hab ich mal schnell folgenden Code ausprobiert:

Code:
      L     #TOD_VAR                    //Stunden berechnen
      L     L#3600000
      /D    
      T     #Stunde

      L     #TOD_VAR                    //Rest berechnen
      L     L#3600000
      MOD   
      T     #Rest

      L     #Rest                       //Minuten berechnen
      L     L#60000
      /D    
      T     #Minute


      L     #Rest                       //neuen Rest berechnen
      L     L#60000
      MOD   
      T     #Rest


      L     #Rest                       //Sekunden berechnen
      L     1000
      /D    
      T     #Sekunde

      L     #Rest                       //Millisekunden berechnen
      L     1000
      MOD   
      T     #Millisek
habs gerade mal simuliert, scheint so zu funktionieren.

Mfg
uncle_tom
 
Hallo

Danke erstmal für die Vorschläge, ich werds heute Abend mal ausprobieren und meld mich dann nochmal.
Schönes Wochende.

MfG
bastler
 
Habe das Codebeispiel von uncle_tom mal ausprobiert. Die Stundenberechnung funktioniert, aber bei den Minuten habe ich immer den Wert 0. Genauer gesagt, die Sekunden zählen bis 60 hoch, dann ändert sich der Wert bei Minuten auf 1, die Sekunden zählen wieder los bei 0 und wenn die Sekunden 5 sind, werden die Minuten 0 und die Sekunden fangen auch wieder bei 0 an, zählen dann aber wieder bis 60.

Code:
    L     DB1.DBD    4	//Aktuelle Uhrzeit
      L     L#3600000
      /D    
      T     DB1.DBB   64	//Stunden


      L     DB1.DBD    4	//Aktuelle Uhrzeit
      L     L#3600000
      MOD   
      T     #Rest

      L     #Rest
      L     L#60000
      /D    
      T     DB1.DBB   66	//Minuten

      L     #Rest
      L     L#60000
      MOD   
      T     #Rest

      L     #Rest
      L     1000
      /D    
      T     DB1.DBB   68	//Sekunden

      L     #Rest
      L     1000
      MOD   
      T     DB1.DBB   70	//Millisekunden

MfG
bastler
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Bastler,

Hirn einschalten !

Die Variable #Rest ist bei dir wahrscheinlich vom Typ INT oder WORD.

Nachdem der Datentyp TOD aber ein Doppelwort benötigt sollte natürlich
auch die Rechenvariable gross genug sein um die Werte aufzunehmen.

Als probiers mal mit #Rest als DWord.

Mfg
uncle_tom
 
Hallo
Zu meiner Verteidigung:
Ich muß dazu sagen, dass ich bisher mit Step 7 nur Fehlersuche in vorhanden Anlagen gemacht habe.
Vielleicht hätte ich da auch selber drauf kommen können, aber mir fehlt halt noch etwas Erfahrung. Auf alle Fälle vielen Dank für die Hilfe.

MfG
bastler
 
Zurück
Oben