RS-485的多机通信方案探究
引言
在嵌入式系统中,多个孤立节点之间的通信越来越重要,尤其是物联网时代的到来,多节点间通信已经成为必不可少的功能。由此出现了许多通信手段,如RS-232、RS-485、CAN总线、ZigBee等,综合考虑性能和成本,RS-485通信无疑是性价比最高的通信方式。因此探究高效、实用的多机通信方案具有重大的意义。
1 系统框图
RS-485多机通信结构图如图1所示。若干个RS-485节点通过总线连接,由网关节点轮询访问索要数据,每个网关节点可以动态地配置IP地址,以便上位机可以通过以太网控制网关节点,从而获得每个RS-485终端节点的数据。图1中C节点为控制节点,具有RS-485通信功能,T节点为网关节点,除了RS-485功能外,还具有以太网功能,其作用就是将C节点的数据通过以太网功能传送给上位机。
本文采用新唐科技公司的Cortex-M054探究RS-485多机通信协议。Cortex-M054有两个UART,均可以配置成RS-485模式,此时Cortex-M054通过RTSX引脚自动控制RS-485通信方向。
RS-485通过差分传输,A和B两根信号线铰链在一起来抵消各自的干扰。当A、B信号的电压差大于200mV时,视为逻辑1;当B、A信号的电压差大于200 mV时,视为逻辑0。
RS-485硬件原理图如图2所示。整套RS-485电路独立供电,通过光电耦合器TLP781B+,与系统其他部件分开,以此来隔离干扰。和CAN总线相同,在机群的两端(第一个节点和最后一个节点),必须加上匹配电阻,吸收反射信号,大小为75 Ω左右。中间节点则不需要如此,因此留出了R1的位置,当节点位于机群两端的时候,则焊接上R1,这种方式大大地增强了电路的灵活性。
考虑电路的安全性,添加了TVS管,从而达到抗雷击的效果。热敏电阻相当于自恢复的保险丝,当电流过大时,它的阻值会变大,起到保护电路的作用。
3 软件协议
3.1 协议格式
Modbus协议按功能可以划分为:地址码、功能码、数据码、CRC校验码。而在RTU方式下,采用CRC循环冗余校验,具体格式如图3所示。
Modbus协议长度根据用户需求自己设定,地址码标识终端地址,即和网关节点通信的从机地址。功能码则是主机告诉从机要执行什么功能。数据码长度由用户自己确定,最后根据前3个功能字段,生成两个字节的CRC校验码,用来验证前面的字段是否存在传输错误。
3.2 CRC生成算法
CRC算法分为静态和动态两种,静态的适合片内RAM非常有限的MCU,而动态的适合RAM空间相对比较宽裕的MCU。CRC校验码生成步骤如下:
①初始化寄存器内容为0xffff。
②提取第一个字节数据和寄存器内容相异或。
③检测最低有效位(LSB),如果LSB为1,寄存器单独和预置值异或;如果LSB为0,则不进行任何操作,然后将结果向LSB方向移动,最高有效位以0填充。
④重复第③步8次,直到最后一位(第8位)完成。
⑤提取下一个8位字节,重复步骤③、④的操作,等待所有字段都执行完,最终寄存器中的值就是所求的CRC校验码。
上述步骤中,如果预置值在整个过程中不变,则为静态的CRC校验;在动态的CRC校验中,存在一个动态表,预置值每次都根据动态表变化,所以准确性更高,而动态表要开辟一个较大的空间来存储。所以,根据MCU的RAM大小决定使用动态校验还是静态校验。算法结束后,寄存器中存人的就是前N个字节的CRC校验码,运用该算法,不需要事先知道协议的整体长度,最后都同样生成两个字节长度的校验码,故可移植性好、通用性强。
3.3 自动地址识别模式通信
自动地址识别模式是RS-485经典模式,通过设置Cortex-M054的状态寄存器,可使UART工作在此模式下。节点在接收到地址字节时,判断地址字节数据是否与UA_ALT_CSR[ADDR_MATCH]值相匹配,如果匹配,表示网关节点要与此终端通信,故接收下面网关节点发送的所有数据字节。同时,地址字节和数据字节都会被存入UART的FIFO中,否则忽略所有字节,既不产生中断,也不存入FIFO,直到匹配。
串口通信中由起始位、数据位、奇偶校验位、停止位4部分组成。当奇偶校验位为0时,表示传输的是数据字节;当它为1时,表示传输的是地址字节。Cortex—M054的UA_ALT_CSR是一个32位的寄存器,其ADDR_MATCH用8位来表示,故自动地址识别模式最大从机数只支持256个节点。它的优点是:由于RS-485所有从机挂载在一根总线上,故网关节点发送数据时,只有地址与自己匹配的节点才会响应,其他节点可以正常执行自己原先的任务而不被打扰,系统整体效率高。缺点是从机只能被主机轮询时才能发送信息,不能主动和主机通信;一个总线上只能挂载256个节点。
3.4 普通模式通信
普通模式可以配置为接收所有数据,也可以选择性地忽略数据,直到接收到地址字节。为了更加灵活地利用协议通信,将其设置为接收所有数据,即只要网关节点向总线发送数据,那么总线上的所有节点都会收到数据,再根据协议解析内容执行相应的动作,接地流程图如图4所示。
- 物联网时代的计算机网络技术教学探究(08-10)
- 探究SaaS模式的特点及其效用(08-10)
- 网络系统安全接入认证方法探究(07-06)
- 大唐电信胖瘦可转型WLAN整体解决方案(03-14)
- 巨型无线城市天馈解决方案(06-01)
- TD-LTE/GSM共站部署技术(06-17)