TwinCAT3 - String_TO_DT Alternative

sidame00

Level-1
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
... diesen Befehl vermisse ich in TwinCAT3 sehr.

Hat jemand eine Idee wie ich diese Konvertierung hinbekomme?

Ich bastle mir einen eigenen Timestamp mit:
Code:
timestruct             : TIMESTRUCT;
....
fbFormatString1(	sFormat   := '%D.%D.%D %D:%D:%D.%D',
	arg1      := F_WORD(timestruct.wYear),
	arg2      := F_WORD(timestruct.wMonth),
	arg3      := F_WORD(timestruct.wDay),
	arg4      := F_WORD(timestruct.wHour),
	arg5      := F_WORD(timestruct.wMinute),
	arg6      := F_WORD(timestruct.wSecond),
	arg7      := F_WORD(timestruct.wMilliseconds),
	bError     => bError,
	nErrId     => nErrid,
	sOut       => sTimestamp);

Diese umständliche Timestamperstellung ist den Millisekunden geschuldet, die ich sonst nicht herbekomme. Leider benötige ich den String später wieder as DT.

Das es funktioniert ist bewiesen, da ich stattdessen auch den SQL-Platzhalter "CURRENT_TIMESTAMP" benutzen kann, dieser hat auch die Millisekunden..


Grüße und einen schönen Abend,

Sidame00
 
DT: kleinster Wert = 1s.
https://infosys.beckhoff.com/content/1033/tcplccontrol/html/tcplcctrl_date_and_time.htm

Was du nutzt ist die SystemTime.
Warum nicht einfach die in der TC2_Utility vorhandenen Bausteine dort nutzen. z.b. STRING_TO_SYSTEMTIME (bzw. umgekehrt). Es gibt auch ein SYSTEMTIME_TO_DT.

Oder aber ich kapiere nicht was du willst. Codeschnipsel aus dem INfosys sind ja gut und schön, nur nicht immer angepasst auf individuelle Anforderungen.

Guga
 
Hallo Sidame00,
könntest Du bitte einmal genau schildern was Du machen möchtest, dann können wir Dir sicher auch helfen. Zeitfunktionen in TC3 die die Zeit mit ms ausgeben gibt es auf jeden Fall.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Oliver,

vielen Dank.
Ich realisiere eine Datenbankanbindung. Neben den Daten wird auch ein Timestamp mitgeschrieben. Dieser sollte die Millisekunden ebenfalls anzeigen.

Aktuell pfusche ich mir dieses Datum über den im ersten Post aufgezeigten FormatString aus den einzelnen Attributen der TIMESTRUCT zusammen und wollte das in ein DT-Format bringen. Ich hatte nicht bedacht, dass DT immer auf 1s rundet.

Meine Frage nach der String_to_DT Methode hat sich somit erledigt. Ich gehe einfach direkt über Strings.
Ganz dem Motto: nicht schön, aber selten.

Wenn es eine performantere Lösung um an den Timestamp inkl den Millisekunden zu kommen gibt, bin ich für jeden Hinweis zu haben :)


Grüße,
Sidame00
 
Zurück
Oben