【摘 要】 以Philips公司的SJA1000为例,介绍了CAN现场总线的特点,控制器的功能、结构和CAN2.0B总线协议的基本内容,阐述了一个基于CAN总线的火车机车监控系统,及其系统性能要求、系统硬件构建、软件设计思路和应用结果,由此说明CAN总线的优点及其用于工业现场控制系统的一个通用设计过程。
关键词:CAN,现场总线,SJA1000初始化,机车监控系统,信号检测,局域网
1 引 言
对火车机车监控系统而言,数据测量/传输的快速性、准确性、可靠性、通讯的灵活性都是至关重要的。以前的机车数据监控仅仅提供现场数据的显示和报警,在各设备上加智能仪表,比较分散,不便于观察机车运行情况和进行及时检修,机车运行数据也无法保存,而这些数据是查清机车故障原因和检修的重要依据;智能仪表的各种操作,如调零、限值、精度都因环境和人为因素,影响了简单仪表的显示、报警功能,加之工作现场环境恶劣(高温、震动、电磁波辐射等),导致其实时性、准确性都较差。随着国内现场总线技术的发展,有必要及时更新原来的检测系统。
机车监控系统本身有几十个数据采集节点(采用单片微机AT89C51),一个上位工控机负责数据存储和记录,由于采集点多、采集频率较高(20Hz),因此,总线上的数据通常比较拥挤,而系统对数据传输的准确性、报警数据的实时性要求特别高,鉴于此,我们选择CAN现场总线搭建数据平台,它兼具了灵活性、实时性、准确性、可靠性各方面的优势。
CAN是控制器局域网络(Controller Area Net)的简称,是80年代德国奔驰汽车公司制定的一种串行通讯协议,主要用于汽车多个控制设备和多个仪器仪表之间的数据通讯,链路层采用CAN2.0B协议。现在,它已广泛应用于各种工业现场,特别适用于做优化、分析及维护的系统。90年代,国内开始对CAN总线应用进行研究,目前已在诸多领域中应用CAN总线技术。
本系统就是一个依照CAN2.0B构建的局域网,总线控制器采用德国Philips公司的SJA1000,驱动器为与其匹配的PCA82C250,下位机和上位机通过CANH、CANL双绞线进行双向通信。此系统的整个硬件结构又可以作为CAN网络的一个标准节点,构成树状网络,它是CAN总线系统的最小构成和典型应用。
2 CAN总线特点简介
CAN总线的最大特征就是,网络内各节点以多主方式工作,各节点在任意时刻都可以点对点、一点对多点向其他节点发送信息,不分主从,灵活性好。
CAN总线上同时传送的数据采用非破坏性仲裁,ID小的优先传送,低优先级数据延迟发送,这对负载较重的网络解决网络瘫痪、网络阻塞及提高效率很有效。
CAN还有较强的校验功能,出错的数据自动重新发送,可靠性很高。
另外,CAN通讯介质选择双绞线,机车现场空间狭窄,双绞线的现场布线、安装、拆卸都比较简单。最大通信距离长达10km,比特率可达1Mbps(通信距离较大时,比特率会有所降低),可同时传送16个报文。Philips公司的SJA1000的工作温度范围:-40℃~+125℃,存储温度范围:-65℃~+150℃。
对于系统选用的SJA1000CAN控制器,其功能模块主要有:接口管理逻辑(Interface ManagementLogic)、接收FIFO栈(Receive FIFO)、接收过滤器(Acceptance Filter)、发送缓冲器(Transmit Buffer)和CAN核心模块(CAN Core Block),结构如图1所示(见Philips Semiconductors公司的资料:ApplicationNote——SJA1000 Stand-alone CAN ControllerAN97076,1997)。 (图片) 接口管理逻辑主要处理和微控制器的信号交换,通过CS、ALE/AS、RD、WR、INT等控制信号与微控制器进行数据读写。而CAN核心模块就是CAN2.0B的执行部分。
接收过滤器接收经CAN核心模块转换过的数据,通过寄存器接收码寄存器(Acceptance CodeRegister,ACR)、接收屏蔽寄存器(Acceptance MaskRegister,AMR)做过滤处理,符合ID要求的数据才予以接收。ACR提供本机ID,AMR提供ID过滤时的有效位信息。接收FIFO栈用来暂存通过过滤器过滤而接收的数据。
发送缓冲器(TB)存储欲发送的数据,CAN核心模块从发送缓冲器读数,依照CAN2.0B协议发送数据。
3 系统功能及硬件实现
此系统除了常规系统提供的功能之外,还具有模块优先级可调(ID可调)、报警限值可调、报警历史数据的保存等功能。
工作现场由多个模拟仪表和一些开关信号组成,每一个仪表配一块数据采集板,开关量的采集由一个和模拟量采集板相似的单独模块完成。下位机采用ATMEL公司的AT89C51微型单片机,主要做通信数据的采集、简单判断和数据发送的准备工作;通信部分由总线控制器SJA1000及其配套的驱动器PCA82C250构成,它们可以完成数据链路层和物理层的所有工作;另有上位工控机,带有5M字节的闪存E2PROM,能提供10万次擦除和10年的数据保存期,用以存储各个采集模块报警前、后1min的数据,机车每个运行周期结束后,就将E2PROM中的数据导出,以备日后的性能分析;监控报警模块,用来进行数据的实时显示及报警,为了防止上位机出现瓶颈现象,各模块的报警任务分散给下位机完成,向上位机发送数据只需将报警标志位置复位即可;总线终端接100Ω~120Ω电阻以抑制信号反射,保证通信可靠性。双绞线连接各个模块节点,形成多主控制的局域网。另外,为了防止系统运行意外,还加了X25045(美国Xicor公司的外围器件,集成了Watchdog、复位控制器、带Block锁的CMOS串行E2PROM阵列三种功能)作看门狗,4KB的SPI(Serial Peripheral Interface)E2PROM可以存储此节点的报警限值等一些重要数据。系统拓扑结构如图2所示。(图片) 4 上位/下位机的数据通讯
SJA1000支持CAN2.0B规范协议,且有2种工作方式:BasicCAN和PeliCAN,本系统采用BasicCAN。
各AT89C51单片机每隔0.05s主动给上位机发送一次数据,下位机的CPU相对上位机来说不太忙,因此,为了防止外部干扰信号引起错误报警,下位机发送数据之前对数据进行数字滤波:0.05s分为5次采集,取其平均值发送,这样就可以避免对瞬间高频干扰信号的误报警。
而上位工控机发给下位机的数据一般都是针对某个下位机的命令,下位单片机接收数据是用外部中断INT0完成的。上位机时刻监听所有下位单片机,下位机也时时监听上位机,接收发给自己的命令。
SJA1000以BasicCAN工作模式接收数据时,先装入到过滤器中,顺序如下:(图片) 其中,ID的高八位接收AMR码屏蔽之后,与ACR八位接收码进行比较,符合则传入接收FIFO,否则不予接收。因CAN2.0B协议中ID越小的优先级越高,所以,可以将ID最高位ID10设为报警数据的标志(数据超限时此位为零),以保证有报警的模块数据优先传送。而对于上位机,要接收所有下位单片微机的数据,ID高八位应全部屏蔽,而低三位ID2~ID0用来作为上位工控机向下位单片机发送命令(如修改报警限值等)的标志位,因此,在系统工作期间各个模块的限值可以由上位机发送命令加以调节。
下位机在发送数据时,先从寄存器读入限值,判断是否超限,如超限,ID10置0,否则置1。然后在ID9~ID3填入本模块的ID号,将发送命令位置位,之后单片机就不参与此次数据发送进程了,其他工作就由SJA1000和PCA82C250完成。由于ID也可以决定数据的优先级,单片机复位时总是先从P2口上读入外部8位拨动开关作为ID,这样,各个模块的优先级就可以人为改变,增强了系统的灵活性。(图片) AT89C51在主程序中向上位机发送数据,在0#外部中断程序中接收上位机的命令,利用ID低三位判断约定命令的意义,在此不再细述,只给出主程序和SJA1000的初始化程序流程,其中,在各个主程序开始,为了防止网络由于所有下位机复位的时间、采集周期、软件均一致而导致BUS上负荷不均匀,上位机工作量时而很大的问题,各个下位机每次复位时主程序特意安排不同时间长短的延时,这样,各模块发送数据的时刻就能均匀分布。(图片) 上位机接收到数据后,先查看报警标志位,判断是否报警,若是,将寄存器中前1分钟的数据及对应的时间向E2PROM中写入,并且继续写入接收到的报警实时数据,直到报警停止以后一分钟。否则,将数据加上当前时间以队列方式存入寄存器,寄存器满,将最旧的数据刷掉。
监控报警模块和上位工控机一样接收数据,只是每个仪表模块对应一个报警装置,n个报警装置实时显示各个仪表的超限状态,另有液晶屏一块,显示有报警模块的实时数据,无报警时显示ID最小的模块的实时数据。
以上介绍的就是一个单独的下位采集模块和上位机通讯的基本过程和原理,整个系统由若干个相对独立的、相似的下位模块和一个上位机组成,下位机之间暂时无通信。
5 结束语
此系统是为西安某公司改进机车控制台开发的,经过试验、软件调试直到试车运行(采集模块20个)表明,性能稳定,采集数据的波动幅度小于0.05%,试车时数据传输率设为125kbps,无数据丢失,上位机和下位机间无数据传送出错现象,最高比特率可达1Mb/s,抗干扰能力、抗高温能力(-40℃~+120℃)、数据准确性都令人满意,充分体现了CAN总线的优越性。遗憾的是,机车仪表报警以后,目前还只能以人工方式解决问题。
下一步还会考虑更高一层的上位机与次系统的通信(仍会采用CAN现场总线),若能实现,车站及相关部门与各列车的联络、运行情况的及时汇报和监控等问题都将迎刃而解。
参考文献
1 何立民.单片机应用技术选编.北京:北京航空航天大学出版社,1999
2 邬宽明.单片机外围器件实用手册——数据传输接口器件分册.北京:北京航空航天大学出版社,1998
3 邬宽明.CAN总线原理及应用系统设计.北京:北京航空航天大学出版社,1996
4/18/2005
|