keil5下c语⾔modbus函数_关于RS485和MODBUS的快速⼊门
教程(值得收藏)
什么是RS485?
RS485是串⾏传输标准,有点像RS232,但使⽤其他电信号。RS485的⼀个重要优点是可以将多个RS485设备放在同⼀总线上。因此,您不必在主机上乘以RS485接⼝来询问多个设备。但是,有⼀个⼩技巧:在总线的每⼀端,你必须放⼀个总线端接器。有时这意味着您必须在端⼦上拧⼀个⼩电阻,或者只需将开关移到适当的位置即可。
RS485总线通常只由两根导线和四极电阻组成......
RS485和RS232不直接兼容:您必须使⽤正确类型的接⼝,否则信号将⽆法通过。确实有RS232到RS485⽹关,但现在它们并不令⼈感兴趣:它可以很容易地将RS485⽤于USB,以太⽹或直接⽤于GSM。它更便宜,⽽且系统中的组件少了⼀个。
使⽤RS485时的主要特点是交换数据的格式。使⽤RS232时,许多设备只使⽤⽂本(ASCII)协议,⽽RS485⼤多数设备使⽤MODBUS
什么是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没有任何优势,因为所有消息在任何情况下都难以⼿动编码。
c语言编程入门指南pdf
⼀个⼩型温度控制器,内置PID,模糊逻辑,......和RS485上的MODBUS接⼝
访问MODBUS寄存器
当你明⽩理论上如何交换信息,你还必须知道哪些登记以请求获取措施,并登记变更配置设备。在这个级别,寄存器地址从⼀个设备更改为另⼀个设备,但有⼀些MODBUS约定有助于了解技术⽤户指南,这些指南通常不像⼈们希望的那样清晰。
有4种类型的MODBUS寄存器:
的线圈,对应于开/关⼆进制输出,例如继电器。
的输⼊⽐特,对应于⼆进制输⼊(只读)。
所述输⼊寄存器中,对应于模拟输⼊(只读)。
的保持寄存器,对应于可以改变模拟参数。
MODBUS设备的技术⽤户指南通常包含按类型列出的所有可⽤寄存器的列表。对于每种类型的寄存器,对应⼀系列寄存器号,遵循以下约定:
该线圈从00001起编号
在输⼊⽐特是从10001向前编号
的输⼊寄存器,从30001向前编号
该保持寄存器从40001向前编号
请注意,当使⽤此约定时,每个类别的第⼀个寄存器始终以数字1结束(不使⽤零)。
有时,供应商不是指⽰唯⼀的寄存器编号,⽽是指⽰具有MODBUS功能标识符的寄存器类型,允许您读取它们:01H的线圈
输⼊位为02h
02h
04h为输⼊寄存器
04h
03h为保持寄存器
03h
在这种情况下,它通常是指⽰其组中的寄存器的相对位置,第⼀个元素的位置为0。因此,04h函数的寄存器0对应于第⼀个输⼊寄存器,您也可以调⽤寄存器30001.注意不要混淆不符合MODBUS函数标识符的寄存器范围之间的不相⼲,以及相对的不相⼲性。头⼨从0开始,绝对仓位从1开始......
当您知道要访问哪个寄存器时,您仍然必须知道如何解释它。由于模拟寄存器使⽤16位编码,因此通常有两种约定。第⼀种⽅法是使⽤器件配置中定义的值范围,并将0-65535寄存器值的线性映射到此值范围。第⼆种是以⼗进制固定点直接存储值,以⼯程单位表⽰:例如,2345表⽰23.45摄⽒度。⼀些供应商同时提供两种格式的值:例如,寄存器30001⽤于与定义范围成⽐例的版本,寄存器31001⽤于⼗进制版本。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论