之前一直玩的OPC协议,现在开始研究Modbus协议,所以最近又尝试学习了下Modbus转OPC的操作。
KEPServerEX6,Modbus Slave
1.KEPServerEX6,Modbus Slave不要装在一台电脑上,在Modbus Slave上设置端口号803,站号1,功能码03,10个地址,再设几个随机数字便于测试,连接即可。
2.在另外一台电脑安装KEPServerEX6,下面开始正式的Modbus转OPC内容了。右击连接性-新建通道,选择ModbusTCP,还有其它两种Modbus形式可选,这里暂不讨论,下一步。
3.输入Modbus Slave的端口号803,下一步直到完成。
4.右击添加设备,选择Modbus,输入Modbus Slave的IP地址和站号, 还得再设置下端口号803, 下一步直到完成即可,如果有输入错的,在完成前还可以再修改一下 。
5.下面添加测点,选中刚刚建的设备,选择批量添加,点击添加数字范围。
6.Modbus Slave上的地址是0-9,功能码是3(根据Modbus选择的功能码不同,地址也会不同,请查看下表),功能码3对应的地址为40001-49999,我们这里的长度为10,所以是40001到40010,点击确定。
代码 |
中文名称 |
寄存器PLC地址 |
位操作/字操作 |
操作数量 |
01 |
读线圈状态 |
00001-09999 |
位操作 |
单个或多个 |
02 |
读离散输入状态 |
10001-19999 |
位操作 |
单个或多个 |
03 |
读保持寄存器 |
40001-49999 |
字操作 |
单个或多个 |
04 |
读输入寄存器 |
30001-39999 |
字操作 |
单个或多个 |
05 |
写单个线圈 |
00001-09999 |
位操作 |
单个 |
06 |
写单个保持寄存器 |
40001-49999 |
字操作 |
单个 |
15 |
写多个线圈 |
00001-09999 |
位操作 |
多个 |
16 |
写多个保持寄存器 |
40001-49999 |
字操作 |
多个 |
7.点击预览,有绿色的√即代表标签有效,点击生成即可。
8.打开OPC客户端查看数据是否准确。
9.以上说的都是Int类型的,还可以尝试转换bool,float和double类型。
Modbus模拟bool类型功能码要选择01,对照上文提到的功能码地址对照图可以看出,添加标签时的地址为00001-09999范围。
float类型和double类型功能码都可以选择03,float(占两个地址)和double类型(占4个地址)。选择一个地址把它变成Float或者Double类型,生成OPC标签时直选要选择对应的类型就可以了。
自己动手做一遍比看别人搞N遍记忆深刻。Modbus并不难,难得是第一步,万事开头难。