Modbus通信协议_第1页
Modbus通信协议_第2页
Modbus通信协议_第3页
Modbus通信协议_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Modbus通信协议详细介绍协议发送给询问方。 Modbus协议包括ASCII、RTU、TCP等,并无规定物理层。此协议概念了操纵器能够熟悉和利用的消息结构,而不管它们是通过何种网络进行通信的。标准的Modicon操纵器利用RS232C实现串行的Modbus 。 Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通信采纳Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就能够够发送数据到 Master端以响应请求;Master端也能够直接发消息修改Slave端的数据,实现双向读写。Modbus协议需要对数据进行校验,串行协议

2、中除有奇偶校验外,ASCII模式采纳LRC校验,RTU模式采纳16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的靠得住协议。另外, Modbus采纳主从方式按时收发数据,在实际利用中若是某 Slave站点断开后(如故障或关机),Master端能够诊断出来,而当故障修复后,网络又可自动接通。因此, Modbus协议的靠得住性较好。下面我来简单的给大伙儿介绍一下,关于 Modbus的ASCII、RTU和TCP协议来讲,其中 TCP和RTU协议超级类似,咱们只要把RTU协议的两个字节的校验码去掉,然后在 RTU协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去

3、即可。因此在那个地址我仅介绍一下M odbus的ASCII和RTU协议。 下表是ASCII协议和RTU协议进行的比较:协议开始标记结束标记校验传输效率程序处理ASCII(冒号)CR,LFLRC低直观,简单,易调试RTU无无CRC高不直观,稍复杂通过比较能够看到,ASCII协议和RTU协议相较拥有开始和终止标记,因此在进行程序处置时能加倍方便,而且由于传输的都是可见的ASCII字符,因此进行调试时就加倍的直观,另外它的 LRC校验也比较容易。可是因为它传输的都是可见的ASCII字符,RTU传输的数据每一个字节 ASCII都要用两个字节来传输,比如RTU传输一个十六进制数 0xF9,ASCII就需

4、要传输F的ASCII码0x39和0x46两个字节,如此它的传输的效率就比较低。因此一样来讲,若是所需要传输的数据量较小能够考虑利用ASCII协议,若是所需传输的数据量比较大,最好能利用RTU协议。下面对两种协议的校验进行一下介绍。 一、LRC校验LRC域是一个包括一个8位二进制值的字节。LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的进程中计算LRC,并将它和接收到消息中 LRC域中的值比较,若是两值不等,说明有错误。它仅仅是把每一个需LRC校验比较简单,它在ASCII协议中利用,检测了消息域中除开始的冒号及终止的回车换行号外的内容。要传输的数据按字节叠加后取反加1即可。下面是它的

5、 VC代码:BYTE GetCheckCode(const char * pSendBuf, int nEnd).数据nCRC校验白低8位CRC校验白高8位例:110105CD6BB20E1BCRC低CRC 高意义如下:<1>设备地址和命令号和上面的相同1, 2.n中的n的值。<2>返回的字节个数:表示数据的字节个数,也确实是数据<3>数据1.n :由于每一个数据是一个8位的数,因此每一个数据表示8个开关量的值,每一名为 0表示对应的开关断开,为1表示闭合。比如例子中,表示20号(索引号为19)开关闭合,21号断开,22闭合,23闭合,24断开,25断开,2

6、6闭合,27闭合.若是询问的开关量不是 8的整倍数,那么最后一个字节的高位部份无心义,置为0。<4>CRC校验同上。二、读只可读数字量寄放器(输入状态):和读取线圈状态类似,只是第二个字节的命令号再也不是1而是2。3、写数字量(线圈状态):运算机发送死令:设备地址命令号05需下置的寄放器地址高 8位低8位下置的数据高8位低8位CRC校验白低8 位CRC校验白高8位例:110500ACFF00CRC 低CRC 高意义如下:<1>设备地址和上面的相同。<2>命令号:写数字量的命令号固定为 05。<3>需下置的寄放器地址高 8位,低8位:说明了需要下置

7、的开关的地址。<4>下置的数据高8位,低8位:说明需要下置的开关量的状态。例子中为把该开关闭合。注意,此处只能够是 FF00表示闭合0000表示断开,其他数值非法。<5>注意此命令一条只能下置一个开关量的状态。设备响应:若是成功把运算机发送的命令原样返回,不然不响应。4、读可读写模拟量寄放器(维持寄放器):运算机发送死令:设备地址命令号03起始寄放器地址高8位低8位读取的寄放器数高8位低8位CRC校验白低8位CRC校验白高8位例:1103006B0003CRC低CRC 高意义如下:<1>设备地址和上面的相同。<2>命令号:读模拟量的命令号固定为

8、03。<3>起始地址高8位、低8位:表示想读取的模拟量的起始地址(起始地址为0)。比如例子中的起始地址为107。< 4>寄放器数高8位、低8位:表示从起始地址开始读多少个模拟量。例子中为3个模拟量。注意,在返回的信息中一个模拟量需要返回两个字节。设备响应:设备地址命令号03返回的字节个数数据1数据2.数据nCRC校验白低8位CRC校验白高8位例:110306022B00000064CRC低CRC 高意义如下:< 1>设备地址和命令号和上面的相同。< 2>返回的字节个数:表示数据的字节个数,也确实是数据 1, 2.n中的n的值。例子中返回了 3个模

9、拟量的数据,因为一个模 拟量需要2个字节因此共6个字节。<3>数据1.n :其中数据1数据2别离是第1个模拟量的高8位和低8位,数据3数据4是第2个模拟量的高8位和低8位, 以此类推。例子中返回的值别离是555, 0, 100。<4>CRC校验同上。五、读只可读模拟量寄放器(输入寄放器):和读取保留寄放器类似,只是第二个字节的命令号再也不是2而是4。六、写单个模拟量寄放器(维持寄放器):运算机发送死令:设备地址命令号06需下置的寄放器地址高8位低8位下置的数据高8位低8位CRC校验白低8例:110600010003CRC低CRC 高意义如下:<1>设备地址和上面的相同。<2>命令号:写模拟量的命令号固定为06<3>需下置

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论