TOD (Time of day) vergleichen

Nijkamp

Level-1
Beiträge
32
Reaktionspunkte
0
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);
 
So in etwa:
Code:
[FONT=courier new]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;[/FONT]
Kannst natürlich auch über TOD gehen sowie die Stunden direkt mit 3.600.000 bzw. die Minuten mit 60.000 multiplizieren.
 
Zuletzt bearbeitet:
Zurück
Oben