modbus协议 点击:787 | 回复:11



zuqiuxiaozi_srx

    
  • 精华:0帖
  • 求助:16帖
  • 帖子:21帖 | 19回
  • 年度积分:0
  • 历史总积分:197
  • 注册:2013年2月21日
发表于:2013-03-12 11:29:41
楼主
我把通道设置为只读  4区  32位浮点数,我在输入框发送1,在串口界面里,怎么数据帧是这样的:01 10 00 00 00 02 04 3F 80 00 00 FE 53,功能码怎么是10啊,各位帮忙给解释一下啊。谢谢!!!!



MCGSZhuSir

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:23
  • 注册:2013年3月12日
发表于:2013-03-12 12:43:11
1楼
您好,请拨打昆仑通态客服热线400-610-7062咨询!

蓝天月亮

  • 精华:0帖
  • 求助:0帖
  • 帖子:37帖 | 1447回
  • 年度积分:0
  • 历史总积分:3594
  • 注册:2007年10月22日
发表于:2013-03-12 14:01:10
2楼
没有看过他真正的数据帖,不知道你是不是通信不上才会问。

zuqiuxiaozi_srx

  • 精华:0帖
  • 求助:16帖
  • 帖子:21帖 | 19回
  • 年度积分:0
  • 历史总积分:197
  • 注册:2013年2月21日
发表于:2013-03-12 14:20:36
3楼

我在触摸屏发一个数到PC机通过串口,在串口界面上看触摸屏发出的数据帧,就是这样的,这个数据帧怎么和我看的Modbus 协议不一样呢?

纵横军团-棋影

  • [版主]
  • 精华:5帖
  • 求助:21帖
  • 帖子:728帖 | 5626回
  • 年度积分:78
  • 历史总积分:82244
  • 注册:2004年5月28日
发表于:2013-03-12 14:45:53
4楼

01 10 00 00 00 02 04 3F 80 00 00 FE 53
专业大师给你分析这段报文
01:地址码,从站地址为01,16进制
10:功能码,表明是对4区多个寄存器进行写操作,16进制,换算10进制就是16功能码
00:寄存器起始地址高8位
00:寄存器起始地址低8位
00:预写的寄存器个数的高8位
02:预写的寄存器个数的低8位
04:字节计数,预写2路寄存器,那么预写的数据就占4个字节
3F:预写的第1路寄存器的数据的高8位
80:预写的第1路寄存器的数据的低8位
00:预写的第2路寄存器的数据的高8位
00:预写的第2路寄存器的数据的低8位
FE:CRC校验低8位
53:CRC校验高8位
这条指令实现的功能就是给MODBUS RTU寄存器编号为40001写数据16256、给40002写数据0
记得把分数给我!


zuqiuxiaozi_srx

  • 精华:0帖
  • 求助:16帖
  • 帖子:21帖 | 19回
  • 年度积分:0
  • 历史总积分:197
  • 注册:2013年2月21日
发表于:2013-03-12 15:15:21
5楼
回复内容:
对:纵横军团-棋影关于01 10 00 00 00 02 04 3F 80 00 00 FE 53专业大师给你分析这段报文01:地址码,从站地址为01,16进制10:功能码,表明是对4区多个寄存器进行写操作,16进制,换算10进制就是16功能码00:寄存器起始地址高8位00:寄存器起始地址低8位00:预写的寄存器个数的高8位02:预写的寄存器个数的低8位04:字节计数,预写2路寄存器,那么预写的数据就占4个字节3F:预写的第1路寄存器的数据的高8位80:预写的第1路寄存器的数据的低8位00:预写的第2路寄存器的数据的高8位00:预写的第2路寄存器的数据的低8位FE:CRC校验低8位53:CRC校验高8位这条指令实现的功能就是给MODBUS RTU寄存器编号为40001写数据16256、给40002写数据0记得把分数给我!内容的回复:

还得再问一个,触摸屏将这一帧发到下位机后,下位机应该返回一个什么样的帧,跟modbus协议里写的一样吗,还是怎样,请您具体说一下,十分感谢您的回答!!

自由的天空

  • 精华:0帖
  • 求助:1帖
  • 帖子:23帖 | 125回
  • 年度积分:0
  • 历史总积分:601
  • 注册:2005年10月17日
发表于:2013-03-14 13:27:41
6楼

1、返回的正确数据是01 10 00 00 00 02 41 C8

2、你发送的数据的格式是逆序32位浮点,不是32位浮点数。

3、因为你写的数据是浮点数,占4个字节,只能用16功能码写,就是0x10,06和16功能码是写数据用的,06只能写字为单位的。

4、返回的数据,如果用06写的,发送和返回的一样的,16功能码写的,返回的格式是地址 功能码 起始地址 写寄存器数量 CRC

自由的天空

  • 精华:0帖
  • 求助:1帖
  • 帖子:23帖 | 125回
  • 年度积分:0
  • 历史总积分:601
  • 注册:2005年10月17日
发表于:2013-03-14 13:29:13
7楼
补充一下,你按逆序32位写个1下位,设备里面如果按照32位浮点数解码,得到的值是0,所以通讯成功了,你也看不出来,数据类型要对上才行。

zuqiuxiaozi_srx

  • 精华:0帖
  • 求助:16帖
  • 帖子:21帖 | 19回
  • 年度积分:0
  • 历史总积分:197
  • 注册:2013年2月21日
发表于:2013-03-15 15:00:57
8楼
回复内容:
对:自由的天空关于 补充一下,你按逆序32位写个1下位,设备里面如果按照32位浮点数解码,得到的值是0,所以通讯成功了,你也看不出来,数据类型要对上才行。 内容的回复:

你好,很感谢你的回答,我想问一下触摸屏写数据的有关问题。触摸屏写数据帧的时候我设置成16位无符号二进制看到的数据帧是01 06 00 00 00 01 还有校验,我写的是1,这也不是逆序啊,设置成32位浮点数的时候,就是上面我发的那个结果,我还是不理解逆序这个概念,请您再给讲讲吧!3F 80 00 00是正序还是逆序啊!我这的下位机是DSP,昨天做实验我在触摸屏里写入1,DSP能收到,但是触摸屏的通讯状态一直显示4,不知道是怎么回事,希望得到您的指导 。谢谢!!!

ranger168

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 8回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2018年4月23日
发表于:2018-04-23 14:09:31
9楼
有规约文档吗?

gdbsc2004

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 249回
  • 年度积分:0
  • 历史总积分:208
  • 注册:2011年3月24日
发表于:2018-04-26 20:11:32
10楼
以上有大师,以上有大师

121274271@qq.com

  • 精华:0帖
  • 求助:3帖
  • 帖子:5帖 | 190回
  • 年度积分:0
  • 历史总积分:63
  • 注册:2016年3月25日
发表于:2018-04-27 09:28:33
11楼
这个好像跟通讯很大关系哦

热门招聘
相关主题

官方公众号

智造工程师