UDP转CAN协议的数据传输系统开发
2019-11-27王庆贺吴文杰樊兵团
王庆贺,吴文杰,樊兵团,何 威
(中科芯集成电路有限公司,江苏 无锡 214072)
1 引言
CAN 总线的数据通信具有实时性、可靠性高和灵活性强等优点,但也存在无法直接连接网络的局限性[1]。以太网技术是目前使用广泛的通信技术之一,具有组网灵活、成本低廉、传输速率高、距离远等优点[2]。目前,某生产车间新的工业生产设备基本支持以太网通信,但是部分旧的工业生产设备仅支持CAN 通信,为了让旧的工业生产设备也可以并入网络,必须开发设计可以沟通以太网和CAN 总线的设备。本文以以太网和CAN 总线之间的数据传输为研究对象,设计开发了基于UDP 和CAN 协议的传输系统。
2 系统概述
基于UDP 和CAN 协议的数据传输系统的架构如图1所示。
图1 系统架构示意图
该系统中,DSP28335 作为数据传输系统的主控制器,实现以太网和CAN 通信间的数据转换。DSP28335 通过数字隔离器、CAN 收发器与CAN 总线相连,通过W5300 以太网控制器连接到以太网,进而和生产车间监控平台通信。DSP 与存储芯片通过SPI 接口相连,存储芯片用于存储配置参数。
3 系统硬件设计
3.1 网络接口电路设计
W5300 集成了10/100M 以太网控制器,具有MAC 和TCP/IP 协议栈,数据传输速率高,可以达到50 Mbps,DSP28335 和W5300 使用总线接口,数据总线可以是8 位也可以是16 位。W5300 芯片方便、可靠、使用广泛。DSP28335和W5300 的连接如图2所示。
图2 DSP28335 和W5300 的连接示意图
3.2 CAN 接口硬件电路设计
DSP28335 具有增强型控制器区域网络(eCAN)模块,兼容CAN2.0 标准。eCAN 模块包括CAN 协议内核和消息控制器两部分。
eCAN 具有以下一些特性:兼容CAN2.0B 协议,支持1 Mbit/s 的速率,32 个邮箱可用,低功耗模式,自动重传,支持4 种不同类型的帧。基于DSP28335 的CAN 节点接口硬件电路如图3所示,仅使用了A 路eCAN。
如图3所示,DSP28335 的CANTXA 和CANTXB 引脚首先经过数字隔离器,然后和CAN 收发器的TXD 和RXD相连,转换成CANH 和CANL 后与CAN 总线进行通信。HCPL-9031 是一款双通道数字隔离器,具有良好的性能,满足 CAN 通信要求。本系统的 CAN 收发器选用的是TJA1050T,该芯片是CAN 协议控制器与CAN 物理总线之间的转换接口,提供差动发送、差动接收功能。实际工作现场的情况十分复杂,节点之间会有共模电压的产生,CAN接口本身是差分传输方式,一定程度上可以抑制共模干扰,但是当共模电压过大时,CAN 接口电路就无法正常工作了,芯片也可能被损坏。设计时,在CAN 总线的CANH 和CANL之间添加了一路TVS 管,CANH、CANL 和CAN-GND 之间也各添加了一路TVS 管,保护接口电路不被过高瞬间电压击毁。CANH、CANL 和CAN-GND 之间并联了22 pF 的电容,用来滤除CAN 总线上的高频干扰,防止产生电磁辐射。CANH 和CANL 信号线采用差分布线,长度必须保持一致。CANH 和CANL 之间必须连接一个120 Ω 的匹配电阻,否则CAN 通信的抗干扰性和可靠性会大大降低,甚至有可能无法正常通信。HCPL-9031 和TJA1050T 等芯片的电源与地之间并联了0.1 uF 的去耦合电容,用来降低干扰。
图3 基于DSP28335 的CAN 节点接口硬件电路
4 系统程序设计
4.1 网络通信程序设计
网络通信使用的是UDP 协议,UDP 协议是一种无连接的传输协议,发送方发送数据时并不会管接收方是否存在,同样的,接收方接收到数据时,也不会将接收到数据的情况回馈给发送方;但UDP 协议通信效率高、耗费资源小,可以一对一、一对多、多对一或者多对多发送,十分灵活[3-4]。
DSP 的程序中向目标地址发送数据使用sendto(s,buf,len,destip,destport)函数,接收数据使用loopback_udp(s,lport,buf,mode)函数。无论UDP 发送还是接收数据都是在程序的主循环中实现,未使用中断。下文会详细叙述以太网数据和CAN 数据的转发。
4.2 CAN 通信收发程序设计
CAN 通信过程中使用了eCAN 模块的两个消息邮箱,一个用于向CAN 总线上发送数据,一个用于从CAN 总线上接收数据,分别是发送消息邮箱和接收消息邮箱。
数据发送到CAN 总线上的过程如下:在主程序中接收网络发送过来的UDP 数据包,将UDP 数据包解析成一个或者多个CAN 数据帧,并通过发送消息邮箱发送到CAN 总线上,具体过程如图4(a)所示。从CAN 总线上接收数据使用中断的方式,当eCAN 的接收消息邮箱接收到数据时会触发中断,在中断服务程序中将接收消息邮箱中的数据存放至CAN 接收缓冲区中。将CAN 接收缓冲区中的数据发送至网络的过程在主循环中实现。数据发送到网络的流程如图4(b)所示。需要注意的是,在从CAN 接收缓冲区中取出数据时,必须关闭中断,防止在取数据的期间进入CAN 接收中断服务程序更改CAN 接收缓冲区而引起混乱。将数据发送到网络的过程中,需要将CAN 类型的数据打包发送至以太网上,发送的UDP 数据包的长度都是12 的倍数,UDP 数据包的格式如图5所示,其中CAN 帧地址占据4 字节(无论标准帧还是扩展帧),CAN 数据占据了8 字节。
图4 数据转发流程图
图5 UDP 数据包格式
5 实验结果
为了测试系统的功能,编写了测试上位机软件,测试上位机使用UDP 通信,可以发送数据,也可以将接收到的UDP数据包解析成一帧帧CAN 数据。测试时使用两个基于UDP和CAN 协议的数据传输系统,两者CAN 总线互连,分别通过网络连接两个测试上位机软件。一个测试上位机软件发送数据,另一个测试上位机软件接收数据。
上位机软件显示接收的CAN 数据如图6所示。通过对比发送和接收的数据,两者相同。从实验结果可以看出,基于UDP 和CAN 协议的数据传输系统可以实现所需功能。
图6 上位机软件显示接收的CAN 数据
6 结束语
本文以以太网和CAN 总线之间的数据传输为研究对象,设计开发了基于以太网和CAN 总线的数据传输系统,该系统可以实现以太网和CAN 总线数据的转换,满足生产车间通信的要求。