西安艾宝物联网科技有限公司

西安艾宝物联-工业无线测控专家

艾宝物联 工业无线测控专家

以技术创新为生命,以卓越品质求生存

关于RS485和MODBUS的快速教程

文章出处:未知 浏览次数:发表时间:2018-09-20

什么是RS485?


RS485是串行传输标准,有点像RS232,但使用其他电信号。RS485的一个重要优点是可以将多个RS485设备放在同一总线上。因此,您不必在主机上乘以RS485接口来询问多个设备。但是,有一个小技巧:在总线的每一端,你必须放一个总线端接器有时这意味着您必须在端子上拧一个小电阻,或者只需将开关移到适当的位置即可。 

RS485总线通常只由两根导线和四极电阻组成......
RS485总线通常只由两根导线和四极电阻组成......


RS485和RS232不直接兼容:您必须使用正确类型的接口,否则信号将无法通过。确实有RS232到RS485网关,但现在它们并不令人感兴趣:它可以很容易地将RS485用于USB,以太网或直接用于GSM。它更便宜,而且系统中的组件少了一个。 

使用RS485时的主要特点是交换数据的格式。使用RS232时,许多设备只使用文本(ASCII)协议,而RS485大多数设备使用MODBUS协议。因此,您必须知道最少的MODBUS才能连接RS485设备。 
 

什么是MODBUS?


MODBUS是主机(主设备)和设备(从设备)之间的协议,用于访问设备的配置和读取措施。MODBUS消息对应于读取和写入16位字和二进制寄存器(通常称为“线圈”)的相对简单的操作。主机系统地启动交换,“从”设备应答。从站在主机请求之前不发送任何消息。 

由于RS485总线上可以并联多个设备,因此每个从设备必须在总线上使用唯一的MODBUS从站ID。每个MODBUS请求都以目标设备的从站ID开始,每个答案都从发送它的从站的从站ID开始。因此,为了使MODBUS通信正常工作,您必须在设备配置中检入其从站ID并在必要时进行更改。在途中,还要检查通信速度和奇偶校验(与RS232相同的原理)。 

您无法轻松地“手动”制作MODBUS消息,就像您在RS232上使用的ASCII协议一样:每个MODBUS消息以校验和代码结束,根据消息的全部内容计算。要交换MODBUS消息,您必须使用: 

  • 设备供应商提供的特定程序,兼容接口;
  • 或带有编程库的简单RS485接口,编程和解码MODBUS消息;
  • 或智能RS485接口,能够自行编码和解码MODBUS消息,例如Yocto-RS485


另请注意,MODBUS协议有两种变体:MODBUS ASCII模式,其中消息作为十六进制代码行交换; MODBUS RTU模式,其中消息直接作为二进制帧交换。要与MODBUS设备通信,必须使用与设备中配置的模式相同的模式。所有真正遵循该标准的设备都支持MODBUS RTU模式。在现实生活中,它始终使用后一种模式:MODBUS ASCII没有任何优势,因为所有消息在任何情况下都难以手动编码。 
 

一个小型温度控制器,内置PID,模糊逻辑,......和RS485上的MODBUS接口
一个小型温度控制器,内置PID,模糊逻辑,......和RS485上的MODBUS接口


 

访问MODBUS寄存器


当你明白理论上如何交换信息,你还必须知道哪些登记以请求获取措施,并登记变更配置设备。在这个级别,寄存器地址从一个设备更改为另一个设备,但有一些MODBUS约定有助于了解技术用户指南,这些指南通常不像人们希望的那样清晰。 

有4种类型的MODBUS寄存器:

  • 线圈,对应于开/关二进制输出,例如继电器。
  • 输入比特,对应于二进制输入(只读)。
  • 所述输入寄存器中,对应于模拟输入(只读)。
  • 保持寄存器,对应于可以改变模拟参数。


MODBUS设备的技术用户指南通常包含按类型列出的所有可用寄存器的列表。对于每种类型的寄存器,对应一系列寄存器号,遵循以下约定: 

  • 线圈从00001起编号
  • 输入比特是从10001向前编号
  • 输入寄存器,从30001向前编号
  • 保持寄存器从40001向前编号


请注意,当使用此约定时,每个类别的第一个寄存器始终以数字1结束(不使用零)。 

有时,供应商不是指示唯一的寄存器编号,而是指示具有MODBUS功能标识符的寄存器类型,允许您读取它们: 

  • 01H线圈
  • 输入位02h
  • 04h输入寄存器
  • 03h保持寄存器


在这种情况下,它通常是指示其组中的寄存器的相对位置,第一个元素的位置为0。因此,04h函数的寄存器0对应于第一个输入寄存器,您也可以调用寄存器30001.注意不要混淆不符合MODBUS函数标识符的寄存器范围之间的不相干,以及相对的不相干性。头寸从0开始,绝对仓位从1开始...... 

当您知道要访问哪个寄存器时,您仍然必须知道如何解释它。由于模拟寄存器使用16位编码,因此通常有两种约定。第一种方法是使用器件配置中定义的值范围,并将0-65535寄存器值的线性映射到此值范围。第二种是以十进制固定点直接存储值,以工程单位表示:例如,2345表示23.45摄氏度。一些供应商同时提供两种格式的值:例如,寄存器30001用于与定义范围成比例的版本,寄存器31001用于十进制版本。 

回顶部