极境中的测 控 显 动

 

[技术精粹] CAN总线在机车监控系统中的应用

上海英硕自动化科技有限公司 发表于:2008/5/6 11:11:54
标签(TAG):

1 引 言

对火车机车监控系统而言,数据测量/传输的快速性、准确性、可靠性、通讯的灵活性都是至关重要的。以前的机车数据监控仅仅提供现场数据的显示和报警,在各设备上加智能仪表,比较分散,不便于观察机车运行情况和进行及时检修,机车运行数据也无法保存,而这些数据是查清机车故障原因和检修的重要依据;智能仪表的各种操作,如调零、限值、精度都因环境和人为因素,影响了简单仪表的显示、报警功能,加之工作现场环境恶劣(高温、震动、电磁波辐射等),导致其实时性、准确性都较差。随着国内现场总线技术的发展,有必要及时更新原来的检测系统。

机车监控系统本身有几十个数据采集节点,一个上位工控机负责数据存储和记录,由于采集点多、采集频率较高(20Hz),因此,总线上的数据通常比较拥挤,而系统对数据传输的准确性、报警数据的实时性要求特别高,鉴于此,我们选择CAN现场总线搭建数据平台,它兼具了灵活性、实时性、准确性、可靠性各方面的优势。

2 CAN总线特点简介

CAN总线的最大特征就是,网络内各节点以多主方式工作,各节点在任意时刻都可以点对点、一点对多点向其他节点发送信息,不分主从,灵活性好。

CAN总线上同时传送的数据采用非破坏性仲裁,ID小的优先传送,低优先级数据延迟发送,这对负载较重的网络解决网络瘫痪、网络阻塞及提高效率很有效。

CAN还有较强的校验功能,出错的数据自动重新发送,可靠性很高。

另外,CAN通讯介质选择双绞线,机车现场空间狭窄,双绞线的现场布线、安装、拆卸都比较简单。最大通信距离长达10km,比特率可达1Mbps(通信距离较大时,比特率会有所降低),可同时传送16个报文

对于系统选用的控制器,其功能模块主要有:接口管理逻辑(Interface ManagementLogic)、接收FIFO栈(Receive FIFO)、接收过滤器(Acceptance Filter)、发送缓冲器(Transmit Buffer)和CAN核心模块(CAN Core Block),

接口管理逻辑主要处理和微控制器的信号交换,通过CSALEASRDWRINT等控制信号与微控制器进行数据读写。而CAN核心模块就是CAN20B的执行部分。

接收过滤器接收经CAN核心模块转换过的数据,通过寄存器接收码寄存器(Acceptance CodeRegisterACR)、接收屏蔽寄存器(Acceptance MaskRegisterAMR)做过滤处理,符合ID要求的数据才予以接收。ACR提供本机IDAMR提供ID过滤时的有效位信息。接收FIFO栈用来暂存通过过滤器过滤而接收的数据。

发送缓冲器(TB)存储欲发送的数据,CAN核心模块从发送缓冲器读数,依照CAN20B协议发送数据。

3 系统功能及硬件实现

此系统除了常规系统提供的功能之外,还具有模块优先级可调(ID可调)、报警限值可调、报警历史数据的保存等功能。

工作现场由多个模拟仪表和一些开关信号组成,每一个仪表配一块数据采集板,开关量的采集由一个和模拟量采集板相似的单独模块完成。下位机采用单片机,主要做通信数据的采集、简单判断和数据发送的准备工作;通信部分由总线控制器及其配套的驱动器0构成,它们可以完成数据链路层和物理层的所有工作;另有上位工控机,它带有5M字节的闪存,能提供10万次擦除和10年的数据保存期,用以存储各个采集模块报警前、后1min的数据,机车每个运行周期结束后,就将闪存中的数据导出,以备日后的性能分析;监控报警模块,用来进行数据的实时显示及报警,为了防止上位机出现瓶颈现象,各模块的报警任务分散给下位机完成,向上位机发送数据只需将报警标志位置复位即可;总线终端接100Ω~120Ω电阻以抑制信号反射,保证通信可靠性。双绞线连接各个模块节点,形成多主控制的局域网。

4 上位/下位机的数据通讯

CAN20B规范协议有2种工作方式:BasicCANPeliCAN,本系统采用BasicCAN

各单片机每隔005s主动给上位机发送一次数据,下位机的CPU相对上位机来说不太忙,因此,为了防止外部干扰信号引起错误报警,下位机发送数据之前对数据进行数字滤波:005s分为5次采集,取其平均值发送,这样就可以避免对瞬间高频干扰信号的误报警。

而上位工控机发给下位机的数据一般都是针对某个下位机的命令,下位单片机接收数据是用外部中断INT0完成的。上位机时刻监听所有下位单片机,下位机也时时监听上位机,接收发给自己的命令。

其中,ID的高八位接收AMR码屏蔽之后,与ACR八位接收码进行比较,符合则传入接收FIFO,否则不予接收。因CAN20B协议中ID越小的优先级越高,所以,可以将ID最高位ID10设为报警数据的标志(数据超限时此位为零),以保证有报警的模块数据优先传送。而对于上位机,要接收所有下位单片微机的数据,ID高八位应全部屏蔽,而低三位ID2ID0用来作为上位工控机向下位单片机发送命令(如修改报警限值等)的标志位,因此,在系统工作期间各个模块的限值可以由上位机发送命令加以调节。

下位机在发送数据时,先从寄存器读入限值,判断是否超限,如超限,ID100,否则置1。然后在ID9ID3填入本模块的ID号,将发送命令位置位,之后单片机就不参与此次数据发送进程了,其他工作就由总线控制器和驱动器完成。由于ID也可以决定数据的优先级,单片机复位时总是先从P2口上读入外部8位拨动开关作为ID,这样,各个模块的优先级就可以人为改变,增强了系统的灵活性。

单片机在主程序中向上位机发送数据,在0#外部中断程序中接收上位机的命令,利用ID低三位判断约定命令的意义,在此不再细述,只给出主程序和总线控制器的初始化程序流程,其中,在各个主程序开始,为了防止网络由于所有下位机复位的时间、采集周期、软件均一致而导致BUS上负荷不均匀,上位机工作量时而很大的问题,各个下位机每次复位时主程序特意安排不同时间长短的延时,这样,各模块发送数据的时刻就能均匀分布。

上位机接收到数据后,先查看报警标志位,判断是否报警,若是,将寄存器中前1分钟的数据及对应的时间向闪存中写入,并且继续写入接收到的报警实时数据,直到报警停止以后一分钟。否则,将数据加上当前时间以队列方式存入寄存器,寄存器满,将最旧的数据刷掉。

监控报警模块和上位工控机一样接收数据,只是每个仪表模块对应一个报警装置,n个报警装置实时显示各个仪表的超限状态,另有液晶屏一块,显示有报警模块的实时数据,无报警时显示ID最小的模块的实时数据。

以上介绍的就是一个单独的下位采集模块和上位机通讯的基本过程和原理,整个系统由若干个相对独立的、相似的下位模块和一个上位机组成,下位机之间暂时无通信。

5 结束语

本系统经过试验、软件调试直到试车运行(采集模块20个)表明,性能稳定,采集数据的波动幅度小于005%,试车时数据传输率设为125kbps,无数据丢失,上位机和下位机间无数据传送出错现象,最高比特率可达1Mbs,抗干扰能力、抗高温能力(-40℃~+120℃)、数据准确性都令人满意,充分体现了CAN总线的优越性。

 

回复:CAN总线在机车监控系统中的应用

zhuzhu (游客) 发表于:2008/5/27 16:42:52

这篇文章非常好!我很想学习这方面的知识,希望能得到你的帮助,谢谢.我的QQ85379752

中华工控网 | 联系我们 | 工控论坛首页 | 工控博客首页 | 博客注册 | 博客登陆

工控博客管理联系邮箱:工控博客服务邮箱

中华工控网 © Copyright 2013. All rights reserved.