Modbus通信协议的原理
要了解Modbus通信协议,首先要了解通信的基本知识(1~3的基本知识不仅仅适合Modbus通信协议,还适合所有的串行异步协议)。
1.数字通信的基本知识
2.通信的接口标准
3.通信格式与数据格式
4.Modbus通信协议
5.Modbus通信协议的应用
1.数字通信的基本知识
1.什么是数字通信?
“数字通信”是指数字信号(二进制脉冲信号)作为载体来传输信息,或者用数字信号对载波进行数字调制后再传输的通信方式。现在用的都是数字通信,在大哥大年代用的是模拟通信(这个也是无线的,1995后换成了数字通信,目前除了广播是模拟通信的,其他的基本都是数字通信了)。
数字通信相比模拟通信的优点有:1.抗干扰,抗噪声能力强。可高质量地进行远距离通信。2.数字信号易于加密,信息传输比较安全。3.数据通信设备的产品重复性好,有利于生产 及通信的发展和普及。
2.数字通信的方式。
1.按传送方式分类:可以分为并行,串行。
1.并行通信是按字或字节为单位整体进行传送的,n位必须要n根线。其特点传输速度快,通信线多,成本高,因为长度增加,干扰就会增加,数据也就容易出错(并行通信常用于电脑内部的总线传输,PLC内部的总线传输,PLC和扩展模块,智能模块之间的通信。总线:总线指的是传输数据的公共通道。字和字节的说明 :字表示的是16,32,64个二进制位,字节表示的是8个二进制位。并行通信就是把16(32,64)个二进制或者8个二进制位一起传递过去,对应的就需要16根线或者8根线(如果用并行通信把数据传递到几千米的地方,那 就不得了了,因此并通信只能适应于很短的传送距离,如计算机内部等)
子与字节的详细说明:https://baike.baidu.com/item/%E4%BD%8D%E3%80%81%E5%AD%97%E8%8A%82%E3%80%81%E5%AD%97
)。
2.串行通信:
1.串行通信是以二进制的位(bit)为单位的 数据传输方式,每次只传一个bit位,串行通信需要的信号线少,适用于距离较远的场合(工业控制中一般使用串行通信)。他的传输只需要一根线(还有一根地线,地线只是形成电压把bit传送过去,并没有承担传送数据的任务。所以传送的时候一根数信号线,一根是信号地线),因为他传送数据的时候是一个bit一个bit这样传送过去的,并不像并行通信那样8个bit或者16个bit一起传递过去。
2.在串行通信中,按照同步的方式不同,可将串行通信分为同步传送和异步传送。1.同步传送:接收方和发送方的传送速率相同。
同步传送以字节为单位,每次传送1~2个字符,若干个数据字节(有称为数据包)和校验字符,同步传送传输的效率高,但是对硬件的要求较高,一般用户高速通信。
(如发电报,发电报的时候要先发一个信号给对方,表示的是我现在要发报了,这个信号表示的是同步信号,要求对方把信号调到和我同步,然后就可以发报了,发完后就发一个停止符,校验符(主要是校验是不是发了这么多数据给对方),然后这个报文发完了,除了一开始的同步字符和最后的校验字符和停止字符,其他的都是有用的数据,所以效率高,在工业控制中很少用到同步通信,因为对硬件要求高)
2.异步发送:异步发送是指在数据传送过程中,发送方可以随时传送字符,两个字符之间的时间间隔是不固定的。接收端必须时刻做好接收的准备。在传送一个字符(也叫一帧)时,所以的bit位是 连续发送的(字符和字节不同。一般来说,英文状态下一个字母或数字(称之为字符)占用一个字节,一个汉字用两个字节表示。在不同的编码方式下一个字符占的字节不太一样。),但是两个字符之间会传送会有时间间隔的。异步传送速率低,但通信方式简单可靠,成本低,容易实现。一步步把通信传送附加的非有效信息较多,他的传输效率低,一般用于低速通信,这种通信方式广泛地应用在工业控制通信系统中。
2.按传送方向分类:可以分为单工,半双工,全双工。
1.单工:比如下图的只能甲向乙发送消息,乙不能向甲发送消息(比如打印机,只能有电脑向打印机发送明令,打印机不能向电脑发送明令)
2.半双工:双方都看一遍讲话,只能在一根线上进行,同一时间只能有一方讲话。(对讲机就是半双工通信,也叫广播)
3.全双工:双方都可以同时讲话,有两根线。
3.按是否进行调制分类:可以分为基带,频带。
1.基带只能传送字符,频带能够传送视频,图像。
4.按通信介质分类:可以分为双绞线,同轴电缆,光纤(自行了解,不详细说)。
3.通信协议的三要素(重要)。
1.通信的接口标准
2.通信的格式
3.通信的数据格式
1.通信的接口标准
1.通信协议是指通信双方 对数据传送控制的一种约定。约定中包含对通信接口,同步方式,通信格式,传送速度,传送的介质,传送步骤,数据格式及控制字符定义等一系列内容做出统一规定,通信双方必须同时遵守。
2.通信的接口标准是通信的硬件协议,提供机械的,电气的,功能性的特性和规程。同时,定义了传输介质与网络接口的连接方式以及数据发送和接收的方式。在串行 数据接口标准中,最常用的是RS232,RS422和RS485串行接口标准。
3.通信的接口标准不是统一的,电气的有电器的接口标准,机械的有机械的接口标准等等。
4.通信接口标准——电气特性
逻辑状态的电平,“0”是几伏,“1”是几伏,信号传输方式,传输速率,传输介质,传输距离等,还要给出使用的范围,是点对点还是点对多
通信接口标准-机械特性
用什么连接件,用什么数据线,连接件的引脚定义及通信时的连接方式等。
5.在串行数据接口的标准中,最常用的是RS232 ,RS422,RS485串行接口标准。两个设备进行通信控制,其通信接口标准必须一致。如不一致,则需要通过转换变为一致(不一致要通过转换电路来完成,即是转接器)。
6.RS232通信接口标准,RS232在1962年是有美国电子工业协会制订并发布的工业标准,以保证不同厂家产品之间的兼容。1970年有定制了用于串行通讯的标准RS-232-C接口标准。目前它又广泛地被借来用户计算机与终端或外设之间的近端连接标准(目前真正用的是RS-232-C,口头上说的是RS-232,RS翻译成中文就是推荐。即是推荐的标准,他只是推荐给你用,你可以不用他的,自己搞一套出来,但是现全世界都在使用,这个也成为了国家标准)。(现在电脑与硬盘之间的通信是RS-232-C(是电脑机箱里面的硬盘,外接硬盘是USB接口,这个又是另外一个标准)
7.RS232通信接口标准不足。
1.接口信号电平高(正负5V~正负15V),容易烧坏接口电路芯片。
2.波特率低,仅20kbit/s,传输效率低。
3.采用不平衡的单端通信传输方式,易产生共模干扰,抗干扰能力差(它是一对一的,在工业控制中一般采用的是一对多,即一个控制器控制多个变频器,所以在工业控制中一般很少使用,一般在电脑上使用)。
4.传输距离短仅50米,长距离须加调制
8.RS-422通信接口标准
1977年EIA制定了RS-422。它采用了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延迟到4000英尺(1200多米),并允许在一条平衡总线上连接最多10个接收器。RS-422是一种单机发送,多机接收的单向,平衡传输规范。(这个就是一对 多),所用设备通信的线就是总线,如果你想通信的话就把设备挂在总线上,然后控制设备通过总线来找到你,然后你就可以通信了。(RS-422很多标准是和RS-485基本一样的)
9.RS-485通信接口标准
RS-485采用半双工或者全双工通信方式,最大传输距离标准值为4000英尺,实际上可达3000米。RS-485接口在总线上是允许连接多达128个接收器(理论上是257,实际上在工业控制系统中是不行的,因为传输速率跟不上),即具多站能力。RS-485接口具有良好的抗噪声干扰性 ,长的传输距离和多站能力等优点使其成为首选的串行接口。RS-485接口组成的半双工网络,一般只需要两根连线,成本低,易实现。RS-485接口的这种优秀特点使它在分布式工业控制系统中得到了广泛的应用(基本上通信的底层都采用RS-485作为接口的标准,Modbus底层通信接口也是采用RS-485,分布式就是总线,即是一个总线上面挂很多通信设备 )。
10.通信接口标准转换
如果两台设备的接口标准不同,则不能直接进行通信,必须进行标准转换。要把两个不同的接口标准转换成一个标准,才能进行通信。
2.通信的格式
在串行异步通信中,通信双方必须就通信数据传送方式,传送的数据表长度,校验方法和传输速率进行统一的设置,这样才能保证双方通信的正确。这种双方进行统一设置的参数,称之为通信格式(或通信参数)。(比如异步通信是一个一个字符传送的,用不同方式表示位数不同,ASCII表示是7位,RTU表示是8位,在通信的时候要统一选择用7位的还是8位的。还有传送的字符要不要进行校验,还有传输的效率都要同步(这个叫波特率),不能一方快,另外一方慢,这样就会出现数据的错误。这些格式双方都要确定好才能够进行通信,要不就会出错或者不能进行通信,这些内容就是通信的格式)
3.通信的数据格式(即是报文)
通信协议必须对信息的传输内容作出规定。例如传输的数据信息帧的结构,设备的站址(即是地址),功能代码,所发送的数据校验方式,错误的检测,信息传输中字符的格式等等。这些数据信息规定称为通信的数据格式。
4.串行异步通信传送
1.串行异步传送在数据传送过程中,发送方可以在任意时刻传送字符,两个字符之间间隔是不固定的。因此首先要解决的问题就是,如何知道开始传送,如何知道发送完毕。其次,发送字符的位数(是7位还是8位的)。第三,如何知道接受到这个字符有没有错(校验方法)。这些问题都通过发送的数据格式和规定来解决的。(如果通信 没有这些规定,那么通信就会经常出错)
2.起止式异步传送字符格式说明(即是传送字符的说明)。
1.起始位:一个字符信息开始,用逻辑0表示。
2.停止位:一个字符信息结束,用逻辑1表示。
3.空闲位:两个字符间的空闲,用逻辑1表示。
4.数据位:一个字符信息的内容,数据位的个数可以是7位二进制或者8位进制。
5.校验位:校验数据传送的正确性,可以有奇偶校验,也可以没有。
6.在传送数据的时候要进行类型的匹配。比如说我选择一位停止位,对方也要选择一个停止位,我选择了7位二进制位,对方也要选择7位二进制位。我 选择了偶校验,对方也要选择偶校验。这些就是通信格式,通信格式要一致双方才可以通信。
7.奇偶校验:
奇校验:一组给定数据中“1”的总数,偶为1,奇为0.
偶校验:一组给定数据中“1”的总数,偶为0,奇为1.
比如说这个8位二进制数据:10110110 中1的总数是5,是一个奇数。如果采用奇校验的话,那么校验位就为0。如果采用偶校验的话那么校验位就为1. 所以校验位是0还是1跟你选择的奇偶校验有关,还跟你字符当中1的总数有关(它是一个一个字符校验的)。
8.波特率:1kb=1000字节。一个字节等于8bit(二进制位,0101)
在串行通信中,用“波特率”来描述数据的传输速率。所谓的波特率,即每一秒钟传送的二进制位数,其单位为bps。他是衡量串行数据速度快慢的重要指标。在串行异步通信中,接收方 的接收波特率必须与发送方的发送波特率相同 。否则数据不能传送。
9.异步传送的之字符数据格式和波特率,我们称之为串行异步通信的通信格式。在串行 异步通信中,通信双方必须就通信格式进行统一规定,这样才能保证双方通信的正确。如果不一样,那怕一个规定不一样,都不能保证正确进行通信 。通信是双方的事情,要进行通信,双方都要进行通信格式的设置。
10.信息帧与数据格式
在通信中,一个完整的信息称做一帧,也叫数据信息帧。每一帧包括数据和必要的控制信息。设计一个没有错误的数据信息帧结构是非常重要的。而把数据信息帧结构称做数据格式(数据格式也叫报文)。
1.起始码:表示信息中起始边界,即是开始位,对方收到这个码后就知道后面是一个完整的信息道。
2.地址码:即是设备的地址,用来区分设备的。
3.控制码:(也叫功能码)用来命令设备干什么的。
4.信息码:真正传递的数据,告诉对方要反 会那些数据。
5.校验码:和校验位不同,校验位只是一个位。校验码它形成一个字符,这个字符就是一个校验码。
6.停止码:信息的结束边界,表示信息的结束。
11.在通信中,要根据 通信协议锁约定的数据格式,控制字符定义,参数字址定义和校验 码来编写数据信息帧。
一帧数据信息(也称报文 )的发送,是从帧头开始到帧尾结束,依次一个字符,一个字符的发送。而对每个字符则 是从低位(b0)到高位 (b7或者b8)一位一位地连续依次发送。而一个字符一个字符的发送,字符中间可以有间隔的,每个字符最大的时间间隔是1秒。
Modbus通信协议
1.Modbus通信协议的简介
2.ASCII通信方式
3.RTU通信方式
4.应答和错误检测
1.Modbus通信协议的简介
1.Modbus协议是美国MODICON(莫迪康)公司首先推出的基于RS485总线的通信协议,其物理层为RS232/RS422/RS485接口标准(接口首先是RS485其实RS232,RS422接口也可以用的)。
2.Modbus通信协议是一种主从式串行异步半双工通信协议。采用主从式通信结构,可使一个主站对对多个从站进行双向通信,主站可单独和从站通信,也可以以广播的方式和所有从站通信。
从站与从站之间是不能够进行通信的,如果要进行通信那么就要先把自己的信息传给主站,然后再让主站传递给其他从站,这样来 完成从站和从站的通信。从站和从站之间是不能直接进行通信的。在同一时间里,主站只能和一个从站进行通信。如果以广播的方式通信的话,所有从站都可以收到信息,但是不需要回应。就像农村的喇叭广播一样。
3.Modbus协议的某些特性是固定的,如信息帧的结构,帧的顺序,通信错误和异常信息情况的处理,已及所执行的功能码等,都不能随便改动。其他特性是属于用户可选的如传输介质,波特率,字符奇偶校验,停止位个数,参数地址定义等等。
4.Modbus协议中的通信格式中的字节数据长度是固定的(如果采用ASCII的通信方式数据长度是是7位,如果采用RTU通信格式数据长度是8位)。校验位,停止位,波特率都是可选的。(注意:一个是针对单个字节,下图中的是字符。就像校验位和校验码是不同的,校验位是一个 bit,校验码是一个字符。字符有有字节组成的,一般来说,英文状态下一个字母或数字(称之为字符)占用一个字节,一个汉字用两个字节表示。在不同的编码方式下一个字符占的字节不太一样。所以字节有字节的通信格式(对应的是bit(位),如校验位),字符有字符的通信格式(对应的是字符,如校验码就是字符)
2.ASCII通信方式
1.ASCII模式的主要优点是允许字符之间的时间间隔长达1 秒,也不会出现错误。这个的缺点是慢,在工业控制系统中如果响应不够快的话会 出现问题的。
2.ASCII模式的通信格式的约定:
1.起始位:1位
2.数据长度:7位。低位发送(发送数据都是低位发送的 )
3.校验位:1位(有校验位),0位(无校验位)(这里注意校验位和停止位是配套使用的,如果是有校验位那么停止位就是1位,如果没有校验位那么停止位就是2位,这样一个字符加起来的位数是相等的,刚好是10位)
4.停止位 :1位(有校验位),2位(无校验位)
5.波特率:可选。
3.LRC算法详解:
1.参与校验数据:从地址码到数据区域所有数据。
2.算法:相邻2个16进制符相加求和。
校验码:取其和的低8位的补码为校验码。
4.ASCII模式数据传送约定在数格式中每个16进制字符(09),(AF)都转换成ASCII码发送。这种方式的主要优点是字符发送的时间间隔可达1秒。而不产生错误。这个是非常好的,通信最怕的就是发生错误。只有不出错,慢点是可以接受的。
3.RTU通信方式
2.RTU模式的优点是在相同波特率下其传输的字符的密度高于ASCII模式,每一个信息必须连续传输,字符之间的传输是不会断的。
这个的缺点是 信息是连续传输的,如果传输过程中稍微有些问题的话,这个传输就会失败。
3.ASCII模式的通信格式的约定:
1.起始位:1位
2.数据长度:8位。低位发送(发送数据都是低位发送的 )
3.校验位:1位(有校验位),0位(无校验位)(这里注意校验位和停止位是配套使用的,如果是有校验位那么停止位就是1位,如果没有校验位那么停止位就是2位,这样一个字符加起来的位数是相等的,刚好是11位,字符的位数是有通信格式决定的)
4.停止位 :1位(有校验位),2位(无校验位)
5.波特率:可选。
4.CRC校验算法,很复杂 ,不用自己算,有程序直接调用就可以了。
5.RTU模式数据传送约定
RTU模式数据传送约定按数据格式中16进制字符进行连续发送。如果再发送帧信息期间,出现大于1.5个字符的静止时间,则信息会出现错误。该模式的主要优点是在相同波特率下其传输效率高于ASCII模式。(早期的硬件设备电路很弱,1到0,0到1转换时间比较长,转换不过来,很容易出现错误,所以一般是采用ASCII模式。但是现在随着科技的发展,硬件的电路越来越强了,所以现在一般都是采用高效率的RTU模式,RTU不仅效率高,而且它不要求你把字符转换成ASCII码模式)
4.应答和错误检测
1.当主站向从站发送信息时,全部通信有两部分组成。1.主站向从站 发送,我们叫查询,也叫请求。2.从站对主站的回答,也叫回传,响应。应答的目的是告诉主站是否有错和回答主站相关的通信请求。通信协议对查询和应答的时间。输出格式,验错方法都会给出相应的规定。
2.Modbus规定:当查询主站的变化 来知识是否有错误发生。无错误正常应答,从站仅回应相同的功能码。对有错或异常的应答,从站应答时,将其功能码最高位b7置1。同时,从站还应将错误代码放入数据区告诉主站发生了什么错误。
3.错误代码是有用户去规定,Modbus协议不规定。
Modbus通信协议应用
1.要看懂人家通信学协议的内容,比如正转是怎么规定的,反转是怎么规定等等,然后就填进去。
1.读到的数据会保存到存储器里面。RTU或者ACSII模式所传送的都是16进制字符。其他的进制的字符都在传输的时候都会转换成16进制的。ASCII数据为是7位,RTU数据位是8位。校验码校验的数据是从地址位到数据位。
Modbus协议有一部分是规定 的,必须要按照它的规定来,有一些是留给用户设置的。重点要学习Modbus的通信格式和数据格式。然后就到应用了,应用就是两个设备之间的通信,比如说PLC和西门子变频器进行通信,那么首先要拿到西门子变频器的通信协议拿到手。然后详细地阅读它通信协议的规定,比如它正转,这个正转在他这个协议中是怎样规定的,这个地址是多少,命名的内容是多少,数据的内容是怎么规定的。
字符和字节区别:https://www.cnblogs.com/chenmingjun/p/8118083.html