...
《Modbus驱动配置》目的是本地的ModBusRTU和ModBusTCP能够读写通过ModBus服务端的数据
modbus驱动根据协议不同,分为两个驱动,请根据实际情况配置:
- modbusRTU,用于通过窗口通信
- modbusTCP,用于通过网口通信
1. ModSim和ModScan使用
ModSim是ModBus模拟器,用来模拟ModBus中的寄存器数值,可以通过ModScan读取到该寄存器值。
...
系统驱动中需要包含ModBusRTU和ModBusTCP这两个驱动,并在t_device_driver中配置好驱动,注意id为主键,不可重复
驱动名称根据协议不同,请选择:modbustcp或者modbusrtu
3. 设备配置
...
- 通信连接配置
- modbustcp驱动
- 连接方式(conntype)请选择tcpclient方式
- 连接参数:
- 设备IP输入设备的实际IP
- 设备端口 (port)一般是502,除非特别指定
- 示例:添加设备,连接方式选择tcpclient,驱动ID为t_device_driver中配置的驱动的id,设备id为主键,连接参数格式为ip=xx.xx.xx.xx;port=xx
- modbustcp驱动
...
参数1:站号或从级地址
参数2:无或者0表示按正常指令;1表示多寄存器指令
参数3:每个数据块自动组块时的最大字节数。缺省为230个字节。例外情况包括:
...
- modbusrtu驱动
- 连接方式, 请选择serial串口方式
- 连接参数:
- 对于网关,有4个串口,串口名称分别需要输入:/ttyO1,/ttyO2,/ttyO32,/ttyO4,具体见:串口通讯参数配置
- 对于windows,串口为:COM1,COM2,COM3,COM4,以此类推。可通过设备管理器查看应该配置哪个串口
- 对于Linux,串口根据情况而定
- 配置串口波特率、奇偶校验位等
- 设备参数配置
- 设备参数1:站号或从级地址,通常用于modbusrtu以区分不同设备。如果设备未说明,可不输入
- 设备参数2:无或者0表示按正常指令;1表示多寄存器指令。通常不需要填写
- 设备参数3:每个数据块自动组块时的最大字节数。缺省为230个字节。通常不需要填写
- 例外情况包括:北辰模块有时候,只能取98个寄存器(196个字节),此时如果读取不到就需要调整这个值
- 配置的数据库示例:
4. 变量配置
在表t_device_tag中配置点名。点名格式为:数据类型tag中配置点名。
- 点名格式为:数据类型:地址
...
- 数据块类型:AI、AO、DI、DO
- 地址从1开始,如AI:
...
- 1表示ai类型地址为1的寄存器的值。
- 如果需要寄存器的一个位,则用AI:1.0
三、 测试
- modsim工具是一个可以模拟真实设备的程序。
- 打开ModSim,选择数据类型为Holding Registers, 对应数据库中的AO类型的点
- 启动bin\start_pkmemdb.bat,
- 启动bin\pknodeserver.exe,将点写入内存数据库中
- 启动bin\pktagmonitor.exe,用于检测点值
- 修改40001的点值,观察exe的值得变化
四、 功能码请求类型
读取寄存器功能码:
读取AI(输入寄存器):3
...