新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > RS-485的多机通信方案探究

RS-485的多机通信方案探究

作者: 时间:2012-12-24 来源:网络 收藏

3 软件协议
3.1 协议格式
Modbus协议按功能可以划分为:地址码、功能码、数据码、CRC校验码。而在RTU方式下,采用CRC循环冗余校验,具体格式如图3所示。

本文引用地址:https://www.eepw.com.cn/article/153643.htm

c.JPG


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 自动地址识别模式
自动地址识别模式是经典模式,通过设置Cortex-M054的状态寄存器,可使UART工作在此模式下。节点在接收到地址字节时,判断地址字节数据是否与UA_ALT_CSR[ADDR_MATCH]值相匹配,如果匹配,表示网关节点要与此终端,故接收下面网关节点发送的所有数据字节。同时,地址字节和数据字节都会被存入UART的FIFO中,否则忽略所有字节,既不产生中断,也不存入FIFO,直到匹配。
串口通信中由起始位、数据位、奇偶校验位、停止位4部分组成。当奇偶校验位为0时,表示传输的是数据字节;当它为1时,表示传输的是地址字节。Cortex—M054的UA_ALT_CSR是一个32位的寄存器,其ADDR_MATCH用8位来表示,故自动地址识别模式最大从机数只支持256个节点。它的优点是:由于所有从机挂载在一根总线上,故网关节点发送数据时,只有地址与自己匹配的节点才会响应,其他节点可以正常执行自己原先的任务而不被打扰,系统整体效率高。缺点是从机只能被主机轮询时才能发送信息,不能主动和主机通信;一个总线上只能挂载256个节点。
3.4 普通模式通信
普通模式可以配置为接收所有数据,也可以选择性地忽略数据,直到接收到地址字节。为了更加灵活地利用协议通信,将其设置为接收所有数据,即只要网关节点向总线发送数据,那么总线上的所有节点都会收到数据,再根据协议解析内容执行相应的动作,接地流程图如图4所示。

d.JPG


Cortex—M054内部有4 KB的Data Flash给用户存储数据,故将节点的地址存入Flash中。当系统上电复位后,先从Flash中读出节点的地址,存入全局变量address中。当收到数据包之后,进行CRC校验,如果正确就接收,再根据协议解析地址地段,其值与address比较,以此判定此包是否属于自己。
自动地址识别模式是由芯片自动筛选地址,而此处需要软件判断。因此,地址长度可以由用户自己设定。

数字通信相关文章:数字通信原理


通信相关文章:通信原理




关键词: 探究 方案 通信 RS-485

评论


相关推荐

技术专区

关闭