FC块就是函数,通常将具有某种特定功能的代码进行封装,封装为一个函数(FC)。
在该博客中,会封装一个获取时间功能的函数块。如果你要是用的CodeSys平台,你只需要跟着步骤一步一步操作就行了,保姆级教程,包学包会!!!
1、操作步骤:
1、选择文件类型:
2、设置为FC类型文件:
3、将下面的代码复制到变量区:
FUNCTION FC_GetNowTime : string
VAR_INPUT
END_VAR
VAR
错误代码: SysTimeRtc.RTS_IEC_RESULT;
UTC实时时间戳: DWORD;
北京时间时间戳: DWORD;
时间解析: DATE_AND_TIME;
时间解析字符串: STRING;
当前时间格式化: STRING(255);
END_VAR
4、将下面的代码复制到代码区:
//1、获取UTC时间戳(精确到秒)
//输入参数:是为了接收函数执行时的错误信息(0表示没错误)
//输出参数:是UTC时间戳
UTC实时时间戳 := SysTimeRtcGet(错误代码);
//2、将UTC时间戳转换为北京时间戳【一定要这一步,不然差好几个小时】
//输入参数1:UTC时间戳
//输出参数2:接收转换后的时间戳参数
//输出参数:是为了接收函数执行时的错误代码
错误代码 := SysTimeRtcConvertUtcToLocal(UTC实时时间戳, 北京时间时间戳);
//3、将时间戳 转为 人看得懂格式:转换后的格式是:DT#2025-5-11-22:20:4
//输入参数:需要转换的时间戳
//返回参数:转换后的信息
时间解析 := UDINT_TO_DT(北京时间时间戳);
//4、转换成字符串
时间解析字符串:=TO_STRING(时间解析);
//5、通过 REPLACE 将字符串中的不必要的东西替换掉 替换后: '2025-05-11-22:22:44'
//STR1:源字符串
//STR2:修改的内容
//P=1从第一个字符开始
//L=3是长度=3
当前时间格式化:=REPLACE(STR1:=时间解析字符串,STR2:='',L:=3,P:=1);
//6、将结果放到返回信息中
FC_GetNowTime:=当前时间格式化;
5、测试调用:
ST:
LD:
打完收工!