RS485通信和Modbus通信协议

一、RS485介绍
485
1.在工业控制场合,RS485总线因其接口简单,组网方便,传输距离远等特点而得到广泛应用。
2.RS485和RS232一样都是基于串口的通讯接口,数据收发的操作是一致的,所以使用的是同样WinCE的底层驱动程序。但是它们在实际应用中通讯模式却有着很大的区别,RS485接口为半双工数据通讯模式,而RS232接口为全双工数据通讯模式。RS485任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。
3.RS485接口组成的半双工网络,一般是两线制(以前有四线制接法,只能实现点对点的通信方式,现很少采用),多采用屏蔽双绞线传输。这种接线方式为总线式拓扑结构在同一总线上最多可以挂接32个结点。在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。

二、MODBUS介绍
1.1979年施耐德电气制定了一个用于工业现场的总线协议Modbus协议,现在工业中使用RS485通信场合很多都采用Modbus协议。
2.ModBus网络是一个 工业通信系统,由带智能终端的 可编程序控制器计算机 通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种 数据采集 和过程 监控 。
3.Modbus可以支持多种电气接口,如RS-232、 RS-485 等,还可以在各种介质上传送,如双绞线、 光纤 、无线等。

三、RS485和MODBUS的区别
1.RS485是一个物理接口,简单的说是硬件。
2.MODBUS是一种国际标准的通讯协议,用于不同厂商之间的设备交换数据(一般是工业用途);所谓协议,也可以理解为上面有人说的“语言”吧,简单的说是软件。通俗点来讲,ModBus规约了起停电机,主机要分别发送什么命令给从机。ModBus规定主从机之间数据的交互,需要遵循什么样的格式,如何保证数据在传输过程中不发生冲突。只要都遵循这个协议,那么不同厂家的主从机就可以共用了。
3.一般情况下,两台设备通过MODBUS协议传输数据:
最早是用RS232C作为硬件接口,(也就是普通电脑上的串行通讯口(串口)); 也有用RS422的,也有常用的RS485,这种接口传输距离远,在一般工业现场用的比较多。
4.MODBUS协议又分MODBUS RTU,MODBUS ASCII和后来发展的MODBUS TCP三种模式:
其中前两种(MODBUS RTU,MODBUS ASCII)所用的物理硬件接口都是串行(Serial)通讯口(RS232,RS422,RS485)。而MODBUS TCP则是为了顺应当今世界发展潮流,什么都可以用 Ethernet 网或Internet来连接,传送数据。所以又MODBUS TCP模式,该模式的硬件接口就是 以太网 (Ethernet)口了,也就是我们电脑上一般用的网络口了。

起始位和结束符:前后都至少有3.5个字节的时间间隔,起始位和结束符实际上没有任何数据,T1-T2-T3-T4代表的是时间间隔3.5个字节以上的时间,而真正有意义的第一个字节是设备地址。

  • 设备地址:在多机通信的时候,数据那么多,我们依靠什么判断这个数据帧是哪个设备的呢?没错,就是依靠这个设备地址字节。每个设备都有一个自己的地址,当设备接收到一帧数据后,程序首先对设备地址字节进行判断比较,如果与自己的地址不同,则对这帧数据直接不予理会,如果如果与自己的地址相同,就要对这帧数据进行解析,按照之后的功能码执行相应的功能。如果地址是0x00,则认为是一个广播命令,就是所有的从机设备都要执行的指令。
  • 功能代码:在第二个字节功能代码字节中,Modbus规定了部分功能代码,此外也保留了一部分功能代码作为备用或者用户自定义,这些功能码大家不需要去记忆,甚至都不用去看,直到你有用到的那天再过来查这个表格即可。
  • CRC校验:CRC校验是一种数据算法,是用来校验数据对错的。CRC校验函数把一帧数据除最后两个字节外,前边所有的字节进行特定的算法计算,计算完后生成了一个16bit的数据,作为CRC校验码,添加在一帧数据的最后。接收方接收到数据后,同样会把前边的字节进行CRC计算,计算完了再和发过来的CRC的16bit的数据进行比较,如果相同则认为数据正常,没有出错,如果比较不相同,则说明数据在传输中发生了错误,这帧数据将被丢弃,就像没收到一样,而发送方会在得不到回应后做相应的处理错误处理。

猜你喜欢

转载自blog.csdn.net/a123789999/article/details/117520158