在工控这行待久了,会发现一个挺实在的事:不少项目里那台PLC,其实压根没在干正经活,就是在那做几个开关量互锁、搞个加减计数、再管一管报警灯闪烁。你花大几百买台PLC,配电源、接线、写程序、调试,折腾半天,结果它干的活还没屏上的脚本重。
组态屏脚本这东西,说白了就是触摸屏自带的编程功能。威纶通叫宏指令,昆仑通态叫脚本程序,西门子屏也有各自的脚本引擎。语言基本都是类C的语法,但比真正的C简单太多了。什么指针、内存管理、动态对象创建,统统不用碰。脚本里能做的事就两样:操作变量,调用系统函数。你去翻任何一款组态软件的脚本手册,翻来覆去就那么几类语句——赋值、条件判断、循环、退出。没了。
拿最典型的一个场景来说。你做一个设备运行时间累计的功能,传统做法是PLC里写个定时器,把秒数累加到一个寄存器,屏上读过来显示。用脚本的话,屏上建一个整型变量“运行秒数”,再建一个循环策略,执行周期设为1000毫秒,脚本就写“运行秒数 = 运行秒数 + 1”,完事。设备启动时给个信号开始累加,停止时把循环策略停掉就行。整个过程不需要PLC参与任何逻辑运算,屏自己就搞定了。
再往上加一点逻辑,比如三个水泵的切换控制,同一时间只能有一台运行。在威纶通里用宏指令写,就是把三个开关的状态读进来,哪个按下了就把另外两个强制置零再写回去。代码不超过十行,GetData取状态,if判断,SetData写回去,就这么朴素。昆仑通态那边也差不多,IF THEN ENDIF 两行完事,甚至不需要 ELSE 分支。
不过这里有个新手容易栽的坑,得提前说清楚。组态屏的脚本跑在HMI操作系统上,循环策略的执行周期是有下限的,通常最快也就五十毫秒左右,有些低端屏甚至只能做到一百毫秒以上。这意味着你写一个“按下按钮亮灯”的响应,实际延迟可能到两三百毫秒才看到结果。做设备的人对这个延迟是有体感的,超过两百毫秒操作员就会觉得“这屏卡了”。另一个坑是脚本一旦进入一个长循环,整个屏幕的刷新会被完全阻塞,画面直接假死。所以但凡涉及需要快速响应的逻辑,比如急停、限位保护这种,老老实实交给PLC或者安全继电器,别让屏来扛这个责任。
那到底什么情况适合用屏脚本替代PLC?判断标准其实很简单。如果你的控制逻辑满足这几个条件——I/O点数不超过十几个、动作之间没有严格的时序配合要求、响应速度在一百毫秒级别可以接受、没有安全相关的联锁——那用屏脚本加一个便宜的远程I/O模块(走Modbus RTU那种),完全能撑起来。反过来,只要涉及运动控制、高速计数、多轴同步或者安全回路,别省这个钱,PLC该上就上。屏脚本是个好工具,但它不是万能钥匙,知道它边界在哪,比会用本身更重要。
热门跟贴