备注:
①:modbus设备指令支持下列modbus地址:
00001至09999是离散输出(线圈)
10001至19999是离散输入(触点)
30001至39999是输入寄存器(通常是模拟量输入) 40001至49999是保持寄存器(通常存储设备配置信息)
采用5位码格式,第一个字符决定寄存器类型,其余4个字符代表地址。地址1从0开始,如00001对应0000。
②:波特率数值对应表
③:继电器状态,通过30002地址可以查询,也可以通过2地址来查询,但控制只能使用00001---00002地址。
30002地址数据长度为16bit。最多可表示16个继电器。
对应结果如下:
即 寄存器30009数据 的bit8 与寄存器00001的数据一样。
同理:光耦输入也是如此。寄存器30003的bit8、bit9 与寄存器10001、10002都对应到指定的硬件上。
寄存器地址按照plc命名规则,真实地址为去掉最高位,然后减一。
指令生成说明
应用举例及其说明:本机地址除了拨码开关地址之外,还有默认的254为广播地址。当总线上只有一个设备时,无需关心拨码开关地址,直接使用254地址即可,当总线上有多个设备时通过拨码开关选择为不同地址,发送控制指令时通过地址区别。
注意:rs485总线可以挂载多个设备。
指令可通过“聚英翱翔dam系列配置软件”,的调试信息来获取。
指令生成说明:对于下表中没有的指令,用户可以自己根据modbus协议生成,对于继电器线圈的读写,实际就是对modbus寄存器中的线圈寄存器的读写,上文中已经说明了继电器寄存器的地址,用户只需生成对寄存器操作的读写指令即可。例如读或者写继电器1的状态,实际上是对继电器1对应的线圈寄存器0001的读写操作。
详解:
控制1路继电器(以第一路开为例,其他通道参照本例)
发送码:fe 05 00 00 ff 00 98 35
继电器卡返回信息:
返回码:fe 05 00 00 ff 00 98 35
1:继电器查询
查询2路继电器
fe 01 00 00 00 02 a9 c4
继电器卡返回信息:
fe 01 01 00 61 9c
2、查询光耦(4路光耦)
发送指令码:fe 02 00 00 00 04 ed c4
光耦返回信息:
返回码:fe 02 01 00 91 9c
3.查询模拟量数据(2路4~20ma)
发送指令码:fe 04 00 00 00 02 65 c4
返回信息:
返回码:fe 04 04 00 00 00 00 f4 8b
4.闪开发送码:fe 10 00 03 00 02 04 00 04 00 0a 00 d8
闪断发送码:fe 10 00 03 00 02 04 00 02 00 14 21 62
返回码:fe 10 00 03 00 02 a5 c7
4. 全开全关指令解析
全开发送码:fe 0f 00 00 00 02 01 ff d1 d3
全断发送码:fe 0f 00 00 00 02 01 00 91 93
全断全开返回码:fe 0f 00 00 00 02 c0 05
常见问题与解决方法
1.继电器板卡供电后使用232接口无法建立通信,无法控制
首先测试不同波特率是否可以控制,485接口注意a+、b-线以及屏蔽线,屏蔽线不是必须,但在通信误码率大的情况下必须接上,即便距离很近也可能出现此类情况。
2.485总线,挂载了大于1个的设备,我以广播地址255发送继电器1吸和,但并不是所有模块的继电器1吸和。
广播地址在总线上只有一个设备时可以使用,大于1个设备时请以拨码开关区分地址来控制,否则会因为模块在通信数据的判断不同步上导致指令无法正确执行。
3、西门子plc与设备不能正常通讯
西门子485总线ab定义与设备相反