2. PLC与HMI的通信基础
在虚拟联调工程中,PLC与HMI之间的通信并不是“连上线就能通”,而是需要先明确三件事:用哪种协议、走哪条虚拟通道、变量如何对应。本节围绕PROFINET、S7通信和OPC UA三种常用协议,说明它们在虚拟环境中的配置差异,并完成PLC变量到HMI标签的映射。
一、三种协议在虚拟环境中的定位
PROFINET是工业以太网实时通信协议,在虚拟环境中通常由仿真PLC(如S7-1500仿真实例)与HMI仿真器通过虚拟网卡或仿真背板总线建立连接。它的特点是面向I/O数据交换,适合周期性刷新、实时性要求较高的场景,例如按钮信号、指示灯状态、模拟量采集值。
S7通信是西门子PLC之间的经典通信方式,基于ISO-on-TCP或S7协议,通过PUT/GET或BSEND/BRCV实现数据读写。在虚拟环境中,它常用于仿真PLC与上位监控、HMI或另一台仿真PLC之间的数据交互。S7通信更偏向按地址读写DB块,配置时需要明确对方IP、机架号、槽号以及DB块编号和偏移量。
OPC UA则是一种跨平台、面向服务的通信标准,不依赖西门子专有协议。在虚拟环境中,它通常由仿真PLC或OPC UA服务器提供地址空间,HMI或SCADA作为客户端订阅节点。OPC UA的优势在于语义化标签、类型安全和跨厂商互通,适合需要与MES、数据库或第三方系统集成的虚拟联调场景。
二、PROFINET 虚拟配置要点
在虚拟环境中配置PROFINET,第一步是让仿真PLC和HMI仿真器处于同一虚拟网段。例如PLC侧IP设为192.168.0.10,HMI侧设为192.168.0.20,子网掩码255.255.255.0。随后在仿真PLC的硬件组态中为HMI分配设备名,例如hmi_panel,并确认插槽号。PROFINET的变量映射通常以I/Q地址或DB块偏移为桥梁:PLC侧Q0.0对应HMI侧Tag_Lamp,PLC侧DB1.DBD2对应HMI侧Tag_Speed。配置完成后,通过仿真器的“在线诊断”查看连接状态,若显示“已连接”且I/O数据刷新正常,说明PROFINET通道建立成功。
三、S7 通信虚拟配置要点
S7通信在虚拟环境中更强调“地址对地址”的读写。以PUT/GET为例,HMI侧作为客户端,需要填写PLC的IP、机架号0、槽号1,并指定要读写的DB块编号和起始偏移。例如读取DB1.DBD0的电机转速,HMI侧配置为:DB1,偏移0,长度4字节,数据类型Real。写入按钮信号时,则指向DB1.DBX4.0,长度1位,类型Bool。S7通信的虚拟配置难点在于偏移量必须与PLC侧变量定义完全一致,否则会出现“连接正常但数据错位”的现象。建议在PLC侧先导出变量表,再逐条对照填写HMI连接参数。
四、OPC UA 虚拟配置要点
OPC UA在虚拟环境中通常由仿真PLC内置的OPC UA服务器提供地址空间。配置时先获取服务器Endpoint,例如opc.tcp://192.168.0.10:4840,然后在HMI侧作为客户端连接。与PROFINET和S7不同,OPC UA不直接使用I/Q或DB偏移,而是使用NodeId。例如PLC侧变量"DB1"."Speed"在OPC UA地址空间中可能表现为ns=3;s="DB1"."Speed"。HMI侧只需将该NodeId绑定到标签Tag_Speed,并选择正确的数据类型Float。OPC UA的优势是变量名可读性强,但需要注意命名空间索引ns和节点路径的准确性。
五、PLC变量与HMI标签的映射方法
无论使用哪种协议,变量映射都遵循“地址/节点 → 标签名 → 数据类型 → 刷新周期”这条主线。下面给出一个虚拟联调中常用的映射示例表,供配置时对照填写。
| PLC 变量 | PLC 地址 / 节点 | HMI 标签名 | 数据类型 | 适用协议 | 刷新周期 |
|---|---|---|---|---|---|
| 启动按钮 | DB1.DBX4.0 | Tag_Start | Bool | PROFINET / S7 | 100 ms |
| 电机转速 | DB1.DBD0 | Tag_Speed | Real | PROFINET / S7 / OPC UA | 200 ms |
| 温度值 | DB2.DBD0 | Tag_Temp | Real | OPC UA | 500 ms |
| 报警标志 | DB2.DBX4.0 | Tag_Alarm | Bool | PROFINET / S7 / OPC UA | 100 ms |
| 指示灯输出 | Q0.0 | Tag_Lamp | Bool | PROFINET | 100 ms |
映射完成后,需要在HMI仿真器中逐条验证。以Tag_Start为例,在HMI画面上按下启动按钮,观察PLC侧DB1.DBX4.0是否由0变为1;再以Tag_Speed为例,在PLC侧强制写入1450.0,观察HMI数值显示是否同步更新为1450.0。若数值不更新,优先检查数据类型是否一致、刷新周期是否过短导致丢包、以及虚拟网卡是否处于“仅主机模式”而非“桥接模式”。
4840未被防火墙拦截。
Tag_Speed若同时通过PROFINET和OPC UA写入,可能出现“后写覆盖先写”的竞争现象。虚拟联调时应为每个变量指定唯一的主通信路径。
掌握以上三种协议的虚拟配置方法和变量映射规则后,就可以根据项目实际需求选择最合适的通信方式:实时性优先选PROFINET,西门子内部数据交换选S7通信,跨系统集成选OPC UA。映射表填写完毕并通过逐点验证,PLC与HMI的虚拟通信基础即告建立。