基于CAN总线的远程升级系统

2009-08-13 06:18杨元挺卓树峰
现代电子技术 2009年10期
关键词:现场总线系统升级CAN总线

杨元挺 卓树峰

摘 要:CAN总线是一种应用广泛的实时性现场总线。介绍一种基于CAN总线的远程系统软件升级设计方案,解决了远距离系统升级的困难。该系统采用MCU控制,在CAN总线上,通过PC机控制各个智能节点,实现数据和程序的更新升级。智能节点采用具有IAP功能的MCU构成,利用IAP技术对MCU内部的存储器进行在系统中编程,这样可以做到数据及时保存,即使掉电,数据也不丢失,避免脱机编程带来的麻烦,从而在网络总线上实现了远距离的程序下载。

关键词:CAN总线;现场总线;系统升级;智能节点;IAP技术

中图分类号:TP336文献标识码:A

文章编号:1004-373X(2009)10-083-04

Remote Upgrading System Based on CAN Bus

YANG Yuanting,ZHUO Shufeng

(Fujian Polytechnic of Information Technology,Fuzhou,350003,China)

Abstract:CAN bus is a wide-applied real-time field bus.In this paper,a CAN-based long-distance bus system software upgrade program is designed to address the long-range system upgrade difficulties.This system is controlled by MCU,CAN bus,the programs′updating and upgrading of each intelligent node is congtrolled by PC,intelligent node constituted by MCU which has the function of the IAP,IAP use of technology in-house MCU′s memory in the system for programming,which can save data in a timely manner,even if the data is not lost down to avoid the off-line programming brought about by trouble on the bus network in order to achieve long-range program.

Keywords:CAN bus;field bus;system upgrading;intelligent node;IAP technology

0 引 言

控制器局域网(Controllers Area Network,CAN)总线是国际上应用最广泛的现场总线之一。它最早由德国Bosch公司推出,CAN通信协议是一种用于汽车内部测量与执行部件之间的数据通信协议。作为一种技术先进,可靠性高,功能完善,成本合理的远程网络通讯控制方式,CAN总线已被广泛应用于各个自动化控制系统中。例如,在汽车电子、自动控制、智能大厦、电子系统、安防监控等各领域中,CAN总线具有不可比拟的优越性。基于CAN总线的这种优越性,提出一种基于CAN总线远程系统升级的设计方案,该系统主要解决了智能终端的系统软件远程升级和维护困难的问题。随着自动化水平的不断发展,单片机的应用也越来越广,在一些情况下,产品系统的更新升级在所难免,尤其是对远距离节点且固化在产品上的MCU的软件升级更加困难,一般常规的处理办法需要将单片机产品进行收回才能实现。但是,如果有些远程设备本身留有远程通讯的方式:例如某些远程数据传输模块,为了上报数据,总会留有通讯接口,比如RS 232,RS 485或者局域网接口;又或者某些车载定位设备,为了与监控中心通讯,会留有相应的通讯方式。在这种情况下就可以利用其现有的通讯方式,并与CAN总线配合使用,实现对其MCU内部程序进行升级而不需要收回产品。

1 系统总体结构

该系统采用分布式设计方案。首先建立CAN总线网络,CAN总线通信作为串行通信方式中的一种,与其他通信方式比较,有它自身的通信特点。其中,在报文传送中不包含目标地址,而是以全总线网络广播为基础,各节点根据报文中反映数据性质的标识符过滤报文,并接收该节点应该接收的报文,丢弃不应该接收的报文。此外,CAN总线通信还强化了对数据安全性的关注,可以满足控制系统及其他具有较高安全要求的应用场合。该系统总线上的各个智能节点都是一个独立的终端,可以分别进行电机驱动、传感器信号的接收处理和PC机的控制等工作,并且各个节点之间是相互平等的,可以相互独立通信,同时也可以将其中任意一个节点作为总线上其他模块升级的控制节点,因此该节点可以利用PC机作为上位机,实现人机对话,对总线上的各个节点进行远程操作和程序升级等。为此,该系统框图如图1所示。

2 CAN总线节点设计

节点是总线网络上信息的接收和发送站,所谓的智能节点是由微处理器和可编程的CAN控制芯片等组成,两者合二为一;同时也可以由独立的通信控制芯片与单片机接口合成。两种方式各有其优缺点,但从灵活性考虑,后者更为合适。该系统中节点设计是基于SJA1000的CAN总线接口模块,模块采用P89C51RD单片机作为处理核心,采用PCA82C250作为CAN总线收发器,使整个模块具有较好的通用性及较强的可扩展性。其中,P89C51RD单片机在运用中编程(IAP)的功能更有利于节点程序升级。整个节点设计包括:输入模块、显示模块、电源模块、I2C存储模块、CAN通信控制和CAN总线收发器,节点框图如图2所示。

2.1 CAN通信控制器和CAN总线收发器

CAN接口电路由CAN通信控制器SJA1000、CAN总线收发器PCA82C250和高速光耦6N137等组成。SJA1000作为独立CAN总线控制器,具有完成CAN通信协议所要求的全部特性,经过简单总线连接的SJA1000,可完成CAN总线的物理层和数据链路层中所有功能。PCA82C250是CAN控制器与物理总线之间的接口,起到CAN总线收发器的作用。它对总线提供差动发送能力,对CAN控制器提供差动接收能力,并可以选择三种不同的工作模式,如:待机、斜率控制和高速模式。该系统采用斜率模式,通信速率设定为1 Mb/s。

该模块作为整个系统的通信核心模块,起到了承上启下的作用,电路设计的合理性决定了通信的成功与否,因此在设计电路过程中多方面考虑。在设计SJA1000与PCA82C250连接时,为了增强抗干扰能力,SJA1000的TX0和RX0引脚并没有直接与PCA82C250的TXD,RXD相连接,而是通过高速光耦6N137后与PCA82C250相连,这样可以实现总线上各CAN节点之间的电气隔离。但是,在使用6N137光耦时要特别注意,因其两侧必须使用完全独立的两组电源VCC和+5 V,否则光耦不起作用。在PCA82C250与CAN总线的连接部分,可以将CANH和CANL两个引脚各自通过1个5 Ω的电阻与CAN总线相连,这样可以起到限流的作用,以保护82C250免受过流的冲击。同时,可以在CANH和CANL与地信号(BGND)之间并联2个30 pF的电容,以滤除总线上的高频干扰,减少电磁辐射;还可以根据需要分别在CANH和CANL与地信号(BGND)之间接入1个保护二极管,以防止总线上较高的负电压对PCA82C250造成损坏,另外在两根CAN总线接入端与地之间分别接入一个防雷击管,以防止两端输入与地之间瞬变干扰。该模块电路如图3所示(图中VA=VB=+5 V)。

2.2 输入模块

该模块作为系统调试和下位机操作的控制电路,采用传统的开关电路输入控制方式,通过开关断开和闭合过程,以改变处理器上相应管脚的电平变化,主要作用是与软件配合,设置系统参数,以及控制系统的工作流程。为此,采用开关按键与单片机相连的方式,并且由单片机扫描按键状态。当单片机扫描到某按键按下时就实行该按键所设定的功能,主要有两种:一是发送数据帧给各个节点;另一个是发送远程帧,请求某个节点发送自身的状态和数据,同时还可以切换系统程序执行的位置,保证升级程序的下载和执行。

2.3 显示模块

该模块作为系统电路与操作人员的沟通桥梁,通过观察显示模块,可以了解电路的工作情况以及系统工作是否稳定,进一步掌握系统工作进程,同时还可以通过它帮助设置系统参数。

目前,显示模块的显示方式多种多样,各自有各自的特点,对于选择何种方式要根据系统的具体情况和要求。该系统显示模块的主要作用是完成系统的参数设置、系统工作进程指示和通信过程中错误指示等。因此,从操作者方便考虑,采用LCD和LED配合的显示方式比较清晰。

2.4 I2C存储模块

该存储模块采用串行的E2PROM作为存储器。增加该模块的目的是为了保证一些系统参数和工作状态的数据,使其在系统掉电后仍可以保存。因此在下次系统重启时,可以不必重新设置系统参数,同时也可以了解上次掉电前系统情况。

2.5 电源模块

在总线节点接口模块的设计中,还需要注意电源电压与地信号的隔离。在图3接口电路中采用3组不同电源电压VCC,VA和VB。其中,VCC用于单片机、SJA1000数字逻辑和其他数字逻辑器件供电;VA用于SJA1000输出驱动器及6N137一侧的供电;VB用于总线收发器PCA82C250及6N137另一侧的供电。与此相对应,接口电路使用3组不同的地信号GND,AGND和BGND。在设计中,可以将VCC和VA,GND和AGND通过电磁珠在单点进行连接,但VB,BGND与其他的电源信号之间应该保持断开的状态,否则6N137将起不到应有的隔离作用。

2.6 系统软件设计

软件设计主要包括RS 232通信程序和CAN通信程序两部分。其中,节点设计又以CAN通信程序设计为主。CAN通信程序主要由CAN初始化、数据发送、 数据接收等子程序模块构成。CAN初始化主要是设置CAN的通信参数。需要初始化的CAN控制寄存器有模式寄存器、时分寄存器、接收代码寄存器、屏蔽寄存器、总线定时寄存器、输出控制寄存器等。值得注意的是这些寄存器只能在CAN控制器处于复位状态下才可写访问。发送数据程序把数据存储区中待发送的数据取出,组成信息帧,并将主机的ID地址填入帧头,然后将信息帧发送到 CAN控制器的发送缓冲区。在接收到主机的发送请求后,发送程序启动发送命令。从CAN控制器发送到总线的信息是由CAN控制器自动完成的。从CAN总线到CAN控制器接收缓冲区的信息也是由CAN控制器自动完成的。 接收程序只需从接收缓冲区读取信息,并将其存储在数据存储区即可。系统通信软件设计流程图如图4所示。

3 程序升级系统

P89C51是Philips公司生产的众多单片机系列中的一种,该单片机是8位80C51单片机的派生产品。除了保留原有80C51指令系统和硬件结构的大框架外,在其他多方面都发生了加强、扩展和创新。

其中,在存储容量大小上,片上RAM增加为1 024 B,片上FLASH/EPROM也增加为64 KB,并且在ROM的内部添加了带块擦除的内部程序存储器,内部固化了1 KB的BOOT ROM,包含一个低级的在系统编程子程序和一个默认装载程序,用户可调用这些程序来实现在运行中编程(IAP)。

在运行中编程(IAP)指在用户的应用程序中对FLASH块、FLASH寄存器、加密位等进行擦除和编程等操作。其中,擦除和编程等操作子程序已经在BOOT ROM固件中固化了,只要应用程序调用即可。固件上有引导装载程序,可以接收主机经串口传来的命令和数据(如经PC机的RS 232口),这个固件放在64 KB程序存储器的最高端,与片内FLASH地址0FC00H~0FFFFH相覆盖,需要用特殊功能寄存器AUXR1的ENBOOT位进行固件和FLASH之间的切换,ENBOOT=1 范围寻址到固件;ENBOOT=0 范围寻址到FLASH。为了方便调用,给各种功能子程序提供了一个共用的函数调用入口,名为PGM-MTP,地址为0FFF0H。该函数具有相应的输入参数和返回参数,如果需要,返回参数则可以放在ACC中,而擦除和编程所用的振荡器频率经舍弃后为整数值,作为输入参数放于寄存器R0中;同时为了区分各功能子程序而用的功能码则放于寄存器R1中,功能码如表1所示。

除此之外,还有部分的地址和数据也作为输入参数存在DPTR中,一起作为函数参数被调用。但是,最终用户程序中调用IAP操作的入口程序之前必须先设置ENBOOT,ENBOOT=1地址在0FC00H~0FFFFH范围寻址到固件;ENBOOT=0地址在0FC00H~0FFFFH范围寻址到FLASH。

在运行中,编程(IAP)的最大意义在于能把采集到的大量数据固化到FLASH ROM中保存,以供以后处理。这种数据的保存跟程序的保存一样安全,除非擦除操作,数据内容是不会改变和消失的。因此,可以把需要更新的节点程序先进行相应的编译,编译后的程序以16进制数据形式保存到FLASH ROM的特定地址中。同时,再设置单片机中两个特殊的FLASH寄存器:STATUS BYTE和BOOT VECTOR。上电复位,RST脚由有效正电平转入下降沿时,单片机自动检查STATUS BYTE的内容,如果是0,则转去0000H地址开始执行程序,这是正常运行方式;如果不是0,则去BOOT VECTOR寄存器取其内容,作为程序计数器的高字节,低字节固定为00H,芯片出厂时给BOOT VECTOR寄存器预置为缺省值0FCH,相当于0FC00H地址,该地址访问的内容最终还是由上述的ENBOOT来决定,这样就可以使单片机执行更新程序。

4 上位机通信节点设计

该上位机节点设计软件采用高级语言Visual Basic(VB)编写完成。主要完成的任务是通过对上位机的操作实现向下位机发送升级程序工作。硬件电路的实现采用标准的RS 232总线接口,而软件设计中数据的下传采用主动发送方式,要求下位机处于等待接收状态时进行。数据串行通信,利用VB的串行控件Mscomm实现系统的串行通讯。该控件屏蔽了通信过程中的底层操作,通过设置、监视Mscomm控件的属性和事件,再结合Timer控件,即可完成对串行口的初始化和数据的输入/输出工作。Mscomm控件的主要属性如下:

(1) Commport 设置并返回通讯端口号。端口号可以设置为1~16的任何数;

(2) Setting 设置并返回波特率、奇偶校验、数据位、停止位;

(3) Portopen 设置并返回通讯端口的状态,也可以打开和关闭端口;

(4) Input 从接收缓冲区返回和删除字符,该属性在运行时为只读;

(5) InputLen 设置并返回每次Input属性从接收缓冲区中读取的字符数;

(6) Output 向传送缓冲区写数据,要传送的数据可是文本数据或二进制数据;

(7) CommEvent 返回最近的通信事件或错误。只要有通信错误或事件发生错误时就会产生Oncomm事件。CommEvent属性中存有该错误或事件的数值代码。

5 结 语

以上是该设计的简要介绍,通过多次实验CAN总线节点间的通信系统工作稳定,没有发生总线超载现象,总线无错误,引入光耦隔离之后大大提高了通信的抗干扰能力,达到理想的效果,并且采用了错误标识显示,使系统更加可靠,系统升级更加成功。

参考文献

[1]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,2002.

[2]汪晋宽,马淑华,吴雨川.工业网络技术[M].北京:北京邮电大学出版社,2007.

[3]饶运涛,邹继军,郑勇芸.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社,2007.

[4]陆前锋.基于SJA1000的CAN智能控制系统设计[J].自动化设计与应用,2003,22(1):61-64.

[5]Philips Semiconductors.SJA1000 Stand-alone CAN Controller [Z].1999.

[6]Philips Semiconductors.PCA82C250 CAN Controller[Z].1999.

[7]孟传良.工控系统的通信抗干扰技术[J].贵州工业大学学报,1999(1):75-77.

[8]李江全,张丽,岑红蕾.Visual Basic串口通信与测控应用技术实战详解[M].北京:人民邮电出版社,2007.

[9]李长林.Visual Basic串口通信技术与典型实例[M].北京:清华大学出版社,2006.

[10]李朝青,刘艳玲.单片机与PC机网络通信技术[M].北京: 北京航空航天大学出版社,2007.

[11]南金瑞,刘澜波.汽车单片机及车载总线技术[M].北京:北京理工大学出版社,2005.

猜你喜欢
现场总线系统升级CAN总线
甘肃省高速公路通信系统升级改造解决方案
论网络通信技术
CAN总线通信技术在电梯监控系统中的应用
基于CANoe的J1939协议在ECU通信中的应用
基于CAN总线的变电站通讯网络设计
基于现场总线的聚酯网热定形机控制系统
现场总线与控制系统工程实训在教学中的应用
高速公路监控系统升级探究
“一张网”收费系统升级改造项目探析
触摸屏项目移植在自动化系统升级中的应用