Files
2026-06-29 16:28:48 +02:00

84 lines
1.7 KiB
Plaintext

FUNCTION "FC_TimeAsString" : String
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_TEMP
tInt : DInt;
tDTL {InstructionName := 'DTL'; LibVersion := '1.0'} : DTL;
sTmp : String[10];
END_VAR
BEGIN
#tInt := RD_LOC_T(#tDTL);
#sTmp := UINT_TO_STRING(#tDTL.HOUR);
IF #tDTL.HOUR < 10 THEN
#FC_TimeAsString[1] := '0';
#FC_TimeAsString[2] := #sTmp[2];
ELSE
#FC_TimeAsString[1] := #sTmp[2];
#FC_TimeAsString[2] := #sTmp[3];
END_IF;
#FC_TimeAsString[3] := ':';
#sTmp := USINT_TO_STRING(#tDTL.MINUTE);
IF #tDTL.MINUTE < 10 THEN
#FC_TimeAsString[4] := '0';
#FC_TimeAsString[5] := #sTmp[2];
ELSE
#FC_TimeAsString[4] := #sTmp[2];
#FC_TimeAsString[5] := #sTmp[3];
END_IF;
#FC_TimeAsString[6] := ':';
#sTmp := USINT_TO_STRING(#tDTL.SECOND);
IF #tDTL.SECOND < 10 THEN
#FC_TimeAsString[7] := '0';
#FC_TimeAsString[8] := #sTmp[2];
ELSE
#FC_TimeAsString[7] := #sTmp[2];
#FC_TimeAsString[8] := #sTmp[3];
END_IF;
#FC_TimeAsString[9] := ',';
#sTmp := UDINT_TO_STRING(#tDTL.NANOSECOND);
IF #tDTL.NANOSECOND < 1000000 THEN
#FC_TimeAsString[10] := '0';
#FC_TimeAsString[11] := '0';
#FC_TimeAsString[12] := '0';
ELSIF #tDTL.NANOSECOND < 10000000 THEN
#FC_TimeAsString[10] := '0';
#FC_TimeAsString[11] := '0';
#FC_TimeAsString[12] := #sTmp[2];
ELSIF #tDTL.NANOSECOND < 100000000 THEN
#FC_TimeAsString[10] := '0';
#FC_TimeAsString[11] := #sTmp[2];
#FC_TimeAsString[12] := #sTmp[3];
ELSE
#FC_TimeAsString[10] := #sTmp[2];
#FC_TimeAsString[11] := #sTmp[3];
#FC_TimeAsString[12] := #sTmp[4];
END_IF;
END_FUNCTION