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

Ergebnis 1 bis 2 von 2

Thema: TOD (Time of day) vergleichen

  1. #1
    Registriert seit
    26.11.2013
    Beiträge
    32
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    Ich habe ein IM151-8 Siemens SPS und ein CX9020 Beckhoff IPC die daten austauschen.
    Jetzt muss Mann in ein HMI die Zeit eingeben können wann die daten in de IPC weggeschrieben müssen werden.
    Es passiert jetzt in die PLC weil noch keine HMI angeschlossen ist.
    Das SPS program hat jemand anders gemacht, in die SPS ist ein variable TIME angemacht(hier ist 20:30 reingeschrieben).
    Die wird nach die IPC verschickt, ich bekomme ihm als 1 DWORD.
    Wenn ich die DWORD auslese sehe ich 73800000, das ist die richtige Zeit (73800000/1000=73800s=1230 Minuten=20,5 Stunden). In die SPS ist die Zeit 20:30 eingestellt.
    Jetzt benutze ich in TwinCAT die function DWORD_TO_TOD, hier bekomme ich 20:30 (73800000Rein->20:30 Raus).
    Aber da kann ich nichts mit machen, ich wöll gern Stunden und Minuten vergleichen.
    Ich benutze die function Get_time um die aktuelle Zeit zu bekommen aus dem IPC, Die TimeStruct besteht aus mehere Wordte(Tag=Word, Stunde=Word, Minute=Word).

    So wie kann ich die beiden vergleichen?
    So sollte es aussehen müssen:

    Code:
    IF GetTime1.TIMESTR.wHour =TOD stunde AND GetTime1.TIMESTR.wMinute =TOD minute THEN
                    logbitIPC:=TRUE;
                    Changedata;
    END_IF
    Code:
    testd:= DWORD_TO_TOD(SendTimeD);
    Zitieren Zitieren TOD (Time of day) vergleichen  

  2. #2
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So in etwa:
    Code:
    IF DWORD_TO_DINT ( SendTimeD ) = 
        WORD_TO_DINT ( GetTime1.TIMESTR.wHour ) * 60 * 60 * 1000 + WORD_TO_DINT ( GetTime1.TIMESTR.wMinute ) * 60 * 1000
    THEN
        IF NOT logbitIPC THEN
            logbitIPC:= TRUE;
            Changedata;
        END_IF;
    ELSE
        logbitIPC:= FALSE;
    END_IF;
    Kannst natürlich auch über TOD gehen sowie die Stunden direkt mit 3.600.000 bzw. die Minuten mit 60.000 multiplizieren.
    Geändert von hucki (24.02.2014 um 23:55 Uhr) Grund: noch dafür gesorgt, das in der betreffenden Minute nicht x-mal gesendet wird

  3. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    Nijkamp (27.02.2014)

Ähnliche Themen

  1. Time of day 2.0
    Von badarni im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 05.02.2013, 12:07
  2. Antworten: 3
    Letzter Beitrag: 24.11.2011, 14:28
  3. TIME of DAY subtrahieren etc.
    Von hank12 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 29.05.2009, 14:42
  4. Time of Day
    Von enter im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 14.09.2007, 20:27
  5. Format Time Of Day wandeln
    Von Chrischde im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 17.05.2006, 08:15

Lesezeichen

Berechtigungen

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