Step 7 Uhrzeit auslesen

christian_87

Level-1
Beiträge
33
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, wie kann ich die Uhrzeit auslesen? habe einen SFC erstellt Read System Clock..Das Problem ist da bekomme ich ja nur Datum + Uhrzeit.Ich brauche nur die uhrzeit wie kann ich das trennen? bei Tia Portal ist das T_conv aber wie ist das bei step7 hab dazu nichts gefunden:confused:
Gruß Christian
 
Zuviel Werbung?
-> Hier kostenlos registrieren
TOD --> TIME
Code:
L #TOD_Variable
T #TIME_Variable

Step7 Hilfe > Format des Datentyps TIME_OF_DAY
Hinweis

Der Datentyp TOD wird als vorzeichenlose Ganzzahl in Millisekunden gespeichert, wobei Null gleich Mitternacht ist.

Step7 Hilfe > Zeittypen
Zeitdauer: IEC-Zeit in Schritten von 1 ms.
Schlüsselwort: TIME, T
Bitbreite: 32
Wertebereich: -T#24D_20H_31M_23S_647MS bis T#24D_20H_31M_23S_647MS

Tageszeit: Uhrzeit in Schritten von 1 ms.
Schlüsselwort: TIME_OF_DAY, TOD
Bitbreite: 32
Wertebereich: TOD#0:0:0.0 bis TOD#23:59:59.999

Welche Funktionen stehen jeweils in STEP 7 V5.5 und im TIA Portal für die Bearbeitung der Datentypen DT und DTL zur Verfügung?

Harald
 
.
... Ich brauche nur die uhrzeit wie kann ich das trennen? ...


Nimm dein TOD --> = Uhrzeit in ms
teile durch 1000 --> = Ergebnis in s

und benutze mit den berechneten Sekunden dann das folgende Programm.

Als Ergebnis hast du deine Tage, Stunden, Minuten und Sekunden als getrennte Werte.


Wie kann ein vorhandener Sekundenwert in Tage, Stunden, Minuten und Sekunden berechnet werden?

Sekundenwandler_01.jpg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
MOVE ist richtig. Schalte die Ansicht auf AWL um, dann siehst Du die L + T

TOD#- und T#-Werte online beobachten:
Der FUP/KOP/AWL-Editor kann nur Dezimal-, Hexadezimal- und Gleitpunkt-Darstellung.
Nimm globale Variablen (Merker oder DB), die kannst Du im richtigen Format in der Variablentabelle oder direkt in der DB-Datenansicht beobachten.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schau Dir mal die Bibliothek "Standard Library > IEC Function Blocks" an, da gibt es fertige Funktionen.
(im FUP/KOP/AWL-Editor "Ansicht > Übersichten", dann den interessierenden Baustein markieren und F1.
oder siehe im Referenzhand "System- und Standardfunktionen für S7-300/400" das Kapitel "IEC-Funktionen")

Zuerst muß Dir aber erstmal klarwerden, was Du mit "Zeiten subtrahieren" meinst:
- willst Du die Zeitdauer zwischen 2 Zeitpunkten (z.B. zwischen 2 Uhrzeiten) berechnen? Können die 2 Zeitpunkte über Mitternacht drüber weg liegen?
- willst Du von einem Zeitpunkt (z.B. Uhrzeit) eine Zeitdauer (z.B. 1 Stunde) abziehen, um den Zeitpunkt 1 Stunde vor dem ersten Zeitpunkt zu berechnen (um z.B. einen Wecker zu stellen)?
- willst Du 2 Zeit-Dauern voneinander abziehen? (z.B. ein Läufer benötigt 15 Sekunden für eine Strecke, ein zweiter Läufer benötigt 18 Sekunden. Wieviel Sekunden braucht der zweite Läufer länger als der erste?)

Ich halte es übrigens auch für sinnfrei, eine Uhrzeit durch 1000 zu teilen (wie SoftMachine das vorschlug). Ein Zeitpunkt ist ein fixer Zeitpunkt: wenn es 12:34 Uhr ist, wie spät ist es, wenn ich die Uhrzeit durch 1000 teile???
Eine Zeitdauer kann man umrechnen. Eine Zeitdauer von 12345000ms kann man sinnvoll in 12345s umrechnen.

Harald
 
ich will zu 3 bestimmten Zeiten eine Prüfung machen beispielsweise 6-14-und 22 uhr .Die Zeiten sollten aber einstellbar sein. Weil ich Probleme hatte das es nicht immer geklappt hat wenn man abfragt ob (Zeit)=(aktuelle Uhrzeit) wollte ich abfragen wenn (aktuelle Uhrzeit)>(Zeit-1s)&(aktuelle Uhrzeit)<(Zeit+1s) und dann einen Merker setzen.also ein Fenster von 2s.
 
Dass format Time ist gleich wie ein Dint , 1sec ist in Time format gleich an L#1000 =1000 ms.
Mit Sub D kan man ein zeit berechene der 1 sec kleiner ist wie die eingestelte zeit und mit Add D ein zeit welche 1 sec grosser ist. Die schaltzeit must grosser oder gleich 1 sec sind und kleiner oder gleich 23h 59 min 58sec 999 ms sind um mit -1sec und +1sec in das TOD format zu passen.

Gruss,
Joop
 
Zuviel Werbung?
-> Hier kostenlos registrieren
L TOD
L 1000
/D
L 1000
*D
T TIME

Hiermit werden nun die millisekunden eliminierte, und das eine SPS Zyklus > 1 Sekunde dauert, die Wahrscheinlichkeit = 0.

Mfg
Manuel
 
.

Ich halte es übrigens auch für sinnfrei, eine Uhrzeit durch 1000 zu teilen (wie SoftMachine das vorschlug). Ein
Zeitpunkt ist ein fixer Zeitpunkt: wenn es 12:34 Uhr ist, wie spät ist es, wenn ich die Uhrzeit durch 1000 teile???
Eine Zeitdauer kann man umrechnen.
Eine Zeitdauer von 12345000ms kann man sinnvoll in 12345s umrechnen. [ Also doch durch 1000 teilen ? :rolleyes: ]
Harald

ROT von mir.

@Harald
Ich glaube, du solltest dir die Eingangsfrage nochmal genauer durchlesen, was
der TE dort gewünscht hat und auf die ich im Beitrag#6 Bezug genommen habe.

Auf jeden Fall ist es unhöflich, einen früheren Beitrag zu einem weitaus späteren
Zeitpunkt als sinnfrei zu bezeichnen, weil das Thema in der Zwischenzeit ganz
andere Wendungen genommen hat und du unbedingt deine Lösung durchsetzen
möchtest.
 
.

Ich halte es übrigens auch für sinnfrei, eine Uhrzeit durch 1000 zu teilen (wie SoftMachine das vorschlug). Ein
Zeitpunkt ist ein fixer Zeitpunkt: wenn es 12:34 Uhr ist, wie spät ist es, wenn ich die Uhrzeit durch 1000 teile???
Eine Zeitdauer kann man umrechnen.
Eine Zeitdauer von 12345000ms kann man sinnvoll in 12345s umrechnen. [ Also doch durch 1000 teilen ? :rolleyes: ]
Harald
ROT von mir.

@Harald
Ich glaube, du solltest dir die Eingangsfrage nochmal genauer durchlesen, was
der TE dort gewünscht hat und auf die ich im Beitrag#6 Bezug genommen habe.

Auf jeden Fall ist es unhöflich, einen früheren Beitrag zu einem weitaus späteren
Zeitpunkt als sinnfrei zu bezeichnen, weil das Thema in der Zwischenzeit ganz
andere Wendungen genommen hat und du unbedingt deine Lösung durchsetzen
möchtest.

@SoftMachine
Ich glaube, statt mimosenhaft zu reagieren solltest DU meinen Beitrag und die Eingangsfrage nochmal genauer durchlesen...
Ich habe nicht Deinen Beitrag als sinnfrei bezeichnet, sondern den Vorschlag, eine Uhrzeit durch 1000 zu teilen - weil das ist nun wirklich sinnfrei.

Zweitens hat Dein Beitrag die Eingangsfrage des TE in keinster Weise beantwortet... Dein Beitrag hat sogar mit überhaupt keiner Frage des TE etwas zu tun... ich sage mal höflich, Du hast ihn vielleicht missverstanden... der TE fragte, wie er Datum und Uhrzeit trennen kann (aus einem DATE_AND_TIME) und Dein Beitrag soll ihm zeigen, wie man eine Anzahl Sekunden (aus einem DINT) in Tage, Stunden, Minuten und Sekunden umwandelt.
Zu dem Zeitpunkt hatte der TE sogar schon längst erklärt, daß sein Eingangsproblem erledigt ist ("Ok jetzt klappts!") und er nunmehr eine neue Frage hat ("wie wandel ich jetzt TOD in time um?")

Drittens habe ich dem TE gar keine Lösung vorgeschlagen, welche ich jetzt "durchsetzen möchten" könnte. Nur Nachfragen gestellt und Quellenhinweise zur Selbsthilfe gegeben. Da mußt Du irgendwas mit anderen Threads verwechseln... :roll:

Viertens teile ich in meinem Beitrag nicht eine Uhrzeit durch 1000 sondern eine Zeitdauer - ich dachte, ich hätte die Erklärung idiotensicher formuliert. :confused:

Im übrigen war Dein Beitrag nicht der Beitrag #6 sondern #8.


Ich schlage vor, Du schläfst Dich erstmal aus und liest dann meinen Beitrag und die Beiträge vom TE nochmal mit voll arbeitsfähig eingeschaltetem Hirn. :cool:
Hilfreich für Dich wäre sicher auch, wenn Du mal nach dem Unterschied zwischen Zeitpunkt und Zeitdauer googelst (da gibt es schöne Arbeitsblätter für) - soll ich Dir ein paar Fundstellen HIER und HIER und HIER verlinken? ;)


Appropos verlinken: Ich hatte Dir schon mehrmals erklärt, wie man Siemens-Support-Beiträge korrekt verlinkt, doch wenn man die Beiträge nicht richtig liest und nicht versteht daß die mit der Frage nichts zu tun haben, dann kommt es auf den korrekten Link auch nicht mehr drauf an..

Harald
 
Zurück
Oben