CN102158435B - 一种支持虚连接的基于can总线和以太网实时嵌入式网关 - Google Patents
一种支持虚连接的基于can总线和以太网实时嵌入式网关 Download PDFInfo
- Publication number
- CN102158435B CN102158435B CN201110092116.9A CN201110092116A CN102158435B CN 102158435 B CN102158435 B CN 102158435B CN 201110092116 A CN201110092116 A CN 201110092116A CN 102158435 B CN102158435 B CN 102158435B
- Authority
- CN
- China
- Prior art keywords
- virtual connections
- module
- ethernet
- bus
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种支持虚连接的基于CAN总线和以太网实时嵌入式网关,包括:网关的硬件、支撑模块与虚连接模块,采用了多块同时具有CAN总线接口和以太网接口的嵌入式开发板;开发板间以CAN总线相连,构成支持虚连接服务的集群系统。网关的支撑模块由驱动程序,μc-OS II操作系统和LWIP协议栈组成。虚连接模块则包含虚连接协议子模块和虚连接状态侦测子模块,负责完成实际的虚连接转发和维护工作。本发明具有配置灵活,适应性高,扩展性好,能耗小等诸多优点,适用于较大规模的数据采集传输系统。
Description
技术领域
本发明涉及一种网关,特别是一种支持虚连接的基于CAN总线和以太网实时嵌入式网关,属于工业控制领域。
背景技术
以太网(Ethernet)从其诞生至今30年的时间里,以其简易,高速,易扩展等优良特性成为了局域网(LAN)的主导技术。随着应用和需求的更新,以太网的适用领域也不断扩大。特别的,以太网在工业领域的应用早在IEEE对以太网进行标准化的阶段就已经被一些经销商(如西门子公司)提出,而今已成为当前研究关注的焦点。相对于传统工业领域中占主导地位的传输技术--现场总线(Field Bus)而言,以太网具备带宽高,拓展容易,组网灵活等优势,但同样存在非可靠,非实时,流量不规整等与工业应用需求相违背的劣势。虽然以太网代替现场总线是不可避免的趋势,但就当前环境而言,以太网完全代替现场总线的方案尚未成熟。而如何将以太网的优势特性引入工业领域,特别是工业测量领域,同时又保证其高实时高可靠的传输是需要解决的主要问题。
CAN总线,作为主流的现场总线之一,具备多主传输,高实时高可靠,数据编址和装配便捷等诸多特性。其应用范围包括飞行器航电系统通信,汽车电子设备通信和工业测量等相关领域。将以太网引入工业领域需解决高可靠高实时等系列问题,而CAN总线恰恰具备相应特性,加之工业测量领域用到的测量交换设备多为嵌入式设备,故以太网与CAN总线“双网结合”的嵌入式通信网络架构逐渐成为工业以太网实时传输的主流解决方案。
由于当前CAN-Ethernet架构仅仅将CAN总线和以太网的自身特性相融合,并没有从传输机制上保证高实时高可靠的网络传输,因此仍然面临实时性、稳定性不佳等诸多问题,典型的例子是大流量数据造成的实时性降低甚至丢帧。可见,CAN-Ethernet网关的性能仍具备大幅度提升的空间。
发明内容
本发明的技术解决问题:针对当前CAN-Ethernet架构存在的问题,提供一种支持虚连接的基于CAN总线和以太网实时嵌入式网关,实现集群式的支持虚连接的实时嵌入式网关,以解决较大规模数据的实时可靠传输问题;并在此基础上加入优先级调度等系统优化功能。
本发明的技术解决方案:一种支持虚连接的基于CAN总线和以太网实时嵌入式网关,其特征在于:所述网关由多块具备CAN总线物理接口和以太网物理接口的嵌入式开发板组成硬件平台;各块开发板均接入网关本地意义的CAN总线网络,并通过CAN总线进行数据交互,各开发板同时以以太网接口的形式连接另一个网关或者工控领域的现场设施;每块开发板均具有支撑模块和虚连接模块,具备独立的计算单元和存储单元,并通过本地CAN网络构成虚连接集群系统,以协作的形式共同完成帧格式转换,数据解析封装,虚连接收发各项功能;其中:
支撑模块:包含嵌入式实时操作系统μc-OS II、TCP/IP协议栈LWIP、CAN总线驱动程序和以太网驱动程序,μc-OS II为各个软件模块提供必要的编程接口;LWIP提供对以太网IP数据包的支持。CAN总线驱动程序和以太网驱动程序则负责配置CAN模块和以太网模块,以便接收实际的比特流。虚连接模块由虚连接协议子模块和虚连接状态侦测子模块组成;
虚连接协议子模块完成数据包的虚连接转发工作,它包括虚连接表初始化程序,虚连接CAN协议接口程序、虚连接LWIP接口程序及虚连接转发程序;虚连接表初始化程序根据全网络或局部网络的拓扑结构,在内存建立虚连接表,虚连接表的表项结构为七元组,包括入IP地址,入端口号,入标签号,出IP地址,出端口号,出标签号和重映射号;虚连接CAN协议接口程序负责建立虚连接与CAN协议之间的数据通道,虚连接LWIP接口程序负责建立虚连接与LWIP之间的数据通道,使得虚连接协议可访问此两者的数据包;虚连接转发程序接收来自虚连接LWIP接口程序和虚连接CAN协议接口程序已完成解析的数据包,然后根据虚连接表对数据包执行丢弃或者转发操作,且转发时按数据包实时性的高低对其进行先后发送,以确保网络资源的最优利用;
虚连接状态侦测模块包含状态更新程序和虚连接状态侦测线程;状态更新程序用于定期更新网关内其他开发板的链路状态信息,对虚连接表进行维护;虚连接状态侦测线程负责定时检查其他开发板的链路状态信息以及定时发送自身的链路状态信息,以便及时发现失效链路,并采取补救措施进行链路重映射;
工作过程:输入数据流可来自以太网数据或CAN总线,输入数据流经过硬件平台的CAN总线物理接口或以太网物理接口进入支撑模块,由CAN总线驱动程序或以太网驱动程序驱动进入虚连接模块的虚连接LWIP接口程序或虚连接CAN协议接口程序,虚连接LWIP接口程序包含LWIP输入接口程序和LWIP输出接口程序。LWIP输入接口程序接收来自以太网的IPV4数据包,并对此数据包的虚连接头部进行解析,之后将数据字段和虚连接头部交付虚连接转发程序进行处理。LWIP输出接口程序将虚连接转发程序处理完毕的数据包进行虚连接头部封装,完成后将其在以太网进行发送。
虚连接CAN协议接口程序包含CAN接收程序和CAN发送程序。CAN接收程序将CAN接收邮箱收到的数据包搬运到内存缓存中,并对数据包进行虚连接头部解析,之后将数据字段和虚连接头部交付虚连接转发程序进行处理。CAN发送程序将虚连接转发程序处理完毕的数据包进行虚连接头部封装,完成后将其在CAN总线进行发送。
虚连接转发程序接收来自虚连接LWIP接口程序或虚连接CAN协议接口程序已完成解析的数据包,然后根据虚连接表对数据包执行丢弃或者转发操作,且转发时按数据包实时性的高低对其进行先后发送,发送时若为CAN总线数据则经虚连接CAN协议接口程序封装发送,若为以太网数据则通过虚连接LWIP接口程序封装发送。从数据流向看,CAN总线输入数据流进入虚连接模块后,输出数据流可为CAN输出数据流或者以太网输出数据流;而以太网输入数据流进入虚连接模块后,输出数据流应为CAN输出数据流;在数据转发过程中,状态更新程序每隔一定时间接收网关中其它开发板发来的链路状态信息,更新链路状态信息,对虚连接表进行维护;虚连接状态侦测线程在虚连接表的工作完成后,负责定时检查其他开发板的链路状态信息以及定时发送自身的链路状态信息,以便及使发现失效链路,并进行链路重映射。
本发明与现有技术相比具有的有益效果在于:
(1)当前CAN总线和以太网间的网关系统实现了双网通信,在一定程度上融合了CAN和Ethernet的优势特性,但仅凭CAN总线自身特性来提高以太网实时性,或仅凭以太网高吞吐量来提高CAN总线带宽会使得系统性能的提升空间受到制约,典型的问题包括突发大流量导致缓存溢出、丢帧;无法提供对不同优先级数据和实时应用的支持;网络负载不均衡等;本发明创造性的将虚连接(所述虚连接是指通信双方的电路在用户看来是由独立节点临时且动态连接的虚电路)引入网关上,保障了数据的高实时高可靠传输,解决了目前网关实时性可靠性无法提高的瓶颈问题。
(2)本发明利用CAN总线数据编址和多主模式的优势特性,可在虚连接链路失效时进行迅速重构。网关凭借多块具备独立计算能力和存储空间的开发板组成支持虚连接的集群系统,集群系统内各块开发板共同协作完成数据包的虚连接交换,不仅提高了数据缓存能力,而且大大减小了数据转发时延。
(3)本发明网关加入了转发调度功能,可对不同实时性要求的数据区别处理,实现了网络资源的优化利用。并且,由于网关内部结构可变,故支持更加灵活的网络配置。
总之,使用本发明所提出的实时嵌入式网关,可在多种工业环境,特别是数据采集传输相关的工控领域实现较大规模数据的实时可靠传输;同时具备流量整形和动态优先级调度能力;同时整合了CAN总线和以太网的优势特性,具备配置灵活,适应性高,扩展性好,能耗小等诸多优点,适用于较大规模的数据采集传输系统。
附图说明
图1为本发明的网关内单块开发板上的软硬件系统模块图;
图2为本发明的网关内单块开发板上的数据流图;
图3为本发明多个网关间的虚连接转发示意图;
图4为本发明网关虚连接集群示意图;
图5为本发明的CAN驱动流程图;
图6为本发明的以太网驱动流程图;
图7为本发明的接收CAN总线数据的中断处理流程图;
图8为本发明的网关的虚连接协议模块处理流程图;
图9为本发明的网关的虚连接状态侦测线程工作流程图。
具体实施方式
如图1所示,本发明支持虚连接的基于CAN总线和以太网实时嵌入式网关,包括:硬件平台、基于网关硬件平台的支撑模块与虚连接模块,其中:
网关的硬件平台采用若干块同时具备CAN总线物理接口和以太网物理接口的开发板构成;网关的各块开发板均接入网关本地意义的CAN总线网络,并通过CAN总线进行数据交互。各开发板同时以以太网接口的形式连接另一个网关或者工控领域的现场设施,如工控机,交换机,处理终端机等。每块开发板均具备独立的计算单元和存储单元,并通过本地CAN网络构成虚连接集群系统,以协作的形式共同完成CAN/以太网数据格式转换,数据包的解析和封装,虚连接转发等各项功能。
基于网关硬件平台的支撑模块:网关的支撑模块主要包含开源的嵌入式实时操作系统μc-OS II,TCP/IP协议栈LWIP,以及多个驱动程序。驱动程序主要包含CAN总线驱动,以太网驱动以及指示灯驱动。各驱动完成相应的模数转换功能,并为虚连接模块提供必要的支撑功能。
网关的虚连接模块:虚连接模块由虚连接协议子模块和虚连接状态侦测子模块组成。其中虚连接协议模块完成数据包的虚连接转发工作,而虚连接状态侦测模块负责定时检查网关内其他开发板的虚连接状态和定时发送自身的链路状态信息,并在链路失效的情况下执行相应的补救措施。
网关硬件平台组建实现步骤如下:
将若干块同时具备CAN模块和以太网模块的开发板重叠,用铜线将各块开发板的CAN模块连接起来;开发板的RJ-45接口和另一个网关某块开发板的RJ-45接口或者现场设施(工控机,交换机,终端机)的RJ-45接口用双绞线连接起来。各块开发板均以USB接口的形式进行供电。
基于网关硬件平台的支撑模块具体实现步骤如下:
(1)对网关内各块开发板移植μc-OS II操作系统和LWIP协议栈,按照其官方所给的移植范例进行移植,详细步骤参阅数据手册。
(2)编写开发板的CAN总线驱动程序:首先使能CAN模块的时钟信号,并设置其为普通模式,然后使能中断功能并在CAN总线成功唤醒后进行CAN邮箱的初始化工作:本发明将4个编号连续的CAN邮箱链接起来,共同作为物理接收缓存区。4个邮箱都被初始化为相同的CAN信息ID,此ID与一般虚连接协议中的“端口”具备同样的作用;本发明将1个邮箱作为物理发送缓存区,此邮箱ID的含义为目标CAN模块的信息ID;本发明将1个邮箱作为链路状态信息接收邮箱,以便更新网关内各块开发板的工作状态。完成上述邮箱的初始化后,将开启此6个邮箱的事件中断。该驱动主要完成接收和发送CAN总线物理信号的功能。
(3)编写开发板的以太网驱动程序:首先使能以太网模块的时钟信号,并按顺序完成模式设置,自协商,MAC地址设置等相应操作。然后将以太网物理接受缓冲映射到内存中。最后在高级中断控制器中注册以太网模块驱动的中断程序,并开启接受和发送中断。
(4)编写开发板的指示灯驱动程序:首先使能指示灯管脚控制器的时钟,然后通过对相应管脚的写1或写0操作来实现控制器对指示灯亮灭的控制。
网关的虚连接模块具体实现步骤如下:
(1)虚连接协议子模块:虚连接协议模块包括虚连接表及虚连接表初始化程序,虚连接CAN协议接口程序、虚连接LWIP接口程序及虚连接转发程序。虚连接表初始化程序根据全网络或局部网络的拓扑结构,在内存建立虚连接表,其表项为七元组(入IP地址,入端口号,入标签号,出IP地址,出端口号,出标签号,重映射号)。虚连接LWIP接口程序接收来自以太网的IPV4数据包,并对此数据包的虚连接头部进行解析,之后将数据字段和虚连接头部交付虚连接转发程序进行处理。同时,虚连接LWIP接口程序负责将虚连接转发程序处理完毕的数据包进行虚连接头部封装,完成后将其在以太网进行发送。虚连接CAN协议接口程序将CAN接收邮箱收到的数据包搬运到内存缓存中,并对数据包进行虚连接头部解析,之后将数据字段和虚连接头部交付虚连接转发程序进行处理。同时,虚连接CAN协议接口程序负责将虚连接转发程序处理完毕的数据包进行虚连接头部封装,完成后将其在CAN总线进行发送。
虚连接转发程序根据虚连接表对数据包执行丢弃或者转发操作,且转发时按数据包实时性的高低对其进行先后发送,以确保网络资源的最优利用。
(2)虚连接状态侦测子模块:包含状态更新程序和虚连接状态侦测线程。状态更新程序用于定期更新网关内其他开发板的链路状态信息;虚连接状态侦测线程负责定时检查其他开发板的链路状态信息以及定时发送自身的链路状态信息,以便即使发现失效链路,并进行链路重映射。
如图1、2所示,本发明的工作过程:
(1)对网关的各块开发板通过USB接口进行供电,同时按照实际的网络拓扑结构连接各块开发板和相应的网络设备;并完成网关内各块开发板上虚连接表的初始化工作。
(2)启动虚连接状态侦测线程和状态信息更新程序开始对虚连接进行维护。然后分三类情况进行工作:①网关内某块开发板的CAN总线驱动程序收到来自CAN物理接口的比特流数据接收信号,并通知CAN输入接口程序完成实际的数据接收。完成后转入步骤(3)。②网关内某块开发板的以太网驱动程序完成来自以太网物理接口的以太网数据帧的接收,并由LWIP协议完成IP协议的解析后,通知LWIP输入接口程序进行处理并转入步骤(6)。③虚连接状态侦测线程发现某条虚连接已失效,转入步骤(9)。
(3)CAN输入接口程序完成CAN数据包的虚连接头部解析工作,并将头部信息和数据字段交付虚连接转发程序进行处理。
(4)虚连接转发转发程序通过查询虚连接表,对不满足转发条件的数据包执行丢弃;并对满足转发条件(两项入口信息匹配)的数据包进行转发。转发时,首先判断此虚连接是否被重映射,是则将重映射表的表项值作为虚连接转发出口信息;否则沿用虚连接表的表项值作为转发出口信息。然后将数据字段首字节作为优先级信息,并判断出口信息中的出端口号,以决定将数据包放入CAN优先级队列或者以太网优先级队列进行发送。
(5)将出口信息传入对应的LWIP输出接口程序或者CAN输出接口程序,在完成数据包的虚连接头部封装后进行实际发送。至此,数据包处理完成,返回步骤(2)。
(6)LWIP输入接口程序完成IP数据包的虚连接头部解析工作,并将头部信息和数据字段交付虚连接转发程序进行处理。
(7)虚连接转发转发程序通过查询虚连接表,对不满足转发条件的数据包执行丢弃;并对满足转发条件(三项入口信息匹配)的数据包进行转发。转发时,首先判断此虚连接是否被重映射,是则将重映射表的表项值作为虚连接转发出口信息;否则沿用虚连接表的表项值作为转发出口信息。然后将数据字段首字节作为优先级信息,将数据包放入CAN优先级队列进行发送。
(8)将出口信息传入CAN输出接口程序,在完成数据包的虚连接头部封装后进行实际发送。至此,数据包处理完成,返回步骤(2)。
(9)虚连接状态侦测线程查找与此失效链接目的IP地址相同的正常工作的链接(替代链接)。若无法找到,则将此失效链接对应的数据包暂存,并通告数据源端停止发送。若成功找到替代链接,则在重映射表项中新建一个表项,将替代链接的出口信息写入其中,并将新建的表项号写入失效链接在虚连接表中的re_map域。至此,已完成失效链接的重映射操作,返回步骤(2)。
采用多个本发明的网关可建立虚连接交换网,其典型的虚连接转发示意图(未涉及重映射表)如图3所示:左侧为4个带以太网接口的现场设施(采集模块),分别与网关1的第1至第4块开发板的RJ-45接口相连;而网关1的第6块开发板与网关2的第5块开发板相连,网关2的第6块开发板与网关3的第5块开发板相连,网关3的第6块开发板与中央处理PC机相连。数据包从采集模块1到中央处理PC机的虚连接转发经过了图中①②③④四个阶段,每个阶段的虚连接头部改变是根据网关的虚连接表项所决定。初始时刻,数据包目的IP地址为IPa(即网关1的1号开发板的IP地址),端口号为A,标签值为b。网关1的1号开发板收到此数据包后查询虚连接表1(匹配表项1),得知应将此数据包转发给6号开发板(CAN接收地址为B),且应将标签值修改为c;6号开发板收到此数据包后查表1(匹配表项2),得知应将其转发给目的IP地址为IPd的以太网接口,即网关2的5号开发板且应将标签值修改为d。至此,数据包被修改为图3中①所示。接下来数据包继续在网关2和网关3间传递,直至由网关3发给最终目的终端处理PC机(IP地址为IPz)。
网关的硬件平台搭建的具体实施如下:
本发明网关由若干块(按照实际的网络配置,理论上可扩充至211块)同时具备CAN模块和以太网模块的开发板组合构成支持虚连接服务的集群系统,如图4所示。各块开发板间由本地意义的CAN总线相连;开发板的RJ-45接口可连接带以太网接口的现场设施(如采集设备,交换机,终端PC等)或者另一个网关(参见图3中的网关互联)。
网关的各块开发板采用USB接口供电,输入电压范围通常情况下为3.3V~5V。
基于网关硬件平台的支撑模块的具体实施如下:
(1)对网关内各块开发板移植μc-OS II操作系统:按照其官方所给的移植范例对与处理器相关的三个源文件OS_CPU_C.C,OS_CPU_A.S和OS_CPU.H三个文件进行修改即可。在μc-OS II上移植LWIP协议栈:按照其官方给出的sys_arch.txt文件,实现操作系统模拟层初始化函数,信号量相关函数(建立,释放,发送,等待),邮箱相关函数(建立,释放,投递消息,阻塞等待,超时),以及协议多线程函数等必要函数体。为LWIP提供同步互斥信号量,消息邮箱队列等相关支持。并编写LWIP与以太网驱动之间的相应接口。
(2)编写开发板的CAN总线驱动程序:CAN总线驱动程序按执行顺序分为如下5部分:
①开发板的CAN总线物理接口初始化:参阅开发板的官方文档,结合开发板硬件连接图,将CAN总线物理接口需要用到的管脚的使用权交付给CAN控制器,并使能CAN总线时钟,然后对CAN控制器的模式选择管脚进行写操作,使得CAN收发器进入正常传输模式(Transceiver Normal Mode)。
②在开发板的高级中断控制器(开发板术语)中注册CAN总线物理接口的中断信号:首先进入操作系统临界区,通过写中断控制器的相应寄存器完成CAN收发中断的注册工作,并使能CAN收发中断。然后退出操作系统临界区。
③设置CAN总线波特率:参阅数据手册中CAN波特率的计算方法,在CAN控制器的波特率相关寄存器写入计算值,使得CAN总线物理接口达到其最大的1Mbps的带宽。
④等待CAN总线唤醒:首先使能CAN唤醒信号的中断,然后对CAN模式寄存器写入CAN使能信号,并等待CAN总线唤醒。
⑤初始化CAN接收邮箱和发送邮箱:将4个连续的CAN消息邮箱(0~3号邮箱)中的前3个邮箱的模式设置为只接收模式,并将第4个邮箱模式设置为接收并覆盖模式。这样的设置方式将此4个邮箱链接了起来,共同作为物理接收缓存区。4个邮箱都被初始化为相同的CAN信息ID,此ID即为数据接收邮箱地址。从网关整体角度考虑,接收邮箱的ID与一般虚连接协议中的“端口”具备同样的作用,。将1个邮箱(4号邮箱)模式设置为只发送模式,并将其作为物理发送缓存区,此邮箱ID的含义为目标CAN设备的信息ID。将1个邮箱(5号邮箱)模式设置为只接收模式;将1个邮箱(6号邮箱)模式设置为只发送模式,然后将5号和6号邮箱的ID均设为0x00000001。完成上述邮箱的初始化后,再开启邮箱的传输功能。至此CAN模块底层驱动完成,驱动执行流程图参见图5。此处的CAN控制器和CAN邮箱是CAN总线技术的术语。
(3)编写开发板的以太网驱动程序:以太网驱动按执行顺序分为如下5部分:
①复位开发板的以太网物理层芯片:首先通过写相应寄存器,使得物理层芯片在复位后立即进入需要的MII模式(以太网术语)。并等待芯片复位的实际完成。
②设置以太网物理接口参数:参阅数据手册,将物理层芯片MII模式下需求的管脚使用权交付以太网模块。然后对模块的网络配置寄存器写入正确的时钟分频数。
③以太网物理层自协商:读取状态寄存器的值,等待链接完成信号电平拉高,然后等待自协商信号电平拉高。获取自协商结果,并对网络配置寄存器进行链路速度和单双工方式的设置。对物理芯片寄存器读写前后应开启和关闭物理层读写功能。
④初始化接收和发送缓冲区:参考数据手册,首先建立接收和发送缓冲区。最后按照数据手册使能以以太网物理接口的时钟,并清除接收状态寄存器和设置MAC地址。
⑤设置以太网物理接口收发中断:首先使能接收结束和发送结束的中断。并在高级中断控制器中注册以太网模块的驱动。最后对网络配置寄存器写发送和接收位。至此以太网模块底层驱动完成,驱动执行流程图参见图6。
(4)编写开发板的指示灯驱动:首先用使能与指示灯相连接的管脚控制器的时钟,然后使能控制器对相应管脚的控制,并通过对管脚的写0和写1操作实现对指示灯的亮灭控制。
网关的虚连接模块具体实施如下:
1.虚连接协议子模块:
(1)虚连接表初始化程序:虚连接表项结构为(A,B,C,D,E,F,G)七元组,其中A为入IP地址,4字节;B为入端口号(CAN信息ID),4字节;C为入标签号,1字节;D为出IP地址,4字节;E为出端口号(CAN信息ID),4字节;F为出标签号,1字节。G为重映射号,占1字节。可以有多个表项。
声明名为VTItem的结构体,并包含上述七个变量域(令其名为in_ip_addr,in_can_id,in_label,out_ip_addr,out_can_id,out_label,re_map);再声明名为VTable的结构体,包含整形变量域VTLen以及VTItem类型的数组域iVTItem。
令iVT为虚连接表(VTable类型)。本发明采取PVC的虚连接模式,即静态配置全网的全部虚连接。虚连接表初始化程序应根据实际网络拓扑结构将与本网关关联的虚连接表项iVTItem存入iVT中,且所有表项的re_map域都赋值为0。具体的iVTItem值需进行人工配置。
(2)虚连接LWIP接口程序:包含LWIP输入接口程序和LWIP输出接口程序。其中:
I.LWIP输入接口程序:令程序名为VirtualInputIP。由于网关支持虚连接且兼容普通IPV4数据包,现对LWIP协议的传输层做如下改动:由于TCP需要预先建立连接,故本发明约定以太网数据包的传输层包头为UDP头,现将LWIP中传输层中的UDP协议转发程序修改为VirtualInputIP。TCP和ICMP等上层协议不做修改。
VirtualInputIP在LWIP的IP输入函数中被调用,其传入参数为:协议栈缓冲数据包p和ip_hdr类型(IP数据包头部类型)的变量iphdr(在IP输入函数中已求得)。建立udp_hdr类型(UDP头部类型)的变量udphdr;再建立字符型变量inlabel,整型变量inport和paylen。程序的具体处理流程为:
首先,抹去p的IP包头;并将p的前8个字节存入udp_header(UDP头部);再抹去p的UDP头部,以取得仅含虚连接头部的数据载荷。然后,读取此载荷的前4个字节值,并将结果存入inport;再读取第5个字节值,将结果存入inlabel。最后,取udphdr中的长度信息,并减去13后将结果赋值给paylen。此时的paylen是不包含任何头部的数据净荷。
完成上述步骤后,VirtualInputIP将获取的p,inport,inlabel,paylen以及iphdr交付虚连接转发程序进行处理。
II.LWIP输出接口程序:令程序名为VirtualOutputIP。VirtualOutputIP在虚连接转发程序对正确的虚连接数据包进行转发时被调用,且传入参数为p,整型变量outport,字符型变量outlabel,以及目的IP地址和数据包长度paylen。VitualOutputIP首先将outport和outlabel增补到p的头部,即完成虚连接头部的封装;然后调用udp_send()函数,将此数据包发送到目的IP地址。
(3)虚连接CAN协议接口程序:包含CAN接收程序和CAN发送程序。其中:
I.CAN接收程序:此程序为中断处理程序,由第0~3号CAN邮箱接收完毕信号而触发,主要完成将CAN接收邮箱收到的数据搬运到内存缓存(设为CANMsgBuf)的工作。建立无符号整型变量status用于保存中断寄存器状态,判断status的值可分别处理来自不同中断源的中断请求。
CAN总线接收数据包的中断处理过程分如下步骤进行,参见图7所示:
①判断第0号邮箱是否成功的接收到了数据,即其在状态寄存器中相应位的值,若值为假则表明未接收到数据,无操作。若为真,则用获取第0号邮箱的数据寄存器值,并约定此值为接收数据包的长度(占4字节)。接下来将检测内存中是否有空闲的接收缓冲区,有空闲则转向步骤②,否则直接放弃剩下数据的接收。
②判断数据包长度是否小于等于8,否转向步骤③,是则连同长度信息和剩下的不大于4字节的数据信息一并写入接收缓冲区,并通知CAN接收线程进行处理。
③判断1号邮箱对应状态寄存器值的真假,若其值为假则表明接收错误,无操作。若值为真则判断数据包长度是否小于等于16,否转向步骤④,是则将长度信息和剩下的不大于12字节的数据信息一并写入接收缓冲区,并通知CAN接收线程进行处理。
④判断2号邮箱对应状态寄存器值的真假,若其值为假则表明接收错误,无操作。若值为真则判断数据包长度是否小于等于24,否转向步骤⑤,是则将长度信息和剩下的不大于20字节的数据信息一并写入接收缓冲区,并通知CAN接收线程进行处理。
⑤判断3号邮箱对应状态寄存器值的真假,若其值为假则表明接收错误,无操作。若值为真则将含4字节长度信息在内的24字节的数据写入接收缓冲区,并使用第3号邮箱继续接收剩余数据,直至数据完全接收并写入接收缓冲区为止。
完成上述步骤后,CAN接收程序将对CANMsgBuf进行虚连接头部解析,跳过长度字段(4字节),将CANMsgBuf的第5到第8个字节读出并存入整型变量inport中;再将第9个字节读出并存入inlabel中,然后将inport和inlabel以及去除虚连接头部的数据包地址传入虚连接转发程序进行处理。
II.CAN发送程序:此程序在CAN驱动完成后即启动,并一直等待来自虚连接转发程序发送请求的信号量。CAN发送程序传入参数为字符型变量outlabel和整型变量outport。被唤醒后,CAN发送程序将outport值(即目的CAN地址)写入CAN发送邮箱的发送地址(即第4号邮箱的模式寄存器目标地址字段),并将自身的CAN地址写入待发送数据的第5到第8个字节,然后将outlabel值写入待发送数据的第9个字节。完成上述封装后,将数据放到CAN总线进行发送。
(4)虚连接转发程序:此程序的接收来自LWIP或CAN的已完成解析的数据包。且此程序含两个优先级队列:以太网待发送队列和CAN待发送队列。建立字符型变量prior用以保存数据包的优先级,然后分两类情况进行处理:
I.若数据包为LWIP数据包,则查询iVT表,判断是否有表项同时满足以下3个条件:①该表项值的in_ip_addr字段与所传入的iphdr的src字段相等;②该表项值的in_label字段与所传入的inlabel值相等;③该表项值的in_port字段与所传入的inport值相等。若未能找到符合上述条件的表项,则将传入的p进行内存释放,并返回。若成功找到匹配表项,则读取p的首字节,将结果赋值给prior。然后分析此表项的re_map值,若re_map值为0(无重映射)则应将此表项的out_port值和out_label值传递给CAN发送程序,并按prior值的大小将数据包插入有序的CAN待发送队列;若re_map值大于0(发生重映射),则应将重映射表FT的第re_map个元素的out_port和out_label值传递给CAN发送程序,其他操作与无重映射的情况相同。
II.若数据包为CAN数据包,则查询iVT表,判断是否有表项同时满足以下2个条件:①该表项值的in_label字段与所传入的inlabel值相等;②该表项值的in_port字段与所传入的inport值相等。若未能找到符合上述条件的表项,则将此数据包的内存进行释放,并返回。若成功找到匹配表项,则读取数据包的首字节,存入prior中。然后与情况I类似,查询此匹配表项的re_map值,若为0则采用此表项的out_port和out_label值作为出端口和出标签;若非0则应采用FT表第re_map个表项的值。接着,分析out_port值,若其值大于0x10000000则判断出口为以太网,并按照prior值的大小将其插入以太网待发送队列;若其值小于等于0x10000000则判断出口为CAN总线,并按照prior值的大小顺序将数据包其插入CAN待发送队列。
按照排序算法将数据包插入队列后,虚连接转发程序将按照队列的先后顺序调用LWIP输出接口程序或CAN发送程序进行实际发送。
虚连接协议子模块的工作流程图详见图8所示。
2.虚连接状态侦测子模块:由状态信息更新程序和虚连接状态侦测线程组成。首先,声明整型结构体LinkState,其中包含整型变量域CAN_ID和整型变量域Cur_State。CAN_ID用于保存开发板数据接收邮箱ID然后在内存中建立LinkState类型的结构体数组iLS,并将网关内部各块开发板的数据接收邮箱ID和链路状态信息(初始化为0,正常)写入iLS中元素的CAN_ID域和Cur_State域。
(1)状态信息更新程序:此程序为中断处理程序,由第5号CAN邮箱接收完毕信号而触发,主要完成定期更新来自网关内其他开发板的状态信息的功能。状态信息更新程序被触发后,将5号邮箱中接收到的信息赋值给iLS中对应的元素。
(2)虚连接状态侦测线程在虚连接表的配置工作完成后被启动,并定期检测各条虚连接的状态信息并发送自身(本开发板)的链路状态信息。
现解释链路状态信息的含义:
①链路状态信息值为0:当前虚连接工作正常,可顺利完成表项要求的虚连接数据包的转发,且未承担额外连接的数据转发任务。
②链路状态信息值为-1:当前虚连接失效。无法完成表项要求的虚连接数据包转发工作。失效原因包括物理线路断线,电源供电不足,信号干扰等等。
③链路状态信息值为1:当前虚连接工作负荷。即该条虚连接承担了本连接以外的额外的数据包转发工作。
虚连接状态侦测线程每隔200ms将从6号邮箱往0x00000001地址发送本开发板的数据接收ID和链路状态信息值。
同时,虚连接状态侦测线程每隔500ms将读取iLS中的ID号与相应链路状态信息以便对失效或者负荷过重的虚连接进行重映射,具体的实施过程做如下说明:
本发明提出的以CAN信息ID(含统一编址的以太网设备ID)为出入端口的虚连接技术,充分利用了CAN总线数据编址的优良特性。由于数据包的目的地址由自身头部信息决定,在实际的网络传输中,若虚连接状态侦测线程检测到某条虚连接失效,可将其传输任务映射到另一条可工作的链路(链路信息状态值为0或1),而非简易的丢弃该虚连接的数据包。记录映射信息的表称之为重映射表,记为FT。FT的一个表项结构为三元组,包含映射后的出IP地址,出标签和出端口值,其中映射后出IP地址为4字节,出端口号,即CAN信息ID为4字节;出标签号为1字节。
虚连接状态侦测线程的具体工作过程如图9所示,虚连接状态侦测线程首先分析失效连接的目的IP地址,查询虚连接表找出与此失效连接目的IP地址相同且正常工作的连接(链路状态信息为0),并将失效连接的转发工作交付该正常连接完成。具体过程为:首先,在FT中新增一个表项a(设a在FT中的表项号为b),将此正常链接的出IP地址,出标签和出端口值写入a中;然后将b写入失效链接在iVT表中的re_map域。最后,记录错误报告;若无法找到目的IP地址相同的另外连接,或者存在目的IP地址相同的链接但此链接已经被重映射,则将数据包缓存,并通告数据包来源暂停发送。
以上详细叙述了本发明的实现过程,未详细描述部分属于本领域公知技术。
Claims (6)
1.一种支持虚连接的基于CAN总线和以太网实时嵌入式网关,其特征在于:所述网关由多块具备CAN总线物理接口和以太网物理接口的嵌入式开发板组成硬件平台;各块开发板均接入网关本地意义的CAN总线网络,并通过CAN总线进行数据交互,各开发板同时以以太网接口的形式连接另一个网关或者工控领域的现场设施;每块开发板均具有支撑模块和虚连接模块,并通过本地CAN网络构成虚连接集群系统,以协作的形式共同完成帧格式转换,数据解析封装,虚连接收发各项功能;其中:
支撑模块:包含嵌入式实时操作系统μc-OSⅡ、TCP/IP协议栈LWIP、CAN总线驱动程序和以太网驱动程序;嵌入式实时操作系统μc-OSⅡ为网关中所有的软件模块提供编程接口;LWIP提供对以太网IP数据包的支持;CAN总线驱动程序和以太网驱动程序则负责配置CAN模块和以太网模块,以便接收实际的比特流数据;
虚连接模块由虚连接协议子模块和虚连接状态侦测子模块组成;虚连接协议子模块完成数据包的虚连接转发工作,它包括虚连接表初始化模块,虚连接CAN协议接口模块、虚连接LWIP接口模块及虚连接转发模块;虚连接表初始化模块根据全网络或局部网络的拓扑结构,在内存建立虚连接表,虚连接表的表项结构为七元组,包括入IP地址,入端口号,入标签号,出IP地址,出端口号,出标签号和重映射号;虚连接CAN协议接口模块负责建立虚连接与CAN协议之间的数据通道,虚连接LWIP接口模块负责建立虚连接与LWIP之间的数据通道,使得虚连接协议可访问此两者的数据包;虚连接转发模块接收来自虚连接LWIP接口模块和虚连接CAN协议接口模块已完成解析的数据包,然后根据虚连接表对数据包执行丢弃或者转发操作,且转发时按数据包实时性的高低对其进行先后发送,以确保网络资源的最优利用;
虚连接状态侦测模块包含状态更新模块和虚连接状态侦测线程模块;状态更新模块用于定期更新网关内其他开发板的链路状态信息,对虚拟表进行维护;虚连接状态侦测线程模块负责定时检查其他开发板的链路状态信息以及定时发送自身的链路状态信息,以便及时发现失效链路,并进行链路重映射;
工作时:输入数据流可来自以太网数据或CAN总线,输入数据流经过硬件平台的CAN总线物理接口或以太网物理接口进入支撑模块,由CAN总线驱动程序或以太网驱动程序驱动进入虚连接模块的虚连接LWIP接口模块或虚连接CAN协议接口模块;虚连接LWIP接口模块包含LWIP输入接口模块和LWIP输出接口模块,LWIP输入接口模块接收来自以太网的IPV4数据包,并对此数据包的虚连接头部进行解析,之后将数据字段和虚连接头部交付虚连接转发模块进行处理;LWIP输出接口模块将虚连接转发模块处理完毕的数据包进行虚连接头部封装,完成后将其在以太网进行发送;
虚连接CAN协议接口模块包含CAN接收模块和CAN发送模块,CAN接收模块将CAN接收邮箱收到的数据包搬运到内存缓存中,并对数据包进行虚连接头部解析,之后将数据字段和虚连接头部交付虚连接转发模块进行处理;CAN发送模块将虚连接转发程序处理完毕的数据包进行虚连接头部封装,完成后将其在CAN总线进行发送;
虚连接转发模块接收来自虚连接LWIP接口模块或虚连接CAN协议接口模块已完成解析的数据包,然后根据虚连接表对数据包执行丢弃或者转发操作,且转发时按数据包实时性的高低对其进行先后发送,发送时若为CAN总线数据则经虚连接CAN协议接口模块封装发送,若为以太网数据则通过虚连接LWIP接口模块封装发送;从数据流向看,CAN总线输入数据流进入虚连接模块后,输出数据流可为CAN输出数据流或者以太网输出数据流;而以太网输入数据流进入虚连接模块后,输出数据流应为CAN输出数据流;在数据转发过程中,状态更新模块每隔一定时间接收网关中其它开发板发来的链路状态信息,更新链路状态信息,对虚连接表进行维护;虚连接状态侦测线程模块在虚连接表的工作完成后,负责定时检查其他开发板的链路状态信息以及定时发送自身的链路状态信息,以便及使发现失效链路,并进行链路重映射。
2.根据权利要求1所述的支持虚连接的基于CAN总线和以太网实时嵌入式网关,其特征在于:所述硬件平台的具体实现方式为:将若干块同时具备CAN总线物理接口和以太网物理接口的开发板重叠,用铜线将各块开发板的CAN总线物理接口接起来;开发板的RJ-45接口和另一个网关某块开发板的RJ-45接口或者现场设施,所述现场设施包括工控机,交换机;终端机的RJ-45接口用双绞线连接起来;各块开发板均以USB接口的形式进行供电。
3.根据权利要求1所述的支持虚连接的基于CAN总线和以太网实时嵌入式网关,其特征在于:所述虚连接表项结构为七元组,包含入IP地址为4字节;入端口号,即CAN信息ID为4字节;入标签号为1字节;出IP地址为4字节;出端口号,即CAN信息ID为4字节;出标签号为1字节;重映射号为1字节。
4.根据权利要求1所述的支持虚连接的基于CAN总线和以太网实时嵌入式网关,其特征在于:所述虚连接状态侦测线程模块工作过程,包括链路重映射的过程为:
(1)虚连接状态侦测线程模块检查网关内各开发板的链路状态信息;
(2)然后判断各开发板链路状态信息关联的某条虚连接是否失效,若失效则转入步骤(3)否则无操作,等待一定时延后转入步骤(1);
(3)寻找与失效虚连接目的IP地址相同的且正常工作另一条虚连接,即替代链接,若存在所述的虚连接则转入步骤(4),否则将此失效链接对应的数据包暂存,并通告数据源端停止发送;
(4)在重映射表中新建一个表项,记表项号为b,将步骤(3)中替代链接的出标签,出端口,出IP地址写入此表项中,并将表项号b赋值给失效链接在虚连接表中表项的重映射号。
5.根据权利要求1所述的支持虚连接的基于CAN总线和以太网实时嵌入式网关,其特征在于:所述虚连接转发模块结合虚连接表判断丢弃或转发的过程:
(1)虚连接转发模块接收来自LWIP输入接口模块或CAN输入接口模块的虚连接头部信息,查询虚连接表,寻找与此头部信息匹配的虚连接表项;若能找到这样的表项则转入步骤(2),否则将数据包直接丢弃,此数据包处理完毕;
(2)记此表项的重映射号为a,a≥0,现判断a的值是否为0,若为0则将此表项的出端口,出标签,出IP地址信息做为虚连接转发的出口信息;若不为0,则将重映射表的第a个表项的出端口,出标签,出IP地址信息作为虚连接转发的出口信息;然后读取数据字段的首字节作为优先级信息,并将数据包插入优先级队列;
(3)将步骤(2)中获取的虚连接转发出口信息交付LWIP输出接口模块或CAN输入接口模块,完成数据的实际发送。
6.根据权利要求4所述的支持虚连接的基于CAN总线和以太网实时嵌入式网关,其特征在于:所述重映射表中的一个表项结构为三元组,包含映射后出IP地址为4字节;出端口号,即CAN信息ID为4字节;出标签号为1字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110092116.9A CN102158435B (zh) | 2011-04-13 | 2011-04-13 | 一种支持虚连接的基于can总线和以太网实时嵌入式网关 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110092116.9A CN102158435B (zh) | 2011-04-13 | 2011-04-13 | 一种支持虚连接的基于can总线和以太网实时嵌入式网关 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102158435A CN102158435A (zh) | 2011-08-17 |
CN102158435B true CN102158435B (zh) | 2014-03-05 |
Family
ID=44439627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110092116.9A Expired - Fee Related CN102158435B (zh) | 2011-04-13 | 2011-04-13 | 一种支持虚连接的基于can总线和以太网实时嵌入式网关 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102158435B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9215168B2 (en) * | 2012-07-23 | 2015-12-15 | Broadcom Corporation | Controller area network communications using ethernet |
CN106961437A (zh) * | 2017-03-24 | 2017-07-18 | 华东师范大学 | Can和以太网络的混合网络网关网管装置及其交换方法 |
CN107707489B (zh) * | 2017-09-27 | 2021-03-26 | 南京南瑞继保电气有限公司 | 一种基于流数据的嵌入式装置数据交换方法 |
CN107645564B (zh) * | 2017-10-24 | 2021-03-23 | 厦门市福工动力技术有限公司 | 一种基于数据缓存的can报文解析方法及其系统 |
CN109995675B (zh) * | 2017-12-29 | 2021-07-13 | 中国科学院沈阳自动化研究所 | 一种基于软件定义的自适应工业以太网网关系统与方法 |
CN109981431B (zh) * | 2019-03-15 | 2021-09-14 | 西安微电子技术研究所 | 一种can总线控制器数据存储电路及数据存储方法 |
CN111413945B (zh) * | 2020-03-19 | 2021-08-03 | 西安法士特汽车传动有限公司 | 一种基于线程交互的多种协议实现方法及系统 |
CN112350911B (zh) * | 2020-10-13 | 2022-04-29 | 中国运载火箭技术研究院 | 基于多种通信总线的地面电气系统 |
CN112769598B (zh) * | 2020-12-25 | 2022-06-07 | 武汉华中数控股份有限公司 | 一种网络通信系统及其通信实现方法 |
CN115118553B (zh) * | 2022-06-22 | 2024-04-09 | 北京航天发射技术研究所 | 一种基于国产cpu和实时操作系统的多协议网关 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1798114A (zh) * | 2004-12-29 | 2006-07-05 | 中国船舶重工集团公司第七一一研究所 | 一种can总线-以太网网桥 |
CN101404629A (zh) * | 2008-09-24 | 2009-04-08 | 中国北车股份有限公司 | 基于arm7的wtb-以太网网关 |
CN101478460B (zh) * | 2008-10-28 | 2011-04-13 | 上海电力学院 | 一种FlexRay-CAN通信网关及实现方法 |
-
2011
- 2011-04-13 CN CN201110092116.9A patent/CN102158435B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN102158435A (zh) | 2011-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102158435B (zh) | 一种支持虚连接的基于can总线和以太网实时嵌入式网关 | |
US9280297B1 (en) | Transactional memory that supports a put with low priority ring command | |
US9680770B2 (en) | System and method for using a multi-protocol fabric module across a distributed server interconnect fabric | |
CN105005546B (zh) | 一种内置交点队列的异步axi总线结构 | |
US7912082B2 (en) | Shared virtual network interface | |
CN104011696B (zh) | 用于隐式存储器注册的显式流控制 | |
US8599863B2 (en) | System and method for using a multi-protocol fabric module across a distributed server interconnect fabric | |
US7817652B1 (en) | System and method of constructing data packets in a packet switch | |
US9678866B1 (en) | Transactional memory that supports put and get ring commands | |
US20040151170A1 (en) | Management of received data within host device using linked lists | |
CN101383712B (zh) | 一种片上网络的路由节点微结构 | |
CN103221934A (zh) | 用于处理集群的控制节点 | |
CN105959288A (zh) | 一种电力电网系统中的网络协议转换及其相互通讯方法 | |
CN109218231A (zh) | 一种RapidIO交换网络 | |
CN103916252A (zh) | 一种基于fpga的高带宽以太网ip核 | |
CN105337421A (zh) | 一种智能电网系统中的协议转换及其相互通讯方法 | |
CN104579862A (zh) | 用于飞机的数据通信网络 | |
US9584637B2 (en) | Guaranteed in-order packet delivery | |
CN110442534A (zh) | 用于相干消息的高带宽链路层 | |
CN110297797A (zh) | 异构协议转换装置和方法 | |
CN101707599B (zh) | 故障录波系统中基于dsp的以太网通信方法 | |
CN103377170A (zh) | 异构处理器间spi高速双向对等数据通信系统 | |
US9342313B2 (en) | Transactional memory that supports a get from one of a set of rings command | |
CN101447988A (zh) | 一种基于fpga的千兆数据通信卡 | |
US9588928B1 (en) | Unique packet multicast packet ready command |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160927 Address after: 18, building 1006, block C, Shenzhen International Innovation Center, No. 518033 Shennan Road, Shenzhen, Guangdong, Futian District Patentee after: Shenzhen Air Technology Co., Ltd. Address before: 100191 Haidian District, Xueyuan Road, No. 37, Patentee before: Beihang University |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140305 Termination date: 20170413 |
|
CF01 | Termination of patent right due to non-payment of annual fee |