PlcBridge Modbus 集成指南
定义
命名空间:TouchSocketPro.PlcBridges
命名空间:TouchSocketPro.Modbus
程序集:TouchSocketPro.PlcBridges.dll
程序集:TouchSocketPro.Modbus.dll
一、说明
TouchSocket PLC Bridge 提供了强大的工业自动化设备集成能力,尤其适合处理多协议、多设备的复杂场景。本指南将结合示例代码,详细说明如何使用 PLC Bridge 整合 Modbus TCP、UDP 和串口设备,创建一个统一的设备访问接口。
二、核心优势
- 统一访问接口:通过单一API访问多种Modbus设备(TCP/UDP/串口)
- 智能数据映射:将不同设备的寄存器地址映射到统一的虚拟地址空间
- 高性能处理:自动合并读写请求,优化通信效率
- 类型安全访问:支持复杂数据类型(long, float等)的自动转换
- 可扩展架构:轻松添加新设备或调整配置
三、准备工作
3.1 硬件环境
- Modbus TCP 设备(端口502)
- Modbus UDP 设备(端口503)
- Modbus 串口设备(COM2)
- 安装 Modbus 设备模拟器
四、设备桥接实现步骤
4.1 初始化 PLC Bridge 服务
var plcBridge = new PlcBridgeService();
await plcBridge.SetupAsync(new TouchSocketConfig());
4.2 配置 Modbus TCP 设备桥接
// 连接 TCP Modbus 设备
var modbusTcpMaster = new ModbusTcpMaster();
await modbusTcpMaster.ConnectAsync("127.0.0.1:502");
// 映射第一个寄存器区段 (0-20)
var plcDrive1 = new MyModbusHoldingRegistersDrive(modbusTcpMaster, new ModbusDriveOption()
{
Start = 0, // 虚拟起始地址
Count = 20, // 寄存器数量
//Group = "Group", // 执行组(同组设备串行操作)
Name = "TcpDevice1",
SlaveId = 1, // Modbus 从站ID
ModbusStart = 0 // 物理设备起始地址
});
await plcBridge.AddDriveAsync(plcDrive1);
// 映射第二个寄存器区段 (50-70)
var plcDrive2 = new MyModbusHoldingRegistersDrive(modbusTcpMaster, new ModbusDriveOption()
{
Start = 20, // 下一个虚拟起始地址
Count = 20,
//Group = "Group",
Name = "TcpDevice2",
SlaveId = 1,
ModbusStart = 50 // 物理设备偏移地址
});
await plcBridge.AddDriveAsync(plcDrive2);
4.3 配置 Modbus UDP 设备桥接
var modbusUdpMaster = new ModbusUdpMaster();
await modbusUdpMaster.SetupAsync(new TouchSocketConfig()
.UseUdpReceive()
.SetRemoteIPHost("127.0.0.1:503"));
await modbusUdpMaster.StartAsync();
var plcDrive3 = new MyModbusHoldingRegistersDrive(modbusUdpMaster, new ModbusDriveOption()
{
Start = 40, // 虚拟地址偏移
Count = 20,
//Group = "Group",
Name = "UdpDevice1",
SlaveId = 1,
ModbusStart = 10 // 物理设备起始地址
});
await plcBridge.AddDriveAsync(plcDrive3);