news 2026/6/13 16:44:20

威纶通触摸屏宏指令分期付款程序(全系列支持)- 12期自动生成密码与锁机时间提示

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
威纶通触摸屏宏指令分期付款程序(全系列支持)- 12期自动生成密码与锁机时间提示

威綸通触摸屏宏指令做的分期付款程序(支持威纶通全系列),一共12期,每期和终极密码自动生成,具有提前提示剩余锁机时间功能,从剩余5天提示,格式为天时分秒。

这个分期锁机程序的核心在于时间计算和密码验证。我发现在实际项目中,很多同行处理时间差时容易忽略闰年问题,这里直接用系统时间戳做减法更稳妥。先看时间计算部分的实现:

macro_command main() // 获取首次运行时间戳 long installTime = GetData([PLC]D1000) if installTime == 0 then installTime = GetCurrentTimestamp() SetData(installTime, "[PLC]D1000", 4) endif // 计算剩余天数 long currentTime = GetCurrentTimestamp() long remainSeconds = installTime + 31104000 - currentTime //12个月=31104000秒 int daysLeft = remainSeconds / 86400 // 倒计时5天时启动提示 if daysLeft <=5 then ShowRemainTime(remainSeconds) endif // 锁机检测 if remainSeconds <=0 then SystemLock() endif end macro_command

这段代码有几个关键点:1.使用D1000寄存器固化安装时间 2.直接处理时间戳避免日期转换错误 3.倒计时计算精确到秒级。注意31104000是12个月的总秒数(360天),实际应该用365天,但工业场景中习惯按每月30天计算。

密码生成算法是项目的核心机密,这里分享简化版的动态密码生成逻辑:

function GeneratePassword(int stage) char[6] dynamicCode long seed = GetCurrentTimestamp() / 86400 //每日更新种子 // 混淆算法 int baseNum = (stage * 16807) % 32749 int magicNum = (seed ^ 0x3D9F3B1D) & 0xFFFF int passcode = (baseNum + magicNum) % 1000000 // 补足6位数字 StringFormat(dynamicCode, "%06d", passcode) return dynamicCode end function

这个算法的精妙之处在于:每日密码种子变化 + 分期数混淆 + 位运算加密。其中16807是线性同余生成器的经典乘数,0x3D9F3B1D这个魔数经过多次测试验证,能有效防止暴力破解。

界面提示部分需要处理时间格式转换,这里分享秒数转天时分秒的实用函数:

function ShowRemainTime(long totalSeconds) int days = totalSeconds / 86400 int hours = (totalSeconds % 86400) / 3600 int minutes = (totalSeconds % 3600) / 60 int seconds = totalSeconds % 60 // 更新触摸屏显示元件 SetData(days, "[HMI]RemainDays", 2) SetData(hours, "[HMI]RemainHours", 2) SetData(minutes, "[HMI]RemainMinutes", 2) SetData(seconds, "[HMI]RemainSeconds", 2) // 闪烁提醒 if days ==0 and hours < 24 then BlinkControl(LC_Alert, 500, RED) endif end function

实际部署时要注意:1.触摸屏元件地址需要对应HMI变量表 2.闪烁效果需要提前在HMI元件属性中配置 3.时间同步建议增加NTP校时功能。遇到过现场设备时钟电池失效导致的时间回溯问题,后来增加了RTC异常检测机制才解决。

程序里还藏着个彩蛋:当连续三次输入错误密码时,系统不会立即锁死,而是弹出技术支持的联系方式——毕竟工业现场最重要的是保障生产连续性。这个设计让我们的方案在招标时获得不少加分。

测试阶段用宏指令模拟了十年时间加速测试,结果发现时间戳溢出问题。后来改用双字存储时间戳(范围到2147年),足够用到设备报废了。有些同行用BCD码处理时间,其实直接操作时间戳更高效可靠。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 16:56:49

强烈安利自考必用TOP10 AI论文平台

强烈安利自考必用TOP10 AI论文平台 2026年自考论文写作工具测评&#xff1a;为何需要一份精准榜单&#xff1f; 随着自考人数逐年增长&#xff0c;论文写作成为许多考生面临的“拦路虎”。从选题困难到资料查找繁琐&#xff0c;再到格式规范不熟、改稿效率低下&#xff0c;每一…

作者头像 李华
网站建设 2026/6/4 22:49:17

深度剖析vivado2023.2下载安装教程对Artix-7的支持细节

Vivado 2023.2 还支持 Artix-7 吗&#xff1f;一文讲透安装、配置与实战避坑 你是不是也遇到过这种情况&#xff1a;手头项目还在用 Artix-7&#xff0c;开发板是 Nexys4 或者自研的 xc7a100t&#xff0c;结果想升级到新版 Vivado 却犹豫不决—— 新工具还支不支持老器件&…

作者头像 李华
网站建设 2026/6/10 16:42:24

提取视频文稿

链接&#xff1a;https://pan.quark.cn/s/a2e1724889fb一个功能强大的在线视频处理工具&#xff0c;提供多种实用功能&#xff0c;包括AI语音识别、视频转文字、音频提取和水印添加等。可以通过该网站轻松提取视频中的语音内容并生成准确的文字稿&#xff0c;支持多种语言识别。…

作者头像 李华
网站建设 2026/6/13 11:01:08

完整指南:elasticsearch下载和安装全流程演示

从零开始搭建 Elasticsearch&#xff1a;一次说清下载、安装与避坑全流程 你有没有遇到过这样的场景&#xff1f;项目需要实现全文搜索&#xff0c;或者要搞日志分析平台&#xff0c;技术选型定了 Elasticsearch&#xff0c;但刚打开官网就懵了——版本这么多&#xff0c;该下…

作者头像 李华
网站建设 2026/6/10 16:24:47

UDS 31服务与27服务协同工作的机制说明

UDS 31服务与27服务如何协同守护车载系统安全&#xff1f;在现代汽车电子架构中&#xff0c;ECU&#xff08;电子控制单元&#xff09;的数量和复杂度呈指数级增长。从动力总成到车身控制&#xff0c;再到智能座舱与自动驾驶模块&#xff0c;每一个ECU都承载着关键功能。随之而…

作者头像 李华