Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: S7: SCL: TIME_TO_TOD() funktioniert nicht?

  1. #1
    Registriert seit
    11.09.2014
    Beiträge
    101
    Danke
    13
    Erhielt 1 Danke für 1 Beitrag

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen

    Habe folgendes Programm (zyklisch):

    tNow : Time
    todENG_Time_1 : Time_Of_Day

    Code:
    #tNow := TIME_TCK();
    
    #todENG_Time_1 := TIME_TO_TOD(#tNow);
    Wobei die Rückgabe von TIME_TCK() ein "Time" Datentyp ist.

    Und wenn ich die Beobachte dann ist:
    tNow => 1D_2H_3M_4S_005MS

    jedoch

    todENG_Time_1 => 16#38E3_8E3A (oder TOD#00:00:00.001)

    1) Wieso Zeigt er mir nicht 02:03:04.005 an?
    2) Wieso steht da in der Beobachtungstabelle der Wert manchmal in Hex?

    Komischerweise funktioniert es wenn tNow klein ist, aber ein Überlauf sollte es ja nicht geben... Das müsste doch abgefangen werden im TIME_TO_TOD() ...

    Mach ich da was Falsch?

    Danke schon im Vorraus!

    Gruss
    Geändert von Automatinator (29.10.2015 um 16:24 Uhr)
    Zitieren Zitieren S7: SCL: TIME_TO_TOD() funktioniert nicht?  

  2. #2
    Registriert seit
    12.12.2013
    Ort
    Kaiserslautern
    Beiträge
    1.339
    Danke
    388
    Erhielt 219 Danke für 173 Beiträge

    Standard

    Da scheint es schon mal Problemen gegeben zu haben Systemzeit lesen mit der SFC 64 "TIME_TCK"

    Ein Kollege wollte auch mal das Format Date and Time anzeigen was nicht geklappt hat, und hat dann festgestellt das wenn er direkt hinter der variabele vom Typ date and time noch eine vom gleichen typ anlegt die anzeige richtig war. Sprich ein Dummy Date and time hinter dran machen.

    Am Code sehe ich nichts falsches.

    Bram
    Wenn es nicht auf STRAVA ist, ist es nicht passiert !!

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Die Antwort liegt so nah:
    TIA-Hilfe > Index > TIME_TO_
    Explizite Konvertierung von TIME
    TIME_TO_TOD
    Das Bitmuster des Quellwerts wird ohne Änderung rechtsbündig in den Zieldatentyp übertragen. Wenn der Quellwert außerhalb des Wertebereichs von TOD liegt, dann wird der Zieldatentyp nicht verändert.
    TOD (TIME_OF_DAY)
    Wertebereich
    TOD#00:00:00.000 bis TOD#23:59:59.999
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #4
    Automatinator ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.09.2014
    Beiträge
    101
    Danke
    13
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Die Antwort liegt so nah:
    TIA-Hilfe > Index > TIME_TO_
    Ja Bravo Siemens... wieso machen die Überhaupt ein Datenkonverter den man nicht brauchen kann? -.-

  5. #5
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard

    Zitat Zitat von Automatinator Beitrag anzeigen
    Ja Bravo Siemens... wieso machen die Überhaupt ein Datenkonverter den man nicht brauchen kann? -.-
    Was heisst hier nicht brauchen kann? Der macht genau das wofür er gebraucht ist. Er macht aus einem Time Format ein TOD Format. Wenn man ihm die richtigen Daten liefert. Ansonsten lässt er die Sache in Ruhe. Schlimmer wäre es doch wenn er einen ungültigen Eingangswert anfängt zu interpretieren (0 Rausschreibt z.b.).

    mfG René

  6. #6
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.733
    Danke
    317
    Erhielt 1.522 Danke für 1.283 Beiträge

    Standard

    Zitat Zitat von Automatinator Beitrag anzeigen
    Ja Bravo Siemens... wieso machen die Überhaupt ein Datenkonverter den man nicht brauchen kann? -.-
    Was bringt dir TimeTCK überhaupt in TOD? Ist doch sowieso eher sinnlose Rechenzeitverschwendung.
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  7. #7
    Automatinator ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.09.2014
    Beiträge
    101
    Danke
    13
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von vollmi Beitrag anzeigen
    Was heisst hier nicht brauchen kann? Der macht genau das wofür er gebraucht ist. Er macht aus einem Time Format ein TOD Format. Wenn man ihm die richtigen Daten liefert. Ansonsten lässt er die Sache in Ruhe. Schlimmer wäre es doch wenn er einen ungültigen Eingangswert anfängt zu interpretieren (0 Rausschreibt z.b.).
    Naja ich mein ja nur, bei allen anderen Datentypkonvertierern (die ich kenne) wird rechtsbündig übertragen und links geschnitten. Genau das würde doch auch Sinn beim TIME_TO_TOD() ergeben... TOD heisst ja auch, das Datum egal, Uhrzeit relevant...

    und vollmi was heisst hier richtige Daten? bei 0d_18h_23m_45s_965ms funktionierts und bei 1d_18h_23m_45s_965ms nicht mehr... wenn ich einen gültigen TIME wert gebe, soll er mir auch den korrekt gewandelten (unveränderten) Wert liefern und nicht den alten Wert...
    Geändert von Automatinator (02.11.2015 um 09:33 Uhr)

  8. #8
    Automatinator ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.09.2014
    Beiträge
    101
    Danke
    13
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von MSB Beitrag anzeigen
    Was bringt dir TimeTCK überhaupt in TOD? Ist doch sowieso eher sinnlose Rechenzeitverschwendung.
    Ich brauch ne ms genaue Zeitdifferenz... TIME_TCK() ist TIME und T_DIFF() braucht TOD...

  9. #9
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.733
    Danke
    317
    Erhielt 1.522 Danke für 1.283 Beiträge

    Standard

    Zitat Zitat von Automatinator Beitrag anzeigen
    Ich brauch ne ms genaue Zeitdifferenz... TIME_TCK() ist TIME und T_DIFF() braucht TOD...
    Warum so einen Aufwand, wenn ein ganz simples "-" auch reicht?
    Einzige Problematik du müsstest noch den Überlauf abfangen, hab ich persönlich dadurch gelöst das eine Differenz GT 150ms ignoriert wird.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  10. #10
    Automatinator ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.09.2014
    Beiträge
    101
    Danke
    13
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von MSB Beitrag anzeigen
    Warum so einen Aufwand, wenn ein ganz simples "-" auch reicht?
    Einzige Problematik du müsstest noch den Überlauf abfangen, hab ich persönlich dadurch gelöst das eine Differenz GT 150ms ignoriert wird.
    l
    Hmm Ich dachte, das geht nicht. Für was gibs dann den T_DIFF() ? :O

Ähnliche Themen

  1. SCL: Stringvergleich funktioniert nicht
    Von Scanda im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 07.08.2011, 11:12
  2. Timer in SCL funktioniert nicht
    Von karlm44 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 03.05.2010, 22:47
  3. SCL Installation funktioniert nicht
    Von ToBo im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 06.08.2009, 13:15
  4. MID-FC in SCL funktioniert nicht
    Von nobby_nobbs im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 19.03.2009, 02:14
  5. Funktionsaufruf funktioniert nicht - SCL
    Von amateur im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 16.10.2007, 13:49

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •