本发明涉及一种在CAN总线上传输IP报文的方法,利用CAN总线网络构建IP局域网的方法,属于网络与数据通讯技术领域。
背景技术:
CAN总线介绍:
传统上CAN(ControllerAreaNetwork,ISO11898)网络是一种用于局域性实时控制的网络,在交通工具、智能建筑和工业现场有较多应用,特别在汽车领域目前是行业标准之一。CAN总线使用一对双绞线连接多个节点,任意节点之间均可进行通讯。
CAN总线上的数据帧(CANFrame)主要包含这些信息:报文ID(MessageID)、数据长度字段(DLC,DataLengthCode)、数据域(Data),其中数据域为0到8个字节。当总线空闲时,任意节点均可发送数据帧,当两个或多个节点同时发送数据帧时,通过总线上的竞争机制,报文ID最小的数据帧优先发送,其余的数据帧延迟到总线再次空闲时进行发送。
在CAN网络中不存在节点“地址”的概念。每个节点将自身的数据发送到总线上。总线上的任意节点均能够接收到总线上的全部数据帧。根据本节点的功能需求,每个节点对这些数据帧进行过滤,仅对自身关心的数据帧进行处理。
在CAN网络上不同节点之间的竞争机制,依赖于不同数据帧报文ID的差异。因此一个设计良好的CAN网络上,任意两个节点不应发出相同报文ID的数据帧。CAN网络上的报文ID分为11位(标准格式,StandardFormat)和29位(扩展格式,ExtendedFormat)两种格式。在同一个网络中,可以同时使用这两种格式的CAN数据帧。
IP局域网:
IP(InternetProtocol)局域网(LAN,LocalAreaNetwork)是互联网的最小网络。一般意义上,在一个IP局域网中,所有主机处于相同的网段,互相之间能够直接进行通讯,而不需要路由器进行转发。IP局域网的类型有很多种,目前最常见的是以太网(Ethernet)。由以太网构成的IP局域网中,各主机(host)通过以太网线链接到中央的交换机(switch)或集线器(hub)。
在IP网络中每一个主机的每一个接口必须拥有至少一个IP地址(IPAddress)。IP报文中包含有报文的源地址和目的地址,源地址是数据的发送方,目的地址是数据的接收方。当一个主机需要向另一个主机发送数据时,它必须知晓目的主机的IP地址,也就是IP报文的目的地址。通常IP报文的目的地址是由发送数据的应用层程序指定的。
如果IP数据的发送方和接收方不在同一个局域网内,中间应该有一个或多个路由器负责进行报文的转发。路由器是一类特殊的主机,有两个或更多的接口,可在不同接口之间转发IP报文。每个路由器上存在一个路由表,根据报文的目的地址,在路由表中查找这个报文的发送接口和下一跳主机的IP地址。
主机的以太网接口还必须拥有自己的物理地址(MACAddress,MediaAccessControl)。当IP报文经过以太网传输时,通过ARP(AddressResolutionProtocol)协议查找出IP报文下一跳的IP地址所对应主机的物理地址。在发送数据时,目的物理地址会附带在报文之前。报文以定向(使用交换机)或广播(使用集线器)的方式发送出去,接收方只接收目的物理地址与自身物理地址匹配的报文,其他报文被丢弃。
以太网的数据帧中还包含报文发送方的物理地址,称为源物理地址。报文的目的物理地址和源物理地址同时参与网络竞争,由于每台主机的物理地址都不相同,因此即使多台主机同时发送目的物理地址相同的报文,网络竞争机制也能够顺利达成。
随着现代汽车技术、电子技术和网络技术的发展,汽车上已经出现了能够通过无线通讯链接到互联网的装置,如果能够将汽车上的其他控制器也连接到互联网,将会极大的拓展整车的智能化和网络化水平。
技术实现要素:
本发明提供一种在CAN总线上传输IP报文的方法及利用CAN总线网络构建的IP局域网,其利用车上现有的CAN总线网络来构成一个IP局域网,在维持硬件成本不变的前提下,给CAN网络节点提供互联网连接的能力。
本发明内容涉及IP报文的传输。本发明解决了在现有CAN网络上传输IP报文的问题,赋予车内CAN网络节点访问互联网的能力。
本发明的技术方案为:
一种在CAN总线上传输IP报文的方法,基于ISO15765-2的协议在CAN总线上传输IP报文,采用如下方法:
a)为实现利用CAN总线网络进行IP通讯,为参与通讯的各方分配至少一个物理地址;
b)各主机使用ISO15765-2所定义的方法来传输IP报文,通讯时所使用的CAN数据帧报文ID由局域网描述字加上通讯双方的物理地址组成;
c)每个参与通讯的节点建立一个从目标IP地址到物理地址的转换表。
进一步地,为每一个需要加入IP局域网的CAN总线节点分配物理地址的方法为:
a)物理地址是一串固定长度的二进制编码;
b)物理地址长度小于所使用的CAN数据帧报文ID长度的一半,即如果使用标准格式CAN数据帧来传输IP报文,物理地址长度最长为5;如果是使用扩展格式CAN数据帧来传输IP报文,物理地址长度最长为14;
c)物理地址长度最小为2;
d)每个节点可选择的物理地址取值范围为十进制的0至2n-2,n为物理地址长度;
e)十进制的2n-1,n为物理地址长度,也就是二进制的全1,不应分配给任意节点,这个数值保留用于未来的其他用途;
f)当一组CAN节点被分配至同一IP局域网时,它们的物理地址长度应相同,任意两个节点之间的物理地址取值均应不同;
g)每一个CAN节点可以拥有多个物理地址,这些物理地址可用于加入一个IP局域网或多个IP局域网,加入同一个IP局域网的多个物理地址长度相同,且取值不同。
进一步地,所述的物理地址长度符合:如果使用标准格式CAN数据帧,即使用报文ID长度为11位的CAN数据帧,来传输IP报文,则物理地址长度最长为5;如果是使用扩展格式CAN数据帧,即报文ID长度为29位的CAN数据帧,来传输IP报文,物理地址长度最长为14。
进一步地,利用ISO15765-2所规定之协议,在CAN总线上传输IP报文:
a)在IP协议栈中增加一个链路层接口,当IP层通过此接口收发IP报文时,IP报文通过ISO15765-2所规定的协议在CAN总线上传输;
b)当通过ISO15765-2所规定的协议在CAN总线上传输IP报文时,所使用的CAN数据帧ID由局域网描述字和收发双方的物理地址组成;
进一步地,为每一个加入IP局域网的CAN节点建立一个从目标IP地址到物理地址的转换表,该转换表中包含了所有IP局域网中其他节点的IP地址与物理地址的对应关系。
进一步地,报文接收过程为:某个节点接收到一个CAN数据帧后,应首先判断报文ID中的局域网描述字是否与自身所处的局域网相同,并且目的物理地址是否等于自身的物理地址;如果局域网描述字和目的物理地址均与本节点相符,应将该CAN数据帧视为承载IP报文的TP协议报文并送入TP协议处理,经过TP协议接收到所有后续帧之后,TP协议将组装好的IP报文通过IP层的收到IP报文接口上送到IP层。
一种利用CAN总线网络构建的IP局域网,各主机使用ISO15765-2所定义的方法来传输IP报文,采用以下传输方法:
S1:为参与通讯的各方分配至少一个物理地址;每个参与通讯的节点建立一个从目标IP地址到物理地址的转换表;
S2:通讯时所使用的CAN数据帧报文ID由局域网描述字加上数据传输的目的地物理地址以及数据传输的源物理地址组成。
b)当通过ISO15765-2所规定的协议在CAN总线上传输IP报文时,所使用的CAN数据帧ID由局域网描述字和收发双方的物理地址组成。
附图说明
图1是ISO15765-2所定义的用多个CAN数据帧传输一个大数据分组的方法;
图2是本发明应用ISO15765-2所定义的协议传输IP报文时确定标准格式CAN数据帧报文ID的示意图;
图3是本发明应用ISO15765-2所定义的协议传输IP报文时确定扩展格式CAN数据帧报文ID的示意图;
图4是本发明所描述的内容在IP协议栈中的位置;
图5是本发明的利用CAN总线网络构建的IP局域网的步骤图。
具体实施方式
现结合附图及具体实施例对本发明作进一步地说明:
地址分配:
当一个CAN总线上的节点加入到IP局域网时,除了其自身必须拥有一个IP地址外,还必须给它分配一个物理地址。
一个物理地址是一串二进制编码,其长度小于CAN数据帧报文ID长度的一半。当使用标准格式(11位报文ID)CAN数据帧传输IP报文时,物理地址最长为5位;当使用扩展格式(29位报文ID)CAN数据帧传输IP报文时,物理地址最长为14位。无论使用何种CAN数据帧格式,物理地址的最小长度为2位。当一个节点的物理地址长度为n位时,可使用0到2n-2(10进制,n为物理地址长度)作为它的物理地址。2n-1(2进制的全1,n为物理地址长度)作为一个特殊的物理地址,不应当分配给任意一个节点。
在一个CAN网络中,可以组成多个IP局域网。在同一个IP局域网中,必须使用相同格式的CAN数据帧来传输IP报文。即,要么所有节点都使用标准格式CAN数据帧,要么所有节点都使用扩展格式CAN数据帧。此外同一个IP局域网中的所有节点必须使用相同长度的物理地址,同一个IP局域网中的任意两个节点物理地址均不相同。
TP协议与CAN数据帧的报文ID定义:
ISO15765-2定义了一种使用多个CAN数据帧来传输一个较大数据分组的方法,简称为TP协议。用这个方法可将最大4095字节的数据从一个CAN节点传输到另一个节点。TP协议的通讯过程大致如图1所示,更详细的内容请参考该标准的原始文件。
TP协议所定义的传输方式必须为通讯的双方定义一对CAN数据帧的报文ID,即报文ID为x的CAN数据帧和报文ID为y的CAN数据帧。通讯双方中的一方发送报文ID为x的CAN数据帧并接收报文ID为y的CAN数据帧,另一方发送报文ID为y的CAN数据帧并接收报文ID为x的CAN数据帧。
前文所述,每个CAN节点都已经拥有了一个物理地址,当应用TP协议来传输IP报文时,通讯双方使用局域网描述字和物理地址来组成CAN数据帧的报文ID:
TP协议发送的CAN数据帧报文ID=局域网描述字+目的物理地址+源物理地址
如图2所示,假设节点A的物理地址为m,节点B的物理地址为n。那么节点A和节点B通讯时的报文ID定义为:
A发往B的CAN数据帧报文ID:x=局域网描述字+n+m
B发往A的CAN数据帧报文ID:y=局域网描述字+m+n
局域网描述字由具体的实现者定义,用于将传输IP报文的CAN数据帧与其他CAN数据帧区分开,并标明所属的IP局域网。在同一个IP局域网中的节点使用相同的局域网描述字。在同一个CAN网络中可以定义多个局域网描述字,这样可在单一CAN网络中建立多个IP局域网。同样的,一个CAN网络节点可使用多个不同局域网描述字来加入多个不同的IP局域网,此时该CAN网络节点应视为具有多个IP接口。
报文发送过程:
如图3,本发明所描述的方法为IP协议栈增加了一种新的链路层协议。该链路层实际上是用TP协议来将IP报文拆分成多个CAN数据帧,这些CAN数据帧的报文ID按照前文描述的方式设定。这种新的链路层在IP协议栈中表现为一个链路层接口。
IP层在发送IP报文时,根据报文中的目的地址在路由表中查找该报文的发送接口和下一跳IP地址。当发送接口为本发明所定义的接口时,按照前文所定义的规则设定CAN数据帧的报文ID。此处应建立一个地址转换表,用于将下一跳IP地址转换为其对应的目的物理地址,并以此作为将要发送的CAN数据帧的目的物理地址,而本节点的物理地址作为源物理地址,再加上预定义的局域网描述字,就可组成完整的CAN数据帧ID。之后可通过更底层的CAN驱动程序将数据帧发送出去。
这里描述的“地址转换表”指的是建立一种从IP地址到物理地址的对应关系,在实现时可能不是以“表格”的形式,而是以其他数据结构或过程调用的形式存在。这个地址转换表在设计上应保证能够尽快的用IP地址找到对应的物理地址。
在某些IP协议栈的实现中,要求链路层必须将发送状态上报。在这种情况下,应当将发送成功或发送失败的信息上报给IP层。判断发送成功或失败的方法在ISO15765-2中有定义。
如果在TP层正在发送一帧IP报文期间,IP层再次发送另一帧IP报文,分为两种情况:
a.如果新的报文和当前正在发送报文的下一跳相同(也就是目的物理地址相同),此时可以有两种选择:将新的报文直接丢弃(并上报发送失败,如果需要),或者将新的报文在队列中缓存,等当前报文发送成功后再发送新报文;
b.如果新的报文和当前正在发送报文的下一跳不同,此时可以有三种选择:1.将新的报文直接丢弃(并上报发送失败,如果需要);2.将新的报文在队列中缓存,等当前报文发送成功后再发送新报文;3.可直接启动一个新的TP会话来发送新的IP报文,在这种情况下,TP协议必须支持同一时刻的多路会话。
报文接收过程:
某个节点接收到一个CAN数据帧后,应首先判断报文ID中的局域网描述字是否与自身所处的局域网相同,并且目的物理地址是否等于自身的物理地址。如果局域网描述字和目的物理地址均与本节点相符,应将该CAN数据帧视为承载IP报文的TP协议报文。并送入TP协议处理。经过TP协议接收到所有后续帧(ConsecutiveFrame,见ISO15765-2)之后,TP协议将组装好的IP报文通过IP层的“收到IP报文”接口上送到IP层。
TP协议的实现应当允许双工通讯,即可以分别同时发送和接收不同的IP报文。
由上述报文的发送和接收过程可知,在一个CAN网络中,如果有超过2个节点需要组成IP局域网,那么用于承载IP报文的TP协议应当支持同一时刻的多路会话功能,即可以同时与多个通讯目标进行通讯。有关TP协议支持同一时刻的多路会话的内容在ISO15765-2中有详细定义。
最后应当说明的是:以上实施例仅用以说明本案的技术方案而非对其限制;尽管参照较佳实施例对本案进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本案的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本案技术方案的精神,其均应涵盖在本案请求保护的技术方案范围当中。