CN113765938B - 一种基于can2.0b协议的应用层协议实现方法 - Google Patents
一种基于can2.0b协议的应用层协议实现方法 Download PDFInfo
- Publication number
- CN113765938B CN113765938B CN202111122734.3A CN202111122734A CN113765938B CN 113765938 B CN113765938 B CN 113765938B CN 202111122734 A CN202111122734 A CN 202111122734A CN 113765938 B CN113765938 B CN 113765938B
- Authority
- CN
- China
- Prior art keywords
- frame
- data
- value
- bits
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种基于CAN2.0B协议的应用层协议实现方法,包括以下步骤:步骤一:设计CAN总线帧ID域;步骤二:定义CAN消息管理结构体CAN_MANI;步骤三:设计导航计算机和飞控计算机进行数据通信。本发明通过对CAN总线29位ID值进行设计,将总线数据优先级信息、源节点ID信息、目的节点ID信息、以及帧类型信息、帧的消息功能信息全部存储于29位ID值不同的位域;对所接受的数据可以根据所填的源节点ID值以及目的节点ID值进行筛选,总线上数据按照优先级域所填值的大小进行排序;同时携带了表示该帧数据的帧类型以及消息功能类型。
Description
技术领域
本发明属于计算机控制技术领域,涉及一种基于CAN2.0B协议的应用层协议实现方法。
背景技术
CAN总线、即控制器局域网总线,是现代工业控制领域一种多主机局域网,属于实时应用的串行通讯总线,总线上没有主从节点之分,具有实时性强、传输距离远、抗电磁干扰能力强、成本低等优点,在传统工业领域以及航空航天领域均有广泛应用。
CAN总线标准只包含OSI模型的物理层和数据链路层,协议分为CAN2.0A协议和CAN2.0B协议,两种协议的主要区别为是否包含扩展消息格式(29位帧ID格式),CAN2.0A协议只支持标准消息格式(11位帧ID格式),CAN2.0B协议同时支持标准消息格式(11位帧ID格式)和扩展消息格式(29位帧ID格式),是CAN2.0A协议的超集。
CAN2.0B协议只支持到数据链路层,对于应用层协议则需要使用者自行进行定义。传统CAN总线将29位帧ID值作为CAN节点的ID值,将数据包每次最多填充8个字节进行分发。总线上的数据优先级完全由ID值的大小决定,且不能精确进行数据的屏蔽。因此在总线系统设计时,需要设计者精确设计每一个节点的ID值,在一个多节点的CAN总线网络中,这种传统设计方法效率低下。同时CAN总线的数据区每一帧最多包含8个字节的数据。总线传递信息过程中通常需要在数据区携带帧信息内容,需要占用数据区的资源,导致总线有效数据传输效率低下。
发明内容
(一)发明目的
本发明的目的是:提供一种基于CAN2.0B协议的应用层协议实现方法,基于CAN2.0B协议的应用层协议,将29位ID值划分为5个功能位域,并对这5个位域进行赋值,这种方式将CAN总线数据进行4级优先级的划分,并且可以根据目的节点ID域和源节点ID域进行数据筛选与屏蔽,并且在29位ID值中携带帧类型以及帧的消息功能类型,从而提高总线有效数据传输的效率。
(二)技术方案
为了解决上述技术问题,本发明提供一种基于CAN2.0B协议的应用层协议实现方法,包括以下步骤:
步骤一:设计CAN总线帧ID域
CAN总线帧ID域分为5个域:优先级域、目的节点ID域、源节点ID域、帧类型域、信息类型域。
步骤二:定义CAN消息管理结构体CAN_MANI
CAN消息管理结构体CAN_MANI包括帧优先级ManiPri、目的节点ID值ManiDstID、源节点ID值ManiSrcID、帧类型值ManiFrmType以及信息类型值ManiMsgType。
步骤三:设计导航计算机和飞控计算机进行数据通信
S1:定义CAN总线数据结构体CAN_FRAME并对CAN总线进行初始化,启动CAN总线数据接收线程,并转到S3;
S2:在CAN总线数据接收线程CANRecvTask中阻塞等待CAN总线数据并进行解析;
判断CAN总线数据的变量CanMani中信息类型值ManiMsgType的值;
如果信息类型值ManiMsgType的值为010B,表示此帧为数据信息帧回复帧,收到数据信息回复帧后转到S4;
如果信息类型值ManiMsgType的值为011B,表示超时重发帧,记录丢失帧序号LostNum并转到S5进行重发。
如果信息类型值ManiMsgType值为100B,表示消息传输完成帧;收到该帧后表示传输导航数据传输完成。
S3:导航计算机向飞控计算机发送导航数据,首先发送导航数据的数据信息帧。根据步骤一中定义的CAN总线帧ID域计算帧ID,分别填入报文优先级FrmPri,填入目的节点ID和源节点ID,填入帧类。帧ID值的最低三位填001B,表示数据信息帧。填入三个字节的CAN总线数据,第一字节表示导航数据的包数N。第二三字节表示导航数据帧的字节数。调用CAN底层发送函数CAN_WriteData(),将数据发送到总线上,转到S2。
S4:发送完整数据帧。
填入和数据信息帧相同的报文优先级FrmPri;填入目的节点ID和源节点ID;填入帧类型,循环填充CAN数据;第一个字节为数据帧的帧序号,帧序号依次增加,其他字节为数据内容;调用CAN底层发送函数CAN_WriteData(),将数据发送到总线上,转到S2。
S5:发送丢失数据帧。
填入和数据信息帧相同的报文优先级FrmPri;填入目的节点ID和源节点ID;填入帧类型,最低三位填入000B表示数据帧;填充数据帧的数据内容,第一个字节为帧序号,其他字节为丢失的CAN总线数据;调用CAN底层发送函数CAN_WriteData(),将数据发送到总线上,转到S2。
(三)有益效果
上述技术方案所提供基于CAN2.0B协议的应用层协议实现方法,通过对CAN总线29位ID值进行设计,将总线数据优先级信息、源节点ID信息、目的节点ID信息、以及帧类型信息、帧的消息功能信息全部存储于29位ID值不同的位域;对所接受的数据可以根据所填的源节点ID值以及目的节点ID值进行筛选,总线上数据按照优先级域所填值的大小进行排序;同时携带了表示该帧数据的帧类型以及消息功能类型。
附图说明
图1为本发明实施例基于CAN2.0B协议的应用层协议实现方法流程图。
具体实施方式
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
参照图1所示,本实施例基于CAN2.0B协议的应用层协议实现方法包括以下步骤:
步骤一:设计CAN总线的帧ID域
CAN报文使用扩展帧,将扩展帧29位ID分为5个功能位域,分别为优先级域,目的节点ID域,源节点ID域,帧类型域,信息类型域。
a.第29位到28位为优先级域,CAN总线帧报文ID值越小优先级越高,因此将最高两位设置为优先级域,且将优先级设置为四种,00B为表示一级优先级,01B表示二级优先级,10B表示三级优先级,11B表示四级优先级。(其中一级优先级为最高优先级,四级优先级为最低优先级)。
b.第27位到20位为目的节点域,表示目的节点ID值,占用一个字节。
c.第19位到第12位为源节点域,表示源节点ID值,占用一个字节。
d.第11位到第4位为帧类型域,表示帧类型值,在本实例中帧类型包括:导航数据帧0x01、飞行状态帧0x02、任务数据帧0x03。
e.最低3位为信息类型域,表示帧信息类型。在本实例中000B表示数据帧、001B表示数据信息帧、010B表示数据信息帧回复帧、011B表示超时重发帧、100B表示消息传输完成帧。
步骤二:定义CAN消息管理结构体CAN_MANI,此结构体所管理的内容为第一步所设计的CAN总线的帧ID域,结构体中包括5个成员变量:
a帧优先级ManiPri,对应帧ID域中的优先级域,类型为枚举类型,此变量赋值为0表示一级优先级,赋值为1表示二级优先级,赋值为2表示三级优先级,赋值为3表示四级优先级。
b目的节点ID值ManiDstID,对应帧ID域中的目的节点域,类型为无符号字符型。
c源节点ID值ManiSrcID,对应帧ID域中的源节点域,类型为无符号字符型。
d帧类型值ManiFrmType,对应帧ID域中的帧类型域,变量类型为无符号字符型。
e信息类型值ManiMsgType,对应帧ID域中的信息类型域,变量类型为无符号字符型。
步骤三:本发明以导航计算机为例,向飞控计算机中发送导航数据,并接收飞控计算机的报文,导航数据帧字节数共7(N-1)+M。导航计算机的帧ID值设置NAVID(占用一个字节,本实例中此值设置为0xC8),飞控计算机的ID设置为FCID(占用一个字节,本实例中此值设置为0xC9)。
S1:定义CAN总线数据结构体CAN_FRAME并对CAN总线进行初始化,启动CAN总线数据接收线程,操作完成后转到S3。
(1)定义CAN总线数据结构体CAN_FRAME,结构体中包括三个成员变量:①帧ID值can_id,类型设置为整型;②帧数据长度can_dlc,数据类型为整型;③总线上一次收到的数据can_data[8](最多8个字节)。
(2)对CAN总线进行初始化操作,将波特率设置为1M,接收掩码设置为0007F800(根据1中c将第12位到19位的值位1,其他位的值为0)。接收屏蔽码设置为FCID的值左移11位的值,帧类型设置为扩展帧。使用Vxworks操作系统底层任务创建函数taskSpawn()创建并启动CAN总线数据接收线程CANRecvTask。
(3)定义丢失帧序号LostNum,类型为无符号字符型数据。
(4)启动CAN总线数据接收线程,此线程属于监控处理线程,启动后跳转到S3,此线程则一直在后台运行。
S2:在CAN总线数据接收线程CANRecvTask中阻塞等待CAN总线数据并进行解析。
(1)使用系统中CAN数据接收函数CAN_ReadData()阻塞接收CAN数据,获取数据的ID值GetID,数据的长度GetDLC,数据的内容GetData[8](每次最多8个字节的CAN数据)。对收到的数据进行解析判断。定义CAN总线数据结构体CAN_FRAME变量CanFrm,将获取到数据帧ID值GetID赋值到变量CanFrm中的can_id成员。数据的长度GetDLC赋值到变量CanFrm中的can_dlc成员,循环GetDLC次将数据内容GetData赋值到变量CanFrm中的can_data成员(最多8个字节)。
(2)定义CAN消息管理结构体CAN_MANI类型变量CanMani。对获取到的ID值进行解析。①将can_id值右移28位,并且按位与上0x03,将计算后的值赋值给变量CanMani中的帧优先级ManiPri成员。②将can_id值右移20位,并且按位与上0xff,将计算的值赋值给变量CanMani中目的节点ID值ManiDstID。③将can_id值右移12位,并且按位与上0xff,将计算的值赋值给变量CanMani中源节点ID值ManiSrcID。④将can_id值右移4位,并且按位与上0xff,将计算的值赋值给变量CanMani中帧类型值ManiFrmType。⑤将can_id值按位与上0x07,将计算后的值赋值给变量CanMani中信息类型值ManiMsgType。
(3)判断变量CanMani中帧类型值ManiFrmType是否为0x01(表示导航数据帧),如果判断为假则直接返回。等待接收下一帧数据。如果判断为真,则判断变量CanMani中信息类型值ManiMsgType的值:
如果信息类型值ManiMsgType值为010B,表示此帧为数据信息帧回复帧,收到数据信息回复帧后转到S4
如果值为011B表示超时重发帧:
判断变量CanFrm中数据内容成员can_data的第一个元素can_data[0]的值,该值表示帧的序号。将该值赋值给LostNum。转到S5。
如果值为100B表示消息传输完成帧:
收到该帧后表示传输导航数据传输完成。
S3:导航计算机向飞控计算机发送导航数据,首先发送导航数据的数据信息帧:
定义S1中设计的CAN总线结构体CAN_FRAME变量SendData。
根据PRE1定义的帧ID域计算帧ID,分别填入报文优先级FrmPri(占用29位帧ID的29位到28位),填入目的节点ID值FCID(占用29位帧ID的27位到20位)和源节点ID值NAVID(占用29位帧ID的19位到12位),填入帧类型值为FrameType(导航数据帧0x01,占用29位帧ID的11位到4位)。帧ID值的最低三位填001B,表示数据信息帧。将计算后的帧ID赋值给CAN总线结构体变量SendData中的can_id成员。
此报文长度信息DLC设置为3,将长度3赋值给结构体变量SendData中的can_dlc。3个有效字节分别为:第一字节表示导航数据的包数N。第二三字节表示导航数据帧的字节数7(N-1)+M(M>=1且M<7)(其中第二字节为高字节,第三字节为低字节)。将三个字节分别拷贝到CAN总线结构体变量SendData中can_data[8]的前三个字节。
调用CAN底层发送函数CAN_WriteData()。以CAN总线结构体CAN_FRAME变量SendData为参数,将导航数据信息帧发送到CAN总线上,此时跳转到S2。
S4:发送完整数据帧,本实例中以发送导航数据帧为例,填入和数据信息帧相同的报文优先级FrmPri(占用29位帧ID的29位到28位),填入目的节点ID(占用29位帧ID的27位到20位)和源节点ID(占用29位帧ID的19位到12位),填入帧类型,值为FrameType(本实例中导航数据帧0x01,占用29位帧ID的11位到4位),最低三位填入000B表示数据帧。
循环填充数据帧的数据内容(最多8个字节)。第一个字节为数据帧的帧序号,帧序号依次增加,第一帧从1开始,最后一帧为N,总的字节数为7(N-1)+M(M>=1且M<7)。帧号为1到N-1时,将7个字节的数据复制到数据帧的后7个字节。帧号为N时,将M个字节的数据复制到数据帧的数据内容,此时跳转到S2。
S5:发送丢失的数据帧,填入和数据信息帧相同的报文优先级FrmPri(占用29位帧ID的29位到28位)。填入目的节点ID(占用29位帧ID的27位到20位)和源节点ID(占用29位帧ID的19位到12位)。填入帧类型,值为FrameType(本实例中导航数据帧0x01,占用29位帧ID的11位到4位)。最低三位填入000B表示数据帧。
填充数据帧的数据内容,第一个字节为帧序号,帧序号为LostNum
将DataBuffer中偏移7*(LostNum-1)位置的7个字节数据拷贝到CAN总线帧的数据段,此时跳转到S2。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (7)
1.一种基于CAN2.0B协议的应用层协议实现方法,其特征在于,包括以下步骤:
步骤一:设计CAN总线帧ID域;
步骤二:定义CAN消息管理结构体CAN_MANI;
步骤三:设计导航计算机和飞控计算机进行数据通信;
所述步骤一中,CAN总线帧ID域分为5个域:优先级域、目的节点ID域、源节点ID域、帧类型域、信息类型域;
所述步骤二中,CAN消息管理结构体CAN_MANI包括帧优先级ManiPri、目的节点ID值ManiDstID、源节点ID值ManiSrcID、帧类型值ManiFrmType以及信息类型值ManiMsgType;
所述步骤三包括以下子步骤:
S1:定义CAN总线数据结构体CAN_FRAME并对CAN总线进行初始化,启动CAN总线数据接收线程,并转到S3;
S2:在CAN总线数据接收线程CANRecvTask中阻塞等待CAN总线数据并进行解析;
判断CAN总线数据的变量CanMani中信息类型值ManiMsgType的值;
如果信息类型值ManiMsgType的值为010B,表示此帧为数据信息帧回复帧,收到数据信息回复帧后转到S4;
如果信息类型值ManiMsgType的值为011B,表示超时重发帧,记录丢失帧序号LostNum并转到S5进行重发;
如果信息类型值ManiMsgType值为100B,表示消息传输完成帧;收到该帧后表示传输导航数据传输完成;
S3:导航计算机向飞控计算机发送导航数据,首先发送导航数据的数据信息帧;根据步骤一中定义的CAN总线帧ID域计算帧ID,分别填入报文优先级FrmPri,填入目的节点ID和源节点ID,填入帧类;帧ID值的最低三位填001B,表示数据信息帧;填入三个字节的CAN总线数据,第一字节表示导航数据的包数N;第二三字节表示导航数据帧的字节数;调用CAN底层发送函数CAN_WriteData(),将数据发送到总线上,转到S2;
S4:发送完整数据帧
填入和数据信息帧相同的报文优先级FrmPri;填入目的节点ID和源节点ID;填入帧类型,循环填充CAN数据;第一个字节为数据帧的帧序号,帧序号依次增加,其他字节为数据内容;调用CAN底层发送函数CAN_WriteData(),将数据发送到总线上,转到S2;
S5:发送丢失数据帧
填入和数据信息帧相同的报文优先级FrmPri;填入目的节点ID和源节点ID;填入帧类型,最低三位填入000B表示数据帧;填充数据帧的数据内容,第一个字节为帧序号,其他字节为丢失的CAN总线数据;调用CAN底层发送函数CAN_WriteData(),将数据发送到总线上,转到S2。
2.如权利要求1所述的基于CAN2.0B协议的应用层协议实现方法,其特征在于,所述步骤一中,CAN报文使用扩展帧,将扩展帧29位ID分为5个功能位域:
第29位到28位为优先级域,CAN总线帧报文ID值越小优先级越高,将优先级设置为四种,00B为表示一级优先级,01B表示二级优先级,10B表示三级优先级,11B表示四级优先级;
第27位到20位为目的节点域,表示目的节点ID值,占用一个字节;
第19位到第12位为源节点域,表示源节点ID值,占用一个字节;
第11位到第4位为帧类型域,表示帧类型值,帧类型包括:导航数据帧0x01、飞行状态帧0x02、任务数据帧0x03;
最低3位为信息类型域,表示帧信息类型;000B表示数据帧、001B表示数据信息帧、010B表示数据信息帧回复帧、011B表示超时重发帧、100B表示消息传输完成帧。
3.如权利要求2所述的基于CAN2.0B协议的应用层协议实现方法,其特征在于,所述步骤二中,CAN消息管理结构体CAN_MANI中包括的5个成员变量分别为:
帧优先级ManiPri,对应帧ID域中的优先级域,类型为枚举类型,此变量赋值为0表示一级优先级,赋值为1表示二级优先级,赋值为2表示三级优先级,赋值为3表示四级优先级;
目的节点ID值ManiDstID,对应帧ID域中的目的节点域,类型为无符号字符型;
源节点ID值ManiSrcID,对应帧ID域中的源节点域,类型为无符号字符型;
帧类型值ManiFrmType,对应帧ID域中的帧类型域,变量类型为无符号字符型;
信息类型值ManiMsgType,对应帧ID域中的信息类型域,变量类型为无符号字符型。
4.如权利要求3所述的基于CAN2.0B协议的应用层协议实现方法,其特征在于,所述步骤三中,导航数据帧字节数共7(N-1)+M,导航计算机的帧ID值设置NAVID,飞控计算机的ID值设置为FCID;
子步骤S1中,CAN总线数据结构体CAN_FRAME中包括三个成员变量:帧ID值can_id,类型设置为整型;帧数据长度can_dlc,数据类型为整型;总线上一次收到的数据can_data[8];CAN总线进行初始化操作时,波特率设置为1M,接收掩码设置为0007F800,接收屏蔽码设置为FCID的值左移11位的值,帧类型设置为扩展帧,使用Vxworks操作系统底层任务创建函数taskSpawn()创建并启动CAN总线数据接收线程CANRecvTask;定义丢失帧序号LostNum,类型为无符号字符型数据;启动CAN总线数据接收线程,此线程属于监控处理线程,启动后跳转到S3,此线程则一直在后台运行。
5.如权利要求4所述的基于CAN2.0B协议的应用层协议实现方法,其特征在于,所述子步骤S2的过程如下:
使用系统中CAN数据接收函数CAN_ReadData()阻塞接收CAN数据,获取数据的ID值GetID,数据的长度GetDLC,数据的内容GetData[8],对收到的数据进行解析判断;定义CAN总线数据结构体CAN_FRAME变量CanFrm,将获取到数据帧ID值GetID赋值到变量CanFrm中的can_id成员;数据的长度GetDLC赋值到变量CanFrm中的can_dlc成员,循环GetDLC次将数据内容GetData赋值到变量CanFrm中的can_data成员;
定义CAN消息管理结构体CAN_MANI类型变量CanMani,对获取到的ID值进行解析:将can_id值右移28位,并且按位与上0x03,将计算后的值赋值给变量CanMani中的帧优先级ManiPri成员;将can_id值右移20位,并且按位与上0xff,将计算的值赋值给变量CanMani中目的节点ID值ManiDstID;将can_id值右移12位,并且按位与上0xff,将计算的值赋值给变量CanMani中源节点ID值ManiSrcID;将can_id值右移4位,并且按位与上0xff,将计算的值赋值给变量CanMani中帧类型值ManiFrmType;将can_id值按位与上0x07,将计算后的值赋值给变量CanMani中信息类型值ManiMsgType;
判断变量CanMani中帧类型值ManiFrmType是否为0x01,如果判断为假则直接返回,等待接收下一帧数据;如果判断为真,则判断变量CanMani中信息类型值ManiMsgType的值:
如果信息类型值ManiMsgType值为010B,表示此帧为数据信息帧回复帧,收到数据信息回复帧后转到S4;
如果值为011B表示超时重发帧:
判断变量CanFrm中数据内容成员can_data的第一个元素can_data[0]的值,该值表示帧的序号,将该值赋值给LostNum,转到S5;
如果值为100B表示消息传输完成帧:
收到该帧后表示传输导航数据传输完成。
6.如权利要求5所述的基于CAN2.0B协议的应用层协议实现方法,其特征在于,所述子步骤S3的过程如下:
定义S1中设计的CAN总线结构体CAN_FRAME变量SendData;
根据步骤一的帧ID域计算帧ID,分别填入报文优先级FrmPri,占用29位帧ID的29位到28位;填入目的节点ID值FCID,占用29位帧ID的27位到20位;填入源节点ID值NAVID,占用29位帧ID的19位到12位;填入帧类型值为FrameType,导航数据帧0x01,占用29位帧ID的11位到4位;帧ID值的最低三位填001B,表示数据信息帧;将计算后的帧ID赋值给CAN总线结构体变量SendData中的can_id成员;
此报文长度信息DLC设置为3,将长度3赋值给结构体变量SendData中的can_dlc;3个有效字节分别为:第一字节表示导航数据的包数N,第二三字节表示导航数据帧的字节数7(N-1)+M,M>=1且M<7;将三个字节分别拷贝到CAN总线结构体变量SendData中can_data[8]的前三个字节;
调用CAN底层发送函数CAN_WriteData(),以CAN总线结构体CAN_FRAME变量SendData为参数,将导航数据信息帧发送到CAN总线上,此时跳转到S2。
7.如权利要求6所述的基于CAN2.0B协议的应用层协议实现方法,其特征在于,所述子步骤S4中,发送导航数据帧时,填入和数据信息帧相同的报文优先级FrmPri,占用29位帧ID的29位到28位;填入目的节点ID,占用29位帧ID的27位到20位;填入源节点ID,占用29位帧ID的19位到12位;填入帧类型,值为FrameType;最低三位填入000B表示数据帧;
循环填充数据帧的数据内容,第一个字节为数据帧的帧序号,帧序号依次增加,第一帧从1开始,最后一帧为N,总的字节数为7(N-1)+M,M>=1且M<7;帧号为1到N-1时,将7个字节的数据复制到数据帧的后7个字节,帧号为N时,将M个字节的数据复制到数据帧的数据内容,此时跳转到S2;
子步骤S5中,发送丢失的数据帧,填入和数据信息帧相同的报文优先级FrmPri,占用29位帧ID的29位到28位;填入目的节点ID,占用29位帧ID的27位到20位;填入源节点ID,占用29位帧ID的19位到12位);填入帧类型,值为FrameType,最低三位填入000B表示数据帧;
填充数据帧的数据内容,第一个字节为帧序号,帧序号为LostNum,将DataBuffer中偏移7*(LostNum-1)位置的7个字节数据拷贝到CAN总线帧的数据段,此时跳转到S2。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111122734.3A CN113765938B (zh) | 2021-09-24 | 2021-09-24 | 一种基于can2.0b协议的应用层协议实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111122734.3A CN113765938B (zh) | 2021-09-24 | 2021-09-24 | 一种基于can2.0b协议的应用层协议实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113765938A CN113765938A (zh) | 2021-12-07 |
CN113765938B true CN113765938B (zh) | 2023-06-06 |
Family
ID=78797256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111122734.3A Active CN113765938B (zh) | 2021-09-24 | 2021-09-24 | 一种基于can2.0b协议的应用层协议实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113765938B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115941128B (zh) * | 2022-11-07 | 2024-09-20 | 天津津航计算技术研究所 | 一种基于QCache的报文协议超时重发管理方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104333517A (zh) * | 2014-09-28 | 2015-02-04 | 航天科工深圳(集团)有限公司 | 基于can总线的自动化设备通信方法 |
CN110380842A (zh) * | 2019-08-08 | 2019-10-25 | 北方工业大学 | 适用于智慧网联汽车的can总线报文签名方法、装置和系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1333376C (zh) * | 2004-03-04 | 2007-08-22 | 深圳市泛海三江电子有限公司 | 基于can2.0b的火灾报警应用层数据传输方法 |
JP6206232B2 (ja) * | 2014-02-13 | 2017-10-04 | 株式会社デンソー | 車載制御装置 |
CN112985376B (zh) * | 2021-03-08 | 2024-03-15 | 中国电子科技集团公司第二十研究所 | 一种导航传感器自适应接口实现方法 |
-
2021
- 2021-09-24 CN CN202111122734.3A patent/CN113765938B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104333517A (zh) * | 2014-09-28 | 2015-02-04 | 航天科工深圳(集团)有限公司 | 基于can总线的自动化设备通信方法 |
CN110380842A (zh) * | 2019-08-08 | 2019-10-25 | 北方工业大学 | 适用于智慧网联汽车的can总线报文签名方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113765938A (zh) | 2021-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111314023B (zh) | 一种树型网络拓扑信息的同步方法 | |
CN113765938B (zh) | 一种基于can2.0b协议的应用层协议实现方法 | |
CN113890899B (zh) | 一种基于知识图谱的协议转换方法 | |
CN113542277B (zh) | Canopen设备通过tsn网络桥接的方法、系统、介质及装置 | |
EP0961453A1 (en) | Method and device for identifying devices in a communication network | |
CN115914402B (zh) | 算力资源节点的确定方法、装置、设备以及存储介质 | |
CN104092515B (zh) | 兼容can2.0b协议的can总线通信方法 | |
CN107623555B (zh) | 一种通用型通信仿真平台的实现方法及装置 | |
Cena et al. | On the performances of two popular fieldbuses | |
CN113141322A (zh) | 一种数据通信方法、数据通信装置及计算机存储介质 | |
TW202201931A (zh) | 透過操作虛擬區網標籤在時間敏感網路與非時間敏感網路之間路由封包之裝置及方法 | |
CN107277011A (zh) | 终端设备的数据分类方法及装置 | |
KR20030029525A (ko) | 표준 phy 칩을 사용한 1394 버스 상에 다수의자기-id 패킷들을 생성하기 위한 방법 및 시스템 | |
Hasnaoui et al. | An implementation of a proposed modification of CAN protocol on CAN fieldbus controller component for supporting a dynamic priority policy | |
Cena et al. | A distributed mechanism to improve fairness in CAN networks | |
CN113067761B (zh) | 基于opnet的线性令牌数据总线仿真平台 | |
WO2022127222A1 (zh) | 数据传输方法、装置、系统、电子设备和存储介质 | |
CN113810291B (zh) | 通过置换虚拟区网标签而为时间敏感网络路由封包的装置及方法 | |
CN114629970A (zh) | 一种tcp/ip流量还原方法 | |
Lu | AUTOMATED VALIDATION OF COMMUNICATION PROTOCOLS (NETWORK) | |
CN118201106B (zh) | 一种基于5g技术的工业互联网实时数据调度方法 | |
Hasnaoui et al. | A proposal modification of CAN protocol to support a dynamic priority policy being able to be implemented on CAN fieldbus controller components | |
CN116781803A (zh) | 一种局域网节点数据交互方法、介质和系统 | |
So | Delay modeling and controller design for networked control systems | |
Gil | Modelação e Simulação de Equipamentos de Rede para Indústria 4.0 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |