一种CAN总线与以太网互连系统的设计方案
描述
1.前言
在大型企业自动化系统中,在上层企业管理层和生产监控层采用的都是以太网和PC机,而在下层车间现场都是采用现场总线,如RS-485、CAN、lonWorks等,而连接上下两层的沟通通常采用工业控制机加以太网卡再加上PC机插槽上的与现场总线对应的接口卡或并行打印口的EPP接口卡来实现,这种连接方式成本高,开发周期长,接口卡成为系统上下两层的通信瓶颈一旦出现故障上下两层的联系就将中断;为此利用廉价的基于单片机的以太网-CAN网桥取代昂贵的工控机加接口卡,实现以太网和CAN总线网的直接连接具有重要意义。
2.系统方案设计
由于系统中有以太网网和CAN总线数据处理,因此需要采用大容量RAM进行暂存网络数据,采用集成有8KRAM和64K Flash的P89C668型高速控制器,如图1所示,系统采用芯片RTL8019进行网络数据收发,采用芯片SJA1000处理CAN总线数据,同时为了方便对转换桥系统调试和进行参数设置(CANID、CAN波特率,以太网物理地址,IP地址,网关地址,子网掩码)和保存,增大系统使用的范围和使用灵活性,系统还扩展串口通信RS232接口和24C256串口存储电路。
3.系统硬件设计
3.1 以太网接口电路设计
以太网接口电路如图2所示,电路中36脚~43脚为数据输入输出口直接连接到单片机P0口。RTL8019AS有三个分别反映其工作状态的输出脚,分别LED0、LED1、LED2,分别输出网络的连接性、数据发送和数据输出状态;IOCS16是16位或8位I/O的选择脚,当上电复位的时,该引脚为低电平时,网卡将选择8位模式,为高电平时,网络控制器将选择16位的模式,电路用了个电阻R9(27K)下拉,在复位时引脚为低电平,因此网卡选择8位模式。由于RTL8019AS每个引脚(除AEN外)内部都有100K的下拉电阻置地,故当各引脚悬空时内部检测为低电平,由图2可知85脚、84脚、82脚、81脚分别悬空,从而选择了基地址300H,因此电路扩展就要以此为基准来进行配置,RTL8019AS地址线A19~A10固定接地,A9、A8定接P2.5作为地址选择端有单片机来控制而不是用34脚AEN(直接接地)来作为地址选择断,将A7,A6,A5固定接地,A4~A0要根据所要访问的RTL8019AS寄存器地址不同而不同,从而由由P89C668的P2.0~P2.4来选择RTL8019300H~31FH,因此对应P2口地址线变化范围为0xE0-0xFF,由于仅有P2口来选择地址,而P0口并没有参与地址编址电路中单片机对RTL8019AS的寻址I/O并不是连续,程序中分别定义Reg00~Reg1F来分别对应300H~31FH端口,定义如下:
3.2 CAN总线的接口电路设计
如图3所示,CAN总线的接口电路主要由P89C668处理器、CAN通信控制器SJA1000、CAN总线驱动器82C250、高速光电耦合器6 N 1 3 7电路组成,微处理器P 8 9 C 6 6 8负责SJA1000初始化,通过控制SJA1000实现数据的接收和发送等通信任务;为了增强CAN总结点的抗干扰能力,SJA1000的TX0和RX0通过高速光耦6N137后与82C250相连,实现了本节点在CAN总线上的电气隔离,提高了本系统的硬件的稳定性和安全性;82C250的CANH和CANL引脚之间串连60欧姆(两个120欧姆电阻并联)的电阻以消除电路中信号的反射等干扰,CANH和CANL与地之间并联两个30pF的小电容,起到滤除总线上的高频干扰和一定的电磁辐射的能力,两根CAN总线输入端与地之间分别接了一个防雷击管,当两端输入端与地之间出现瞬变干扰时,通过防雷击管的放电起到一定的保护作用,R18则为斜率电阻。
4.系统软件设计
4.1 系统软件总体设计
如图4所示,根据以太网与现场总线CAN协议转换功能可知系统软件包括TCP/IP协议程序、CAN协议程序、RS232串行数据收发程序以及对以上三种协议程序进行协议转换和监控管理的应用管理程序;TCP/IP协议包括ARP(地址解析协议)、IP协议(网际协议)、ICMP(Internet互联网控制报文协议)、TCP(传输控制)协议和UDP(用户数据报)协议,ARP协议用于负责把一个IP地址映射成物理地址,即获取对方或通知对方本主机物理地址的一个协议;IP协议主要功能是把源主机上的数据分组发送到互联网中的任何一台目标主机上;ICMP用于差错报告和报文控制的协议,在本系统种主要完成ping命令请求和应答功能;UDP和TCP协议在工作时是建立在IP协议之上,UDP协议对每次输出都生成一个UDP数据报,然后把生成的UDP数据报直接封装在IP数据报中进行传输,提供无连接的不可靠的数据报文服务,而TCP协议提供面向连接的、可靠的数据流服务;CAN协议用于将接收到的以太网数据转换成一定格式的CAN协议格式的数据并转发到目标节点以及从其他目标节点受到的数据转换成TCP/IP协议格式数据;而RS232串口协议功能主要为系统调试和IP地址等参数进行设置;各功能模块由应用管理程序进行监控和管理完成整个系统功能的协调运行。
4.2 CAN总线扩展协议制定
以太网数据转CAN总线数据时,由于CAN总线数据比较少,能满足以太网数据格式,而以太网向某CAN节点发送数据时,由于以太网数据据较多,远超出CAN总线一帧数据格式,因此需要设计CAN应用层协议对以太网数据进行管理,CAN现场总线仅定义物理层和数据链路层,实际应用中,这两层完全由硬件实现,由于CAN总线底层协议没有规定应用层,本身并不完整,而在基于CANBUS的分布式控制系统中,有些附加功能需要一个高层协议来实现,结合CAN总线数据传输是按帧(11bit/29bit控制场+8字节数据场)传输的特点,应用于CAN总线的应用层协议可以适当地简化,采用传统的源/目的模式格式,结合CAN特有的双滤波特性,可以实现,点对点,以及多播或广播等通信功能,其协议要素如图5所示。
结合协议模型,CAN控制器采用采用PeliCAN模式,充分利用其29位标示符,采用其中14位作为寻址标识符(包括目标地址,源地址各7位),其中8位标示符作为分段码,以及剩余5位作为功能码,如果用户还需要其他功能的标示位则对各位自行定义可适当调整,具体格式如图6所示。
目标节点地址和源节点地址由7位二进制标示,最大可以访问128个CAN节点,分段码主要是完成数据传输过程中对命令请求、应答以及所传输的数据在整个报文中的序号及其标志等,具体格式如图7所示,ACK为应答位,0表示本帧数据需要应答,一般用于命令帧,1表示应答帧,用于不需要应答的命令帧,SegPolo由2位二进制组成,表示分段表示符,SegNum用于记录分段数,SegPolo=00b表示本次数据传输没有分段,此时SegNum=0×00,SegPolo=01b时表示为接到以太网批量数据的第一个分段,此时SegNum=0×01,SegPolo=10b时表示为中间数据段,SegNum没传输一个数据加1,以记录分段数,SegPolo=11b时表示最后分段;功能码由5位二进制数组成,共有32种情况,表示对报文功能的规定,可有用户根据情况自行规定所表示的意义,报文数据由8个字节组成表示每帧CAN数据包中所载的数据。
4.3 以太网与CAN总线数据转换主程序设计
主程序流程图如图8所示,以太网与CAN总线数据转换主程序主要完成串口输入程序、ARP网关解析程序、TCP数据处理程序、UDP数据处理程序、CAN总线数据处理程序,串行口程序主要完成对网络相关参数的设置以及通过串口完成的网络调试程序,如手工完成对其他网络主机的Ping命令、UDP数据通信命令、TCP数据通信命令及ARP解析命令等;主程序还实时监测对TCP协议的超时处理、TCP连接处理以及断开处理,当有以太网数据接收时,首先判断是否为ARP报文还是IP报文,如是ARP请求报文则需进行ARP应答等操作,如为IP报文则进一步区分是ICMP报文(PING命令)还是TCP报文或UDP报文;
如有以太网数据接收,则转换成相应CAN帧格式数据并转发至对应地址的CAN节点,同时如有CAN节点发送数据则转换成以太网数据格式并转发至以太网服务器,从而完成以太网与CAN局域网数据相互转换桥功能。
5.小结
在分布式控制系统中,随着测控技术与网络技术日益紧密的结合,测控系统接入互联网己经成为大势所趋,这也促成了近年来嵌入式网络技术的飞速发展,本文系统地提出了一种CAN总线与以太网互连系统的设计方案,转换器通过CAN总线接口CAN局域网连接,通过以太网接口与计算机连接,可以实现可靠的CAN总线协议与以太网协议的高速数据通信。