当前位置: 首页 > news >正文

威纶通触摸屏宏指令:简易红绿灯控制程序实战教程

威纶通触摸屏宏指令红绿灯控制程序 威纶通触摸屏宏指令红绿灯控制程序,MT8071iE触摸屏 利用宏指令程序来控制,按下启动按钮,红绿灯系统运行,宏指令注释清晰,方便理解程序。 具有很好的学习意义和借鉴价值。

半夜调试威纶通触摸屏的宏指令时,突然发现用红绿灯程序来练手特别有意思。MT8071iE这款屏的宏指令虽然比不上高级编程语言,但玩转工控逻辑绰绰有余。咱们直接开撸代码,先搞个带震动反馈的启动按钮。

先定义几个关键变量:

local START_BTN = LW_Bit(100) -- 启动按钮对应LW100地址 local RED_LIGHT = LB_Bit(0) -- 红灯输出LB0 local YELLOW_LIGHT = LB_Bit(1) -- 黄灯LB1 local GREEN_LIGHT = LB_Bit(2) -- 绿灯LB2 local COUNTER = LW_DWord(200) -- 计时器用LW200双字

这里有个骚操作——用LW地址做按钮状态,LB地址直接驱动指示灯。实际接线时记得把LB点接到PLC的输出端子上,别傻乎乎接反了。

启动逻辑得带防抖:

function OnStart() if START_BTN == 1 then SetDevice(COUNTER, 0) -- 计时器清零 SetDevice(RED_LIGHT, 1) -- 先亮红灯 SetDevice(YELLOW_LIGHT, 0) SetDevice(GREEN_LIGHT, 0) Vibrate(500) -- 震动半秒提醒操作成功 end end

这个Vibrate函数是触摸屏自带的震动反馈,调试时用来确认按钮触发特别直观。注意宏指令的执行周期设置别超过500ms,否则震动会卡成震动棒。

红绿灯核心逻辑得用状态机:

function TrafficLight() if RED_LIGHT then COUNTER = COUNTER + 1 if COUNTER >= 30 then -- 红灯30秒 SetDevice(RED_LIGHT, 0) SetDevice(GREEN_LIGHT, 1) COUNTER = 0 end elseif GREEN_LIGHT then COUNTER = COUNTER + 1 if COUNTER >= 25 then -- 绿灯25秒 SetDevice(GREEN_LIGHT, 0) SetDevice(YELLOW_LIGHT, 1) COUNTER = 0 end else COUNTER = COUNTER + 1 if COUNTER >= 5 then -- 黄灯5秒 SetDevice(YELLOW_LIGHT, 0) SetDevice(RED_LIGHT, 1) COUNTER = 0 end end end

这里藏着个坑——宏指令没有真正的多线程,状态切换时如果计时器没清零会直接跳阶段。建议用Modbus协议同步PLC的计时器做双保险。

最后在宏指令循环里挂上这两个函数:

function main() OnStart() TrafficLight() delay(1000) -- 1秒周期执行 end

实际调试时发现delay参数设太小会导致触摸屏卡顿,建议配合PLC的扫描周期调整。记得在HMI画面上加个实时计时器显示,用LW200的数值除以10就是剩余秒数,贼方便。

这个方案最骚的是能直接移植到真实路口控制,把LB点换成继电器输出就能带220V信号灯。有次现场调试时突发奇想,给黄灯状态加了闪烁逻辑:

if YELLOW_LIGHT then local blink = COUNTER % 2 -- 取模实现闪烁 SetDevice(YELLOW_LIGHT, blink) end

结果甲方大爷看到后直呼专业,其实就两行代码的事。工控编程的乐趣,就在于用简单逻辑解决实际问题,这红绿灯程序算是入门必修课了。

http://www.jsqmd.com/news/178252/

相关文章:

  • 深度学习计算机毕设之基于随机森林的贷款可能性预测系统实现
  • 半桥LLC谐振变换器仿真模型,采用变频控制电压闭环控制,完美跟踪给定电压,可实现软开关
  • Numpy 数组操作
  • CST仿真超表面吸波器:全流程编码分束涡旋聚焦极化转换录屏教学
  • 学长亲荐8个AI论文网站,助你搞定本科生毕业论文!
  • Highcharts 配置语法详解
  • 深度学习毕设项目:基于YOLOv8的人物目标检测和分割(跟踪)
  • 【课程设计/毕业设计】基于随机森林的贷款可能性预测系统实现
  • FOC无刷电机控制方案:原理图、PCB及C语言代码源
  • Linux 文件与目录管理
  • 斜拉桥建模这事儿,得从材料属性开始抠细节。钢混组合梁的弹性模量可不能随便填,得按实际配筋率换算等效刚度。先上段材料定义的硬核操作
  • OpenEnler等Linux系统中安装git工具的方法
  • Go 语言基础语法
  • 【毕业设计】基于随机森林的贷款可能性预测系统实现
  • 【课程设计/毕业设计】基于YOLOv8的人物目标检测和分割(跟踪)
  • 如何通过数据分析实现精准市场营销
  • Razor C# 循环
  • Nodejs-HardCore: 模块管理与I/O操作详解
  • fast.ai携手AI:对话式工程解锁编程新纪元
  • 【毕业设计】基于YOLOv8的人物目标检测和分割(跟踪)
  • 生成式数据增强方法全解析
  • 深度学习毕设选题推荐:基于随机森林的贷款可能性预测系统实现
  • vscode c++可以找到声明却无法自动补全
  • Day5if单,双,多分支语句详解及其使用案例
  • 11. 图像轮廓
  • 手机照片视频太多怎么一键按年月分类整理并批量重命名?照片视频整理神器
  • kotlin协程-热数据通道Channel
  • 计算机深度学习毕设实战-基于随机森林的贷款可能性预测系统实现
  • 速学宝典!AI应用架构师的企业虚拟运营方案
  • 企业AI创新能力评估模型:AI应用架构师教你从0构建评估体系