CAN总线在机车监控系统中的应用
时间:04-04
来源:西安工程科技学院 西安交通大学
点击:
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现场总线),若能实现,车站及相关部门与各列车的联络、运行情况的及时汇报和监控等问题都将迎刃而解。
参考文献
2 邬宽明.单片机外围器件实用手册——数据传输接口器件分册.北京:北京航空航天大学出版社,1998
3 邬宽明.CAN总线原理及应用系统设计.北京:北京航空航天大学出版社,1996
CAN总线 相关文章:
- CAN总线镍氢电池管理解决方案(04-23)
- 基于can总线技术的电子控制系统单元在汽车网络系统中的应用(07-16)
- CAN总线+单片机实现通信网络设计(08-27)
- 基于S3C2440处理器和WinCE的智能车载仪表设计(02-04)
- 基于CDMA和CAN总线的车辆远程故障诊断系统(02-20)
- CAN总线技术在矿井安全生产监控系统中的应用(08-09)