基于RS-485网络的单片机远程系统升级功能设计

时间:2022-08-29 11:27:54

基于RS-485网络的单片机远程系统升级功能设计

【摘要】本文提出了一种单片机远程系统升级方法,通过RS-485通信网络把应用程序下载到远端的单片机中,实现对网络上连接的设备进行远程在线升级,达到不用断电,可方便快捷地对终端设备进行软件的更新和升级,已在分布式数据采集系统上应用,实践表明本设计给整个系统的维护管理带来了极大的便利。

【关键词】单片机;远程;在线RS-485

一、引言

以单片机为控制处理器件的嵌入式系统设计,有时需要在实际应用时不停的修正应用程序,或是对产品功能不断的升级,不能够一下子把程序最终确定下来,虽然很多单片机都提供了IAP和ISP功能,在现场打开产品机箱外壳就能够很方便地更新应用程序。但对于组成网络的各分布节点一一进行固件升级时会遇到相当大的麻烦;其次在某些工业应用上,一些节点可能位于维护人员无法进入的场所。因此,研究一种在主节点上通过通信网络更新各个从节点程序的在线升级技术显得很有意义。

二、远程下载原理

如图1所示分布式数据采集系统,控制处理器采用STC单片机设计。终端数据采集设备通过串口连接到RS-485通信网络,通信网再经过RS485/232转换器连接到远端计算机进行集中监控。通信采用工业制造环境通用协议MODBUS,此协议支持传统的RS-232、RS-422、RS-485和以太网设备,许多工业设备,包括PLC,DCS,智能仪表等都在使用MODBUS协议作为他们之间的通讯标准,方便系统的扩展应用。

系统设计时,已经为每一个现场数据采集设备分配好相应地址,并配置了相应的系统更新服务程序,利用它实时监视来自计算机发送的数据是否包含升级命令。系统在网络上通信时,从节点设备必须按事先约定好的地址识别计算机发来的消息,然后决定要产生何种行动。如果收到当前数据是程序下载命令,则执行相应的系统更新操作,否则执行正常的数据采集操作,生成应答并使用MODBUS协议将数据发送给计算机。

系统采用的STC单片机具有串口在线加载升级程序功能,但每次加载均需要冷复位,不利于实现远程下载功能。根据STC单片机参数手册关于ISP/IAP功能的描述,其殊功能寄存器IAP_CONTR为ISP/IAP控制寄存器,用户可以设置其中SWBS/SWRST两个位来实现系统的软复位,并且能转到ISP引导区启动,实现在线不掉电下载功能。IAP_CONTR寄存器和SWBS/SWRST为的定义如下表1。

SWBS:启动区域选择控制位。

0:软件选择从用户应用程序区启动;

1:软件选择从ISP程序区启动。

SWRST:0:不操作;1:产生软件复位,硬件自动清零。

在软件设计时,在MODBUS数据接收子程序中添加系统升级功能解析程序,一旦监测到数据流包含下载命令时,立即写入IAP_CONTR=0x60,使系统软复位到系统ISP监控区,从而引导下载程序进行远程系统升级。

三、远程下载端更新服务程序设计

系统通信采用MODBUS协议,为主从方式的通信,数据传输采用RTU模式,9600bps波特率,8位数据,1停止位,无奇偶校验,主机发送一帧消息的格式如下:

1.地址:消息帧的地址域包含一个字节8Bit(RTU)。可能的从设备地址是0...247(十进制)。主设备通过将要联络的从设备的地址放入消息中的地址来选通从设备。当从设备发送回应消息时,它把自己的地址放入回应的地址域中,以便主设备知道是哪一个设备作出回应。

2.功能码:消息帧中的功能代码域包含一个字节8Bits(RTU)。可能的代码范围是十进制的1...255。当然,有些代码是适用于所有控制器,有此是应用于某种控制器,还有些保留以备后用。当消息从主设备发往从设备时,功能代码域将告之从设备需要执行哪些行为。

3.数据:数据是由两个十六进制数集合构成的,范围00...FF。根据网络传输模式,这可以是由一对ASCII字符组成或由一RTU字符组成,它包含了功能码的附加信息。

4.CRC校验:即循环冗余校验,用于数据错误检测。

MODBUS协议功能码有两个用户可以定义范围,65至72和100至110。在协议设计时,指定100作为系统升级命令功能码。数据域写零,表示功能码没有附加信息,仅为系统升级命令。CRC校验码由软件生成。被升级对象的地址由计算机指定,现场节点设备的系统通信解析程序工作流程如图2所示。

现场设备系统通信解析程序,采用中断方式接收数据提高通信的实时性。当3.5个字符停顿后,开始接收第一字节数据,如果是本机地址则完整接收一帧数据,接收完毕时首先对数据的正误进行CRC校验,然后进入到功能码解析过程,如果是升级命令则执行更新。下面是系统通信解析程序执行升级命令,复位到ISP监控引导区的关键代码:

void UART_Interrupt_Receive(void)interrupt 4//串行接收中断程序

{

unsigned char fun_exe=0;//功能码定义

//帧间时间间隙检测,帧接收,CRC校验,地址解析

……

if(fun_exe==100)//判断接收功能码为下载命令

{

delay();//延时1秒,保证软复位可靠

IAP_CONTR=0x60;//0110,0000 软复位到系统ISP监控区,引导下载

}

else

{//其它命令的执行}

……

}

四、实际运行测试

在监控计算机上运行STC—ISP软件,该软件为STC单片机专用下载软件。源文件经过编译得到目标代码,点击打开程序文件载入。然后按图3设置STC_ISP软件,此时要用到自定义下载方式。实验要对20号从节点进行程序升级,升级命令功能码为100,那么需要在“自定义下载命令(HEX)”栏输入1464 00 00 96 FD六个字节十六进制数,最后两位是前四字节CRC校验码,可以用CRC计算器获得。最后点击发送,在左下角即可观察下载的执行情况,实测成功完成。

经过多次实践,发现远程下载时最高波特率不可设置太高,过高的波特率会造成升级失败。同时在下载前需要关闭上位机监控程序,以防止串口占用冲突,最后在使用时需注意远程节点单片机下载过程中对端口的影响,特别是有外部执行单元时尤其需要注意,防止误动作出现。

五、结束语

通过RS485总线结合单片机的ISP编程功能的系统远程升级性能稳定、使用便捷,目前已经在集散数据采集系统上得到了验证。经实际测试,20kB的程序升级用时约50秒,在计算机监控端可以对任意一个从节点进行远程快速升级,给整个系统的维护带来了极大的方便。

参考文献

[1]李喜东,刘波涛,刘刚.Modbus RTR串行通信协议在工业现场的应用[J].自动化技术与应用,2005,26(7):37-40.

[2]线岩团,许江淳,鄢大鹏.基于单片机的MODBUS的协议实现[J].云南大学学报(自然科学版),2009,31(s2):120-124.

[3]王善华,徐爱华.单片机程序远程下载的实现[J].数字通信世界,2010,10:52-56.

[4]陈屹,马殿光.基于CAN总线的一种系统远程升级功能的实现[J].自动化仪表,2008,29(3):35-40.

[5]王贵喜,平.STC单片机集成下载器的设计与实现[J].北京信息科技大学学报,2011,26(5):75-79.

上一篇:SONY KLV—32HX555索尼的偏振产品 下一篇:太阳能草坪灯控制系统研究与设计