gk-auto 发表于 2019-1-4 20:50:18

实例讲解通过代码调试串口通讯的方法

http://p2.qhimg.com/t01e1b07f136e5eebd8.jpg?size=530x400远程IO设备实现Modbus通信时,均作为从机,遵循Modbus通信过程,采用了MODBUS-RTU协议的命令子集,使用读寄存器命令(03)和单寄存器设置命令(06)。每消息的开头和结尾至少有3.5个字节时间的间隔。注:03命令用于主机读取远程IO设备的采集数据或端口状态;06命令用于设置设备参数或远程控制IO设备继电器动作;
·   功能码03(读指令)利用Modbus通信协议的03功能码,读取设备的数值。主机请求数据格式:从机地址、功能码、起始地址、数据个数及CRC码http://p7.qhimg.com/t018bfc1f743f6aa89f.jpg?size=726x233例如: 从机地址为01,读取设备寄存器地址=0000的数值(1个数值)。http://p1.qhimg.com/t01f9e1454a0510bee7.jpg?size=728x39从机响应数据格式:从机地址、功能码、字节数、数据区及CRC码http://p5.qhimg.com/t019abc8b06d7d6f7ec.jpg?size=727x335寄存器数据为二个字节,高位在前。CRC码都是二个字节,低位在前。例如: 从机地址为01返回:01 03 02 DATA0H DATA0L CRCL CRCH
·   功能码06(写指令)利用Modbus通信协议的06功能码,设置设备的一个寄存器的数值。
主机请求数据格式:从机地址、功能码、寄存器地址、设置的数据及CRC码http://p9.qhimg.com/t015eb9109b33b95d6f.jpg?size=725x269
常用指令示例设备串口出厂参数如下:CRC值的计算可网上搜索CRC在线计算。以下以设备485地址为1,举例:1)读设备所有寄存器内容:0001至0016,共22个,每个寄存器内容占2个字节,上位主机发送:01、 03、 00、 01、 00、 16 、95 、C4从机设备返回:01、03 、2C、 (44字节数据) 、CRCL 、CRCH2)读485地址(03读指令)上位主机发送:01、 03 、00 、01、 00、 01、 D5 、CA从机设备返回:01 、03、 02、 00 、01、79、 84(地址为1)3)设485地址(06写指令)上位主机发送:00 、06 、00、 01 、00 、01 、18、 1B(设置地址为1)从机设备返回:01、 06 、00 、01、 00、 01 、19 、CA

外向的孤独患者 发表于 2019-1-4 21:01:35

好东西一定要看看!

robot 发表于 2019-1-4 21:20:17

无私奉献,好工控人,32个赞送给你!!

风相随07 发表于 2019-1-4 21:37:36

绝对干货,楼主给力,支持了!!!

草莓猪 发表于 2019-1-4 21:52:38

我只是路过打酱油的。

苍狼啸月 发表于 2019-1-4 21:59:04

我只是路过打酱油的。

cocokona 发表于 2019-1-4 22:22:41

无私奉献,好工控人,32个赞送给你!!

lan123ping 发表于 2019-1-4 22:27:56

好东西一定要看看!

dp19980902 发表于 2019-1-4 22:29:24

看了楼主的帖子,不由得精神一振,豁然开朗,牛掰

Daisy11 发表于 2019-1-4 22:41:58

楼主加油,我们都看好你哦。
页: [1] 2 3 4
查看完整版本: 实例讲解通过代码调试串口通讯的方法