CN112333066B - 一种提高can总线通讯可靠性的技术方法 - Google Patents
一种提高can总线通讯可靠性的技术方法 Download PDFInfo
- Publication number
- CN112333066B CN112333066B CN202011049857.4A CN202011049857A CN112333066B CN 112333066 B CN112333066 B CN 112333066B CN 202011049857 A CN202011049857 A CN 202011049857A CN 112333066 B CN112333066 B CN 112333066B
- Authority
- CN
- China
- Prior art keywords
- communication
- bus
- data
- reliability
- receiving
- 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
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40169—Flexible bus arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0631—Management of faults, events, alarms or notifications using root cause analysis; using analysis of correlation between notifications, alarms or events based on decision criteria, e.g. hierarchy, tree or time analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40215—Controller Area Network CAN
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明涉及一种提高CAN总线通讯可靠性的技术方法,其技术特点是:通过设置CAN总线通讯验证码和屏蔽码;CAN总线通讯波特率设置采取75%以上采样率的参数;CAN总线接收使用10次循环进行接收;CAN总线通讯写寄存器前后关闭和恢复接收中断;采用外部救援方法拯救CAN总线通讯错误故障;采用压力测试的方法测试CAN总线通讯的正确性和可靠性,实现了CAN总线通讯正确性和可靠性的提高。本发明能够在不影响实时接收数据不丢数据的前提下,CAN节点尽量少接收与自身无关数据少产生接收中断,保证CAN节点发送出来的数据均为预期数据。
Description
技术领域
本发明属于嵌入式通讯领域,尤其是一种提高CAN总线通讯可靠性的技术方法。
背景技术
控制器局域网络CAN总线是国际上应用最广泛的现场总线之一,它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。由于CAN总线本身的特点,其应用范围已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。特别是在军用领域,通讯的正确性和可靠性的重要性不言而喻。
在实际项目中,惯导设备做为一个CAN节点,能够接收到整车CAN网上的所有数据,其发送的数据也可以被在CAN网上的其它节点所接收。根据通讯协议,惯导设备实时接收CAN 网上的数据同时,以200Hz高频向CAN总线上发送三维姿态角信息。在实际整车使用过程中,出现了数据频率低于惯导发送的200Hz频率以及偶发出现数据报文校验不通过的问题,即出现了非预期数据,严重影响了通讯的正确性和可靠性。
发明内容
本发明的目的在于克服现有技术的不足,提出一种提高CAN总线通讯可靠性的技术方法,能够提高CAN总线通讯的正确性和可靠性。
本发明解决其技术问题是采取以下技术方案实现的:
一种提高CAN总线通讯可靠性的技术方法,包括以下步骤:
步骤1、设置CAN总线通讯验证码和屏蔽码;
步骤2、设置CAN总线通讯参数;
步骤3、CAN总线接收使用数次循环进行接收;
步骤4、CAN总线通讯写寄存器前后关闭和恢复接收中断;
步骤5、采用外部救援方法拯救CAN总线通讯错误故障;
步骤6、采用压力测试的方法测试CAN总线通讯的正确性和可靠性。
而且,所述步骤1的具体实现方法为:根据通讯协议规定的ID,计算CAN通讯验证码和屏蔽码,并设置CAN通讯验证码和屏蔽码。
而且,所述步骤2的具体实现方法为:CAN总线通讯波特率设置采取75%以上采样率的参数。
而且,所述步骤3的具体实现方法为:判断CAN总线在10次循环内是否接受到中断标志,若接收到中断则进行处理。
而且,所述步骤4的具体实现方法为:在判断为发送中断后,开始发送数据,此时关闭接收中断,数据写入发送寄存器,触发发送中断,使能接收中断。
而且,所述步骤5的具体实现方法为:CAN总线通讯产生错误时,错误寄存器会有错误标志,此时在CAN的中断服务函数以外进行判断,一旦判断检测到错误寄存器有错误标志后,重新初始化CAN芯片的方式恢复CAN的通讯。
而且,所述步骤6的具体实现方法为:采用多CAN节点模拟整个CAN网上的数据,数据设置为协议内的和协议外的干扰数据,采用高频率通讯和干扰通讯,实时查看数据的正确性和是否存在丢数现象。
本发明的优点和积极效果是:本发明通过设置CAN总线通讯验证码和屏蔽码;CAN总线通讯波特率设置采取75%以上采样率的参数;CAN总线接收使用10次循环进行接收;CAN总线通讯写寄存器前后关闭和恢复接收中断;采用外部救援方法拯救CAN总线通讯错误故障;采用压力测试的方法测试CAN总线通讯的正确性和可靠性,实现了CAN总线通讯正确性和可靠性的提高。本发明能够在不影响实时接收数据不丢数据的前提下,CAN节点尽量少接收与自身无关数据少产生接收中断,保证CAN节点发送出来的数据均为预期数据。
附图说明
图1是单滤波器扩展帧验收码和屏蔽码计算过程示意图;
图2是CAN总线通讯单次中断处理流程图;
图3是本发明CAN总线通讯写寄存器前后关闭和恢复接收中断流程图;
图4是本发明接收中断关闭时间测量流程图;
图5是本发明接收中断关闭时间测量波形图;
图6是测试环境搭建示意图。
具体实施方式
以下结合附图对本发明做进一步详述。
一种提高CAN总线通讯可靠性的技术方法,包括以下步骤:
步骤1、设置CAN总线通讯验证码和屏蔽码。根据通讯协议规定的ID,计算CAN总线通讯的验收码和屏蔽码,这样CAN芯片会在底层屏蔽掉一些与CAN自身节点无关的数据,从而在一定程度上能够有效的使CAN节点少产生接收中断。
如图1所示,为单滤波器扩展帧验收码和屏蔽码计算方法。
步骤2、CAN总线通讯波特率设置采取75%以上采样率的参数。CAN总线异常表现为:使用CAN盒和惯导点对点直接连接时通讯正常,当在上述两者间通过三轴转台进行CAN总线通讯时,实际接收到的数据频率会明显低于发送数据的频率,这是因为CAN总线为串行通讯,采样率的设置关系到数据被采集的正确性,是造成CAN总线存在电磁干扰时丢数的关键原因,同一波特率时不同采样率如表1所示。
表1
步骤3、CAN总线接收使用10次循环进行接收。判断CAN总线在10次循环内是否接受到中断标志,若接收到中断则进行处理。若不采用循环,只进行一次读取是否有接收中断时,因为CAN网上有大量的高频数据,会产生丢失数据或一直有未处理完的接收中断,从而CAN 芯片不再产生新的接收中断,造成通讯故障。同时若采用while循环,会导致无法跳出while 循环使得其它逻辑得不到执行。
步骤4、CAN总线通讯写寄存器前后关闭和恢复接收中断。通过本步骤能够有效的防止整个CAN网上的高频数据中断打乱CAN控制器往寄存器中写入非预期数据。惯导工作时会实时检验接收到的数据源地址是否是火控上位机、目的地址是否为惯导、帧ID是否与惯导通讯协议中规定的帧ID一致及数据校验是否正确。CAN总线上存在的大量数据帧会导致惯导CAN控制器频繁的产生接收中断,从而频繁的进入CAN接收中断服务函数,而与此同时如果惯导处于发送数据时,由于接收中断优先级高于发送中断,使数据发送流程不能被连续执行完毕,导致高频三维姿态数据写入CAN控制器发送寄存器时会写入非预期数据,从而导致CAN控制器发送出校验不通过的非预期数据。
如图2所示为CAN总线通讯单次中断处理流程图,其流程为:
⑴、CAN总线接收数据;
⑵、CAN控制器中断启动;
⑶、执行惯导中断服务函数;
⑷、判断是否为接收中断,若为接收中断,则进行⑸,否则进行⑽;
⑸、判断是否目的地址是惯导,若目的地址是惯导,则进行⑹,否则离开中断服务函数;
⑹、判断是否源地址是火控系统主节点,若源地址是火控系统主节点,则进行⑺,否则离开中断服务函数;
⑺、判断是否帧ID在协议内,若帧ID在协议内,则进行⑻,否则离开中断服务函数;
⑻、判断是否校验通过,若校验通过,则进行⑼,否则离开中断服务函数;
⑼、CAN进行数据处理,并离开中断服务函数;
⑽、判断是否为发送中断,若为发送中断,则将数据写入发送寄存器,使能发送中断,并离开中断服务函数,否则执行其他中断处理流程,并离开中断服务函数。
如图3所示为CAN总线通讯写寄存器前后关闭和恢复接收中断流程图,其步骤为:在判断为发送中断后,开始发送数据,此时关闭接收中断,数据写入发送寄存器,触发发送中断,使能接收中断。
由于采取的更改措施会在数据发送流程开始时关闭接收中断,在数据写入发送寄存器并触发发送中断后,才使能接收中断,因此在此期间可能存在影响惯导CAN总线控制器接收数据的风险。
由关闭接收中断导致接收数据丢失的原因是:在关闭中断期间,由于不产生接收中断,惯导不从RXFIFO中读取数据,CAN总线数据中却不断写RXFIFO,最终导致RXFIFO溢出,数据丢失。因此,若发送流程结束后使能接收中断时,RXFIFO没有写满溢出,接收到的数据就不会有损失而导致接收错误。
步骤5、采用外部救援方法拯救CAN总线通讯错误故障。CAN总线通讯产生错误时,错误寄存器会有错误标志,此时在CAN的中断服务函数以外进行判断,一旦判断检测到错误寄存器有错误标志后,重新初始化CAN芯片的方式恢复CAN的通讯。
步骤6、采用压力测试的方法测试CAN总线通讯的正确性和可靠性。采用多CAN节点模拟整个CAN网上的数据,数据设置为协议内的和协议外的干扰数据,采用高频率通讯和干扰通讯,开发数据接收检测软件,实时查看数据的正确性和是否存在丢数现象。
根据上述一种提高CAN总线通讯可靠性的技术方法,进行仿真测试以验证本发明。
惯导使用的CAN控制器型号为SJA1000,其RXFIFO为64字节,每帧数据最大13个字节,因此RXFIFO能够存储4帧数据。在波特率为250kbps的情况下,惯导接收1帧数据的时间为 13*10/250000,即为0.52毫秒。若关闭接收中断时长小于0.52毫秒,那么关闭接收中断的措施就不会影响惯导CAN总线上数据的接收。
接收中断关闭时间测量具体流程如图4所示。
⑴、开始发送数据;
⑵、指示灯管脚置高;
⑶、关闭接收中断;
⑷、将数据写入发送寄存器;
⑸、触发发送中断;
⑹、使能接收中断;
⑺、指示灯管脚置低。
首先更改惯导DSP软件,在关闭和打开接收中断的时刻分别将线路板LED指示灯管脚置高和置低,在上述流程执行期间,用示波器测量管脚高低电平变化时间,即为关闭接收中断时间。
经实际测量,关闭接收中断时间长度为0.025毫秒,示波器测量结果如图5所示,根据此测量结果,关闭接收中断时间长度远小于惯导接收1帧数据时长,因此该措施不影响惯导数据接收功能。
采用如图6所示的测试环境搭建示意图进行测试,采用实装200Hz惯导和双CAN盒模拟干扰数据,分别进行了5次连续2小时考核测试,共1440000帧数据,CAN通讯情况如表2所示。
表2
从表中可以看出,采用实装设备搭建的测试环境下,采取技术措施前CAN总线通讯存在大量的丢数现象和少量的非预期数据;而采取技术措施后,CAN总线通讯一切正常,丢数和非预期数据的情况没有发生,证明了采取的技术措施的有效性。
需要强调的是,本发明所述的实施例是说明性的,而不是限定性的,因此本发明包括并不限于具体实施方式中所述的实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,同样属于本发明保护的范围。
Claims (5)
1.一种提高CAN总线通讯可靠性的技术方法,其特征在于:包括以下步骤:
步骤1、设置CAN总线通讯验证码和屏蔽码;
步骤2、设置CAN总线通讯参数;
步骤3、CAN总线接收使用数次循环进行接收;
步骤4、CAN总线通讯写寄存器前后关闭和恢复接收中断;
本步骤的具体实现方法为:
在判断为发送中断后,开始发送数据,此时关闭接收中断,数据写入发送寄存器,触发发送中断,使能接收中断;
步骤5、采用外部救援方法拯救CAN总线通讯错误故障;
本步骤的具体实现方法为:
CAN总线通讯产生错误时,错误寄存器会有错误标志,此时在CAN的中断服务函数以外进行判断,一旦判断检测到错误寄存器有错误标志后,重新初始化CAN芯片的方式恢复CAN的通讯;
步骤6、采用压力测试的方法测试CAN总线通讯的正确性和可靠性。
2.根据权利要求1所述的一种提高CAN总线通讯可靠性的技术方法,其特征在于:所述步骤1的具体实现方法为:根据通讯协议规定的ID,计算CAN通讯验证码和屏蔽码,并设置CAN通讯验证码和屏蔽码。
3.根据权利要求1所述的一种提高CAN总线通讯可靠性的技术方法,其特征在于:所述步骤2的具体实现方法为:CAN总线通讯波特率设置采取75%以上采样率的参数。
4.根据权利要求1所述的一种提高CAN总线通讯可靠性的技术方法,其特征在于:所述步骤3的具体实现方法为:判断CAN总线在10次循环内是否接受到中断标志,若接收到中断则进行处理。
5.根据权利要求1所述的一种提高CAN总线通讯可靠性的技术方法,其特征在于:所述步骤6的具体实现方法为:采用多CAN节点模拟整个CAN网上的数据,数据设置为协议内的和协议外的干扰数据,采用高频率通讯和干扰通讯,实时查看数据的正确性和是否存在丢数现象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011049857.4A CN112333066B (zh) | 2020-09-29 | 2020-09-29 | 一种提高can总线通讯可靠性的技术方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011049857.4A CN112333066B (zh) | 2020-09-29 | 2020-09-29 | 一种提高can总线通讯可靠性的技术方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112333066A CN112333066A (zh) | 2021-02-05 |
CN112333066B true CN112333066B (zh) | 2022-06-10 |
Family
ID=74313391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011049857.4A Active CN112333066B (zh) | 2020-09-29 | 2020-09-29 | 一种提高can总线通讯可靠性的技术方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112333066B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115134184B (zh) * | 2022-06-07 | 2023-05-23 | 西北机电工程研究所 | 一种任意形式can总线通讯判断方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508486A (zh) * | 2011-11-09 | 2012-06-20 | 李伟 | 一种使用can通信数据协议的励磁故障诊断方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6823414B2 (en) * | 2002-03-01 | 2004-11-23 | Intel Corporation | Interrupt disabling apparatus, system, and method |
EP2719599A4 (en) * | 2011-06-07 | 2017-05-10 | Daesung Electric Co., Ltd. | Device and method for detecting error in dual controller system |
CN106469125B (zh) * | 2016-08-30 | 2019-08-06 | 浙江中控技术股份有限公司 | 一种基于fpga的总线通信控制器及总线通信控制方法 |
CN110334046A (zh) * | 2019-07-11 | 2019-10-15 | 南方电网科学研究院有限责任公司 | 一种spi全双工的通信方法、装置及系统 |
-
2020
- 2020-09-29 CN CN202011049857.4A patent/CN112333066B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508486A (zh) * | 2011-11-09 | 2012-06-20 | 李伟 | 一种使用can通信数据协议的励磁故障诊断方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112333066A (zh) | 2021-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10503848B2 (en) | Target capture and replay in emulation | |
US9384108B2 (en) | Functional built-in self test for a chip | |
US7171653B2 (en) | Systems and methods for providing communication between a debugger and a hardware simulator | |
US20080040636A1 (en) | Integrated circuit having a subordinate test interface | |
CN112333066B (zh) | 一种提高can总线通讯可靠性的技术方法 | |
CN109857087B (zh) | 一种城轨区域控制器系统硬件在环测试系统 | |
CN102662808B (zh) | 一种pcie硬件故障检测的实现方法与装置 | |
CN109508540B (zh) | 一种芯片安全监视方法和安全监视芯片 | |
CN117709046B (zh) | 一种基于uvm的APB_bridge子系统级的验证平台的搭建方法 | |
CN101923494B (zh) | 一种存储器控制器验证系统、方法及记分板 | |
US9117018B2 (en) | Method of debugging software and corresponding computer program product | |
CN109273045A (zh) | 存储设备在线检测方法、装置、设备及可读存储介质 | |
CN111865928A (zh) | 一种拟态交换机的安全性测试装置及测试方法 | |
CN103713977B (zh) | 一种微处理器ip核比较验证的实现方法 | |
CN106897469A (zh) | 一种测试环境生成方法及装置 | |
CN110456763A (zh) | 智能驾驶控制器的测试系统及方法 | |
CN112329369B (zh) | 一种在芯片仿真模型上进行软件调试的方法 | |
CN115658507A (zh) | 针对实时嵌入式软件源代码覆盖率分析系统 | |
CN104678292A (zh) | 一种复杂可编程逻辑器件cpld测试方法和装置 | |
CN113467222B (zh) | 主从冗余控制系统的数据同步方法及装置 | |
CN109032918B (zh) | 一种基于异常任务函数轨迹的感知节点程序异常诊断方法 | |
CN107817696B (zh) | 一种微观交通半物理仿真工具 | |
CN104123043B (zh) | 基于红外触摸屏触摸点识别算法的虚拟测试系统和方法 | |
CN117112396B (zh) | 覆盖率收集方法、组件、系统及相关设备 | |
CN110059390A (zh) | 待测器件验证装置及相关产品 |
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 |