Windows-Systemzeit auf CX einstellen via SPS

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

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

OK,

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

Gruß

  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

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

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