基于Infineon TriCore 的CAN 网关-Ethernet 设计与实现
2019-10-09张小卫李典典
张小卫,伍 春,刘 雄,李典典
(1.西南科技大学 国防科技学院,绵阳621010;2.西南科技大学 信息工程学院,绵阳621010)
控制器局域网CAN(controller area network),是国际上应用最广泛的开放式现场总线之一[1],广泛用于汽车行业、航空、工业控制、车辆电子变速系统等。 CAN 能提供安全、有效、即时控制,能使网络消息的传输效率高,实现各节点之间实时、可靠的数据通信,然而CAN 总线有自身的局限性,如通信速率制约通信距离,随着CAN 总线节点增减,会使网络负荷加重,从而出现严重的网络拥塞[2]。
以太网是基于IEEE 802.3(Ethernet)的强大的区域和单元网络,在其工业控制网络领域有着广泛的运用, 工业控制网络中使用以太网作为主干网,通过协议转换设备与现场总线连接分工,以太网用于汇集现场设备数据,便于远程控制观测等[3]。 以太网具有传输距离远、速度快、数据传输量大,然而以太网也有其局限性,如实时性差,因为其不仅占单片机资源还会增加开发成本,不适用于小量数据的传输与控制。
综上所述, 本文综合了CAN 总线和以太网优势,本系统设计实现了一种基于Infineon TriCore 的CAN 网关-Ethernet,通过CAN 网关局域互联,实现不同速率的CAN 总线节点信息交互, 增加CAN 终端接入设备数量, 降低单一CAN 总线节点负荷,通过CAN 网关实现现场设备局域互联和以太网实现远程控制与观测,增加了工业控制的灵活性。 因此,CAN 网关-Ethernet 设计具有十分重要的现实意义。
1 CAN 网关-Ethernet 系统设计
本系统设计由主控器件TC264DA、4 个CAN 收发器单元、以太网控制器PEF7071V、上位机、系统复位、系统电源、系统时钟共同组成,如图1 所示。 4个CAN 收发单元, 对应3 种不同波特率的CAN 总线, 既有高速CAN 总线也有低速CAN 总线, 每个CAN 总线节点都配置有3 个报文对象,其中节点之间的报文对象共同组成内部网关系统,处于网关模式的报文对象,无需CPU 干预,实现CAN 总线节点之间的信息传输与交互,组建CAN 总线节点之间的局域通信,其中CAN 总线节点0 下的报文对象4 和CAN 总线节点3 下的报文对象7 的数据,通过以太网与上位机建立连接,以太网采用TCP/IP 协议。
图1 CAN 网关-Ethernet 系统设计框图Fig.1 Design block diagram of CAN gateway-Ethernet system
2 系统硬件设计
2.1 32 位TriCore 单片机TC264DA
主控器件TC264DA 选用Infineon AURIXTM系列下的拥有双TriCore,200 MHz 主频的单片机,TriCore 是英飞凌32 位单片机的中央处理单元,其中英飞凌AURIXTM 系列[4]和AUDO 系列都采用内核TriCore[5]。TC264DA 拥有5 个CAN 节点、752 KB RAM 带ECC 保护、96 KB E2PROM, 支持100 Mbit以太网。
2.2 CAN 收发器和以太网模块
本文选用2 片Infineon 公司的CAN 收发器TLE6250GV33 和2 片Philips 公司的CAN 收发器TJA1051T/3, 两款CAN 收发器都支持最高1 Mbps总线速率和都符合ISO11898,TJA1051T/3 较同款产品电磁兼容性(EMC)和静电放电(ESD)性能更佳,增强了系统稳定性;TLE6250GV33 针对汽车和工业应用中的高速差分模式数据传输进行了优化,并且与ISO/DIS 11898 兼容。
本系统使用以太网控制器PEF7071V, 此芯片具有引脚少, 支持全双工或半双工模式下10、100和1000 Mbit/s 的速度,以太网控制器PEF7071V 通过I2C 外接E2PROM,用于储存芯片内部MDIO 等寄存器的配置信息。
2.3 MultiCAN+模块结构
单片机TC264DA 的MultiCAN+模块包含5 个CAN 节点,256 个报文对象,5 个CAN 节点共用1 套报文对象。 每个报文对象可被独立分配到任一CAN 节点[6],每个节点可以独立工作或者通过网关功能交换数据和远程帧, 每个CAN 节点都可以接收或发送标准帧(11 位标识符)和扩展帧(29 位标识符),MultiCAN+提供了CAN v2.0B 的规范, 最高通信速率1 Mbit/s,其结构框图如图2 所示。 每个CAN 节点由几个子单元组成,报文控制器处理CAN 节点之间的CAN 帧交换和处理储存在RAM 中的报文对象,列表控制器执行所有双链报文对象列表的修改操作,仅允许列表控制器对列表结构进行修改,中断控制逻辑采用中断压缩机制,实现了灵活的中断处理,共有537 个来自CAN 节点和报文对象的硬件中断源和16 个软件启动的中断源, 地址译码器分别指向中断控制逻辑、列表控制逻辑和报文控制器。
图2 MultiCAN+模块框架Fig.2 MultiCAN + module framework
3 系统软件设计
3.1 CAN 网关模式
CAN 网关模式是指在2 个独立的CAN 总线之间建立一个不需要CPU 干预的自动信息传输。在网关模式下,把接收报文对象称为网关源,把发送报文对象称为网关目标,在配置好接收功能的报文对象后,再设置网关源报文对象功能寄存器的MMC=0100B,选择网关模式,设置网关源报文对象功能寄存器的IDC、DLCC、DATC 分别复制接收信息的标识符(ID)、数据长度、数据,IDC=1 表示网关源的ID复制给网关目标, 否则网关源和网关目标的ID 根据本报文对象配置而定, 不参与CAN 网关传输,其中GDFS=1,对应的网关目标的报文对象控制寄存器TXRQ 位需置位,设置网关源FIFO/网关指针寄存器TOP、BOT、CUR 选择网关源指向的网关目标报文对象,如TOP=BOT=CUR=5,表示指向网关目标报文对象5。在配置好发送功能的报文对象后,再设置网关目标报文对象控制寄存器的NEWDAT、RXPND 位为1。 网关源与网关目标配置过程如图3 所示。
3.2 TCP/IP 传输模型
图3 网关源与网关目标配置过程Fig.3 Gateway source and gateway target configuration process
TCP/IP 中文名为传输控制协议/因特网互联协议,又名网络通讯协议[7],是Internet 最基本的协议,Internet 国际互联网络的基础, 由网络层的IP 协议和传输层的TCP 协议组成。 从协议分层模型方面来讲,TCP/IP 由4 个层次组成:网络接口层、网络层、传输层、应用层,各个层之间的传输模型如图4 所示,本文使用TCP 传输,利用TCP 传输可靠性的特点,TCP 用来传输控制命令。 地址解析协议(ARP),是根据IP 地址获取物理地址的一个TCP/IP 子协议, 源主机以广播方式将ARP 请求数据包发送出去,目的主机检测IP 地址是否是发给自己的,如果是则目的主机回复一个ARP 应答数据包给源主机,则是告诉源主机自己的MAC 地址, 以保证通信的顺利进行。 本文网络传输实现部分是采用LwIP 协议栈。
图4 TCP/IP 传输模型Fig.4 TCP/IP transport model
本设计采用NETCONN 编程接口完成本系统与上位机之间的TCP 通信, 本设计基于Erika Enterprise 实时操作系统[8],上位机作为客户端模式,以太网控制器PEF7071V 配置为服务器模式, 其服务器端和客户端程序流程如图5 所示,由LwIP 内核完成,客户端与服务端建立TCP 3 次握手,直到接收到客户端连接请求, 然后接收客户端数据处理解析,最后向客户端发送数据。
图5 服务器和客户端程序流程Fig.5 Flow chart of server and client programs
4 系统测试
本系统测试借助于外部输入和上位机软件测试,外部通过STM32 的CAN 模块产生2 个ID 信号输入TC264DA 的CAN 节点0, 分别是以ID 为0x264 开头数据为0x00 和ID 为0x182 开头数据0x75,CAN 节点0 波特率为800 Kbps,ID 为0x264的数据直接通过报文对象1 接收处理然后通过CAN 网关传给CAN 节点1 的报文对象3 发送处理,实现CAN 总线数据交互,CAN 节点1 波特率为40 Kbps;CAN 节点0 下的报文对象4 接收ID 为0x182 的数据,通过协议转换为TCP/IP 传输至上位机显示。 上位机下发一帧CAN 数据给CAN 节点3下的报文对象7,ID 为0x222,CAN 节点3 和CAN节点2 为200 Kbps, 报文对象7 发送数据,CAN 节点2 下的报文对象2 接收ID 为0x222 的数据并通过CAN 网关模式再传输给CAN 节点3 下的报文对象5,此时数据帧不变,ID 变为0x2FF 再发送,CAN节点2 下的报文对象6 接收通过网关再传输至CAN 节点1 下报文对象0, 此时报文对象0 发送给外接总线设备。主要实现不同波特率CAN 总线节点相互传输数据和相同的数据以不同的ID 在CAN 总线上相互传输,通过CAN 总线节点相互传数,增加CAN 总线节点接入的设备数量。
上位机使用网络调试助手,TC264DA 的网络模块工作在TCP 服务器模式,上位机软件网络调试助手工作在TCP 客户端模式。 网络调试助手本地地址为192.168.0.30, 服务器端口号为23,LwIP 协议栈初始化配置中,TCP 服务器IP 地址为192.168.0.20,子网掩码255.255.255.0,整个系统测试如图6 所示。
图6 系统测试Fig.6 System test
5 结语
本文通过采用Infineon TriCore 实现了CAN 网关-Ethernet 设计,该系统通过CAN 网关组建的局域网可以实现不同速率的CAN 总线节点交互通信,并且实现了CAN 网关组建的局域网与上位机通过TCP/IP 协议进行数据传输和通信,增强其系统控制的灵活性和实现高效的数据传输与增加CAN 终端接入设备的数量,本系统的实现在工业控制中有着较高的工程应用价值。