基于STM32 CAN-Ethernet网关的设计

2017-10-24 12:04毛为民杨义伟
关键词:网关报文嵌入式

毛为民, 杨义伟

(1.浙江凯灵船厂,浙江 舟山 316000; 2.上海船舶运输科学研究所,上海 200135)

基于STM32CAN-Ethernet网关的设计

毛为民1, 杨义伟2

(1.浙江凯灵船厂,浙江 舟山 316000; 2.上海船舶运输科学研究所,上海 200135)

采用数据包拆分解析并重新打包发送的方式,实现不同网络协议的数据转换。设计编写控制器局域网络(Controller Area Network, CAN)控制器、以太网控制芯片、SD卡及相关硬件设备的驱动程序。以Real-Time Operation System UCOS-II为操作平台,移植嵌入式TCP/IP协议栈LWIP和小型文件管理系统FATFS,完成具有实时数据存储功能的CAN-Ethernet网关的设计。

CAN-Ethernet;CAN总线协议;RTOS;LWIP

0 引 言

当前,新造船舶上安装的监控报警系统通常是集散式监控报警系统[1](见图1),一般分为3层:

1) 最下层为设备层,每个现场设备作为一个从站,有自己的数据采集处理单元 ;

2) 中间层作为数据通信存储、转发的中转站和报警显示处理单元,将下层从站的数据转发到上层,将上层的命令及请求信息转发给下层;

3) 上层由信息处理单元和数据分析单元等组成,用于数据集中处理,一般为终端计算机。

下层的各从站间的通信及下层的各从站与中间层的通信通过现场总线完成,而上层和中间层的数据通信则通过以太网实现。

目前,国际及国内实现以太网(Ethernet)和现场总线协议转换的方法[2]主要有以下3种:

1) 封装法。其实现方式是将总线报文中的有效数据封装到TCP/IP格式的数据报文中,并以TCP/IP协议的形式传输给上层网络[3]。

2) 拆分法。该方式与封装法正好相反,其将TCP/IP数据包拆分后提取出有用的信息,并将该信息封装到现场总线数据包中,然后在接收终端从总线报文中提取出之前封装的有效数据,并再次封装到以太网数据包中[4]。

3) 网关/代理服务器法。该方法直接采用网关的方式进行两者之间的协议转换,在不改变现有设备的前提下使整个网络构架的利益最大化[5]。

这里自定义该系统的控制器局域网络(Controller Area Network, CAN)总线协议,采用数据包拆分解析并重新打包发送的方法进行协议转换;此外,加入数据存储功能,实现网络中通信数据的实时备份。

1 网关总体架构

为解决Ethernet和CAN总线网络协议不兼容的问题,提出一种新型的嵌入式网关系统。该嵌入式网关需至少具备以下6个功能:

1) 网关需具备Ethernet路由功能,可通过Ethernet对现场设备进行实时的监控;

2) 网关需能与CAN总线协议兼容,以便将CAN总线上的设备监控信息传输至上层监控网络,同时将上层的监控指令下发给现场设备;

3) 网关需具有协议转换的功能,能实现Ethernet与CAN现场总线之间的数据交互,将2种不同网络协议的数据包重新打包分组,使其符合另一种网络协议,达到不同网络协议间协议转换的目的;

4) 为保障网络数据的完整性,网关需具有数据存储功能,以便在网络连接出现故障时防止数据丢失;

5) 船舶监控报警系统对数据传输的实时性和可靠性有较高要求,因此网关应具有较高的实时性和可靠性;

6) 出于经济性和实用性考虑,需采用轻量级的嵌入式网关。

根据以上要求,设计网关结构见图2。从图2中可看出,给出的网关主要分为硬件部分、软件部分和应用层程序等3部分。选用STM32F103ZET6作为硬件处理器,其32位的运算能力可在一定程度上为实时性及高效的数据处理等网关需要的特点提供硬件基础。此外,硬件结构还包括以太网协议控制芯片M9000模块、CAN协议控制芯片JTA1050模块及数据存储单元SD卡模块。

网关既要进行多任务调度,还要确保实时性。因此,试验采用嵌入式操作系统,综合考虑开发周期、系统占用内存及所需功能等因素,选用UCOS-II作为网关的RTOS[6];综合网关硬件的契合度、功能的完整性、协议栈对系统功能的相符性及构造相关接口函数的难度等因素,网关采用轻量级的TCP/IP协议栈LWIP[7];考虑到网关的数据备份功能和网关硬件的设计及其尺寸,网关采用大容量SD卡作为数据存储器,同时采用FATFS嵌入式文件系统管理SD卡[8];从实际应用方面考虑,在参考DeviceNet协议的基础上设计编写适用于该系统的CAN协议[9]。

2 网关的搭建

网关的应用程序根据网关的功能主要可分为CAN总线收发模块、CAN-Ethernet协议转换模块、数据存储模块、TCP/IP客户端模块及信息显示模块(即LCD驱动)。

2.1CAN总线收发模块

CAN协议栈主要的应用函数包含在can.c文件中,这里只对其中的3个进行简要介绍。

2.1.1 CAN控制器的初始化

CAN初始化函数的原型为u8 CAN_Mode_Init(u8 tsjw,u8 tbs2,u8 tbs1,u16 brp,u8 mode)。当其返回值为0时,表示初始化完成,否则初始化失败。

2.1.2 CAN控制器的数据发送

CAN控制器的发送流程为:

(1) 当有数据需发送时,驱动程序选择1个空的邮箱(TME=1);

(2) 设置CAN标示符(CID)、数据长度及需发送的数据;

(3) 把CAN_TixR的TXRQ置于位置1,请求发送;

(4) 邮箱挂号排队,等待当前邮箱的优先级变为最高优先级;

(5) 预定发送,等待总线空闲;

(6) 发送数据;

(7) 邮箱置空。

2.1.3 CAN控制器的数据接收

CAN控制器的接收流程为:关联空FIFO→接收到有效报文→挂号_1(FIFO中的一个接收邮箱,由硬件决定)→接收到有效报文→挂号_2→接收到有效报文→挂号_3→接收到有效报文→溢出。

以上只是向FIFO中存入接收到的报文,在FIFO溢出之前,可从FIFO中读取报文,每读取一次报文,相应的挂号邮箱就减少一个。当挂号3个邮箱仍没有读出且接收到新的报文时,数据溢出。

2.2CAN-Ethernet协议转换模块

对于整个网关软件系统来说,协议转换模块可实现将自定义的CAN总线协议与TCP数据报文协议相互转换的目的。协议转换模块分为CAN总线协议转换成TCP协议和TCP协议转换成CAN总线协议2部分,在TCP连接中分为客户端和服务器2种。在断开网络连接时,若作为服务器的一端发生故障导致网络断开,则客户端会自动地不断尝试重新连接,而客户端断开网络服务器则不会自动连接。因此,试验中采用TCP客户端模式,即网关为TCP客户端,上位机为TCP服务器。

2.3SD卡文件读写模块

采用SD卡的本质目的是对网络中的数据进行备份,创建小型数据库。因此,SD卡文件存储模块在进行程序设计时,可实现以下功能:

1) 自动存储功能。同样使用状态触发机制,网关一旦接收到CAN从站的CAN报文,便把报文组的有效数据提取出并存储到相应的文件夹中。

2) 加入地址辨别机制。从每个有效报文中提取出报文的目的地址或源地址(CID),根据不同的CID把数据存储到不同的文件夹中,文件夹以CAN从站名称命名(如:CWU,冷却水单元;ABCU,辅锅炉控制单元等)。

3) 时间标签。结合系统实时时钟(Real-Time Clock, RTC),在每次存储数据时,在数据之前加入存储时间。

4) 自动周期性创建文件。为避免单个文件内数据过多,每隔一段时间自动创建从站数据文件,间隔时间在程序中设置。

5) 实时显示内存空间。通过LCD显示器实时显示剩余内存空间的大小,以便提醒操作者及时处理、备份数据库。

6) 数据读取。通过程序设置内部文件数据的读取。

2.4网关客户端模块

网关客户端模块实现网关客户端与上位机服务器之间的TCP格式报文的交互传递,主要是把网关中已提取出的CAN报文有效数据转换成TCP数据报文格式并发送给上位机服务器,或接收上位机服务器发送的TCP格式的报文并把有效报文复制到相应的存储空间。在TCP连接中,客户端会自动检测连接情况,若没有连接或非人为断开连接,客户端会自动重新请求服务器连接。因此,试验将网关设置为客户端,将上位机设置为服务器。

2.5LCD显示模块

LCD显示模块在该试验中有2个功能:

1) 验证调试。在进行操作系统移植测试、LWIP协议栈移植测试、CAN总线数据收发测试及FATFS移植测试时,通过LCD显示相关内容帮助测试。

2) 在之后的整个试验平台运行时,作为人机界面,方便操作者观察试验状态。

3 网关系统的测试

系统测试的主要步骤为:

1) 完成系统的硬件连接,并将2个网关的工作模式设为Normal Mode;

2) 打开网络调试助手,在网络调试助手的协议类型中选择TCP Server,将本地端口号改为8087,点击连接,若连接成功,则会出现图中的“断开”按钮,且会在连接对象栏中出现一个有效的连接对象;

3) 连接成功后,网络调试助手的接收窗口将开始接收数据。

具体报文解析已在网关中完成,解析结果与报文有效数据一起打包发送给网络调试助手,具体见图3。

4 结 语

经过长时间的测试,网关在系统中工作良好,没有出现数据丢失现象。从试验结果中可知:设计的网关可在模拟系统中实现设计的功能;同时,系统的CAN协议表中预留了相关资源,以便之后进行系统升级扩展。该网关实现了底层现场CAN总线网络与上层企业级管理网络之间的互联,具有应用意义和推广前景。

参考网关的功能可知,网关的系统比较复杂,受时间及研究水平限制,该试验只是在实验室的条件下结合模拟系统环境实现。因此,与真正的控制现场相比,该网关还有很大的不足和改进之处,针对这些问题,提出以下建议和改进意见。

1) 硬件系统:该网关只有1路CAN总线,考虑到现场总线工作的可靠性等因素,网关最好有2个CAN接口,实现双冗余互为备用,防止突发状况下的网络断开。

2) 软件系统:该网关只是在实验室的环境下实现设计功能,处理的数据量非常小,考虑到对大数据长时间的传输进行数据处理,网关的软件系统还需进一步完善。

[1] 刘传峰.船舶机舱监控报警系统软件设计与实现[D].武汉:武汉理工大学,2014.

[2] 刘志海.基于ARM9平台的CAN-Ethernet网关设计与实现[D].成都:成都理工大学,2009.

[3] 张南杰.基于ARM的CAN-Ethernet网关设计[D].大连:大连交通大学,2013.

[4] 赵广磊.基于嵌入式系统的CAN总线与以太网的网关设计[D].武汉:华中科技大学,2009.

[5] 何芳.基于全分布式网络船舶机舱监控系统的研究与设计[D].武汉:武汉理工大学,2012.

[6] LABROSSE J J.嵌入式实时操作系统uC/0S-III[M].宫辉,译.北京:北京航空航天大学出版社,2012.

[7] 朱升林.嵌入式网络那些事(LWIP协议深度剖析与实战演练)[M].北京:中国水利水电出版社,2012.

[8] 李世奇,董浩斌,李荣生.基于FATFS文件系统的SD卡存储设计[J].测控技术,2011,30(12):79-81.

[9] 王康胜.基于嵌入式的DeviceNet协议分析和从站的开发[D].青岛:青岛科技大学,2014.

CAN-EthernetGatewayDesignwithSTM32forShipMonitoringSystem

MAOWeimin1,YANGYiwei2

(1.Zhejiang Kailing Ship Factory, Zhoushan 316000, China; 2.Shanghai Ship & Shipping Research Institute, Shanghai 200135, China)

The measure of splitting and repackaging data packets is used to perform data transformation between different network protocols. The drive programs of Controller Area Network(CAN) controller, Ethernet controller, SD card and related hardware are designed; The embedded TCP/IP protocol LWIP and embedded file management system FATFS are migrated to the UCOS-II OS. A complete CAN-Ethernet gateway with the function of real-time data storage is developed on the basis of the microcontroller STM32.

CAN-Ethernet; CAN bus protocol; RTOS; LWIP

TP273

A

2017-04-23

毛为民(1972—),男,湖北枝江人,工程师,博士,主要从事舰船维修保障工作。

1674-5949(2017)03-0046-04

猜你喜欢
网关报文嵌入式
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
基于IMX6ULL的嵌入式根文件系统构建
基于FPGA的工业TSN融合网关设计
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
一种主从冗余网关的故障模式分析与处理
浅析反驳类报文要点
基于ARM嵌入式的关于图像处理的交通信号灯识别
TS系列红外传感器在嵌入式控制系统中的应用
天地一体化网络地面软网关技术及其应用