单片机做modbus rtu多主站-rtu从站刷新频率一般为多少

modbus RTU常见问题汇总_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
modbus RTU常见问题汇总
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩4页未读,
定制HR最喜欢的简历
你可能喜欢自己对单片机的modbus RTU的详细解释,要求加精!
我的图书馆
自己对单片机的modbus RTU的详细解释,要求加精!
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & Modbus 一个工业上常用的通讯协议、一种通讯约定。Modbus协议包括RTU、ASCII、TCP。其中MODBUS-RTU最常用,比较简单,在单片机上很容易实现。虽然RTU比较简单,但是看协议资料、手册说得太专业了,起初很多内容都很难理解。
& & 所谓的协议是什么?就是互相之间的约定嘛,如果不让别人知道那就是暗号。现在就来定义一个新的最简单协议。例如,
协议: “A” --“LED灭”
& & & &“B” --“报警”
& & & &“C” --“LED亮”
单片机接收到“A”控制一个LED灭,单片机接收到“B”控制报警,单片机接收到“A”控制一个LED亮。那么当收到对应的信息就执行相应的动作,这就是协议,很简单吧。
& 先来简单分析一条MODBUS-RTU报文,例如:01 &06 &00 01 &00 17 &98 04
& & 01 & & & & & & 06 & & & & & &00 01 & & & & & 00 17 & & & & &98 04
& 从机地址 & & & &功能号 & & & & &数据地址 & & & & &数据 & & & & CRC校验
这一串数据的意思是:把数据 0x0017(十进制23) 写入 1号从机地址 0x0001数据地址。
先弄明白下面的东西。
& &一个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完整的指令数据,就像上面的一串数据。
2、CRC校验
意义:例如上面的 &98 04 &是它前面的数据(01 06 00 01 00 17)通过一算法(见附录2,很简单的)计算出来的结果,其实就像是计算累加和那样。(累加和:就是加起来的值,然后它的算法就是加法)。
作用:在数据传输过程中可能数据会发生错误,CRC检验检测接收的数据是否正确。比如主机发出01 06 00 01 00 17 98 04,那么从机接收到后要根据01 06 00 01 00 17 再计算CRC校验值,从机判断自己计算出来的CRC校验是否与接收的CRC校验(98 04主机计算的)相等,如果不相等那么说明数据传输有错误这些数据不能要。
& 意义:modbus 定义。见附录1。
& 作用:指示具体的操作。
MODBUS-RTU
一、一个报文分析
先声明下我们的目的,我们是要两个设备通讯,用的是MODBUS协议。上面简单介绍了:“报文”“CRC校验”“功能号”。
在单片机中拿出一部分内存(RAM)进行两个设备通讯,例如:
数组后面的注释,说明
OX[20] & 代表是输出线圈,用功能码 0x01,0x05,0x0F 访问, 开头地址是 0 (这个后续说明)
IX[20] & &代表是输入线圈,用功能码 0x02 访问, & & & & & & 开头地址是 1 (这个后续说明)
另外两个一样的道理。
注意:所谓的“线圈”“寄存器”就是“位变量”“16位变量”,不要被迷惑。之所以称“线圈”我觉得应该是对于应用的设备,MODBUS协议是专门针对485总线设备(例PLC)开发的。
1、主机对从机写数据操作
如果单片机接收到一个报文那么就对报文进行解析执行相应的处理,如上面报文:
& & 01 & & & & & & 06 & & & & & &00 01 & & & & & 00 17 & & & & &98 04
& 从机地址 & & & &功能号 & & & & &数据地址 & & & & &数据 & & & & CRC校验
假如本机地址是 1 ,那么单片机接收到这串数据根据数据计算CRC校验判断数据是否正确,如果判断数据无误,则结果是:
& & & & & & HoldDataReg[1] &= &0x0017;
MODBUS主机就完成了一次对从机数据的写操作,实现了通讯。
2、主机对从机读数据操作
主机进行读HoldDataReg[1] 操作,则报文是:
& & 01 & & & & & & 03 & & & & & &00 01 & & & & & 00 01 & & & & &D5 CA
&从机地址 & & & &功能号 & & & & &数据地址 & & &读取数据个数 & & & CRC校验
那么单片机接收到这串数据根据数据计算CRC校验判断数据是否正确,如果判断数据无误,则结果是:返回信息给主机,返回的信息也是有格式的:
返回内容: &
& & 01 & & & & 03 & & & & & &02 & & & & & & 0017 & & & & &F8 4A
& 从机地址 & 功能号 & & 数据字节个数 & &两个字节数据 & &CRC校验
MODBUS主机就完成了一次对从机数据的读操作,实现了通讯。
二、MODBUS报文模型
以上了解到了MODBUS的一帧报文是如何通讯的,其实每个报文的格式都基本一样的。
& & & & & & & & & & & & & & &
这里两个缩略词以前不知道,但是现在要明白指的是什么,“ADU”“PDU”
ADU: 应用数据单元
PDU: 协议数据单元
三、MODBUS数据模型
四、MODBUS事务处理
& 下列状态图描述了在服务器侧MODBUS事务处理的一般处理过程。
& & & & & &
五、MODBUS请求与响应
& 看MODBUS协议手册,中文第 10 页开始,英文第 24 页开始。手册非常详细举例说明了MODBUS协议各个功能号的请求与响应。
& & & & & & & & & & & & & & & & & & & & & & & & & & & & &modbus协议在单片机上实现过程
MODBUS 任务处理函数
函数中,RcvBuf 为串口接收缓冲区,如果接收了一个报文则,RcvBuf[0] 为从机地址,RcvBuf[0] 为MODBUS功能号。根据功能号做出响应,而具体的操作根据功能号在各自的函数中执行,相当于解析接收到的数据。
附录1:MODBUS-RTU功能码
&最常用功能码:
&下面“线圈”“寄存器”其实分别直的就是“位变量”“16位变量”
& & & & 01 (0x01) & & & &读线圈
& & & & 02 (0x02) & & & &读离散量输入
& & & & 03 (0x03) & & & &读保持寄存器
& & & & 04(0x04) & & & & 读输入寄存器
& & & & 05 (0x05) & & & &写单个线圈
& & & & 06 (0x06) & & & &写单个寄存器
& & & & 15 (0x0F) & & & &写多个线圈
& & & & 16 (0x10) & & & &写多个寄存器
附录2:CRC Generation
资料下载:
附件:MODBUS协议中文版.pdf[]大小:1.11MB 总下载量:66410次,今日下载:50次
[此贴子已经被作者于 9:54:14编辑过]
hxc-spring 午夜天台杀手
红卫兵nhkojk llaaiijjuunn linsanity wumengming80 LegendoGDkWU chengyu5083 aaa2073 红领巾
欧巴马 hnhyczj laden_Fu_justforsharing weiretan lizhengchao lwz2008by 悠嘻嘻
zergzz bjarht gzlsj zh98118 yijianZbHJiR mkn377
zhangbin5566
达芬奇66画蛋 ningbozhy lruhig yunqingabc a jog0821 sunjian5432
dwwzl302 赞了该帖&
喜欢该文的人也喜欢51单片机 Modbus协议RTU模式校验CRC计算方法_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
51单片机 Modbus协议RTU模式校验CRC计算方法
&&51单片机 Modbus协议RTU模式校验CRC计算方法带C代码
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢MODBUS RTU从站测试工具,接收MODBUS的主站信息 返回相应信息 -- 工控之友 -- 工控网博客
http://blog.gkong.com/lljlsl.ashx
本软件特点与用处:
1、本软件是MODBUS通讯协议RTU模式从站软件;
2、当本软件接收到MODBUS RTU主站发来的正确信息时,会按照MODBUS规范返回相应的信息;
3、当本软件接收到MODBUS RTU主站发来的错误信息时,会按照MODBUS规范返回相应的错误号;
4、本软件可以与所有支持MODBUS RTU通讯协议的主站控制器(PLC、触摸屏、组态软件、单片机)进行通讯;
5、本软件经过测试,完全符合MODBUS通讯协议规范!
6、您可以用本软件测试您编制的单片机MODBUS RTU主站程序,验证程序的正确性;
7、您可以用本软件测试您编制的PLC、触摸屏、组态软件MODBUS RTU主站程序,验证程序的正确性;
{回复:MODBUS RTU从站测试工具,接收MODBUS的主站信息 返回相应信息}
怎么下载软件呢?
{回复:MODBUS RTU从站测试工具,接收MODBUS的主站信息 返回相应信息}
希望有用啊
{回复:MODBUS RTU从站测试工具,接收MODBUS的主站信息 返回相应信息}
MODBUS RTU从站测试工具,接收MODBUS的主站信息 返回相应信息}
{回复:MODBUS RTU从站测试工具,接收MODBUS的主站信息 返回相应信息}21ic官方微信-->
请教 MODBUS RTU 模式下数据间时间间隔问题
初级技术员, 积分 75, 距离下一级还需 25 积分
初级技术员, 积分 75, 距离下一级还需 25 积分
初级技术员, 积分 75, 距离下一级还需 25 积分
初级技术员, 积分 75, 距离下一级还需 25 积分
&MODBUS&RTU方式数据基本格式如下:地址&&功能代码&&&&数据数量&&&&数据1&&&&...数据n&&&&CRC高字节&&&&CRC低字节帧定界&:MODBUS&RTU方式下,每两个字符之间发送或者接收的时间间隔不能超过1.5倍&字符传输时间。如果两个字符时间间隔超过了3.5倍的字符传输时间,规约就认为一帧数据已经接收,新的一帧数据传输开始。问题:&&&1、在软件过程中如何实现时间的判断?&&&2、严格定义数据之间的时间有何意义?比如不去考虑数据之间的时间而实现通讯,会有什么弊端和好处,或者在什么情况下可以不去考虑数据间的时间间隔问题?&&
, , , , , , , , ,
高级技术员, 积分 904, 距离下一级还需 96 积分
高级技术员, 积分 904, 距离下一级还需 96 积分
高级技术员, 积分 904, 距离下一级还需 96 积分
高级技术员, 积分 904, 距离下一级还需 96 积分
1,从收到第一个字符,规定时间内没收到新的字符就算1帧完了
好处就是简单
一般的UART都有这个功能
两个字符时间间隔超过了3.5倍的字符传输时间,会有一个中断的如果没有此功能,只能根据最高波特率计算出时间,然后用定时中断判断
技术达人, 积分 9856, 距离下一级还需 144 积分
技术达人, 积分 9856, 距离下一级还需 144 积分
技术达人, 积分 9856, 距离下一级还需 144 积分
技术达人, 积分 9856, 距离下一级还需 144 积分
用时间间隔来判断一帧信息的起始...
哪家的UART有这个功能?呵呵,都是自己的代码判断的把
mpuhome&发表于&&09:43&侃单片机&←返回版面&&&&4楼:&一般的UART都有这个功能&两个字符时间间隔超过了3.5倍的字符传输时间,会有一个中断的如果没有此功能,只能根据最高波特率计算出时间,然后用定时中断判断&&
那就不能说是‘一般的UART’都带了,呵呵,8BIT/16BIT的好象基本上都不带的啊。。。
实习生, 积分 24, 距离下一级还需 26 积分
实习生, 积分 24, 距离下一级还需 26 积分
实习生, 积分 24, 距离下一级还需 26 积分
实习生, 积分 24, 距离下一级还需 26 积分
你好& &我现在也在做这个,就是MCGS与DSP用Modbus通信,但是如果在组态里面同时设置一区寄存器和4区寄存器的话就不能正常通信,单独设置任何一个寄存器通道却可以,这是咋回事呢?
中级技术员, 积分 247, 距离下一级还需 53 积分
中级技术员, 积分 247, 距离下一级还需 53 积分
中级技术员, 积分 247, 距离下一级还需 53 积分
中级技术员, 积分 247, 距离下一级还需 53 积分
扫描二维码,随时随地手机跟帖
希望之星奖章
等级类勋章
终身成就奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
突出贡献奖章
等级类勋章
湍急之河流
发帖类勋章
时间类勋章
技术奇才奖章
人才类勋章
技术新星奖章
人才类勋章
时间类勋章
您需要登录后才可以回帖
热门推荐 /7
MACOM在线研讨会正在召开~

我要回帖

更多关于 modbus rtu c 主站 的文章

 

随机推荐