在实际生产中,需要把产品的生产时间写到下流设备(如喷码,RFID),如果依靠PLC内部的时间,可能不太可靠,以我使用的汇川AM403PLC,此PLC内部是一个电容维持掉电保持数据,但电容可维持的时间在15天左右,一旦超出此时间,掉电保持数据将丢失,而触摸屏是使用电池保持数据,电池保持时间的数据远大于电容。
HMI时间写入PLC,在HMI 帮助手册内有写,有实例教程可做参考:
1、在HMI中,系统变量选择需要的变量(年月日时间变量在此页面的Zui右侧,“系统时间”选项中选择)
2、在PLC中新建变量,关联到HMI中,系统变量有具体的年月日时分秒等变量,还有一个写入时间的bool变量(实例中使用的是INT数据类型,去改INT.0位的bool进行写入)
3、新建一个脚本,关联到INT变量上
变量关联脚本
4、PLC中调用时间写入功能块
FB_设置HMI时间(
xExecute:= hi_时间写入按钮.0, //hi_时间写入按钮.0(采用瞬时触发信号,触摸屏没接收到信号就结束了,采用长时间触发
uiMillisecond:= ,
uiSecond:= hui_秒,
uiMinute:= hui_分,
uiHour:= hui_小时,
uiDay:= hui_日,
uiMonth:= hui_月,
uiYear:= hui_年,
iTimezone:= ,
xResult=> ,
eErrorID=>);
由于时间写入功能块触发写入是上升沿,在实际情况中发现,每次上电,HMI的时间有时会写不进,通过观察,判断是PLC还未完成初始化完成就触发的时间写入,导入时间无法写入,此时有两种思路:1、采用定时器,每次上电若干时间后,再触发时间写入,如下程序段:
FB_上电延时写入PLC(IN:= gb_ECT初始化完成, PT:= T#30S, Q=> , ET=>);//上电延时30秒,再把触摸屏时间写入PLC
IF FB_上电延时写入PLC.Q THEN
hi_时间写入按钮.0 := TRUE;
END_IF
IF FB_设置HMI时间.xResult THEN
hi_时间写入按钮.0 := FALSE; //这个不需要复位,每次上电只写一次,断电后自动复位
END_IF
2、使用系统隐式功能块,了解PLC完成初始化再进行时间写入,关于隐式功能块图片如下:
变量xConfigFinished为true,代表所有配置参数的传送已经正确完成。通讯正在运行。此时可以进行时间写入,这样能保证每次上电都能把HMI时间写入到PLC,实例程序如下:
hi_时间写入按钮.0:=gb_ECT初始化完成;