简介
在工业控制、电力通讯、智能仪表等领域,通常情况下是采用串口通信的方式进行数据交换。最初采用的方式是RS232接口,由于工业现场比较复杂,各种电气设备会在环境中产生比较多的电磁干扰,会导致信号传输错误。除此之外,RS232接口只能实现点对点通信,不具备联网功能,最大传输距离也只能达到几十米,不能满足远距离通信要求。
而RS485则解决了这些问题,数据信号采用差分传输方式,可以有效的解决共模干扰问题,最大距离可以到1200米,并且允许多个收发设备接到同一条总线上。随着工业应用通信越来越多,1979年施耐德电气制定了一个用于工业现场的总线协议Modbus协议,现在工业中使用RS485通信场合很多都采用Modbus协议。
RS-485
RS485是一个工业常用的物理接口,是物理层的硬件设备,简而言之,所谓的RS485通讯协议,是硬件的一个规约,定义了电压,阻抗等内容,不对软件协议给予定义,与应用软件没有任何关系。
RS485属于有线传输,所以就要硬件传输媒介,实际就是两根线就可以了,在这两根线上传输的实际是同一个信号,只是发送端把这个信号一分为二,不过在接收端会把它还原为原来的信号,这样做的好处还要得和RS232来比较;RS232也需要两根线,更多的时候还要加上地线,所以是三根线,地线咱不管它,其余的两根只有一根线传输的数据信号,而另一根传输的时钟,也就是信号原来什么样发送端就怎样发送出来,同样接收端也做同样的处理。所以485的接收端可以把信号在传输过程中引入的干扰就可以抵消掉,而232的接收端不能,所以485的抗干扰能力强可以传输信号上千米,而232只能传输十几米。[1]
除更长的传输距离之外,RS-485接口还具有良好的抗噪声干扰性和多站能力等优点,就使其成为各种应用场景中首选的串行接口
modbus协议
去网上搜modbus,关于该协议的介绍可能一大推,其实就一句话:modbus定义了一种数据帧格式:帧头—地址—功能码—数据—CRC校验,注意:协议是一种很灵活的东西,目的是定义数据通讯的格式,上面这个是标准的modbus通讯协议,具体应用的时候可以根据实际需要进行裁剪,比如加个帧尾,比如换成其他的校验方式。
所以,大家现在应该对485和modbus的关系有所认识了吧,我们可以把485总线单纯地理解为硬件通路,它具有自己的电气特性,所有的设备都可以挂在上面,每个设备有唯一的地址,和串口通信不同的是由于485有专门的控制收发引脚,所以代码里面每次发送前后都要对该控制引脚进行控制。此外软件上注意延时(电平稳定);modbus其实可以理解为硬件公路上的车,它本身就是个软件协议,规定上位机和下位机数据以什么样式进行传输。[2]
测试
测试对象
四路485集线器
通过查阅其自带的说明书可得知以下信息
- 基本性能
- 解决485布线的星型连接或者任意连接方式
- 解决485通讯负载过多,网段负载,阻抗不匹配或者信号反射
- 解决485故障端口的隔离,防止一个损坏全网故障
- 解决485负载过多,通讯不顺畅或者通讯中断问题
- 独具特点
- 每个通道带有总线异常监控,防止全网故障
- 带有总线异常蜂鸣报警功能,用户可以立即感知当前总线状况
- 故障分口自动隔离,自动恢复
- 极为有效的解决485总线布线工作效率
- 通讯性能
- 主口和分口之间收发通讯双向自动
- 反射信号抑制功能
- 主口发送数据,分口广播数据
- 通信自动适应,不改通讯参数,不改通讯协议
- 工业保护和抗干扰
- 每个端口有独立的瞬态保护电路
- 每个端口有独立的限流,过流保护
- 每个端口有独立监控电路
- 原装正品和可信赖的工业级别芯片
测试内容
将两个传感器通过连接RS-485四路集线器与电脑进行数据传输。
电脑通过USB转485串口线接入四路485总线集线器,再将两个传感器通过485总线接入四路485总线集线器,开通电源,在电脑端调试串口助手等工具,获取传感器的数据。此处选用空气质量传感器及光照度传送器。
测试流程
-
连接
电脑通过USB转485串口线接入四路485总线集线器,再将两个传感器通过485总线接入四路485总线集线器(此处选用空气质量传感器及光照度传送器),开通电源。
-
调试
通过传感器自带的调试助手进行调试。串口号可以通过查看电脑的设备管理器得知,波特率和设备地址直接可由调试助手测出。
由于两款传感器从不同生产厂家处购买,调试助手页面不同。
分别从两个调试助手中读出数据后证明数据交互正常,可以进行下一步。 -
测试
查阅传感器自带说明书,可获取数据帧格式定义,包括主机问询帧结构及从机应答帧结构。
选用串口调试助手,通过数据帧的方式获取传感器的数据。(注意不要输错波特率)
输入光照度传感器的问询帧,得到应答帧如下:
通过查询光照度传感器的使用手册:可知波特率为9600,地址码为01,功能码为03,返回有效字节数为04,也就是4个字节,数据区为000003F3,通过计算:000003F3(十六进制)=12531,故可得出此时光照度为12531Lux。
同理,输入空气质量传感器的问询帧,得到应答帧如下:
通过查询空气质量传感器的使用手册:可知波特率为4800,地址码为04,功能码为03,返回有效字节数为04,也就是4个字节,第一数据区为005D,第二数据区为006D,通过计算:5D(十六进制)=93,,6D(十六进制)=109,故可得出此时PM2.5为93ug/m3 ,PM10为109ug/m3 。
备注: 数据帧最后两位校验位通过crc16算法算出,这里不再赘述。
测试结果
传感器串口通讯正常,四路集线器分口通讯正常,主口与分口之间通讯双向收发转换正常。
总结
四路集线器功能探究
通过查询资料可知,采用老式布线结构存在以下几种缺陷:
- RS-485总线受差分信号传输特点的限制总线长度一般在1200米左右,采用这种老式布线结构,可布线覆盖面积十分有限(一般为几百平方米)。有时为了拓宽传输距离不得不采用中继器,同时亦加大了布线过程中出现问题的可能性。
- 一般大型考勤门禁系统都装有为数众多的门禁控制器,采用这种老式布线结构,所有门禁控制器共享一根RS-485总线,当任一控制器RS-485端口短路,都会影响整个门禁系统的正常工作。在众多的门禁控制器中查找故障所在,不仅加大了工作量,也增加了维护成本。
- 由于RS-485总线布线比较复杂,在考勤门禁系统中绝大部分工程费用和时间都浪费在布线环节。而RS-485总线布线的复杂程度与总线的长短和设备的挂接数目有很大关系。特别是在大型系统中显得尤为突出。采用这种老式布线结构无疑加大了布线的难度。
- 由于地理环境的原因,在相距一定距离的设备之间总是存在地电位不平衡的问题。有时即使距离很近问题依然存在。这种环境造成的因素,在老式布线结构中很难综合解决,甚至造成整个系统无法启动。然通过处理地电位可暂时解决部分问题,但时隔不久同样问题又会再次出现。
针对上面出现的一系列问题及缺陷,集线器其独特的等位分差隔离技术和高效的总线分隔集中技术能有效解决工程布线中常见的地电位差异、阻抗匹配及雷击问题。用户可以轻易改善RS-485总线结构,分割网段,提高通信可靠性。当雷击或者设备故障产生时,出现问题的网段将被隔离,以确保其他网段的正常工作。[3]
综上,在一些特殊的应用场景下使用四路集线器很有必要。
拓展
以此为基础,可以在物联网网关中通过单一串口进行与多个设备的数据交互。此处以SIMATIC IOT2050工业物联网智能网关为例,将接好设备的集线器接入网关,打开node-red调试界面开始进行调试。
通过Modbus节点可以设置相应传感器问询帧:
串口配置节点可进行串口通讯的一系列设置:
由于盒子的串口波特率固定,故需要提前设置好两个设备的波特率使其相同,再设置好盒子相应的串口波特率才可完成同时通讯。
按照之前了解到的两个设备的报文格式进行设置:
最后为避免串口通讯冲突,采用轮询的方式读取数据:
点击启动inject节点即可开始读取数据。
参考文章
[1] modbus与rs485的关系_modbus与rs485的区别和联系
[2] RS485通讯介绍(附批量测试思路)
[3] 485布线规范及调试方法解析