Modbus与第三方仪表通讯
MODBUS通讯中的功能码
- 0x01:读线圈寄存器 (PLC的Q)
- 0x02:读离散输入寄存器(PLC的I)
- 0x03:读保持寄存器 (PLC的V、M区)
- 0x04:读输入寄存器 (PLC的AIW16)
- 0x05:写单个线圈寄存器
- 0x06:写单个保持寄存器
- 0x0f:写多个线圈寄存器
- 0x10:写多个保持寄存器
0x01、0x02、0x03、0x04所谓的读就是读取仪表的数据,读取从站的数据;
0x05、0x05、0x0f、0x10所谓的写就是向仪表写入数据,写到从站的数据;
例如:从站是PLC读取这个从站PLC的Q、I、V数据。
电表通讯说明书:
操作电表仪表设置BUS—-通讯—–ADDR—–设站地址,波特率等信息。
找到说明书的地址表
功能码 | 16进制(报文)从站的仪表 | 10进制(PLC编程时)主站的PLC |
03 | 0000H | 40001~49999或400001~465535 |
04 | 0000H | 30001~39999 |
例如: 03 时 0002H 也就是2 + 40001 = 40003;
03 时 1000H 也就是4096 + 40001 = 44097;
MODSCAN软件做为主站来读取或写入仪表数。
查看电脑中的COM端口
MODSCAN软件的连接信息配置
从仪表读数据的操作:MODSCAN软件中的使用与PLC作为主站中的填写是一样的,地址写成40098。
发送区:
01(站地址)03功能码0061(仪表手册中寄存器地址是61H) 0001(读取仪表数据个数) D5D4(CRC校验自动生成)
写完16进制的 01 03 00 61 00 01后点校验后生成 01 03 00 61 00 01 D5 D4
接收区:
01(站地址)03功能码02(2个字节即一个word) 091D(仪表的电压值) D5D4(CRC校验自动生成)
总结:根据仪表手册保留小数点个数,如果保留2位小数则读出的结果要除以100;
向仪表写数据的操作:
实现多台仪表的轮询读取