刘国琼

高铁汽车电力交通能耗水利CANBUS总线4G/5G远程无线网关控制单元

针对目前电传高铁汽车电力交通能耗水利运行环境差,数据采集困难,维护成本高的特点,速锐得设计了一种基于4G网络和CAN总线的远程数据采集系统V8。该远程无线网关控制单元采用S32K微控制器进行开发,主要由NXP主控模块i.MX6、4G通信模块、SD卡存储模块,CAN总线收发模块和电源模块组成,对各模块的软、硬件设计做了详细的介绍。实际运行证明该系统具有良好的可靠性,为高铁、汽车、电力、交通、能耗、水利CANBUS总线远程监控及故障诊断提供了良好的解决方案。

 

由于高铁、汽车、电力、交通、水利各类项目实施的工作环境恶劣、维护成本高。随着工业4.0概念的提出,行业智能化也成了人们关注的热点。车辆运行状况实时监控、车辆运行数据统计、车辆历史运行数据的存储、车辆故障的远程诊断等用户需求促使远程数据采集系统诞生。传统的基于2G的远程数据传输系统性能比较单一,数据传输速率慢,实时性差,不能满足高铁、汽车、电力、交通、水利等行业大数据量传输的需求。

 

随着4G网络的大范围覆盖及4G资费的逐年下降,5G已经开始做好了准备,我们基于4G网络的远程数据采集系统,系统硬件控制器使用低成本高性能的S32K系列微控制器作为主控芯片,4G模块选用全网通模块SIM7600CE/T,解决了系统网络制式单一问题,同时该模块使用方便,市场供货量大,易于采购,系统整体成本低。

 

系统的总体结构图,远程数据采集终端通过CAN总线采集车载等各个控制器和牵引逆变器等部件收集的车辆运行状态数据和故障数据,同时通过板载的GPS/北斗模块采集车辆的GPS位置数据,这些数据打包后通过4G网络发送到云端服务器供用户远程访问。特殊课题下,也可以省却GPS,只传输CAN总线数据。

 

无线网关控制单元系统的硬件设计

 

该系统硬件主要由NXP主控模块、4G通信模块、SD卡存储模块、CAN总线收发模块和电源模块组成。

 

无线网关控制单元主控模块

 

主控模块选用NXP先进的基于ARM 32位内核的微控制器S32K。S32K系列微控制器片内集成了双路隔离的CAN控制器,支持CAN2.0B协议;4路隔离的USART,传输速率能够达到10.5 Mbit/s;高达17个定时器;SRAM高达192 Kbytes,Flash存储空间也达到了1 Mbyte,工作主频达到了168 MHz,满足系统控制需求,同时S32K系列微控制器支持4PIN的SWD下载调试,下载速度能够达到10 Mbit/s,相对于JTAG的20PIN接口降低了布线难度,同时减小了电路板的尺寸。

 

4G通信模块

 

4G通信模块选用芯讯通无线科技有限公司的全网通模块SIM7600CE/T,该模块支持文件系统,支持TCP、UDP、FTP等通信协议,同时通过标准的AT命令能够实现文件的上传下载,使用非常方便,后缀的T是专门针对TBOX类应用,稳定性前茅。4G模块通过USART接口和微控制器相连,由于工作电压的不同,两者之间加了一级双向电压电平转换器。

 

SD卡存储模块

 

无线网关控制单元系统扩展了SD卡存储模块,该模块作为车辆数据的中间存储介质,当网络环境不佳或者断网时车辆数据便存到SD卡中,网络重新建立后这些数据便发送到云端服务器,达到本地数据与网络数据同步。

 

CAN总线收发模块

 

CAN总线收发模块采用NXP的TJA1044,该模块是集成电源隔离、电气隔离、CAN接口和总线保护器件于一体的CAN接口隔离收发模块,隔离电压高达3000 V DC。CAN接口电路根据场景不同的需要,无线网关控制单元系统设计了双路隔离的CAN接口。

 

电源模块

 

电源模块才够用TI的电源管理系统,提供2组供电电压,一组为4.1V,为4G通信模块供电,另一组为3.3 V,为主控模块及其他模块供电。车载蓄电池提供的12-24 V电源经过滤波后由TI的DC-DC降压芯片转换成4.1 V,3.3V电源由LDO提供,设计两组保护。

 

无线网关控制单元系统软件设计

 

软件的设计主要包括CAN总线收发程序,SD卡文件存储程序,SD卡文件转发到4G模块EFS系统程序,EFS上的文件转发到指定服务器或者IP程序,GPS数据读取处理程序及一些逻辑控制程序。初始化完成后控制器开始接收CAN总线上的报文,同时将报文存储到SD卡中。当完成一个文件后系统检测EFS剩余空间,在空间够的情况下系统将SD卡中的文件发送到EFS中。系统自动检测是否已经联网,当联网成功后系统会将EFS上的数据发送到云端服务器,如下图。


CAN总线收发程序流程

 

CAN总线接收程序流程如下图所示,CAN总线接口初始化后开始等待有无新的报文,当有新报文到来时,报文被存储在3级邮箱深度的FIFO中,程序通过读取FIFO输出邮箱来读取FIFO中最先收到的报文,注意在实际的情况中必须在FIFO溢出前读出至少1个报文,否则下一个报文到来将导致FIFO溢出,从而出现报文丢失。



评论