news 2026/4/16 0:01:40

威纶通触摸屏宏指令分期付款程序(全系列支持)- 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/4/15 17:59:37

IEEE RBTS BUS4标准系统 (roy billinton test system)

IEEE RBTS BUS4标准系统 (roy billinton test system) Matlab/simulink仿真 该模型自己搭建(Matlab 2016a)&#xff0c;与标准参数一致&#xff0c;可观测电压&#xff0c;潮流。 还可接入各类故障、DG等最近在折腾电力系统仿真&#xff0c;发现IEEE RBTS BUS4真是个不错的练手…

作者头像 李华
网站建设 2026/4/15 15:24:02

边缘设备模型加载提速

&#x1f493; 博客主页&#xff1a;借口的CSDN主页 ⏩ 文章专栏&#xff1a;《热点资讯》 边缘设备模型加载提速&#xff1a;能耗优化与未来路径目录边缘设备模型加载提速&#xff1a;能耗优化与未来路径 引言&#xff1a;边缘AI的加载瓶颈与核心价值 现在时&#xff1a;主流技…

作者头像 李华
网站建设 2026/4/15 13:19:00

基于 YOLOv8 的智能杂草检测识别实战 [目标检测完整源码]

基于 YOLOv8 的智能杂草检测识别实战 [目标检测完整源码] 引言&#xff1a;为什么杂草识别是智慧农业中的“硬问题”&#xff1f; 在智慧农业场景中&#xff0c;杂草识别一直被认为是目标检测中难度较高的一类任务&#xff0c;原因主要集中在以下几点&#xff1a; 杂草与作物…

作者头像 李华
网站建设 2026/4/15 15:22:45

1小时打造简易SQL注入检测工具原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速开发一个简易SQL注入检测工具原型&#xff0c;要求实现以下核心功能&#xff1a;1) 基础URL参数检测 2) 错误型注入识别 3) 简单结果返回。界面只需包含&#xff1a;URL输入框…

作者头像 李华
网站建设 2026/4/15 15:21:10

我想使用这个Qt Designer设计一个调用YOLO目标检测的界面,要求越简单越好,我只是想学会使用这个Qt Designer,你给我详细的步骤吧,比如如何画好布局界面,槽,响应什么的。

问题描述: 我想对现有的YOLO检测模型开发一个检测界面,使用Qt Designer设计一个调用YOLO目标检测的界面,然后使用pyinstaller打包成exe程序。 问题解答: 第一步: 先下载好ultralytics代码,然后配置环境,调通程序。 第二步骤: 利用Qt Designer设计设计界面,下面是…

作者头像 李华