4. HMI画面基础元件与变量连接

HMI画面是操作人员与PLC之间的“窗口”,而基础元件则是这个窗口里真正可交互的控件。按钮负责把操作意图送入PLC,指示灯负责把PLC内部状态反馈给操作人员,输入输出域则承担参数设定与数值监视。三者配合,才能构成一个完整的启停控制与状态显示回路。本节围绕按钮、指示灯、输入输出域三类元件,说明它们在HMI工程中的属性含义、与虚拟PLC变量的连接方式,以及如何通过变量地址、数据类型和读写方向实现可靠的启停控制与状态显示。

一、三类基础元件的职责与变量方向

在HMI组态中,每个元件都必须绑定一个PLC变量,元件的行为由“变量方向”和“数据类型”共同决定。按钮通常写入PLC,属于HMI→PLC方向;指示灯读取PLC,属于PLC→HMI方向;输入输出域则可能双向,输入时写PLC,输出时读PLC。理解这一点,是避免“按钮按下去没反应”或“指示灯不亮”的第一道关口。

以常见的虚拟PLC联调环境为例,假设PLC侧已定义以下变量:启动按钮信号 M0.0(BOOL)、停止按钮信号 M0.1(BOOL)、运行状态 M10.0(BOOL)、故障状态 M10.1(BOOL)、设定转速 MW20(INT)、实际转速 MW22(INT)。HMI侧元件与这些变量的对应关系如下表所示。

HMI元件绑定变量数据类型方向作用
启动按钮M0.0BOOLHMI→PLC置位启动请求
停止按钮M0.1BOOLHMI→PLC置位停止请求
运行指示灯M10.0BOOLPLC→HMI显示运行状态
故障指示灯M10.1BOOLPLC→HMI显示故障状态
转速设定域MW20INTHMI→PLC写入目标转速
转速显示域MW22INTPLC→HMI读取实际转速

这张表是HMI变量连接的核心依据。组态时如果方向填反,例如把运行指示灯也设成HMI→PLC,那么指示灯将不再跟随PLC状态变化,而是被HMI单方面改写,联调时就会出现“灯亮但PLC里M10.0仍为0”的矛盾现象。

二、按钮的组态要点:瞬时、置位与复位

按钮在HMI中通常有三种触发方式:瞬时按下(按下为1,松开为0)、置位(按下后保持1)、复位(按下后保持0)。对于启停控制,推荐采用“启动按钮置位M0.0、停止按钮置位M0.1”的方式,再由PLC程序在扫描周期内完成自锁与互锁。这样做的原因是:HMI按钮的按下时间远短于PLC扫描周期,若用瞬时方式直接驱动输出,容易因通信延迟丢失信号。

具体组态时,启动按钮的“按下”事件绑定函数 SetBit(M0.0),停止按钮的“按下”事件绑定 SetBit(M0.1)。PLC侧程序在检测到M0.0为1后,置位运行状态M10.0并复位M0.0;检测到M0.1为1后,复位M10.0并复位M0.1。这种“请求—应答—清除”的握手方式,可以避免按钮信号长期占用导致无法再次启动。

如果虚拟PLC支持直接写线圈,也可以把启动按钮设为“按下置位、松开复位”,但必须在PLC程序中做上升沿检测,否则按住按钮期间会反复触发启动逻辑。

三、指示灯的动态属性与状态映射

指示灯的关键在于“什么状态显示什么颜色”。以运行指示灯为例,绑定M10.0后,可设置:M10.0=0时显示灰色,M10.0=1时显示绿色。故障指示灯绑定M10.1,M10.1=0时灰色,M10.1=1时红色并闪烁。闪烁频率通常设为1Hz或2Hz,用于区分“故障存在”与“故障已确认但未排除”两种状态。

在虚拟联调中,指示灯的刷新依赖HMI与PLC的通信周期。若通信周期为100ms,而PLC扫描周期为10ms,则指示灯最多滞后100ms显示。对于启停控制这类慢过程,100ms完全可接受;但对于高速计数或脉冲输出状态,就需要缩短通信周期或改用事件触发刷新。

四、输入输出域的数据类型与格式

输入输出域比按钮和指示灯多了一层“数值转换”。以转速设定域为例,绑定MW20(INT),量程0~3000,单位r/min。组态时需要设置:数据类型为INT,格式为十进制,小数位为0,输入范围0~3000。如果实际PLC中MW20是REAL类型,则HMI侧也必须选REAL,否则会出现数值错乱。

输出域绑定MW22时,除了显示实际转速,还可以增加“超限变色”功能:当MW22大于MW20的110%时,显示红色。这一功能通过HMI的“动画—颜色”属性实现,条件表达式为 MW22 > MW20 * 1.1。这样操作人员无需计算,就能直观判断转速是否异常。

HMI基础元件与虚拟PLC变量连接关系 HMI 画面 启动按钮 停止按钮 运行 故障 转速设定域 MW20 (INT) 转速显示域 MW22 (INT) 虚拟 PLC M0.0 启动请求 (BOOL) M0.1 停止请求 (BOOL) M10.0 运行状态 (BOOL) M10.1 故障状态 (BOOL) MW20 目标转速 (INT) MW22 实际转速 (INT) PLC 扫描逻辑 IF M0.0 THEN SET M10.0; RST M0.0 IF M0.1 THEN RST M10.0; RST M0.1 MW22 := 转速反馈 写 M0.0 / M0.1 写 MW20 读 M10.0 / M10.1 读 MW22 HMI→PLC 写入 PLC→HMI 读取 数值写入 通信周期示例:100ms

五、联调验证:从按钮到指示灯的完整回路

组态完成后,需要按“写—读—显示”的顺序验证。第一步,在HMI上按下启动按钮,观察虚拟PLC的M0.0是否变为1;若不变,检查按钮事件是否绑定正确、通信是否建立。第二步,M0.0变为1后,PLC程序应在一个扫描周期内将M10.0置位并复位M0.0;此时观察M10.0是否变为1。第三步,M10.0变为1后,HMI运行指示灯应在通信周期内由灰变绿。第四步,在转速设定域输入1500,观察MW20是否变为1500;再观察MW22是否随PLC程序中的反馈逻辑变化,显示域数值是否同步更新。

如果运行指示灯不亮,但PLC中M10.0确实为1,问题通常出在HMI侧:指示灯绑定的变量地址写错、方向设反、或者颜色动画条件未启用。如果按钮按下后M0.0短暂为1又立刻变0,但M10.0没有置位,则可能是PLC程序未下载或未运行,或者M0.0被其他逻辑复位。联调时建议同时打开PLC变量监视表和HMI画面,逐点比对,不要只盯一个界面。

虚拟PLC与HMI的通信地址必须完全一致。例如HMI中写的是M0.0,PLC中却是M0.1,则按钮永远无法触发启动。地址格式(如M、MW、DB)在不同虚拟PLC中可能不同,组态前先确认变量表。

六、常见问题与处理

第一类问题是“按钮无响应”。优先检查通信连接是否正常、变量地址是否存在、按钮事件是否绑定。第二类问题是“指示灯常亮或常灭”。检查变量方向是否为PLC→HMI,以及颜色动画的条件是否写反。第三类问题是“输入域数值跳变或显示乱码”。检查数据类型是否匹配,INT与REAL不能混用,同时确认量程和格式设置正确。第四类问题是“启停互锁失效”。这通常不是HMI问题,而是PLC程序中未做M10.0的自锁和M0.1的优先复位,需要在PLC侧补充逻辑。

掌握按钮、指示灯、输入输出域与虚拟PLC变量的连接方法后,HMI画面就不再是静态的图片,而是一个能真实反映PLC运行状态、并能向PLC下达操作指令的交互界面。后续更复杂的画面切换、报警记录和趋势曲线,都建立在这一节所讲的变量连接基础之上。