微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 一种CAN总线与以太网互连系统的设计方案

一种CAN总线与以太网互连系统的设计方案

时间:02-19 来源:电子技术网 点击:

据转换成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&TImes;00,SegPolo=01b时表示为接到以太网批量数据的第一个分段,此时SegNum=0&TImes;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总线协议与以太网协议的高速数据通信。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top