基于LPC2294的CAN与以太网网关互联的设计

时间:2016-10-29来源:网络

2 软件设计
2.1 报文结构
CAN总线与以太网互联的软件设计主要包括从以太网中提取CAN数据和将CAN总线的数据转换成以太网的数据。其中,CAN报文结构可分为两种不同的帧格式,而两种帧格式的区别在于其标识符的长度不同:标准帧中有11位标识符,扩展帧中有29位标识符。本设计中采用的是扩展帧,且在本网关模块收到CAN板卡的报文时,需按上述以太网数据传输报文格式对CAN数据进行封装及打包并通过以太网发送。在此过程中不必对CAN报文的13 Byte数据进行高低位转换和移位处理,采用透明转换方式。便可减少数据解析及处理的时间,并提高了数据在传输过程中的可靠性。

c.JPG


如图3所示,该网关中规定的以太网帧格式包括5部分,按照封装的先后顺序分别为:封装的数据(如本系统中的CAN数据帧等)、自定义UDP首部、标准UDP/TCP首部、IP首部、以太网首部和最终校验。本系统中主要采用的是UDP协议,目的是为了自定义控制字来区别不同类型的报文,包括有:CAN数据报文、时统报文、工作状态请求报文、心跳报文及设备故障诊断信息报文。其中时统报文是在开机时或每30分钟系统发送的对时请求。工作状态报文是在各设备开机或复位并正常工作后自动发送的,还有收到询问报文或状态改变后发送,主要发送时戳和设备ID信息。心跳报文是在各设备开机或复位并正常工作后,每5 s周期发送,作用是通知其所在的网络,是否工作状态正常。设备故障诊断信息报文是当接收到故障诊断请求报文或网关根据CAN板卡数据接收情况,自行检测到网关箱内该板卡故障情况的变化,一般网关在30分钟内未收到参数设置报文中指定的CAN板卡对应节点的数据和远程帧等,可认定此节点故障,并发送故障信息报文。这增添了系统的一些管理信息,根据不同的报文类型完成系统不同的通信功能。自定义UDP封装格式如图4所示。

d.JPG


在自定义UDP封装格式中,字节0~3为固定的帧头信息,用以识别本网关模块的数据报信息,无论是CAN报文、时统报文或工作状态请求报文均使用该格式,若不符合该帧头的数据报网关模块不进行处理。需注意的是,第20 bit开始才是真正的数据,每个信息单元均有各自的序号、标识和长度等信息。其中信元的序号表示该信元在UDP数据报中的位置;标识代表信息单元内报文的类型。
2.2 程序设计
网关模块的主要功能是以太网数据包与CAN数据帧之间的格式相互转换,进而完成以太网和CAN网络间通讯。本模块使用嵌入式μC/OS—II作为操作系统,通过裁剪、移植使其能顺利运行于LPC2294控制器。另外,在系统中移植了TCP/IP协议的核心功能函数,并编写了6个任务函数,使其分工合作实现了模块的各项功能,并通过μC/OS—II系统的任务调度管理机制来进行系统资源的分配。
系统首先建立设备初始化任务Task0,将该任务函数主要完成上电自检,两路CAN故障自检,网口断线检测,本机IP、两路CAN波特率及两路网口等网关参数的初始化。在完成以上工作后,创建5个子任务,按优先级由高到低依次为TaskB、TaskC、TaskF、TaskD、TaskE的5个子任务的具体功能如下:
TaskB:主要功能为接收UDP报文并解析,下发至CAN;若接收到时统报文,按照协议解析,并将时戳信息写入时钟芯片。
TaskC:主要功能为接收TCP报文,按照协议解析并下发到CAN。
TaskD:完成接收CAN1口或CAN2口的数据,根据规定的传输方式将数据封装成报文格式,并发送至以太网。
TaskE:完成接收CAN1口或CAN2口的数据,并按照TCP传输方式,将数据封装并发送到以太网。
TaskF:主要功能为定时发送特殊报文,如:心跳报文、时统报文、工作状态请求报文及设备故障诊断信息报文等,完成网关模块的工作状态检测及参数配置等功能。
5个子任务创建完成后,TaskB和TaskC进入阻塞状态,等待各自的信号量RecUdpQFlag和RecTcpQ一Flag,由于这两个任务的优先级较高,说明网关模块优先转换以太网向CAN总线方向的数据。因此,当以太网中有数据到来时根据报文的类型可得到相应的信号量,TaskB或TaskC立即进入就绪状态等待执行,若当前执行的任务优先级低于这两个任务,TaskB和TaskC可进行抢占执行。当网关模块未收到以太网数据或处理完成后,任务函数TaskF检测模块的定时器,判断是否需要发送工作状态报文和心跳报文等特殊报文。执行完成后,判断CAN节点是否有数据,并选择用UDP或TCP方式发送到以太网,即选择执行TaskD或TaskE,完成CAN向以太网方向的数据传输过程,在此期间允许TaskB和TaskC进行抢占执行。系统通过调度这5个任务函数完成以太网数据包与CAN数据帧间的格式转换与传输,该程序流程如图5所示。

e.JPG



3 测试
将该上位机IP地址设置为192.1.1.11,打开网关参数设置界面对一些参数进行设置,如:网关参数回复IP地址、网关参数回复端口、网关模块IP地址、网关接收端口号和CAN数据目标IP地址等参数。随后将CAN总线数据报文测试软件ZLGCANTest打开,设置CAN总线的波特率为250 khit·s-1,将CAN报文发出后用ZLGCAN—Test、TcpUdp测试工具及EtherPeek NX软件来查看网络的通信情况。图6便是由ZLGCANT est软件所得到的,从图中可知,CAN发送数据的帧类型是扩展帧,帧格式是数据帧,帧ID为0x0000 0000,每个CAN协议中发送8 bit的数据。而图7是通过TcpUdp测试工具得到的数据,并已在图中标出,此报文头由Etherner协议报文头、IP协议报头、UDP协议报头和自定义UDP报头组成,并从自定义UDP报头中的报文标识可判别出CAN报文,而后面的数据正是图6中CAN报文中的13 bit数据,即对CAN报文采用透明转换方式,将CAN网络数据成功发送到以太网。同样方法可测试到以太网中数据也成功发送至CAN。网络中其他类型的报文也同样如此。

f.JPG



4 结束语
文中阐述了以ARM7系列LPC2294为核心的以太网与CAN总线网络互联的通信网关实现过程,概述了本网关中采用的以太网和CAN总线的报文格式及其自定义UDP数据报文的结构。并提出了网关的软、硬件实现方法。通过实验该网关模块实现了以太网与CAN总线间的数据传递,且具有稳定性和较高的可靠性。

1 2

关键词: LPC CAN 以太网

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版