某型高炮CAN总线检测系统的设计

2019-08-12 06:15李旭孟晨张晓良王成刘志鹏
现代电子技术 2019年15期
关键词:数据传输网络通信程序设计

李旭 孟晨 张晓良 王成 刘志鹏

摘  要: 为实现对某型高炮总线数据的实时监测,设计一种CAN总线检测系统。该系统使用CAN收发接口电路完成对信号的采集,采用STM32F1系列单片机作为下位机对采集的数据进行处理,通过W5500网络接口将数据传输到PC104 工控机,由工控机进行数据解析,从而实现CAN总线数据的检测功能。实验结果表明,该系统能够实现对某型高炮CAN数据的实时检测。

关键词: 数据检测系统; 信号采集; 数据处理; 数据传输; 网络通信; 程序设计

中图分类号: TN915?34                           文獻标识码: A                         文章编号: 1004?373X(2019)15?0013?04

Design of CAN bus detecting system for a certain type antiaircraft gun

LI Xu1, MENG Chen1, ZHANG Xiaoliang1, WANG Cheng1, LIU Zhipeng2

( 1. Army Engineering University, Shijiazhuang 050003, China; 2. Military Delegate Group Stationed in Changzhi Region, Changzhi 046000, China)

Abstract: In order to achieve the real?time monitoring for the bus data of a certain type antiaircraft gun, a CAN bus detecting system is designed, in which the CAN transceiver interface circuit is adopted to fulfill signal acquisition, STM32F1 series SCM is used as its slave computer to process the acquired data through, and then sent to PC104 IPC (industrial personal computer) through the W5500 Ethernet interface. The processed data is analyzed by the IPC to realize the system function for detecting CAN bus data. The experimental results show that the system can realize real?time detection of CAN data of a certain antiaircraft gun.

Keywords: data detecting system; signal acquisition; data processing; data transmission; network communication; program design

0  引  言

某型高炮作为新一代武器系统,其各个分系统已经实现了采集内部某些模拟信号或开关信号,并输出到CAN总线的功能。各个分系统之间的通信采用CAN 2.0B标准总线协议,总线通信波特率[1]为500 Kb/s。因此,可以通过采集CAN总线上的数据获取各个分系统的工作状况,并对检测出的故障进行分析和诊断,使得故障排查工作简单化、高效化。本文以某型高炮CAN总线数据采集检测作为研究对象,设计开发了CAN总线检测系统,并进行相关的测试实验。

1  系统总体结构设计

CAN总线检测系统结构设计框图如图1所示,输入包括某型高炮的待测信号和电源,输出为检测结果,通过图形界面进行显示。检测系统与某型高炮之间的电气连接采用可靠性高的航空接头作为连接方式。检测系统包含电源转换电路、工控机主板、CAN检测电路、液晶屏与键盘鼠标等模块组成。其中工控机主板采用PC104工控机作为上位机核心,负责数据处理与人机交互;CAN检测电路采用STM32F1系列单片机作为下位机的控制,负责CAN信号的采集与传输。

图1  总线检测系统结构框图

2  CAN总线检测系统的硬件设计

在CAN总线检测电路模块中,单片机作为主控制器,CAN接口电路将实现单片机与CAN总线之间的互连,W5500接口电路实现单片机与以太网之间的连接。STM32单片机自带CAN 2.0接口控制器,通过与CAN收发器芯片连接可以进行CAN总线数据帧的收发。单片机通过W5500与PC建立TCP连接,通过SPI总线与W5500进行通信,后者将完成其转换为以太网格式数据包,并通过网线发送给PC。该部分电路的设计框图如图2所示。

图2  CAN总线检测电路设计框图

2.1  微控制器接口电路

微控制器采用STM32F103ZET6,主频为72 MHz,FLASH容量为512 KB,SRAM容量为64 KB。外部时钟使用8 MHz晶振,VDD和VSS间的去耦电容值为100 nF,单片机的BOOT0和BOOT1直接通过100 kΩ电阻下拉接地[2]。复位电路采用阻容复位电路,下载调试电路采用SWD接口。

2.2  CAN接口电路

微控制器的CAN_RX和CAN_TX电平首先经过磁耦隔离,然后与CAN收发器的TXD和RXD引脚相连,转换成CAN_H和CAN_L信号与外界CAN总线相连。

如图3所示,U11为TJA1050芯片,该芯片是控制器区域网络(CAN)协议控制器和物理总线之间的接口。TJA1050可以为总线提供差动发送性能,为CAN控制器提供差动接收性能。本系统采用TJA1050实现CAN协议控制器到CAN物理总线之间的转换。U4为ADuM1201芯片,该芯片是ADI公司推出的新型双通道数字磁耦隔离器,它具有诸多优于光电隔离器件性能的地方,可满足CAN总线的要求。

由于现场情况十分复杂,各节点之间存在很高的共模电压,虽然CAN接口采用的是差分传输方式,具有一定的抗共模干扰的能力,但当共模电压超过CAN驱动器的极限接收电压时,CAN驱动器就无法正常工作了,严重时甚至会烧毁芯片和仪器设备。因此,为了适应强干扰环境或是高的性能要求,必须对CAN总线各通信节点实行电气隔离。为了防止瞬态电压和ESD损坏CAN收发器芯片,采取两种措施:一是采用隔离电路对大幅度瞬态干扰进行隔离,需要注意的是隔离芯片两侧要使用隔离电源进行供电否则达不到隔离效果[3],这里采用电源模块B0505S对两侧电源进行隔离,如图4所示;二是采用旁路元件保护隔离接口不被过高的瞬态电压击穿。在CAN总线的CAN_H和CAN_L与GND之间放置一个两路的TVS瞬态抑制二极管NUP2105L。需要注意的是,输入和输出的电源都要加上旁路电容,并且要尽量靠近芯片的电源引脚。同时CAN_H和CAN_L信号在布线时要采用差分线布线,线的长度要一致,必要时采用蛇形走线。CAN_H和 CAN_L之间接120 Ω阻抗匹配电阻非常必要,否则会影响总线的数据传输距离和传输质量[4]。

图4  B0505S电源模块

2.3  网络接口电路

本系统采用W5500作为微控制器与以太网通信的转换器。W5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加方便的互联网连接方案。W5500集成TCP/IP协议栈、10/100M以太网数据链路层(MAC)及物联层(PHY),通过SPI总线与微控制器连接。W5500的SPI接口支持80 MHz的通信速率。利用W5500组成的网络接口电路如图5所示。

3  网络通信程序设计

3.1  上位机与下位机网络通信的实现

下位机上电后,首先进行硬件初始化、内存初始化、调度器初始化、定时器初始化。完成初始化后,各个任务线程会轮流占用CPU处理器时间。为了防止设备接入CAN总线时由于存在CAN总线数据导致程序立刻进入CAN中断程序,从而无法与PC建立TCP连接,这里的CAN接收线程首先需要保证与PC建立TCP连接,然后才进行CAN接口的初始化并使能接收中断,W5500作为TCP客户端,PC作为服务器端,W5500的socket0与PC端建立TCP连接的流程如图6所示。

图5  网络接口电路图

圖6  TCP连接建立过程

上位机采用socket编程利用TCP/IP协议解析收到的CAN总线数据然后存储以备后期处理分析[5]。当上位机与下位机建立TCP/IP连接后,下位机通过调用W5500提供的接口函数如recv和send实现与上位机之间的通信。上位机同样也需要编写相应的程序才能实现与下位机通信,上位机的TCP/IP通信流程图如图7所示。

3.2  CAN总线数据收发程序设计

CAN总线数据帧为短数据报文,由“帧起始”“仲裁域”“控制域”“数据域”“CRC域”“应答域”“帧结尾”等7个位域组成[6]。CAN数据发送线程用于获取上位机通过TCP连接传来的数据包,然后转换为CAN数据帧并输出到物理CAN总线,其流程图如图8所示。

图7  上位机TCP/IP通信流程图

图8  CAN数据发送线程流程图

STM32F1系列单片机的SPI1最高时钟可达36 MHz,SPI2的时钟可达18 MHz。为了使CAN数据能尽快地从接收邮箱中发送到SPI总线,可以采用DMA传输提高数据从内存到SPI接口的传输速度。然而,W5500在配置或读取其内部寄存器时只需发送4字节的数据,DMA的配置也需要一定时间,采用DMA可能起不到提高速度的作用。采取以下措施可提高传输速度:STM32在内存与SPI外设之间大于4个字节采用DMA传输,否则采用正常方式传输。利用DMA向W5500发送数据时只需要使用发送DMA通道[6]。在利用DMA接收W5500的数据时,需要同时使能DMA发送和接收通道,发送DMA通道用来向W5500发送0x00,从而使W5500向外发送期望的数据然后通过MCU接收DMA通道存到内存中。

CAN数据接收线程的作用:當CAN总线上出现数据帧时,进入接收中断函数接收CAN数据帧,然后将数据帧发送到CAN的接收邮箱中缓存。使用信号量can_size_sem来表达已经接收的CAN数据帧的数目。在CAN接收中断程序中通过rt_sem_release(can_ size_sem)使信号量的值加1。CAN接收线程查看CAN的接收邮箱是否有数据帧,有,则使用W5500的socket0传到PC。CAN接收线程流程图如图9所示。

图9  CAN接收线程流程图

4  实验结果

为了验证所设计的CAN总线数据采集是否正常,利用模拟器给CAN总线发送数据帧,CAN总线检测电路采集数据并发送给上位机,上位机对数据进行解码处理并显示,显示界面如图10所示。通过对发送的数据与检测系统接收的数据进行比对,数据完全一致。从实验结果来看本文提出的CAN总线检测系统可以实现实时采集CAN总线的所有帧数据。

图10  上位机显示接收到的数据

5  结  语

本文以某型高炮CAN总线数据采集检测作为研究对象,通过STM32单片机搭配嵌入式以太网控制芯片W5500,将CAN总线数据转换成以太网数据包并发送给上位机,完成数据的不间断采集。实验表明,该系统能够实现对某型高炮CAN数据的实时检测,为装备的故障诊断工作提供了可靠的数据支持。

参考文献

[1] 赵鑫,张振友,王长升.某型自行高炮工况分析仪的设计与实现[J].火力与指挥控制,2015,40(11):159?162.

ZHAO Xin, ZHANG Zhenyou, WANG Changsheng. A design and implementation of artillery condition analyzer [J]. Fire control & command control, 2015, 40(11): 159?162.

[2] 刘纯虎,付斌,盛庆华.基于STM32的微型USB?CAN适配器开发[J].计算机测量与控制,2013,21(4):996?999.

LIU Chunhu, FU Bin, SHENG Qinghua.  Development of a small compact USB to CAN converter based on STM32 [J]. Computer measurement & control, 2013, 21(4): 996?999.

[3] 张启刚,朱维同.综合电子技术在自行火炮中的应用研究[J].火炮发射与控制学报,1997(4):28?34.

ZHANG Qigang, ZHU Weitong. Research on application of integrated electronic technology in self?propelled gun [J]. Gun launch & control journal, 1997(4): 28?34.

[4] 代寿刚,干莽,宋占伟.基于FPGA的CAN总线故障分析仪[J].吉林大学学报(信息科学版),2012,30(5):503?508.

DAI Shougang, GAN Mang, SONG Zhanwei. CAN?bus fault analyzer based on FPGA [J]. Journal of Jilin University (Information sci ed), 2012, 30(5): 503?508.

[5] 孙海民.精通Windows Sockets网络开发:基于Visual C++实现[M].北京:人民邮电出版社,2008:80?85.

SUN Haimin. Proficient in Windows Sockets network development: Visual C++ based implementation [M]. Beijing: The Posts and Telecommunications Press, 2008: 80?85.

[6] STMicroelectronics. STM32F10x Standard Peripherals Library [CP]. [S.l.]: STMicroelectronics, 2011.

[7] 马建辉,胡代荣,郭坤.一种汽车CAN总线网关的报文接收和发送方法[J].现代电子技术,2018,41(11):5?7.

MA Jianhui, HU Dairong, GUO Kun. A messages receiving and transmitting method of automotive CAN bus gateway [J]. Modern electronics technique, 2018, 41(11): 5?7.

[8] 张婷,冯超,李秋妮,等.高炮武器发射目标毁伤效率优化设计仿真[J].计算机仿真,2017,34(6):27?31.

ZHANG Ting, FENG Chao, LI Qiuni, et al. Optimized design and simulation of anti?craft gun launch target damage effectiveness [J]. Computer Simulation, 2017, 34(6): 27?31.

猜你喜欢
数据传输网络通信程序设计
基于Visual Studio Code的C语言程序设计实践教学探索
基于网络通信的智能照明系统设计
从细节入手,谈PLC程序设计技巧
网络通信中信息隐藏技术的应用
基于网络通信的校园智能音箱设计
谈计算机网络通信常见问题及技术发展
高职高专院校C语言程序设计教学改革探索
GPRS DTU的应用经验浅析
PLC梯形图程序设计技巧及应用