CN102255800B - Can总线上ip数据包和can消息之间数据格式相互转换的方法 - Google Patents

Can总线上ip数据包和can消息之间数据格式相互转换的方法 Download PDF

Info

Publication number
CN102255800B
CN102255800B CN201110172351.7A CN201110172351A CN102255800B CN 102255800 B CN102255800 B CN 102255800B CN 201110172351 A CN201110172351 A CN 201110172351A CN 102255800 B CN102255800 B CN 102255800B
Authority
CN
China
Prior art keywords
message
packet
ipocctrl
field
bus
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.)
Active
Application number
CN201110172351.7A
Other languages
English (en)
Other versions
CN102255800A (zh
Inventor
刘波
吴纯青
虞万荣
赵宝康
董绍进
时向泉
王小峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201110172351.7A priority Critical patent/CN102255800B/zh
Publication of CN102255800A publication Critical patent/CN102255800A/zh
Application granted granted Critical
Publication of CN102255800B publication Critical patent/CN102255800B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种CAN总线上IP数据包和CAN消息之间数据格式相互转换的方法,其步骤为:(1)CAN接口虚拟化:在系统中注册CAN设备时,按照注册以太网接口的标准格式注册,在定义输入输出接口模块时,使用自定义的IPoverCAN处理接口与网络层和CAN设备交互;(2)发送IP报文和接收CAN消息:发送IP报文时,通过调用以太网接口使用的Socket接口,经系统逐层调用后调用至IPoverCAN模块;在接收CAN消息时,来自于同一个源地址的CAN消息放入同一个IP包缓冲区,直到组装成完整的IP包交付给上层。本发明通过将CAN设备抽象为以太网接口,简化了硬件结构,扩大了其适应范围,还能使上层应用更为广泛从而便于上层处理数据和应用编程。

Description

CAN总线上IP数据包和CAN消息之间数据格式相互转换的方法
技术领域
本发明主要涉及到卫星通信领域,特指一种用于完成卫星载荷间CAN总线上的IP数据包和CAN消息之间数据格式相互转换的方法。
背景技术
CAN的全称为“Controller Area Network”(即控制器局域网),是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率、高抗电磁干扰性,而且能够检出产生的任何错误,所以被认为是最有发展前途的现场总线之一。目前,除了应用于汽车电子领域中,CAN-bus总线现还被广泛应用于工业现场控制、电力通讯、小区安防、环境监控、航天航海等众多领域中。
现有的CAN总线组网解决方案主要是:CAN总线上连接多个CAN设备,主控端通过CAN转以太网的网关连接到CAN总线上,采集CAN网络中的数据,或通过CAN网关发送特定的CAN控制消息到指定CAN设备,以完成数据采集、状态控制等功能。
现有方案存在的问题主要有:CAN网关和CAN转以太网设备均为硬件实现,尽管在一般场合工作良好,但对于微型应用和太空环境等要求严格的场合,因其占有一定的体积和重量而造成发射成本、功耗和体积的增加,很难满足需求。而全部采用CAN消息帧通信,又给数据处理和应用层编程带来了诸多不便。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种通过将CAN设备抽象为以太网接口,简化了硬件结构、扩大其适应范围、还能使上层应用更为广泛从而便于上层处理数据和应用编程的CAN总线上IP数据包和CAN消息之间数据格式相互转换的方法。
为解决上述技术问题,本发明采用以下技术方案:
一种CAN总线上IP数据包和CAN消息之间数据格式相互转换的方法,其特征在于,步骤为:
(1)CAN接口虚拟化:在系统中注册CAN设备时,按照注册以太网接口的标准格式注册,在定义输入输出接口模块时,使用自定义的IPoverCAN处理接口与网络层和CAN设备交互;IPoverCAN处理接口用来接收网络层发送的IP报文,经处理后发送至CAN总线;处理CAN总线上接收的CAN消息时,重组为IP报文交给网络层应用;
(2)发送IP报文和接收CAN消息:
发送IP报文时,通过调用以太网接口使用的Socket接口,经系统逐层调用后调用至IPoverCAN模块的发送模块,经分割模块处理后转换成CAN消息帧,然后再调用CAN驱动直接发送至CAN总线。
在接收CAN消息时,通过判断IPoCCtrl字段是否大于零,可以得知是否为IP包分割得来;如果是,则读取CAN消息源地址,再判断是起始、中间还是最后一个CAN消息;来自于同一个源地址的CAN消息放入同一个IP包缓冲区,直到组装成完整的IP包交付给上层;如果等于零,则为发向CAN设备的普通CAN消息处理。
作为本发明的进一步改进:
所述方法中所使用CAN帧格式的描述如下:
(1)将CAN帧第一字节尚未使用的第5-6位定义为IPoCCtrl字段;IPoCCtrl为1时表示此CAN消息为IP包所分割的第一个CAN消息,为2时表示为IP包所分割的中间的CAN消息,为3时表示IP包所分割的最后一个CAN消息;而当IPoCCtrl为0时,即表示此CAN消息非IP包分割得来,按照普通CAN消息处理;
(2)将CAN帧第2-3字节定义为目的CAN设备地址编号字段,第4-5字节定义为源CAN设备地址编号字段。
所述 IP包的分割流程为:
首先,发送端根据待发送IP包的目的IP地址查找对应的CAN设备地址,填充在CAN消息的识别码字段;将整个IP包分割成8字节一段的CAN消息载荷,同时根据需要填充IPoCCtrl字段和DLC字段;
IPoCCtrl字段填充规则是:将分割的第一个CAN消息的IPoCCtrl字段置为1,其余的CAN消息IPoCCtrl字段置为2,最后一个CAN消息的IPoCCtrl字段置为3;
DLC字段填充规则是:除最后一个CAN消息按照总长度减去之前所有CAN消息数据长度之和外,其余CAN消息长度均为8;
最后依次将分割和封装好的CAN消息发送至CAN设备发送缓冲区,由CAN驱动依次发送至CAN总线上。
所述CAN消息组装流程为:
CAN设备接收到CAN消息后,通过IPoCCtrl字段可以得知是否为IP包分割得来;如果大于零,则读取CAN消息源地址,再判断是起始(IPoCCtrl=1)、中间(IPoCCtrl=2)、还是最后一个(IPoCCtrl=3)CAN消息;来自于同一个源地址的CAN消息放入同一个IP包缓冲区,直到组装成完整的IP包交付给上层;
IPoverCAN接口开始时处于wait状态,接收到IPoCCtrl=1的CAN消息时,说明已经收到来自于CAN消息源CAN设备的IP报文,应进入rcv状态继续等待接收;rcv状态下,继续接收IPoCCtrl=2的CAN消息时仍处于rcv状态,直到接收到IPoCCtrl=3的结束CAN消息,从而进入结束状态,完成了一个IP报文的组装。
与现有技术相比,本发明的优点在于:
(1)采用本发明的方法后,摆脱了硬件的依赖,进而也避开了采用硬件实现时体积和质量的限制;
(2)本发明采用分层结构,具有较好的可重用性;
(3)本发明中,抽象为广泛应用的以太网接口,极大的方便了上层应用的开发。
附图说明
图1是本发明方法中所使用的CAN帧格式;
图2是本发明中发送IP报文时的处理流程示意图; 
图3是本发明中分割模块分割IP报文的示意图;
图4是本发明中接收CAN消息时的处理流程图; 
图5是本发明中组装模块组装IP报文的示意图;
图6是本发明中重组模块接收CAN消息时的状态转换图;
图7是本发明中多路缓冲区的示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图1所示,为本发明方法中所使用的CAN帧格式。其中FF字段为帧格式标志位,此处置1;RTR字段标识帧类型,RTR=0表示为数据帧,RTR=1表示为远程帧,DLC表示在帧类型为数据帧时的实际数据长度。其基础为CAN2.0B 扩展帧,具体修改描述如下:
(1)将CAN帧第一字节尚未使用的第5-6位定义为IPoCCtrl字段。IPoCCtrl为1时表示此CAN消息为IP包所分割的第一个CAN消息,为2时表示为IP包所分割的中间的CAN消息,为3时表示IP包所分割的最后一个CAN消息。而当IPoCCtrl为0时,即表示此CAN消息非IP包分割得来,按照普通CAN消息处理。
(2)将CAN帧第2-3字节定义为目的CAN设备地址编号字段,第4-5字节定义为源CAN设备地址编号字段。
本发明的CAN总线上IP数据包和CAN消息之间数据格式相互转换的方法,其步骤为:
(1)CAN接口虚拟化:在系统中注册CAN设备时,按照注册以太网接口的标准格式注册,在定义输入输出接口模块时,使用自定义的IPoverCAN处理接口与网络层和CAN设备交互;IPoverCAN处理接口用来接收网络层发送的IP报文,经处理后发送至CAN总线;处理CAN总线上接收的CAN消息时,重组为IP报文交给网络层应用。
IPoverCAN的接口具有MAC地址、IP地址等参数,其中MAC地址即为CAN设备地址,而IP地址等其余参数需要全网统一规划,并需要将IP地址和CAN设备地址之间的对应关系记录保存。
(2)发送IP报文和接收CAN消息:
发送IP报文时,通过调用以太网接口使用的Socket接口,经系统逐层调用后调用至IPoverCAN模块的发送模块,经分割模块处理后转换成CAN消息帧,然后再调用CAN驱动直接发送至CAN总线。
在接收CAN消息时,通过判断IPoCCtrl字段是否大于零,可以得知是否为IP包分割得来;如果是,则读取CAN消息源地址,再判断是起始、中间还是最后一个CAN消息;来自于同一个源地址的CAN消息放入同一个IP包缓冲区,直到组装成完整的IP包交付给上层;如果等于零,则为发向CAN设备的普通CAN消息处理。
参见图2和图3所示,本发明方法中IP包的分割流程为:
首先,发送端根据待发送IP包的目的IP地址查找对应的CAN设备地址,填充在CAN消息的识别码字段;将整个IP包分割成8字节一段的CAN消息载荷,同时根据需要填充IPoCCtrl字段和DLC字段。
IPoCCtrl字段填充规则是:将分割的第一个CAN消息的IPoCCtrl字段置为1,其余的CAN消息IPoCCtrl字段置为2,最后一个CAN消息的IPoCCtrl字段置为3。
DLC字段填充规则是:除最后一个CAN消息按照总长度减去之前所有CAN消息数据长度之和外,其余CAN消息长度均为8。
最后依次将分割和封装好的CAN消息发送至CAN设备发送缓冲区,由CAN驱动依次发送至CAN总线上。
需要说明的是,由于CAN总线没有以太网最小报文长度的限制,因此短报文无需做长度填充。
其中IPoverCAN_Send()表示供系统调用的设备发送模块,segment()表示IP报文分割模块,send_segment_buff_by_can()表示依次发送分割IP报文得到的CAN消息的模块,can_write()表示CAN驱动向CAN总线上发送数据的模块。
参见图4和图5所示,本发明方法中CAN消息组装流程为:
CAN设备接收到CAN消息后,通过IPoCCtrl字段可以得知是否为IP包分割得来。如果大于零,则读取CAN消息源地址,再判断是起始(IPoCCtrl=1)、中间(IPoCCtrl=2)还是最后一个(IPoCCtrl=3)CAN消息。来自于同一个源地址的CAN消息放入同一个IP包缓冲区,直到组装成完整的IP包交付给上层。
其中can_read()表示CAN驱动从CAN总线上接收CAN消息的模块,rcv_segment_buff_by_can()表示将CAN消息分类的模块,assemble()表示将待重组CAN消息的载荷放入IP报文缓冲区并重组为IP报文,IPoverCAN_Rcv()表示供系统调用的接收IP报文的模块。
对于接收的CAN消息,读取其IPoCCtrl字段,组装模块处理IPoCCtrl字段值的状态机,如图6所示。IPoverCAN接口开始时处于wait状态,接收到IPoCCtrl=1的CAN消息时,说明已经收到来自于CAN消息源CAN设备的IP报文,应进入rcv状态继续等待接收。rcv状态下,继续接收IPoCCtrl=2的CAN消息时仍处于rcv状态,直到接收到IPoCCtrl=3的结束CAN消息,从而进入结束状态,完成了一个IP报文的组装。0、1、2、3等数字表示接收到IPoCCtrl字段值分别为0、1、2、3时的状态转换关系。
进一步,对于卫星载荷和微型应用来说,可以将IP地址和CAN设备地址之间的对应关系事先保存在系统中。
进一步,当接收到不同源地址的CAN消息时,需要使用多路缓冲技术。每当接收一个新的CAN消息时,先判定IPoCCtrl字段是否大于零,如果是则将来自于同一个源地址的CAN消息载荷放入同一个IP报文缓冲区,否则新开辟一个缓冲区。这里有一个假定,即发送端发送IP报文时,底层CAN设备只有发送完一个IP报文且按顺序发送IP报文分片,才会发送另外的IP报文。根据CAN总线的特性,此假定能够成立。如图7所示,是多路缓冲区的示意图。依次接收到的CAN消息,通过判断其源地址确定其要放置的缓冲区,通过IPoCCtrl字段确定是新分配缓冲区、存往原有缓冲区还是可以将特定缓冲区所有数据重组成IP报文。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

Claims (4)

1.一种CAN总线上IP数据包和CAN消息之间数据格式相互转换的方法,其特征在于,步骤为:
(1)CAN接口虚拟化:在系统中注册CAN设备时,按照注册以太网接口的标准格式注册,在定义输入输出接口模块时,使用自定义的IPoverCAN处理接口与网络层和CAN设备交互;IPoverCAN处理接口用来接收网络层发送的IP数据包,经处理后发送至CAN总线;处理CAN总线上接收的CAN消息时,重组为IP数据包交给网络层应用;
(2)发送IP数据包和接收CAN消息:
发送IP数据包时,通过调用以太网接口使用的Socket接口,经系统逐层调用后调用至IPoverCAN模块的发送模块,经分割模块处理后转换成CAN消息,然后再调用CAN驱动直接发送至CAN总线;
在接收CAN消息时,通过判断IPoCCtrl字段是否大于零,可以得知是否为IP数据包分割得来;如果是,则读取CAN消息源地址,再判断是起始、中间还是最后一个CAN消息;来自于同一个源地址的CAN消息放入同一个IP数据包缓冲区,直到组装成完整的IP数据包交付给上层;如果等于零,则作为发向CAN设备的普通CAN消息处理。
2.根据权利要求1所述的CAN总线上IP数据包和CAN消息之间数据格式相互转换的方法,其特征在于,所述方法中所使用CAN消息格式的描述如下:
(1)将CAN消息第一字节尚未使用的第5-6位定义为IPoCCtrl字段;IPoCCtrl为1时表示此CAN消息为IP数据包所分割的第一个CAN消息,为2时表示为IP数据包所分割的中间的CAN消息,为3时表示IP数据包所分割的最后一个CAN消息;而当IPoCCtrl为0时,即表示此CAN消息非IP数据包分割得来,按照普通CAN消息处理;
(2)将CAN消息第2-3字节定义为目的CAN设备地址编号字段,第4-5字节定义为源CAN设备地址编号字段。
3.根据权利要求2所述的CAN总线上IP数据包和CAN消息之间数据格式相互转换的方法,其特征在于,所述 IP数据包的分割流程为:
首先,发送端根据待发送IP数据包的目的IP地址查找对应的CAN设备地址,填充在CAN消息的识别码字段;将整个IP数据包分割成8字节一段的CAN消息载荷,同时根据需要填充IPoCCtrl字段和DLC字段;
IPoCCtrl字段填充规则是:将分割的第一个CAN消息的IPoCCtrl字段置为1,其余的CAN消息IPoCCtrl字段置为2,最后一个CAN消息的IPoCCtrl字段置为3;
DLC字段填充规则是:除最后一个CAN消息按照总长度减去之前所有CAN消息数据长度之和外,其余CAN消息长度均为8;
最后依次将分割和封装好的CAN消息发送至CAN设备发送缓冲区,由CAN驱动依次发送至CAN总线上。
4.根据权利要求2所述的CAN总线上IP数据包和CAN消息之间数据格式相互转换的方法,其特征在于,所述CAN消息组装流程为:
CAN设备接收到CAN消息后,通过IPoCCtrl字段可以得知是否为IP数据包分割得来;如果大于零,则读取CAN消息源地址,再判断是起始IPoCCtrl=1、中间IPoCCtrl=2、还是最后一个IPoCCtrl=3的CAN消息;来自于同一个源地址的CAN消息放入同一个IP数据包缓冲区,直到组装成完整的IP数据包交付给上层;
IPoverCAN接口开始时处于wait状态,接收到IPoCCtrl=1的CAN消息时,说明已经收到来自于CAN消息源CAN设备的IP数据包,应进入rcv状态继续等待接收;rcv状态下,继续接收IPoCCtrl=2的CAN消息时仍处于rcv状态,直到接收到IPoCCtrl=3的结束CAN消息,从而进入结束状态,完成了一个IP数据包的组装。
CN201110172351.7A 2011-06-24 2011-06-24 Can总线上ip数据包和can消息之间数据格式相互转换的方法 Active CN102255800B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110172351.7A CN102255800B (zh) 2011-06-24 2011-06-24 Can总线上ip数据包和can消息之间数据格式相互转换的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110172351.7A CN102255800B (zh) 2011-06-24 2011-06-24 Can总线上ip数据包和can消息之间数据格式相互转换的方法

Publications (2)

Publication Number Publication Date
CN102255800A CN102255800A (zh) 2011-11-23
CN102255800B true CN102255800B (zh) 2014-04-02

Family

ID=44982804

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110172351.7A Active CN102255800B (zh) 2011-06-24 2011-06-24 Can总线上ip数据包和can消息之间数据格式相互转换的方法

Country Status (1)

Country Link
CN (1) CN102255800B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571572A (zh) * 2011-12-28 2012-07-11 中国人民解放军国防科学技术大学 基于短报文卫星通信的数据传输方法及装置
CN102739488B (zh) * 2012-06-15 2014-12-31 烽火通信科技股份有限公司 智能odn系统中基于can总线的通信方法
US9215168B2 (en) * 2012-07-23 2015-12-15 Broadcom Corporation Controller area network communications using ethernet
KR101536141B1 (ko) * 2014-02-13 2015-07-13 현대자동차주식회사 이더넷과 can 통신 간의 신호 변환을 제공하는 차량용 장치 및 그 제어방법
CN111131520B (zh) * 2020-01-09 2021-06-01 山东超越数控电子股份有限公司 一种基于边缘云环境的虚拟can口多路复用技术的实现方法
CN112422389B (zh) * 2020-11-20 2022-03-08 昆高新芯微电子(江苏)有限公司 基于芯片级加密的以太网和现场总线融合网关及传输方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101741766A (zh) * 2008-11-07 2010-06-16 北京广利核系统工程有限公司 一种can网到以太网转换装置和方法
KR20110057371A (ko) * 2009-11-24 2011-06-01 한국전자통신연구원 이더넷-캔 프레임 변환 전송 장치 및 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE50010109D1 (de) * 1999-02-26 2005-05-25 Siemens Ag Verfahren zum übertragen von ethernet-frames

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101741766A (zh) * 2008-11-07 2010-06-16 北京广利核系统工程有限公司 一种can网到以太网转换装置和方法
KR20110057371A (ko) * 2009-11-24 2011-06-01 한국전자통신연구원 이더넷-캔 프레임 변환 전송 장치 및 방법

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Michael Ditze,.Porting the Internet Protocol to the Controller Area Network.《RTLIA》.2003,全文. *
Per Lindgren, Simon Aittamaa, Johan Eriksson,.IP over CAN, Transparent Vehicular to Infrastructure Access.《Consumer Communications and Networking Conference》.2008,758~759. *
Weixin Zhang,.The Implementation of CAN-Ethernet Communication System on the Missile Simulation and Detection Platform.《Computer-Aided Industrial Design and Conceptual Design》.2008,全文. *
李 楠、周洁敏、黄 宁,.CAN总线与以太网连接方法研究.《工业控制计算机》.2007,第20卷(第1期),19~20页. *

Also Published As

Publication number Publication date
CN102255800A (zh) 2011-11-23

Similar Documents

Publication Publication Date Title
CN102255800B (zh) Can总线上ip数据包和can消息之间数据格式相互转换的方法
CN102202093B (zh) 一种实现传感器适配的方法和系统
CN102480462B (zh) 通用协议适配方法及装置
CN102790776B (zh) 心跳连接归一处理方法、终端、服务器及通信系统
CN102833112B (zh) 一种具有环网功能的通信管理机
CN103746783A (zh) 一种基于Modbus通讯协议的扩展型通讯方法
CN102891796B (zh) 矿用智能传输网关
CN108011797B (zh) 一种基于1553b协议的以太网通信系统
CN202679397U (zh) 实时工业以太网EtherCAT从站系统
CN104202300A (zh) 基于网络隔离装置的数据通信方法和装置
CN103647706A (zh) 一种自适配协议通信网关及通信平台
CN102624738A (zh) 一种串口服务器、协转芯片及数据传输方法
CN103326936A (zh) 多种异构感知层网络统一接入的多协议物联网网关
CN104937896A (zh) 地址解析协议消息的处理方法和转发器、控制器
CN103595598A (zh) 一种基于光纤的远程透明传输串口服务器及其控制模式
CN102195946A (zh) 基于arm技术的智能通信控制器
CN102438017B (zh) 基于路由功能的Modbus和BACnet Ethernet协议转化装置及转化方法
CN105356991A (zh) 一种驱动器实时同步通信装置
CN102789210A (zh) 支持协议可配置的一种工业总线接口
CN114338274B (zh) 一种异构工业现场总线融合方法及系统
CN104717050A (zh) 多帧速率系统
CN105284083A (zh) OpenFlow设备与IP网络设备通信的方法、装置和系统
CN102694790B (zh) 整合多个通信标准的方法以及封包或者信令传输方法
CN202230378U (zh) 终端可任意扩展的运动控制系统
CN114301995A (zh) 实时工业以太网协议的转换切换与互通融合系统及其方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant