ImageVerifierCode 换一换
格式:DOCX , 页数:4 ,大小:22.38KB ,
资源ID:15223132      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15223132.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MODBUS协议最简单又是最直白的解释Word下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MODBUS协议最简单又是最直白的解释Word下载.docx

1、比如波特率为9600,即,一秒种可以传送9600个位数,位的概念看下面的数据位介绍 校验方式:奇校验或偶校验或无校验,目的是判断传输过程中是否有错误!它只是用于判断一个字符(比如八个位或是七个位组成一个字符)传输是否有错误。但是它并不能完全能够判断传输是否有错。比如偶校验,在检验送八个“11111111”时,如果到达接收方,由于干扰而变成了“10111101”,“1”的个数仍然是偶数,接收方就判断不出来传送的字符已经错误! 数据位:传输一个字符由几个位组成,计算机的基本单位就是“位”,其值非“0”即“1”,又如传送A,定义通讯格式时,是定义的八位,其传送的数据可能就是:00001010; 停止

2、位:传输一个字符有几个停止位,用天判断某个字符是否传输结束,以便开始接收下一个字符。 通讯格式的作用是规范发送方与接收方的传输格式,如果双方通讯格式不一样,接收方就不可能正确判断发送方发来的东西是什么。 比如,接收方设置的波特率是10(一秒只接收十个位)位,而发送方的波特率是20(一秒发送二十个位),那么发送方一秒种发送的20个字符,接收方就不可能都收到,只能接收到10个,造成通讯出错。双方校验方式不一样,就没有一个统一的标准认定传输是否有错误。 数据位,接收方设定的七位,即它接收到七个位就认为是一个字符,而实际发送方设定的是八位,那么接收方认定的字符与发送方发送的字符就不一样了。 *参预通讯

3、的双方设定的通讯格式必须一样的! 二、通讯规范(这个词是我自己定义的,不能引用,会被人笑话的) 通讯格式只是保证接收方正确地接收到发送方传输过来的每一个字符(实际如上所述,检验方式并不能保证完全正确,还要靠通讯规范中的校验和计算来验证整体正确性,下面会继续说明),那么接收到的整串字符做什么用呢,就要靠通讯规范了 MODBUS的通讯规范很简单! 先说ASCII方式: ASCII方式发送时的规范定义如下: 起始符+ 设备地址 + 功能代码 +数据 + 校验 + 结束符 1起始符: 接收到一串字符,总要知道这串字符从哪个地方开始吧,这就是起始符的作用,接收方不管以前收到多少个字符。当接收到起始符时,

4、以前的字符就不再理它了,从起始符开始分析以后的字符! MODBUS的ASCII方式起始符是一个冒号 “:” 2设备地址: 前面说过,MODBUS是单主站的主/从通信模式,一个主站下面可以接十多个从站。大家都挂在一条线,如果没有一个设备地址,就不知道是发给哪个从站的,大家都回应的话,这条线上的信号就乱七八糟了,主站也不知道接收到的是什么了。所以,设这么一个设备地址,告诉是给那个从站的。只要这个从站回答,其他的闭嘴!“二号,请您回答,其他人就不要吱声了。广播地址(0)是命令式的,不要求从站回答的。“都听着,晚上全体到我家喝酒去,不去者死,散会!设备地址是要求两个字符,比如发给2号站,则是“02”现

5、在的组合是“:02” 3功能代码:告诉从站应该做什么,比如读数据的命令是“3”,从站接收到这个命令,再根据下面数据要求的具体地址,把具体地址的数据返回给主站。功能代码也是要求两个字符,比如读命令3,则是“03”0203“ 4数据:1、告诉从站具体的元件通讯地址,写入到哪里,从哪里读。如读变频器的设定频率的通讯地址是00A0元件的通讯地址要求是四个字符,如果控制器的元件地址不足四个字符,则在前面补0,比如元件通讯地址是A0,则在前面补足两个0:“00A0”2、数据又有可能包括您要读取的字节数( 有的控制器是字数),比如连续读取PLC的两个十六位寄存器,其字节数为四个,则是“0004”。您看出来了

6、吧,读取个数也是要求四个字符,不足四个,前面补零020300A00004“3、而当您要实现写入功能时,数据又可能包括写入的数据,比如写入一个十六位寄存器的值,则要包括是写入的数值,如“0D98” 020600A00D98“ 06是单个寄存器的写入命令4、当连续写入多个寄存器时,这个数据包括的内容又不一样,它可能是:寄存器通讯地址(四个字符) +字数(四个字符)+字节数(两个字符)+ 要写入的数值您看乱了吗?没关系的,等您拿到具体控制器时,此控制器的通讯说明上会告诉您此数据都包括什么内容,以什么样的格式排列!您一定为我上面四点中的可能字样而生气,您认为讲解就应该讲解的具体,而不是可能什么又可能什

7、么!这又要重复说明一下MODBUS的通讯规范,起始符+ 设备地址 + 功能代码 +数据 + 校验 + 结束符MODBUS是一种标准通讯协议,这种标准定义了上面红色字符的通讯规范,除了数据项,其他的都是固定字符个数。数据呢,因为功能代码的不同,其包含的内容也不同!所以我只好说可能包含这个,可能包含那个。您无须担心此数据变来变去,造成接收方不知道如何分析。接收方在接收到功能代码时,就已经知道此数据包含多少个字符了! 5检验和: 前面说过,通讯格式里的校验方式并不能保证每个字符都正确,所以这里就把所有字符的值加在一起,其和(检验值)传给接收方,接收再把接收到的字符的值加在一起,与发送方传送过来的检验

8、值比较,如果相等,就算接收正确了。 这种方式极大地提高了传输的可靠性,保证了传输的顺利进行,为传输事业做出了巨大贡献 这样的描述让您想到了什么?假话呗,检验只是提高了校验的可靠性。并不能完全判断传输是否正确。想要最大限度的提高传输的可靠性,唯有最大限度地降低干扰!于是产生了232,485,422传输方式,他们的区别就在于传输的可靠性!1+2+3=6 3+2+1=6 这两个字符串的作用肯定是不一样的!但是其校验和是一样的,如果在传输过程中,由于干扰,1变3,3变1,根据校验和的计算,接收方并不知道由于干扰而造成传输错误,此时,或是出现通讯错误,或是出现通讯混乱。如,命令码03,由于干扰而变成了3

9、0,此时校验和是一样的,而MODBUS并没有30这个命令码,接收不认识,于是出现通讯错误。再如,读变频器的设定频率通讯地址是0001,由于干扰而变成了0010,此时校验和是一样的,但是通讯地址却变了,变频器就可能返回的是其他数据,造成通讯混乱!校验字符是要求两个字符,如果计算结果超过两个字符,则取后两位!*参加校验计算的字符是起始符与校验符之间的字符串(不含起始符与校验符)02030A000004FB“ (假设校验和为FB)02030A000004参加校验和计算 6结束符:接收到一串字符,总要知道在那个地方结束吧,这就是结束符的作用,接收方不管以后还会收到多少个字符。当接收到结束符时,以后再接

10、收的字符就算是下一轮的东西了,从起始符到结束符之间的字符就是它要分析的字符! MODBUS的ASCII方式结束符是- Chr$(13) + Chr$(10) 02030A000004FB“+ Chr$(13) + Chr$(10)至此,ASCII方式的发送就完成了,控制器接收到此串字符后,根据MODBUS协议定义的通讯规范分析此串字符的作用,然后返回相应的字符!注意:发送的字符都是以十六进制数表示!控制器返回的字符根据命令的不同而不同,此处不好讲解,在下面具体例子中会有说明! 再说RTU方式: RTU方式发送时的规范定义如下: 至少3.5个字符传输时间的停顿间隔时间标定消息的开始 设备地址 +

11、功能代码+数据 +校验+ 至少3.5个字符传输时间的停顿间隔时间标定了消息的结束 其他的就不用说了,与ASCII方式一样的作用,唯独这3.5个字符的时间搞晕了很多人,实际我也不敢太解释,大致说一下吧,您就当听着玩,比如通讯格式是9600,E,8,1 波特率是做什么的?一秒传输多少个位(比如一秒传送9600个位),一个字符是多少个位呢?通讯格式已经标定了(7个位或是8个位),那3.5个字符的传送时间就好算了吧:3.5*11(或10)=39个位(35个位),传3.5个字符需要的时间是:39/9600=4毫秒。不是说八位嘛,怎么乘11,记住了,还有一个起始位,奇或偶的校验位(无奇偶校验,则没有此位)

12、,停止位(两个停止位就是2了。)如9600,N,8,2为11个位,9600,N,7,1.为9个位 就是说,您得保证发送字符串的连续性,中间停顿时间超过4毫秒,接收方就认为您已经发送完了这组消息,开始处理了。这就是至少3.5个字符传输时间的停顿间隔时间标定了消息的结束的含义 如果您发送的太连续,下一组消息与上一组消息之间的间隔时间没超过4毫秒,接收方就认为这些字符是一组消息,按一组消息去处理。所以,您发送结束一组命令后,必须间隔4毫秒才能发送下一组命令. 这就是至少3.5个字符传输时间的停顿间隔时间标定消息的开始的含义 至此我的大白话结束,有什么错误,请您批评,多谢! 通讯协议实际也就是这回事,

13、任何一个协议都大同小异。通讯格式,通讯规范两种而已。 您如果愿意,也可以自己定义一个通讯规范,用PLC或是VB语言按照您自己定义的这个规范处理,如果可靠性超过modbus,那您的通讯规范就是最流行的了!我经常问某些产品推广人员,“您设备的通讯协议是什么”,他回答:“232”或是“485”。今天您看了上面这些大白话,请您就不要再这样回答了。Modbus通信标准协议可以通过各种传输方式传播,如 RS232C、RS485、光纤、无线电等。“232”或是“485”只是一种线路传输方式,与协议是无关的!232传输抗干扰性差,485传输抗干扰相对强。MODBUS做为一种标准的协议,应用于各种PLC,控制器,仪表。这些仪表或是控制器应用中,元件的通讯地址肯定是不一样了;各个命令码的各部分组成的意义也许也会不同;但是,它一定会遵守MODBUS的协议规范。即,每个命令码的组成一定符合MODBUS的规范!一样不多,一样不少!下面针对某种支持MODBUS协议的控制器,说一下具体的读/写例子1 读某控制器的十五个寄存器值,发送的字符串是:(ASCII方式): 01031000000FDD+ Chr$(13) + Chr$(10)起始符“:” + 站号(01) + 读命令(03)+ 起始寄存器通讯地址(1000)+ 字数(15;转换成十六进制000F)+ 校验和(DD)+ 结束符控制器返回的字符数是71个

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1