VFBOX网关实现WinCC_OPC_UA转Modbus项目案例
VFBOX网关实现WinCC OPC UA数据转Modbus协议项目案例
项目概述
项目背景
某制造工厂的生产管理系统采用西门子WinCC作为上位机监控平台,其对外数据接口采用OPC UA协议。工厂新建的工控平台(如DCS系统、第三方SCADA或PLC控制系统)仅支持Modbus RTU/TCP协议通信。为实现两个系统之间的数据互通,需要部署协议转换网关,将WinCC系统的OPC UA数据实时转换为Modbus协议数据,供工控平台读取。
项目目标
- 通过VFBOX网关采集WinCC管理系统的OPC UA数据
- 将采集的数据转换为Modbus协议(RTU/TCP)
- 工控平台通过Modbus协议读取网关中的实时生产数据
- 实现生产数据的跨系统、跨协议无缝对接
系统架构
┌─────────────────┐ OPC UA ┌─────────────────┐ Modbus ┌─────────────────┐
│ │ (opc.tcp://) │ │ (RTU/TCP) │ │
│ WinCC管理系统 │◄─────────────────►│ VFBOX网关 │◄─────────────────►│ 工控平台 │
│ (OPC UA Server)│ │ (协议转换网关) │ │ (Modbus Master) │
│ │ │ │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
生产数据 协议转换 数据消费
硬件选型
| 设备 | 型号 | 说明 |
|---|---|---|
| VFBOX网关 | VB303-1200#128-N-1 | 1网口2串口,支持采集OPC UA,Modbus转发 |
| WinCC服务器 | 西门子WinCC V7.5 | OPC UA Server,提供生产数据 |
| 工控平台 | 第三方DCS/PLC | Modbus Master,读取网关数据 |
| 电脑 | 配置电脑 | 安装VFBOX Studio软件,用于配置网关 |
选型说明:网关型号中
N代表采集协议为OPC UA,1代表转发服务协议为Modbus。128表示可采集128个数据点位。
实施步骤
第一步:准备工作
1.1 网络环境准备
| 设备 | IP地址 | 子网掩码 | 说明 |
|---|---|---|---|
| WinCC服务器 | 192.168.1.100 | 255.255.255.0 | OPC UA服务端 |
| VFBOX网关网口 | 192.168.1.199 | 255.255.255.0 | 默认IP,可修改 |
| 配置电脑 | 192.168.1.198 | 255.255.255.0 | 与网关同网段 |
| 工控平台 | 192.168.1.50 | 255.255.255.0 | Modbus TCP模式 |
1.2 确认WinCC OPC UA服务端信息
使用UaExpert软件连接WinCC OPC UA服务器,获取以下关键信息:
- OPC UA服务端地址:
opc.tcp://192.168.1.100:4840 - 安全策略:None(无加密)或Basic256Sha256(需配置证书)
- 认证方式:匿名或用户名/密码认证
- 数据节点信息:NodeId、数据类型、访问权限
示例数据节点:
| 数据名称 | 数据类型 | NodeId(网关地址) | 说明 |
|---|---|---|---|
| 生产线温度 | Float | ns=2;s=WinCC.Tag.Temperature | 车间温度监控 |
| 设备运行状态 | Boolean | ns=2;s=WinCC.Tag.MachineStatus | 设备启停状态 |
| 产量计数 | Int32 | ns=2;s=WinCC.Tag.ProductionCount | 当日产量 |
| 压力值 | Float | ns=2;s=WinCC.Tag.Pressure | 管道压力 |
| 报警状态 | Int32 | ns=2;s=WinCC.Tag.AlarmState | 报警代码 |
第二步:配置VFBOX网关采集OPC UA数据
2.1 连接网关
- 使用网线将配置电脑连接到VFBOX网关的Ethernet1网口
- 配置电脑IP设置为
192.168.1.198,确保与网关默认IP192.168.1.199同网段 - 打开VFBOX Studio软件(需管理员权限运行)
- 点击菜单"网关IP地址",输入
192.168.1.199 - 点击"获取硬件ID",确认电脑与网关连通
2.2 新建工程
- 点击"新建工程",输入工程名称(如:WinCC_to_Modbus)
- 设备类型选择:
VB30X-1200(根据实际网关型号选择) - 点击确定,进入工程编辑界面
2.3 添加OPC UA采集设备
- 在左侧导航栏点击"采集设备",右键选择"新建设备"
- 驱动类型选择:OPC UA Client
- 输入设备名称:
WinCC_OPC_Server - 配置连接参数:
- OPC UA服务器地址:
opc.tcp://192.168.1.100:4840 - 安全策略:根据WinCC配置选择(如None)
- 认证方式:匿名 或 输入用户名/密码
- OPC UA服务器地址:
- 点击"完成",设备添加成功
2.4 添加采集标签
点击设备名称WinCC_OPC_Server,点击"新建标签",依次添加以下数据:
| 标签名称 | 数据类型 | 地址(NodeId) | 读写控制 |
|---|---|---|---|
| Temperature | Float | ns=2;s=WinCC.Tag.Temperature | 读 |
| MachineStatus | Boolean | ns=2;s=WinCC.Tag.MachineStatus | 读 |
| ProductionCount | Int32 | ns=2;s=WinCC.Tag.ProductionCount | 读 |
| Pressure | Float | ns=2;s=WinCC.Tag.Pressure | 读 |
| AlarmState | Int32 | ns=2;s=WinCC.Tag.AlarmState | 读 |
配置要点:
- 标签名称使用英文字母+数字,不要使用中文或特殊符号
- 数据类型必须与WinCC中变量的数据类型一致
- 地址格式为:
ns=命名空间索引;s=节点标识符或ns=命名空间索引;i=节点ID
2.5 下载并验证采集
- 点击工具栏"下载"按钮,将工程下载到网关
- 下载完成后,点击"查看数据"
- 确认所有标签的"状态"显示为
Good,"更新时间"为当前时间 - 核对数值与WinCC系统中显示的数据是否一致
第三步:配置Modbus协议转发
3.1 启用Modbus Slave服务
- 在左侧导航栏点击"服务" → "Modbus Slave"
- 配置Modbus Slave参数:
| 参数 | 设置值 | 说明 |
|---|---|---|
| 启用 | Yes | 启用Modbus从站功能 |
| 站号 | 1 | Modbus从站地址,工控平台通过此站号访问 |
| 字节顺序 | 1234 | 浮点型数据字节顺序,根据工控平台要求调整 |
3.2 配置Modbus RTU转发(串口方式)
若工控平台通过RS485/RS232连接网关:
- 选择"Modbus RTU"
- 选择串口号:COM2(确保不与采集设备使用的串口冲突)
- 配置串口参数:
- 波特率:9600(与工控平台一致)
- 数据位:8
- 校验:无
- 停止位:1
3.3 配置Modbus TCP转发(网口方式)
若工控平台通过以太网连接网关:
- 选择"Modbus TCP"
- 侦听端口:502(标准Modbus TCP端口)
- 网关等待工控平台主动发起TCP连接
3.4 映射数据到Modbus寄存器
将OPC UA采集的数据映射到Modbus寄存器地址:
- 在Modbus Slave配置界面,点击"添加数据"按钮
- 根据数据类型选择对应的数据区:
| 标签名称 | 数据类型 | Modbus数据区 | 寄存器地址 | 功能码 |
|---|---|---|---|---|
| MachineStatus | Boolean | 0X Digital Coils | 00001 | 01H/05H |
| AlarmState | Int32 | 4X Holding Registers | 40001 | 03H/06H/10H |
| ProductionCount | Int32 | 4X Holding Registers | 40003 | 03H/06H/10H |
| Temperature | Float | 4X Holding Registers | 40005 | 03H/06H/10H |
| Pressure | Float | 4X Holding Registers | 40007 | 03H/06H/10H |
寄存器地址规划说明:
- 0X区(00001-09999):布尔量,可读写,对应功能码01H/05H/0FH
- 4X区(40001-49999):模拟量/数值型,可读写,对应功能码03H/06H/10H
- Int32和Float类型各占2个寄存器(4字节)
- 地址分配需考虑数据长度,避免重叠
- 依次点击每个数据区,选择对应的标签进行绑定:
- 点击0X区 → 添加
MachineStatus - 点击4X区 → 添加
AlarmState、ProductionCount、Temperature、Pressure
- 点击0X区 → 添加
3.5 保存并下载工程
- 点击Modbus Slave配置界面的"保存"按钮
- 点击工具栏"下载",将更新后的工程下载到网关
- 网关自动重启并运行新配置
第四步:工控平台配置
4.1 Modbus TCP方式
在工控平台中配置Modbus TCP主站:
- 从站IP:
192.168.1.199(VFBOX网关IP) - 端口:
502 - 从站地址:
1 - 读取寄存器:
- 00001:设备运行状态(Bool)
- 40001-40002:报警状态(Int32)
- 40003-40004:产量计数(Int32)
- 40005-40006:温度值(Float)
- 40007-40008:压力值(Float)
4.2 Modbus RTU方式
在工控平台中配置Modbus RTU主站:
- 串口:连接网关COM2对应的串口
- 波特率:9600
- 数据位:8,无校验,1位停止位
- 从站地址:
1 - 寄存器地址:同上
第五步:数据验证与调试
5.1 使用Modbus Poll测试(推荐)
在配置电脑上安装Modbus Poll软件,模拟工控平台读取网关数据:
- 连接方式选择Modbus TCP或Modbus RTU
- 输入网关IP或选择串口
- 配置寄存器地址和数量
- 观察读取的数据是否与WinCC中显示一致
5.2 常见问题排查
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| OPC UA连接失败 | 网络不通或地址错误 | 检查IP、端口、防火墙设置 |
| 数据状态为Bad | NodeId错误或权限不足 | 核对NodeId,检查WinCC OPC UA配置 |
| Modbus读取失败 | 站号或地址错误 | 核对Modbus Slave站号和寄存器映射 |
| 浮点数值不对 | 字节顺序不匹配 | 调整Modbus Slave中的字节顺序设置 |
| 数据不更新 | 扫描间隔过长 | 在设备属性中减小扫描间隔(如1000ms) |
5.3 使用VBtrace诊断
如需深度排查通信问题:
- 在VFBOX Studio中点击"工具" → "命令行"
- 输入:
vbtrace.exe 20304 192.168.1.199(查看OPC UA采集通信) - 输入:
vbtrace.exe 20305 192.168.1.199(查看Modbus转发通信) - 观察输出窗口中的请求/应答数据帧
项目总结
实现效果
- ✅ WinCC系统中的生产数据(温度、压力、产量、状态等)实时同步到工控平台
- ✅ 数据刷新周期可达秒级,满足生产监控需求
- ✅ 网关独立运行,无需电脑参与,掉电后自动恢复
- ✅ 支持同时转发给多个Modbus主站(TCP+RTU可同时启用)
关键技术点
- OPC UA地址配置:准确获取WinCC的NodeId是采集成功的关键
- 数据类型匹配:OPC UA数据类型与Modbus寄存器类型的对应关系
- 寄存器规划:合理分配Modbus地址空间,避免数据覆盖
- 字节顺序:Float/Double类型需注意高低字节顺序
扩展应用
- 可增加用户标签对数据进行运算处理(如单位换算、报警判断)
- 可配置多个Modbus Slave服务,同时向不同系统转发数据
- 可启用MQTT服务,将数据同时上报云平台
- 可配置数据库存储,将历史数据保存到MySQL/SQLite
附录:寄存器地址速查表
| VFBOX数据类型 | Modbus寄存器长度 | 占用寄存器数 | 示例地址 |
|---|---|---|---|
| Boolean | 1位 | 1个线圈 | 00001 |
| Byte/Char | 8位 | 1个寄存器 | 40001 |
| Short/Word | 16位 | 1个寄存器 | 40001 |
| Int32/Long/DWord/Float | 32位 | 2个寄存器 | 40001-40002 |
| Double/LLong/QWord | 64位 | 4个寄存器 | 40001-40004 |
| String | 变长 | 根据长度计算 | 40001.16 |
熟悉协议转换网关产品和方案。熟悉西门子,欧姆龙,三菱,AB等PLC,DLT645 698电表,modbus协议的设备,环保的HJ212协议,水文的SL651协议,工业领域的opc ua和opc da,电力的IEC103 IEC104, IEC61850等,以及EthernetIP,Profinet IO,CCLink,EtherCAT现场总线协议,楼宇自控的bacnet。

VFBOX协议转换网关是实现不同协议的设备之间的数据转换。支持的设备和协议有西门子,欧姆龙,三菱,AB,modbus,EthernetIP,Profinet,CCLink,EtherCAT,IEC61850,IEC104,bacnet,DLT645,HJ212,opc ua,opc da,DNP3。
浙公网安备 33010602011771号