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

Ergebnis 1 bis 3 von 3

Thema: Probleme mit der Umwandlung DINT_TO_TOD

  1. #1
    Registriert seit
    13.09.2012
    Beiträge
    2
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo erst mal,

    ich hab ein kleines Problem, und weiß nicht genau woranes liegt.
    Ich will über WinCC Start und Stoppzeiten für eine Anlage einstellen,
    da WinCC mit dem Format TOD nicht zurechtkommt, hab ich mir einen
    Baustein gemacht, der mir einerseits das Format
    TOD zerlegt in Stunden (INT) Minuten (INT) und Sekunden (INT).

    EIN_h := DINT_TO_INT(TOD_TO_DINT(EIN_IST)/1000/60/60);
    EIN_m:= DINT_TO_INT((TOD_TO_DINT(EIN_IST) - INT_TO_DINT(EIN_h)*1000*60*60)/1000/60);
    EIN_s := DINT_TO_INT((TOD_TO_DINT(EIN_IST) - INT_TO_DINT(EIN_h)*1000*60*60 - INT_TO_DINT(EIN_m)*1000*60)/1000);


    Weiters baue ich mir aus
    Stunden (INT), Minuten (INT) und Sekunden (INT) eine Zeit TOD

    EIN_SOLL := DINT_TO_TOD(EIN_h_s*3600000 + EIN_m_s*60000 + EIN_s_s*1000);

    Irgendwie funktioniert meine Umwandlung zum TOD nicht richtig,
    wenn ich z.B.: 23h 59m 59s eingebe, so bekomme ich
    23:58:53 zurück?

    Hat jemand eine Idee, wo mein Problem liegt.

    Danke Euch.

    LG
    Zitieren Zitieren Probleme mit der Umwandlung DINT_TO_TOD  

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

    Standard

    Zitat Zitat von MB0815 Beitrag anzeigen
    EIN_h := DINT_TO_INT(TOD_TO_DINT(EIN_IST)/1000/60/60);
    EIN_m:= DINT_TO_INT((TOD_TO_DINT(EIN_IST) - INT_TO_DINT(EIN_h)*1000*60*60)/1000/60);
    EIN_s := DINT_TO_INT((TOD_TO_DINT(EIN_IST) - INT_TO_DINT(EIN_h)*1000*60*60 - INT_TO_DINT(EIN_m)*1000*60)/1000);

    [...]

    EIN_SOLL := DINT_TO_TOD(EIN_h_s*3600000 + EIN_m_s*60000 + EIN_s_s*1000);
    Für eine Fehlersuche sieht mir das zu verwirrend aus.

    Versuche es mal mit diesen Formeln:
    Code:
    dEIN_IST_tmp := TOD_TO_DINT(EIN_IST)/1000;
    EIN_h := DINT_TO_INT(dEIN_IST_tmp / (60*60));
    EIN_m := DINT_TO_INT((dEIN_IST_tmp MOD (60*60))/60);
    EIN_s := DINT_TO_INT(dEIN_IST_tmp MOD 60);
    Code:
    EIN_SOLL := DINT_TO_TOD((INT_TO_DINT(EIN_h_s*60 + EIN_m_s)*60 + EIN_s_s)*1000);
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    MB0815 (21.07.2015)

  4. #3
    MB0815 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.09.2012
    Beiträge
    2
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich danke dir recht herzlich.
    Erstaunlicherweise geht es, wenn man es richtig macht.

Ähnliche Themen

  1. Step 7 Probleme mit der HardwareConfig
    Von LOBBE1 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 14.09.2014, 14:38
  2. TIA Probleme mit der Simulation
    Von PLC-Gundel im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 27.02.2014, 14:18
  3. Step 5 Probleme mit der S 5
    Von Prab im Forum Simatic
    Antworten: 37
    Letzter Beitrag: 01.08.2013, 08:30
  4. Probleme mit der Kommunikation
    Von udo_39 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 17.11.2011, 22:36
  5. Probleme mit der Uhrzeit
    Von juve im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 09.05.2008, 12:10

Stichworte

Lesezeichen

Berechtigungen

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