基于CAN总线的某随动系统故障检测装置的设计
   来源:现代电子技术     2021年01月27日 16:21

基于CAN总线的自动光学检测通信系统设计

王圣旭等

摘 要: 为了解决信号在远距离传输过程中容易受到干扰的问题,在此提出一种基于CAN总线的某型火箭炮随动系统故障检测装置的设计方案,重点讲述了CAN总线通信模块及与之相关的数据采集模块的软硬件设计。通过对随动系统液压、气压、电压等工况参数的测量及故障诊断专家系统的推理,该装置可实现以自动故障诊断为主、人工诊断为辅的故障检测。整个系统简洁紧凑、具有较强的抗干扰能力和实时性。这种CAN总线通信方案不但可用于随动系统故障检测装置的研发,还可推广至其他模拟量信号的机电设备故障检测,尤其是多机组的分布式状态监测与故障诊断中,具有非常实用的应用前景。

关键词: CAN总线; 随动系统; 故障检测; 数据采集

中图分类号: TN919?34; TP274.2 文献标识码: A 文章编号: 1004?373X(2015)08?0128?04

Design of CAN bus based fault detection device for a certain servo system

WANG Sheng?xu, YOU Fan, CHEN Min, WANG Qiang, MENG Xiang?ming

(Unit 63981 of PLA, Wuhan, 430311, China)

Abstract: In order to solve the problem that signal is easily disturbed during its long distance transmission, in this paper, a design scheme of the CAN bus based fault detection device is proposed for a certain type of rocket launcher servo system. The CAN bus module and the related data acquisition modules software and hardware design. Through the measurement of the condition parameters such as hydraulic, air pressure and voltage of servo system, and the reasoning by the fault diagnosis expert system, this device can realize the fault detection which is completed by automatic diagnosis primarily, and if necessary supported by the artificial diagnosis. With strong ability of anti?interference and real?time, the CAN bus based communication scheme not only can be applied to the research and development, but also can be extended to the fault detection for other analog signal electromechanical equipments, especially to the multiunit distributed state monitoring and fault diagnosis.

Keywords: CAN bus; servo system; fault detection; data acquisition

某型火箭炮随动系统的主要功能是根据火控系统输出的射击诸元将定向器调整到位,是实现火箭炮自动操瞄的关键部分,关乎武器系统能否发挥到最大威力,因此有必要研制一款故障检测装置,以实现对随动系统各部件的快速故障检测。在随动系统的实际故障检测中,随动系统结构复杂,需要采集的信号路数较多,且检测装置可能距离火箭炮发射车较远,信号在远距离传输过程中容易受到各种各样的干扰,而CAN总线是一种实时控制的串行通信网络,具有可靠性高、传输速度快、受干扰概率低、实时性强等特点[1?2],基于这些原因本文提出了基于CAN总线的某型火箭炮随动系统故障检测装置的设计思想。

1 总体设计方案

本设计采用CAN总线作为数据采集与系统控制的通信方式,以ATMEL公司生产的AT91SAM9263 ARM芯片为主控单元,结合A/D转换技术、故障诊断专家系统实现某型火箭炮随动系统的故障检测。总体设计框图如图1所示。

数据采集单元由信号调理模块和A/D转换模块组成,其中信号调理模块用于模拟信号的放大、滤波和提高电路负载能力,A/D转换器完成模拟信号向数字信号的转换,ARM主控单元实现系统控制与故障诊断,数据采集单元与ARM系统控制与故障诊断模块之间以CAN 总线的方式进行通信,工作人员通过操作触摸屏显示界面完成故障检测。

2 系统硬件设计

2.1 数据采集单元

数据采集单元由信号调理电路和A/D转换模块组成,用于采集某型号火箭炮随动系统液压泵、高平机等被测部件的液压或气压的状态信号,其结构图如图2所示。

信号调理电路如图3所示,采用OP27运算放大器进行设计,它的作用是把传感器输入的信号进行放大,同时利用其输入阻抗高、输出阻抗小的特点以满足A/D转换芯片对驱动源阻抗的要求。

A/D转换电路将经过信号调理模块调理后的模拟信号转换为数字信号,文中选用TLC2543CN和STC89C52分别作为A/D采样芯片和微控制器[3],其设计如图4所示。TLC2543CN是TI公司生产的12位串行模/数转换器,使用电容开关逐次逼近技术,12位分辨率,10 μs的转换时间,11路模拟输入,输出数据长度可通过编程调整[4]。A/D转换模块与51单片机之间以I2C总线的方式进行通信,只需要一条串行数据线SDA(DATA_OUT)和一条串行时钟线SCL(CLOCK),具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。

经信号调理后的11路模拟量数据分别通过端口NO0?NO10进入TLC2543CN进行A/D转换,TLC2543CN通过[CS],DATA_INPUT,DATA_OUT,MEOC,I/O CLOCK这5个引脚与STC89C52单片机进行通信。为了减小外界环境及器件本身引入的噪声和扰动,提高系统的稳定性,在这5个信号与单片机之间进行光电耦合隔离处理。由于光信号的传送不需要共地,所以可将光耦器件两侧的地加以隔离,达到提高系统信噪比的作用,光耦隔离器件选用Avago Technologies 生产的6N137,电路如图5所示。需要注意的是,电路板中6N137两端的电源不能共用,否则起不到隔离的作用。

2.2 CAN总线通信模块

数据采集单元和ARM系统控制与故障诊断模块之间以CAN总线的方式进行数据通信和控制。CAN总线具有可靠性高、实时性强、较强的抗电磁干扰能力、传输距离远等特点,尤其适用于随动系统传感器多、各检测点信息交换频繁和干扰源复杂的情况。CAN总线通信模块的实现有2种解决方案[5]:一类是采用带有片上CAN的微处理器,如Philips的80C591/592/598、Atmel的AT90CAN128/64/32等;另一类是采用独立的CAN控制器,如Philips的SJA1000。考虑到应用的灵活性,本文采用独立的CAN控制器SJA1000。CAN总线通信模块结构框图如图6所示,选用STC89C52单片机作为CAN总线通信模块的微控制器,CAN总线控制器和收发器分别选用Philips公司生产的SJA1000和PCA82C250[6]。CAN总线规范采用三层结构模型,STC89C52单片机用以实现应用层的功能,SJA1000和PCA82C250则分别对应于数据链路层和物理层。为了增强CAN总线通信模块的抗干扰能力,在CAN控制器与CAN收发器之间进行光电耦合隔离处理,与数据采集单元一样,本文也选用6N137进行处理。

CAN总线通信模块接口电路主要由4部分组成:微控制器STC89C52、独立CAN控制器SJA1000、光电隔离器件6N137和CAN总线收发器PCA82C250。微控制器STC89C52用于数据处理、实现对SJA1000的初始化、通过对SJA1000的控制实现数据接收和发送等通信任务;独立CAN控制器SJA1000和收发器PCA82C250经过简单总线连接可实现数据链路层和物理层的全部功能。STC89C52通过DATA_INPUT向TLC2543CN发送一定格式的指令,在DATA_OUT引脚可获取到A/D转换的数据;由于SJA1000的数据线与地址线是共用的,所以将STC89C52的P0口与AD0?AD7直接连接的同时,还要将地址锁存信号线ALE进行连接,以便区分在同一时刻AD线上传递的是地址还是数据;SJA1000的中断管脚INT连接单片机的外部中断INT0;MODE管脚与高电平VCC连接以选择Intel模式;为了保证上电复位的可靠,复位电路采用IMP708芯片进行智能控制,IMP708芯片集看门狗定时器、掉电检测电路、电源监控电路等于一体,保证SJA1000芯片的可靠运行;RX0和TX0是数据的收发管脚,经光电耦合器件6N137后连接到CAN收发器上,用以电气隔离;PCA82C250有3种工作模式:高速、斜率控制和待机,本文选择斜率控制模式,通过在Rs引脚与地之间接一个100 kΩ的电阻来实现;为了消除在通信电缆中的信号反射,提高网络节点的拓扑能力,需要在CAN总线两端接入两个120 Ω的终端电阻[5]。

2.3 系统控制与故障诊断模块

数据处理与系统控制模块采用ATMEL公司生产的AT91SAM9263 ARM芯片作为主控单元,以触摸屏作为人机交互方式完成系统控制和故障诊断。AT91SAM9263主频 200 MHz;内置CAN总线控制器,全面支持CAN2.0A和CAN2.0B协议;内置TFT/STN LCD控制器,支持3.5~17英寸TFT?LCD 液晶屏,最高分辨率可达2 048×2 048。考虑到系统的可扩展性,本文将系统控制与故障诊断模块单独成板。技术保障人员可以通过操作触摸屏上显示的人机交互界面完成对随动系统的故障检测。

3 系统软件设计

系统软件设计主要分为A/D转换模块、数据处理模块、CAN总线通信模块和系统控制与故障诊断模块4部分。主流程图如图7所示,首先对STC89C52单片机进行初始化,包括CAN总线工作方式的选择、验收滤波方式的设置、验收屏蔽寄存器和验收代码寄存器的设置、波特率参数设置、中断允许寄存器的设置以及A/D转换模块的初始化等;当单片机接收到故障检测命令时,进行A/D采样,然后由单片机对采集到的数据进行处理,通过量值转换得到实际的工况数据;最后由CAN总线通信模块将数据传输到系统控制与故障诊断模块进行故障检测,诊断结果由触摸屏显示以指导维修人员进行现场维修。

3.1 A/D转换模块软件设计

A/D转换模块程序设计流程图如图8所示。

3.2 数据处理模块软件设计

数据采集过程中难免受到噪声的影响,为了保证采到数据的准确性,可以对其进行一定的算法处理。本文在故障检测时,对同一采样点进行5次采样,然后用快速排序算法对这5个数据进行排序,取中值作为故障检测的有效数据,以减小误差带来的影响。采集到的数据与实际值之间成严格的线性关系,将采集到的数据值乘以系数K即可获得实际的工况数据,其流程图如图9所示。

3.3 CAN总线通信模块软件设计

CAN总线通信模块的程序设计主要分为初始化、数据发送和数据接收3个部分:

(1) 初始化。CAN总线初始化主要是对通信参数进行设置,通过对时钟分频寄存器、验收码寄存器、验收屏蔽寄存器、总线定时寄存器和输出控制寄存器的配置实现对CAN总线工作模式、接收报文的验收码、验收屏蔽码、波特率和输出模式的配置和定义[7]。值得注意的是,这些寄存器的配置需要在复位模式下进行,因此在初始化前应确保系统已进入复位状态。

(2) 数据发送。本文采用查询方式,进行CAN总线的数据发送,首先应将CAN总线的发送中断禁能。发送数据前,主控制器轮询SJA1000状态寄存器的发送缓冲器状态位TBS以检查发送缓冲器是否被锁定,若发送缓冲器被锁定,则CPU等待,直到发送缓冲器被释放,然后将从现场采集到的数据发送到发送缓冲区并置位命令寄存器的发送请求位TR,此时SJA1000将向总线发送数据。数据发送流程图如图10所示。

(3) 数据接收。同数据发送一样,本文采用查询方式进行数据的接收,也应将CAN总线的发送中断禁能。主控制器轮询SJA1000状态寄存器接收缓冲状态标志RBS以检查接收缓冲器是否已满,若未满则主控制器继续当前的任务直到检查到接收缓冲器已满,读出缓冲区中的报文,然后通过置位命令寄存器的RRB位释放接收缓冲器内存空间。数据接收流程图如图11所示。

3.4 系统控制与故障诊断模块软件设计

系统控制与故障诊断模块是在Linux平台下利用Qt SDK开发完成的,数据库采用嵌入式系统中广泛采用关系型数据库SQLite[8]。软件采用模块化设计思想,包括显示界面、系统控制、检测数据库和故障诊断等4部分。系统界面基于QT/GUI开发,用于故障检测结果显示、调取数据库辅助人工诊断等人机交互;系统控制模块用于系统启动与关闭、初始化及多线程处理;检测数据库用于对专家系统中经验知识、故障诊断规则集进行组织、检索和维护,及用于存储系统采集的工况参数;故障诊断模块是该检测装置核心,本文利用故障诊断专家系统对随动系统进行故障诊断,给出诊断结果。考虑到故障诊断的实时性要求,程序采用多线程编程来实现。

图10 CAN总线数据发送程序设计流程图

图11 CAN总线数据接收程序设计流程图

4 结 语

为了测试随动系统故障检测装置在各种情况下的故障检测能力, 本文通过人为制造故障的方式对该系统进行了大量实验。在反复的实验中,该系统均能正确定位故障,充分验证系统的可靠性和稳定性。本文研制的以AT91SAM9263 ARM芯片为核心基于CAN总线随动系统故障检测装置,可实现对随动系统液压、气压、电压等工况参数的测量,经故障诊断专家系统的推理,实现以自动故障诊断为主、人工诊断为辅的故障检测。文中采用的CAN总线通信方式使整个系统简洁紧凑、具有较强的抗干扰能力和实时性,这种CAN总线通信方案不但可用于随动系统故障检测装置的研发,还可推广至其他模拟量信号的机电设备故障检测,尤其是多机组的分布式状态监测与故障诊断中,具有非常实用的应用前景。

参考文献

[1] CENA Gianluca, VAENZANO Adrianom. FastCAN: a high?performance enhanced CAN?like network [J]. Industrial Electronics, 2000, 47(4) : 951? 963.

[2] 张立云,宋爱国,钱夔,等.基于CAN总线的侦察机器人控制系统设计[J].测控技术,2013,32(1):65?68.

[3] 姚远,王赛,凌毓涛.TLC2543在89C51单片机数据采集系统中的应用[J].电子技术应用,2003,29(9):37?38.

[4] Texas Instruments Incorporated. TLC2543CN 12?bit analog?to?digital converters with serial control and 11 analog inputs [DB]. Texas: Texas Instruments Incorporated, 1997.

[5] 李晋华,邱春玲,田地,等.基于CAN总线数据采集系统的设计与实现[J].吉林大学学报:信息科学版,2004,22(2):134?137.

[6] 吴坎,赵薇,李封,等.基于SJA1000和PCA82C250的CAN总线接口设计[J].机械设计与制造,2010(7):55?57.

[7] Philips Semiconductors. DATA SHEET SJA1000 stand?alone CAN controller [DB]. Eindhoven, Netherlands: Philips Semiconductors, 2000.

[8] BLANCHETTE Jasmin, SUMMERFIELD Mark. C++ GUI Programming with Qt 4, second edition [M]. New Jersey: Prentice Hall, 2008.

总线 文章 模块