
汇川AM中型PLC程序与分期付款程序:包含PLC时间管理、随机滚动码解密及标准触摸
屏模板程序
最近在工控项目里搞了个分期付款的PLC程序,客户要求设备按时间阶梯解锁功能。用汇川AM401系
列PLC搭IT7000触摸屏,整了个挺有意思的时间加密机制,分享几个关键点。
时间处理是基础中的基础,先看PLC端的时钟操作:
```st
//读取PLC实时时钟
T_Now := RTC_GetTime();
//设置设备初始运行时间(调试用)
IF b_SetTime THEN
RTC_SetTime(t_SetTime);
b_SetTime := 0;
END_IF
```
这里用RTC指令直接操作硬件时钟,调试时建议在触摸屏做个时间校准界面。注意时钟电池得保持
供电,有次现场调试忘记换电池,设备运行时间直接回到2000年...
核心的滚动码算法用了线性同余法混搭时间参数,每天凌晨自动生成:
```st
FUNCTION GenerateCode : DWORD
VAR_INPUT
n_Seed : DWORD;
END_VAR
VAR
dw_Temp : DWORD;
END_VAR
dw_Temp := n_Seed * 214013 + 2531011;
GenerateCode := (dw_Temp SHR 16) AND 0x7FFF;
```
这个随机数发生器在触摸屏和PLC里同步跑,种子数用年月日组合生成。比如当天是2023年8月15日
,种子就是230815,保证每天生成不同的初始码。