- 艾宝物联IOBOV® ─ 工业无线测控专家
RS485是串行传输标准,有点像RS232,但使用其他电信号。RS485的一个重要优点是可以将多个RS485设备放在同一总线上。因此,您不必在主机上乘以RS485接口来询问多个设备。但是,有一个小技巧:在总线的每一端,你必须放一个总线端接器。有时这意味着您必须在端子上拧一个小电阻,或者只需将开关移到适当的位置即可。
RS485总线通常只由两根导线和四极电阻组成......
RS485和RS232不直接兼容:您必须使用正确类型的接口,否则信号将无法通过。确实有RS232到RS485网关,但现在它们并不令人感兴趣:它可以很容易地将RS485用于USB,以太网或直接用于GSM。它更便宜,而且系统中的组件少了一个。
使用RS485时的主要特点是交换数据的格式。使用RS232时,许多设备只使用文本(ASCII)协议,而RS485大多数设备使用MODBUS协议。因此,您必须知道最少的MODBUS才能连接RS485设备。
MODBUS是主机(主设备)和设备(从设备)之间的协议,用于访问设备的配置和读取措施。MODBUS消息对应于读取和写入16位字和二进制寄存器(通常称为“线圈”)的相对简单的操作。主机系统地启动交换,“从”设备应答。从站在主机请求之前不发送任何消息。
由于RS485总线上可以并联多个设备,因此每个从设备必须在总线上使用唯一的MODBUS从站ID。每个MODBUS请求都以目标设备的从站ID开始,每个答案都从发送它的从站的从站ID开始。因此,为了使MODBUS通信正常工作,您必须在设备配置中检入其从站ID并在必要时进行更改。在途中,还要检查通信速度和奇偶校验(与RS232相同的原理)。
您无法轻松地“手动”制作MODBUS消息,就像您在RS232上使用的ASCII协议一样:每个MODBUS消息以校验和代码结束,根据消息的全部内容计算。要交换MODBUS消息,您必须使用:
另请注意,MODBUS协议有两种变体:MODBUS ASCII模式,其中消息作为十六进制代码行交换; MODBUS RTU模式,其中消息直接作为二进制帧交换。要与MODBUS设备通信,必须使用与设备中配置的模式相同的模式。所有真正遵循该标准的设备都支持MODBUS RTU模式。在现实生活中,它始终使用后一种模式:MODBUS ASCII没有任何优势,因为所有消息在任何情况下都难以手动编码。
一个小型温度控制器,内置PID,模糊逻辑,......和RS485上的MODBUS接口
当你明白理论上如何交换信息,你还必须知道哪些登记以请求获取措施,并登记变更配置设备。在这个级别,寄存器地址从一个设备更改为另一个设备,但有一些MODBUS约定有助于了解技术用户指南,这些指南通常不像人们希望的那样清晰。
有4种类型的MODBUS寄存器:
MODBUS设备的技术用户指南通常包含按类型列出的所有可用寄存器的列表。对于每种类型的寄存器,对应一系列寄存器号,遵循以下约定:
请注意,当使用此约定时,每个类别的第一个寄存器始终以数字1结束(不使用零)。
有时,供应商不是指示唯一的寄存器编号,而是指示具有MODBUS功能标识符的寄存器类型,允许您读取它们:
在这种情况下,它通常是指示其组中的寄存器的相对位置,第一个元素的位置为0。因此,04h函数的寄存器0对应于第一个输入寄存器,您也可以调用寄存器30001.注意不要混淆不符合MODBUS函数标识符的寄存器范围之间的不相干,以及相对的不相干性。头寸从0开始,绝对仓位从1开始......
当您知道要访问哪个寄存器时,您仍然必须知道如何解释它。由于模拟寄存器使用16位编码,因此通常有两种约定。第一种方法是使用器件配置中定义的值范围,并将0-65535寄存器值的线性映射到此值范围。第二种是以十进制固定点直接存储值,以工程单位表示:例如,2345表示23.45摄氏度。一些供应商同时提供两种格式的值:例如,寄存器30001用于与定义范围成比例的版本,寄存器31001用于十进制版本。