Windows-Systemzeit auf CX einstellen via SPS

Begonnen von mike_roh_soft, 13. Januar 2012, 11:26:09

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

mike_roh_soft

Hallo,

ich möchte über meine Visu ein Bit in der SPS anstoßen damit dann die eingegebene Zeit (z.b. 12:45:00) als Windowssystemzeit auf dem CX eingetragen wird.

Ich dachte an den FB NT_SetLocalTime von Beckhoff.
Nun will dieser aber ein TIMESTRUCT von mir haben.
Mir liegt die Zeit aus der Visu aber als STRING vor.

Muss ich jetzt ein TIMESTRUCT deklarieren und den String mühsam zerlegen und in die einzelnen Elemente der Struktur schieben?
Oder gibt es ne kleine Konvertierung oder so?


VAR
fbiSetLocalTime :NT_SetLocalTime;
bSetLocalTime :BOOL;
stSetLocalTime :TIMESTRUCT;
END_VAR


fbiSetLocalTime(
NETID:= '',
TIMESTR:= ,
START:= bSetLocalTime,
TMOUT:= t#3s,
BUSY=> ,
ERR=> ,
ERRID=> );


Gruß Mike

peewit

hallo

nachdem timestruct aus der windowswelt kommt und dies wiederum nur bei beckohff zur anwendung kommt, gibt es in oscat keine bausteine die mit timestruct arbeiten.

im prinzip musst du den string zerlegen, wandeln und in timestruct eintragen

eine kleine hilfe wäre eventuell der baustein "FSTRING_TO_DT"
aber im prinzip konvertieren wir hier sinnlos im kreis


mike_roh_soft

OK,

und gibt es sonst nen Ansatz wie man das bewerkstelligen könnte?

Gruß

peewit


1. deine dt-string mit FSTRING_TO_DT wandeln
2. dann die einzelnen zeitelemente aus DT herausholen und als word in die struktur speichern
3. beckhoff zeit setzen aufrufen

diese gewisse arbeit wird dir nicht erspart bleiben


ZitatTYPE TIMESTRUCT:
STRUCT
   wYear            : WORD;
   wMonth           : WORD;
   wDayOfWeek       : WORD;
   wDay             : WORD;
   wHour            : WORD;
   wMinute          : WORD;
   wSecond          : WORD;
   wMilliseconds    : WORD;
END_STRUCT

mike_roh_soft

Ne klar.. ich wollte nur nicht das Rad neu erfinden!

Danke für den Tipp mit dem FSTRING_TO_DT !

Den Rest bekomme ich schon hin!

Bye