微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一种基于RS-485接口的通信方法

一种基于RS-485接口的通信方法

时间:06-19 来源:互联网 点击:

引言

  建议性标准RS-485作为一种多点差分数据传输的电气规范现已成为业界应用最为广泛的标准通信接口之一。这种通信接口允许在简单的一对双绞线上进行多点双向通信。但是作为数据传输链路,RS-485标准只规定了平衡驱动器和接收器的电气特性,在此基础上用户必须建立自己的高层通信协议。结合水下钢桩防腐阴极保护电流检测系统的开发过程,介绍一种基于RS-485接口的通信方法。

1网络配置

  原料码头分为引桥(长1700米)、主码头(长640米)和副码头(长430米)。呈反F形态,由855根钢桩支撑。每根钢桩分二或三段加以阴极保护电流以防腐蚀。阴极保护电流总数可达2565路。为实时监测阴极保护电流的变化,在码头各点安装电流检测装置57台、参比电压检测装置1台(以下称从节点),每台最大检测48路电流或64路电压,通过RS-485网络向电气控制室的PC机(以下称主节点)传送数据或由主节点设置各个从节点的工作状态。

  RS-485网络拓扑一般采用终端匹配的总线型结构,不支持环形或星型结构。根据本系统中的反F形状的特点,网络拓扑结构采用了三条总线分别将各个从节点串接起来,再用两个集线器整合为一条总线与主节点相连、实现网络的合理布局。集线器同时又有中继器的作用,延长了通信距离。理论上可以串接8个集线器,通信距离可达9.6公里。

  详见网络连接图。(图一)


图一

2数据编码和通信协议

  串行通信的格式是:8位数据位,1位启动位,1位停止位,无校验位,通信速率是9600bps。

  为了避免数据代码和命令代码冲突而引起通信混乱,通信代码都采用ASIIC码的编码形式。由于本系统中数据代码只有数值数据,0~9,A~F除外的字符都可以用作命令代码。假如数据代码中有文本数据的话,就必须用ASIIC码表内的非打印字符作为命令代码。

  在一个主节点和多个从节点构成的总线式网络中,采取主从应答方式由主节点发起并控制网上的每一次通信。每个从节点有一个识别地址,只有收到与自己地址匹配的数据帧时,才有相应的处理,并向主节点应答结果。

  该系统中主要有四个通信过程,从节点发送电流或电压数据、对从节点的采集通道启用或禁用设置、电流和电压的上、下限数据设置以及对从节点的时钟校对。据此定义相应的网络协议如下:

  帧格式定义:

  *命令代码:见下表

  *地址:为从节点地址,有效范围是1~254。其中256为广播地址。

  *校验码:采用累加和校验,校验码仅取各字节之和的低字节。

  *长度:数据段的字节长度

  *数据段:时钟校对过程时,为年、月、日、时、分、秒、周共8个字节。

  发送电流或电压数据时,为i(0≦i≦47)开始的8组采集数据,每组数据为4个字节。

  采集通道启用或禁用设置时,为6个字节,分别表示48路采集通道的状态,其中1表示启用,0表示禁用。

  在广播方式时(地址为256),为电流和电压的上、下限数据共8个字节。

  *响应帧:通过校验后,将接受帧中的命令代码改写为V,回送给主节点进行二次确认,保证数据传送无误。

3软件流程和程序清单

  为保证通信畅通和从节点的本地事务顺利执行,设计了限时退出的通信方法,既在收到与自己地址不匹配的数据帧时,临时关闭通信口。这样既保证了本地事务的执行时间,又可避免从节点常在网上可能引起的双向干扰。因此在上、下位机的软件设计中采用二次检错、重发和限时退出并重新握手建立连接等通信机制。现场调试中发现,在某些节点工作异常,甚至通信网络完全瘫痪的情况下其他各节点也能独立完成数据采集、异常报警和实时数据存储等本地事务。一旦故障节点排除,既可恢复通信。

  *软件流程如下:

  *软件实现和主要程序清单:

  在处理器内留出以COM_REG为首地址的寄存器组,用来存放接受或发送的一帧数据包,并以COM_REG_CUNT寄存器作为一帧数据长度的计数器,利用循环结构很容易编制一帧数据包的收发通用程序了。

  TRANS_485:;收发通用程序

  BCFRC,R485_P;开启485通信口。

  _DELAYD‘3‘

  MOVLWCOM_REG

  MOVWFFSR

  MOVLWCOM_REG_CUNT

  MOVWFCOUNT

  CALLRS_HEX_IN;一个字节收发子程序。

  BTFSCSYS_FLAGE,CONMM_ERR;通信错误状态标准位。

  RETURN

  MOVWFINDF

  INCFFSR

  DECFSZCOUNT

  GOTO$-6

  RETURN

  *其他主要子程序:

  XIAO_SUB;校验和子程序

  CLRFTEMP

  MOVFINDF,W

  ADDWFTEMP

  INCFFSR

  DECFSZCOM_REG_CUNT

  GOTO$-4

  RETURN

  ASCH;ASIIC码转化程序

  MOVWFTEMP

  MOVLWD‘48‘

  SUBWFTEMP,W

  BTFSSSTATUS,C

  RETLW0H

  MOVLWD‘71‘

  SUBWFTEMP,W

  BTFSCSTATUS,C

  RETLW0H

  MOVLW41H;D‘65‘——A

  SUBWFTEMP,W

  BTFSCSTATUS,C

  GOTOASCH_A_Z

  CLRFC

  MOVLW30h;D‘48‘——0

  SUBWFTEMP,W

  RETURN

  ASCH_A_Z

  CLRFC

  MOVLW37H;D‘55‘——7

SUBWF

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top