meta data for this page
  •  

lamaLibrary: DT to string

System time convert to string date / time / date_and_time format.

FUNCTION_BLOCK "dtToStringDateAndTime"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR 
      timeDT : DATE_AND_TIME;
      timeDTL {InstructionName := 'DTL'; LibVersion := '1.0'} : DTL;
      stampDate : STRING;
      stampTime : STRING;
      stampDT : STRING;
      tempStr : STRING;
      retVal : INT;
   END_VAR
 
 
BEGIN
    // lamaPLC source: https://lamaplc.com/doku.php?id=lamalib:dt_to_string
 
	// read local system time
	#retVal := RD_LOC_T(#timeDT);
	// convert it to dtl struct
	#timeDTL := DT_TO_DTL(#timeDT);
 
	// select year
	#stampDate := UINT_TO_STRING(#timeDTL.YEAR);
	#stampDate :=  DELETE(IN := #stampDate, L := 1, P := 1);
	#stampDate := CONCAT(IN1 := #stampDate, IN2 := '-');
 
	// select month
	#tempStr := USINT_TO_STRING(#timeDTL.MONTH);
	#tempStr := DELETE(IN := #tempStr, L := 1, P := 1);
	IF #timeDTL.MONTH < 10 THEN // if need it to fill with a zero
	    #stampDate := CONCAT(IN1 := #stampDate, IN2 := '0');
	END_IF;
	#stampDate := CONCAT(IN1 := #stampDate, IN2 := #tempStr);
	#stampDate := CONCAT(IN1 := #stampDate, IN2 := '-');
 
	// select day
	#tempStr := USINT_TO_STRING(#timeDTL.DAY);
	#tempStr := DELETE(IN := #tempStr, L := 1, P := 1);
	IF #timeDTL.DAY < 10 THEN // if need it to fill with a zero
	    #stampDate := CONCAT(IN1 := #stampDate, IN2 := '0');
	END_IF;
	#stampDate := CONCAT(IN1 := #stampDate, IN2 := #tempStr);
 
	// select hour
	#stampTime := UINT_TO_STRING(#timeDTL.HOUR);
	#stampTime := DELETE(IN := #stampTime, L := 1, P := 1);
	IF #timeDTL.HOUR < 10 THEN // if need it to fill with a zero
	    #stampTime := CONCAT(IN1 := '0', IN2 := #stampTime);
	END_IF;
	#stampTime := CONCAT(IN1 := #stampTime, IN2 := '-');
 
	// select minute
	#tempStr := UINT_TO_STRING(#timeDTL.MINUTE);
	#tempStr := DELETE(IN := #tempStr, L := 1, P := 1);
	IF #timeDTL.MINUTE < 10 THEN // if need it to fill with a zero
	    #tempStr := CONCAT(IN1 := '0', IN2 := #tempStr);
	END_IF;
	#stampTime := CONCAT(IN1 := #stampTime, IN2 := #tempStr);
	#stampTime := CONCAT(IN1 := #stampTime, IN2 := '-');
 
	// select second
	#tempStr := UINT_TO_STRING(#timeDTL.SECOND);
	#tempStr := DELETE(IN := #tempStr, L := 1, P := 1);
	IF #timeDTL.SECOND < 10 THEN // if need it to fill with a zero
	    #tempStr := CONCAT(IN1 := '0', IN2 := #tempStr);
	END_IF;
	#stampTime := CONCAT(IN1 := #stampTime, IN2 := #tempStr);
 
 
	// generate dt
	#stampDT := #stampDate;
	#stampDT := CONCAT(IN1 := #stampDT, IN2 := ' : ');
	#stampDT := CONCAT(IN1 := #stampDT, IN2 := #stampTime);
 
END_FUNCTION_BLOCK

Main site > LamaLibrary Simatic

lamaLibSimatic topics on lamaPLC