新闻分类
联系方式
|
|
维纶触摸屏计时功能实现!
发布时间:2025-11-15 浏览次数:33 返回列表
维纶触摸屏(Weintek HMI,如 MT/MTi/IM 系列)的计时功能可通过内部寄存器(LW 区) 结合宏指令或动画元件属性实现,支持 “倒计时”“正计时”“累计计时” 等场景,具体方法如下: 维纶触摸屏内置实时时钟(RTC),并提供掉电保持寄存器(如 LW9000~LW9999) 存储计时数据,通过宏指令读取系统时间或触发计时逻辑,再将结果显示在界面上。 适用于记录设备运行时长、工序耗时等。 步骤 1:创建变量在 “系统参数→设备→内部寄存器” 中,定义 3 个掉电保持寄存器: LW9000:计时状态(0 = 停止,1 = 启动);
LW9001:起始时间(存储开始计时时的系统秒数);
LW9002:累计秒数(当前计时值,= 当前秒数 - 起始秒数)。
步骤 2:编写宏指令(触发计时)新建宏指令(“编辑→宏指令”),实现 “启动 / 停止” 逻辑: basic // 启动计时(当启动按钮按下,LW9000=1且首次触发)if (GetData(LW, 9000, 1) == 1 && GetData(LW, 9003, 1) == 0) {
SetData(LocalSecond(), LW, 9001, 1); // 记录当前系统秒数到LW9001
SetData(1, LW, 9003, 1); // 标记已启动(避免重复赋值)
}// 停止计时(当停止按钮按下,LW9000=0)if (GetData(LW, 9000, 1) == 0) {
SetData(0, LW, 9003, 1); // 重置启动标记
}// 计算累计时间(仅在启动状态)if (GetData(LW, 9000, 1) == 1) { int current = LocalSecond(); // 获取当前系统秒数(0~86399) int diff = current - GetData(LW, 9001, 1);
if (diff < 0) diff += 86400; // 跨天处理(一天86400秒)
SetData(diff, LW, 9002, 1); // 存储累计秒数到LW9002
}步骤 3:界面显示放置 “数值显示” 元件,关联LW9002,并在 “格式” 中设置为 “时:分: 秒”(如%H:%M:%S),自动将秒数转换为时间格式。放置 “按钮” 元件,分别关联LW9000的 “置 1”(启动)和 “置 0”(停止)操作。
适用于定时停机、工序倒计时等。 步骤 1:创建变量 LW9010:倒计时状态(0 = 停止,1 = 运行);
LW9011:设定时间(秒,如 300 秒 = 5 分钟);
LW9012:剩余时间(秒,= 设定值 - 已流逝秒数)。
步骤 2:编写宏指令 basic // 启动倒计时(首次触发时初始化剩余时间)if (GetData(LW, 9010, 1) == 1 && GetData(LW, 9013, 1) == 0) {
SetData(GetData(LW, 9011, 1), LW, 9012, 1); // 剩余时间=设定值
SetData(LocalSecond(), LW, 9014, 1); // 记录启动时的系统秒数
SetData(1, LW, 9013, 1); // 标记已启动
}// 停止倒计时if (GetData(LW, 9010, 1) == 0) {
SetData(0, LW, 9013, 1); // 重置标记
}// 倒计时计算(每秒递减1)if (GetData(LW, 9010, 1) == 1) { int current = LocalSecond();
int past = current - GetData(LW, 9014, 1);
if (past < 0) past += 86400;
int remain = GetData(LW, 9011, 1) - past;
if (remain <= 0) {
remain = 0;
SetData(0, LW, 9010, 1); // 倒计时结束,自动停止
}
SetData(remain, LW, 9012, 1);}步骤 3:界面配置 用 “数值输入” 元件设置LW9011(倒计时总时长); 用 “数值显示” 元件显示LW9012,格式设为 “时:分: 秒”; 按钮控制LW9010的启停,倒计时结束后可联动报警(如 “位状态指示灯” 闪烁)。
适用于按每天固定时间执行操作(如 8:00 启动设备)。 步骤 1:读取系统时间维纶 HMI 的系统时间寄存器: 步骤 2:宏指令判断 basic // 每天8:00:00触发动作(置位LW9020)if (GetData(LW, 9263, 1) == 8 && GetData(LW, 9264, 1) == 0 && GetData(LW, 9265, 1) == 0) {
SetData(1, LW, 9020, 1); // 触发信号
} else {
SetData(0, LW, 9020, 1); // 其他时间复位
}步骤 3:联动控制将LW9020关联到 PLC 的输入点(通过 HMI 与 PLC 的通讯),实现定时控制逻辑。
掉电保持:需使用LW9000~LW9999区间的寄存器(默认掉电保持),避免断电后计时数据丢失; 宏指令执行周期:在 “宏指令属性” 中设置执行周期(如 1000ms,即每秒执行一次),过短会占用 HMI 资源,过长会导致计时误差; 跨天处理:正计时 / 倒计时超过 24 小时需在宏指令中增加天数计算(如diff = diff % 86400取余); 精度限制:基于系统秒数的计时精度为 1 秒,若需更高精度(如 100ms),可读取LW9266(毫秒,0~999)并调整宏指令周期。
通过以上方法,可灵活实现维纶触摸屏的各类计时功能,核心是利用内部寄存器存储状态和数据,通过宏指令关联系统时间完成逻辑计算。
|