CN113342319A - 一种can故障诊断的软件代码自动生成的方法及系统 - Google Patents
一种can故障诊断的软件代码自动生成的方法及系统 Download PDFInfo
- Publication number
- CN113342319A CN113342319A CN202110565072.0A CN202110565072A CN113342319A CN 113342319 A CN113342319 A CN 113342319A CN 202110565072 A CN202110565072 A CN 202110565072A CN 113342319 A CN113342319 A CN 113342319A
- Authority
- CN
- China
- Prior art keywords
- fault
- function
- diagnosis
- condition
- state
- 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.)
- Granted
Links
- 238000003745 diagnosis Methods 0.000 title claims abstract description 143
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000006870 function Effects 0.000 claims abstract description 193
- 238000001514 detection method Methods 0.000 claims abstract description 157
- 238000012790 confirmation Methods 0.000 claims abstract description 9
- 238000011084 recovery Methods 0.000 claims description 65
- 230000007246 mechanism Effects 0.000 claims description 18
- 238000012795 verification Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 10
- 125000004122 cyclic group Chemical group 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 4
- 238000013461 design Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 6
- 239000002184 metal Substances 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/079—Root cause analysis, i.e. error or fault diagnosis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Computer Security & Cryptography (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种CAN故障诊断的软件代码自动生成的方法及系统,包括以下步骤:解析CAN故障诊断文件,生成CAN故障状态检测函数:步骤C,生成CAN故障使能检测条件函数;步骤D,生成CAN故障确认函数;本发明可直接将CAN故障诊断方案文件生成软件代码,并且生成的软件代码文件可直接替换到工程文件中进行使用,提升CAN故障诊断软件设计的效率和正确性,保证CAN信号的有效性,保证车辆各项功能的安全实现。
Description
技术领域
本发明涉及汽车CAN故障诊断技术领域,具体涉及CAN故障诊断的软件代码自动生成的方法。
背景技术
整车控制器作为新能源汽车的中央控制单元,主要通过IO硬线和CAN总线实现与其他电气系统的信息交互,是整个控制系统的核心,其中在CAN总线上接收的每一个CAN信号又对整车控制器作出相应的控制决策起着重要意义,因此诊断CAN信号的正确性和有效性是必不可少的,并且当诊断出CAN处于故障状态时,可以及时通过故障处理措施保障车辆安全运行并提示驾驶员。目前CAN诊断有CAN丢帧、Counter计数、CRC校验三种故障类型,其中Counter计数、CRC校验包括多种故障校验算法,同时每一种诊断类型包括故障使能条件、故障检测条件两个必要条件。当前完全依靠工程师根据诊断方案分析理解后进行手编代码,而伴随着功能的增加,诊断数量会越来越多,这就需要工程师花费大量的时间和精力对诊断方案进行分析理解,然后再转化为软件代码,这样不仅效率低且容易出错,此外由于每一个工程师书写代码的习惯不一致,导致后续软件维护有一定难度。
发明内容
本发明的目的是提供一种CAN故障诊断的软件代码自动生成方法及系统,解决的技术问题:当前通过人工对CAN故障诊断方案进行手编代码,效率低、易出错且不易后期维护。
为了解决上述技术问题,本发明提供了如下技术方案,一种CAN故障诊断的软件代码自动生成的方法,包括以下步骤:
步骤A,解析CAN故障诊断文件,得到CAN故障类型、CAN故障校验算法类型、唤醒条件、使能条件、检测条件及故障恢复机制;
步骤B,生成CAN故障状态检测函数:将所述CAN故障类型作为第一层检索条件,所述CAN故障校验算法类型作为第二层检索条件,当同时满足上述两层检索条件时,先调用预先设计定义的CAN故障状态算法函数得到CAN状态临时值,再调用预先设计定义的CAN故障状态检测函数,将所述唤醒条件、检测条件及所述CAN状态临时值作为预先设计定义的所述CAN故障状态检测函数的实参,得到CAN故障检测状态;
步骤C,生成CAN故障使能检测条件函数:根据所述CAN故障类型调用预先定义的CAN故障使能条件检测函数,将所述唤醒条件、使能条件及所述CAN故障检测状态作为预先定义的所述CAN故障使能条件检测函数实参,得到待确认CAN故障;
步骤D,生成CAN故障确认函数:根据所述故障恢复机制调用预先定义的CAN故障恢复函数,将所述待确认CAN故障作为预先定义的所述CAN故障恢复函数实参,得到CAN故障诊断值。
优选地,
在所述步骤B中,首先判定所述CAN故障类型是否为CAN丢帧诊断,如果是,则调用CAN算法函数,返回CAN丢帧状态临时值,再调用CAN丢帧状态检测函数,将所述唤醒条件、检测条件及所述CAN丢帧状态作为所述CAN丢帧状态检测函数实参,所述CAN丢帧状态检测函数的返回值赋给CAN丢帧故障检测状态。
如果不是CAN丢帧判断,则判断所述CAN故障类型是否为Counter计数诊断,如果是,判断识别所属Counter计数算法的类别,调用相应Counter算法函数,返回Counter状态临时值,再调用相应Counter状态检测函数,将所述唤醒条件、检测条件及所述Counter状态作为所述Counter状态检测函数实参,所述Counter状态检测函数的返回值赋给CNT故障检测状态。
如果所述CAN故障类型既不是所述CAN丢帧诊断和所述Counter计数诊断,而是CRC校验诊断,则判断识别所属CRC算法的类别,调用相应CRC算法函数,返回Crc状态临时值,再调用相应CRC状态检测函数,将所述唤醒条件、检测条件及所述Crc状态作为所述CRC状态检测函数实参,所述CRC状态检测函数的返回值赋给CRC故障检测状态;
如果所述故障类型超出所述CAN丢帧诊断、Counter计数诊断及CRC校验诊断三种类型,则异常终止并在日志中进行文字提示。
优选地,
在所述步骤C中,首先判断所述CAN故障类型是否为CAN丢帧诊断,如果是,则调用CAN丢帧使能条件检测函数,将所述唤醒条件、使能条件及所述CAN丢帧故障检测状态作为所述CAN丢帧使能条件检测函数实参,所述CAN丢帧使能条件检测函数的返回值赋给待确认CAN丢帧故障。
如果所述故障类型不是CAN丢帧诊断,则判断故障类型是否为Counter计数诊断,如果是,则调用Counter使能条件检测函数,将所述唤醒条件、使能条件及所述CAN故障检测状态作为所述Counter使能条件检测函数实参,将所述Counter使能条件检测函数的返回值赋给待确认CNT故障。
如果所述CAN故障类型不是Counter计数诊断,则判断CAN故障类型是否为CRC校验诊断,如果是,则调用CRC使能条件检测函数,将所述唤醒条件、使能条件及所述CRC故障检测状态作为所述CRC使能条件检测函数实参,所述CRC使能条件检测函数的返回值赋给待确认CRC故障。
如果所述故障类型超出所述CAN丢帧诊断、Counter计数诊断及CRC校验诊断三种类型,则异常终止并在日志中进行文字提示。
优选地,
在所述步骤D中,首先判断所述故障恢复机制是否不可恢复,如果是不可恢复的,则调用不可恢复函数,所述待确认CAN故障作为所述不可恢复函数实参,所述不可恢复函数的返回值赋给CAN故障诊断信号。
如果不是不可恢复的,则再判断是否为立即恢复,如果是立即恢复,则调用立即恢复函数,所述待确认CAN故障作为所述立即恢复函数实参,所述立即恢复函数的返回值赋给CAN故障诊断信号。
如果所述故障恢复机制不是立即恢复,则再判断是否为钥匙下电恢复,如果是,则调用钥匙下电恢复函数,所述待确认CAN故障作为所述钥匙下电恢复函数实参,所述调用钥匙下电恢复函数的返回值赋给CAN故障诊断信号。
如果所述故障类型超出所述不可恢复、立即恢复、钥匙下电恢复三种类型,则异常终止并在日志中进行文字提示。
优选地,
在所述步骤A中,读取所述CAN故障诊断文件,首先判断所述CAN故障诊断文件的工作服薄中是否有“CAN状态”工作表,如果否,则直接提示加载文件错误,结束执行流程,如果是,按行、列获取CAN故障诊断信息,将所述CAN故障诊断信息存储在DiagCAN结构体中。
然后以for循环清除所述CAN故障诊断信息中的空白行:首先判定是否为空白行,如果是空白行,则剔除空白行,如果不是空白行,则清除信号名中的空格符号,将处理后的所述CAN故障诊断信息存储在DiagCANChecked结构体中,继而判定是否遍历结束,如果否,则循环上述流程,直至遍历结束,当遍历结束时,按照规范重命名CANID列的信息,将CANID处理后的信息存储在DiagCANChecked结构体中。
优选地,
预先定义的所述CAN故障状态算法函数包括CAN丢帧算法、Counter计数算法及CRC校验算法。
优选地,预先定义的所述CAN故障使能条件检测函数的数量等于所述CAN丢帧算法、Counter计数算法及CRC校验算法三种算法的数量之和。
优选地,预先定义的所述CAN故障使能条件检测函数包括CAN丢失函数、Counter计数函数及CRC校验函数。
本发明还提供了一种CAN故障诊断的软件代码自动生成系统,包括:
CAN故障诊断文件解析模块,用于对CAN故障诊断文件进行解析,以得到CAN故障类型、CAN故障校验算法类型、唤醒条件、使能条件、检测条件及故障恢复机制。
生成CAN故障状态检测函数模块,用于生成所述CAN故障诊断文件的CAN故障状态检测函数,将所述CAN故障类型作为第一层检索条件,所述CAN故障校验算法类型作为第二层检索条件,当同时满足上述两层检索条件时,先调用预先设计定义的CAN故障状态算法函数得到CAN状态临时值,再调用预先设计定义的CAN故障状态检测函数,将所述唤醒条件、检测条件及所述CAN状态临时值作为预先设计定义的所述CAN故障状态检测函数的实参,得到CAN故障检测状态。
生成CAN故障使能检测条件函数模块,用于生成所述CAN故障诊断文件的CAN使能条件函数,根据所述CAN故障类型调用预先定义的CAN故障使能条件检测函数,将所述唤醒条件、使能条件及所述CAN故障检测状态作为预先定义的所述CAN故障使能条件检测函数实参,得到待确认CAN故障。
生成CAN故障确认函数模块:用于生成所述CAN故障诊断文件的CAN故障确认函数,根据所述故障恢复机制调用预先定义的CAN故障恢复函数,将所述待确认CAN故障作为预先定义的所述CAN故障恢复函数实参,得到CAN故障诊断值。
通过采用上述技术方案,本发明可达到的有益技术效果效果陈述如下:本发明可直接将CAN故障诊断方案文件生成软件代码,并且生成的软件代码文件可直接替换到工程文件中进行使用,提升CAN故障诊断软件设计的效率和正确性,保证CAN信号的有效性,保证车辆各项功能的安全实现。
附图说明
图1为CAN故障诊断软件整体流程示意图;
图2为接口信号列表中CAN故障诊断方案文件解析流程示意图;
图3为CAN故障状态检测函数生成流程示意图;
图4为CAN故障使能检测条件函数生成流程示意图;
图5为CAN故障确认函数生成流程示意图;
图6为CAN诊断软件生成工具操作界面示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
CAN总线上接收的每一个CAN信号对整车控制器做出相应的控制决策起着重要意义,因此诊断CAN信号的正确性和有效性是必不可少的。当前完全依靠工程师根据诊断方案分析理解后进行手编代码,而伴随着功能的增加,诊断数量会越来越多,这就需要工程师花费大量的时间和精力对诊断方案进行理解,然后再转化为软件代码,这样不仅效率低且容易出错,此外由于每一个工程师书写代码的习惯不一致,导致后续软件维护有一定难度。目前没有一种高效方法将所有接收帧的CAN故障诊断自动转化为代码,以提升软件开发的效率和质量,保证CAN故障诊断的正确性以确保CAN信号的有效性。鉴于CAN故障诊断的复杂性和重要性,需要一种将CAN诊断方案自动生成为软件代码的方法来提升软件开发效率和质量,保证控制器CAN故障诊断正确性,保证车辆各项功能的安全实现。
本发明为了实现将CAN故障诊断方案文件直接生成软件代码,提供了下述的技术方案。
首先参见图6,为CAN诊断软件生成工具操作界面示意图,为本发明的前端操作界面,软件代码生成工具是基于Matlab软件,matlab是一套功能强大的工程计算软件,被广泛的应用于自动控制,机械设计等工程领域,工程技术人员通过使用matlab提供的工具箱,可以高效的求解复杂的工程问题,并可以对系统进行动态的仿真,用强大的图形功能对数值计算结构进行显示,matlab是必备的计算与分析软件之一,也是研究设计解决工程计算问题的重要工具,matlab语言的主要特点有,编程效率高;高效方便的矩阵和数组运算,matlab语言像basic、c语言一样规定了矩阵的算术运算符、关系运算符、逻辑运算符、条件运算符及复制运算符。有些如算术运算符只要增加“.”就可以用于数组间的运算。另外,它不需定义数组的维度,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解数字图像处理问题时显得大为简洁、高效、方便,这是其他高级语言所不能相比的。
在操作界面中通过鼠标点击“请加载包含CAN诊断的接口列表”下的“加载文件”按钮加载需要生成CAN故障诊断代码的接口列表文件,加载后文件名将会在“请加载包含CAN诊断的接口列表”的文本框中出现,如果加载文件错误或者替换其他文件可以点击“清除文件”(图中未示出)等待该按钮变回“加载文件”后重新加载一次。加载文件后,点击“开始生成”就会自动生成C代码,生成代码精度可查看进度条(图中当前精度0%位置),100%即生成完成,生成的源代码在工具《输出》文件夹中。
参见图1,为CAN故障诊断软件整体流程示意图,一种CAN故障诊断的软件代码自动生成的方法,包括以下步骤:
步骤A,解析CAN故障诊断文件,得到CAN故障类型、CAN故障校验算法类型、唤醒条件、使能条件、检测条件及故障恢复机制;
步骤B,生成CAN故障状态检测函数:将CAN故障类型作为第一层检索条件,CAN故障校验算法类型作为第二层检索条件,当同时满足上述两层检索条件时,先调用预先设计定义的CAN故障状态算法函数得到CAN状态临时值,再调用预先设计定义的CAN故障状态检测函数,将唤醒条件、检测条件及CAN状态临时值作为预先设计定义的CAN故障状态检测函数的实参,得到CAN故障检测状态;
步骤C,生成CAN故障使能检测条件函数:根据CAN故障类型调用预先定义的CAN故障使能条件检测函数,将唤醒条件、使能条件及CAN故障检测状态作为预先定义的CAN故障使能条件检测函数实参,得到待确认CAN故障;
步骤D,生成CAN故障确认函数:根据故障恢复机制调用预先定义的CAN故障恢复函数,将待确认CAN故障作为预先定义的CAN故障恢复函数实参,得到CAN故障诊断值。
参见图2,为接口信号列表中CAN故障诊断方案文件解析流程示意图,在步骤A中,读取CAN故障诊断文件,首先判断CAN故障诊断文件的工作服薄中是否有“CAN状态”工作表,如果否,则直接提示加载文件错误,结束执行流程,如果是,按行、列获取CAN故障诊断信息,将CAN故障诊断信息存储在DiagCAN结构体中;
然后以for循环清除CAN故障诊断信息中的空白行:首先判定是否为空白行,如果是空白行,则剔除空白行,如果不是空白行,则清除信号名中的空格符号,将处理后的CAN故障诊断信息存储在DiagCANChecked结构体中,继而判定是否遍历结束,如果否,则循环上述流程,直至遍历结束,当遍历结束时,按照规范重命名CANID列的信息,将CANID处理后的信息存储在DiagCANChecked结构体中。
参见图3,为CAN故障状态检测函数生成流程示意图,在步骤B中,首先判定CAN故障类型是否为CAN丢帧诊断,如果是,则调用CAN算法函数,返回CAN丢帧状态临时值,再调用CAN丢帧状态检测函数,将唤醒条件、检测条件及CAN丢帧状态作为CAN丢帧状态检测函数实参,CAN丢帧状态检测函数的返回值赋给CAN丢帧故障检测状态;
如果不是CAN丢帧判断,则判断CAN故障类型是否为Counter计数诊断,如果是,判断识别所属Counter计数算法的类别,调用相应Counter算法函数,返回Counter状态临时值,再调用相应Counter状态检测函数,将唤醒条件、检测条件及Counter状态作为Counter状态检测函数实参,Counter状态检测函数的返回值赋给CNT故障检测状态;
如果CAN故障类型既不是CAN丢帧诊断和Counter计数诊断,而是CRC校验诊断,则判断识别所属CRC算法的类别,调用相应CRC算法函数,返回Crc状态临时值,再调用相应CRC状态检测函数,将唤醒条件、检测条件及Crc状态作为CRC状态检测函数实参,CRC状态检测函数的返回值赋给CRC故障检测状态;
如果故障类型超出CAN丢帧诊断、Counter计数诊断及CRC校验诊断三种类型,则异常终止并在日志中进行文字提示。
参见图4,为CAN故障使能检测条件函数生成流程示意图,在步骤C中,首先判断CAN故障类型是否为CAN丢帧诊断,如果是,则调用CAN丢帧使能条件检测函数,将唤醒条件、使能条件及CAN丢帧故障检测状态作为CAN丢帧使能条件检测函数实参,CAN丢帧使能条件检测函数的返回值赋给待确认CAN丢帧故障;
如果故障类型不是CAN丢帧诊断,则判断故障类型是否为Counter计数诊断,如果是,则调用Counter使能条件检测函数,将唤醒条件、使能条件及CAN故障检测状态作为Counter使能条件检测函数实参,将Counter使能条件检测函数的返回值赋给待确认CNT故障;
如果CAN故障类型不是Counter计数诊断,则判断CAN故障类型是否为CRC校验诊断,如果是,则调用CRC使能条件检测函数,将唤醒条件、使能条件及CRC故障检测状态作为CRC使能条件检测函数实参,CRC使能条件检测函数的返回值赋给待确认CRC故障;
如果故障类型超出CAN丢帧诊断、Counter计数诊断及CRC校验诊断三种类型,则异常终止并在日志中进行文字提示。
参见图5,为CAN故障确认函数生成流程示意图,在步骤D中,首先判断故障恢复机制是否不可恢复,如果是不可恢复的,则调用不可恢复函数,待确认CAN故障作为不可恢复函数实参,不可恢复函数的返回值赋给CAN故障诊断信号;
如果不是不可恢复的,则再判断是否为立即恢复,如果是立即恢复,则调用立即恢复函数,待确认CAN故障作为立即恢复函数实参,立即恢复函数的返回值赋给CAN故障诊断信号;
如果故障恢复机制不是立即恢复,则再判断是否为钥匙下电恢复,如果是,则调用钥匙下电恢复函数,待确认CAN故障作为钥匙下电恢复函数实参,调用钥匙下电恢复函数的返回值赋给CAN故障诊断信号;
如果故障类型超出所述不可恢复、立即恢复、钥匙下电恢复三种类型,则异常终止并在日志中进行文字提示。
预先定义的CAN故障状态算法函数包括CAN丢帧算法、Counter计数算法及CRC校验算法。
预先定义的CAN故障使能条件检测函数的数量等于CAN丢帧算法、Counter计数算法及CRC校验算法三种算法的数量之和。
预先定义的CAN故障使能条件检测函数包括CAN丢失函数、Counter计数函数及CRC校验函数。
本发明还提供了一种CAN故障诊断的软件代码自动生成系统,包括:CAN故障诊断文件解析模块,用于对CAN故障诊断文件进行解析,以得到CAN故障类型、CAN故障校验算法类型、唤醒条件、使能条件、检测条件及故障恢复机制;
生成CAN故障状态检测函数模块,用于生成CAN故障诊断文件的CAN故障状态检测函数,将CAN故障类型作为第一层检索条件, CAN故障校验算法类型作为第二层检索条件,当同时满足上述两层检索条件时,先调用预先设计定义的CAN故障状态算法函数得到CAN状态临时值,再调用预先设计定义的CAN故障状态检测函数,将唤醒条件、检测条件及CAN状态临时值作为预先设计定义的CAN故障状态检测函数的实参,得到CAN故障检测状态;
生成CAN故障使能检测条件函数模块,用于生成CAN故障诊断文件的CAN使能条件函数,根据CAN故障类型调用预先定义的CAN故障使能条件检测函数,将唤醒条件、使能条件及CAN故障检测状态作为预先定义的CAN故障使能条件检测函数实参,得到待确认CAN故障;
生成CAN故障确认函数模块:用于生成CAN故障诊断文件的CAN故障确认函数,根据故障恢复机制调用预先定义的CAN故障恢复函数,将待确认CAN故障作为预先定义的CAN故障恢复函数实参,得到CAN故障诊断值。
通过采用本发明提供的技术方案,可达到以下技术效果:本发明可直接将CAN故障诊断方案文件生成软件代码,并且生成的软件代码文件可直接替换到工程文件中进行使用,提升CAN故障诊断软件设计的效率和正确性,保证CAN信号的有效性,保证车辆各项功能的安全实现。
Claims (9)
1.一种CAN故障诊断的软件代码自动生成的方法,其特征在于,包括以下步骤:
步骤A,解析CAN故障诊断文件,得到CAN故障类型、CAN故障校验算法类型、唤醒条件、使能条件、检测条件及故障恢复机制;
步骤B,生成CAN故障状态检测函数:将所述CAN故障类型作为第一层检索条件,所述CAN故障校验算法类型作为第二层检索条件,当同时满足上述两层检索条件时,先调用预先设计定义的CAN故障状态算法函数得到CAN状态临时值,再调用预先设计定义的CAN故障状态检测函数,将所述唤醒条件、检测条件及所述CAN状态临时值作为预先设计定义的所述CAN故障状态检测函数的实参,得到CAN故障检测状态;
步骤C,生成CAN故障使能检测条件函数:根据所述CAN故障类型调用预先定义的CAN故障使能条件检测函数,将所述唤醒条件、使能条件及所述CAN故障检测状态作为预先定义的所述CAN故障使能条件检测函数实参,得到待确认CAN故障;
步骤D,生成CAN故障确认函数:根据所述故障恢复机制调用预先定义的CAN故障恢复函数,将所述待确认CAN故障作为预先定义的所述CAN故障恢复函数实参,得到CAN故障诊断值。
2.根据权利要求1所述的CAN故障诊断的软件代码自动生成的方法,其特征在于,
在所述步骤B中,首先判定所述CAN故障类型是否为CAN丢帧诊断,如果是,则调用CAN算法函数,返回CAN丢帧状态临时值,再调用CAN丢帧状态检测函数,将所述唤醒条件、检测条件及所述CAN丢帧状态作为所述CAN丢帧状态检测函数实参,所述CAN丢帧状态检测函数的返回值赋给CAN丢帧故障检测状态;
如果不是CAN丢帧判断,则判断所述CAN故障类型是否为Counter计数诊断,如果是,判断识别所属Counter计数算法的类别,调用相应Counter算法函数,返回Counter状态临时值,再调用相应Counter状态检测函数,将所述唤醒条件、检测条件及所述Counter状态作为所述Counter状态检测函数实参,所述Counter状态检测函数的返回值赋给CNT故障检测状态;
如果所述CAN故障类型既不是所述CAN丢帧诊断和所述Counter计数诊断,而是CRC校验诊断,则判断识别所属CRC算法的类别,调用相应CRC算法函数,返回Crc状态临时值,再调用相应CRC状态检测函数,将所述唤醒条件、检测条件及所述Crc状态作为所述CRC状态检测函数实参,所述CRC状态检测函数的返回值赋给CRC故障检测状态;
如果所述故障类型超出所述CAN丢帧诊断、Counter计数诊断及CRC校验诊断三种类型,则异常终止并在日志中进行文字提示。
3.根据权利要求2所述的CAN故障诊断的软件代码自动生成的方法,其特征在于,
在所述步骤C中,首先判断所述CAN故障类型是否为CAN丢帧诊断,如果是,则调用CAN丢帧使能条件检测函数,将所述唤醒条件、使能条件及所述CAN丢帧故障检测状态作为所述CAN丢帧使能条件检测函数实参,所述CAN丢帧使能条件检测函数的返回值赋给待确认CAN丢帧故障;
如果所述故障类型不是CAN丢帧诊断,则判断故障类型是否为Counter计数诊断,如果是,则调用Counter使能条件检测函数,将所述唤醒条件、使能条件及所述CAN故障检测状态作为所述Counter使能条件检测函数实参,将所述Counter使能条件检测函数的返回值赋给待确认CNT故障;
如果所述CAN故障类型不是Counter计数诊断,则判断CAN故障类型是否为CRC校验诊断,如果是,则调用CRC使能条件检测函数,将所述唤醒条件、使能条件及所述CRC故障检测状态作为所述CRC使能条件检测函数实参,所述CRC使能条件检测函数的返回值赋给待确认CRC故障;
如果所述故障类型超出所述CAN丢帧诊断、Counter计数诊断及CRC校验诊断三种类型,则异常终止并在日志中进行文字提示。
4.根据权利要求1所述的CAN故障诊断的软件代码自动生成的方法,其特征在于,
在所述步骤D中,首先判断所述故障恢复机制是否不可恢复,如果是不可恢复的,则调用不可恢复函数,所述待确认CAN故障作为所述不可恢复函数实参,所述不可恢复函数的返回值赋给CAN故障诊断信号;
如果不是不可恢复的,则再判断是否为立即恢复,如果是立即恢复,则调用立即恢复函数,所述待确认CAN故障作为所述立即恢复函数实参,所述立即恢复函数的返回值赋给CAN故障诊断信号;
如果所述故障恢复机制不是立即恢复,则再判断是否为钥匙下电恢复,如果是,则调用钥匙下电恢复函数,所述待确认CAN故障作为所述钥匙下电恢复函数实参,所述调用钥匙下电恢复函数的返回值赋给CAN故障诊断信号;
如果所述故障类型超出所述不可恢复、立即恢复、钥匙下电恢复三种类型,则异常终止并在日志中进行文字提示。
5.根据权利要求1所述的CAN故障诊断的软件代码自动生成的方法,其特征在于,
在所述步骤A中,读取所述CAN故障诊断文件,首先判断所述CAN故障诊断文件的工作薄中是否有“CAN状态”工作表,如果否,则直接提示加载文件错误,结束执行流程,如果是,按行、列获取CAN故障诊断信息,将所述CAN故障诊断信息存储在DiagCAN结构体中;
然后以for循环清除所述CAN故障诊断信息中的空白行:首先判定是否为空白行,如果是空白行,则剔除空白行,如果不是空白行,则清除信号名中的空格符号,将处理后的所述CAN故障诊断信息存储在DiagCANChecked结构体中,继而判定是否遍历结束,如果否,则循环上述流程,直至遍历结束,当遍历结束时,按照规范重命名CANID列的信息,将CANID处理后的信息存储在DiagCANChecked结构体中。
6.根据权利要求1所述的CAN故障诊断的软件代码自动生成的方法,其特征在于,
预先定义的所述CAN故障状态算法函数包括CAN丢帧算法、Counter计数算法及CRC校验算法。
7.根据权利要求6所述的CAN故障诊断的软件代码自动生成的方法,其特征在于,预先定义的所述CAN故障使能条件检测函数的数量等于所述CAN丢帧算法、Counter计数算法及CRC校验算法三种算法的数量之和。
8.根据权利要求1所述的CAN故障诊断的软件代码自动生成的方法,其特征在于,预先定义的所述CAN故障使能条件检测函数包括CAN丢失函数、Counter计数函数及CRC校验函数。
9.一种CAN故障诊断的软件代码自动生成系统,其特征在于,包括:
CAN故障诊断文件解析模块,用于对CAN故障诊断文件进行解析,以得到CAN故障类型、CAN故障校验算法类型、唤醒条件、使能条件、检测条件及故障恢复机制;
生成CAN故障状态检测函数模块,用于生成所述CAN故障诊断文件的CAN故障状态检测函数,将所述CAN故障类型作为第一层检索条件,所述CAN故障校验算法类型作为第二层检索条件,当同时满足上述两层检索条件时,先调用预先设计定义的CAN故障状态算法函数得到CAN状态临时值,再调用预先设计定义的CAN故障状态检测函数,将所述唤醒条件、检测条件及所述CAN状态临时值作为预先设计定义的所述CAN故障状态检测函数的实参,得到CAN故障检测状态;
生成CAN故障使能检测条件函数模块,用于生成所述CAN故障诊断文件的CAN使能条件函数,根据所述CAN故障类型调用预先定义的CAN故障使能条件检测函数,将所述唤醒条件、使能条件及所述CAN故障检测状态作为预先定义的所述CAN故障使能条件检测函数实参,得到待确认CAN故障;
生成CAN故障确认函数模块:用于生成所述CAN故障诊断文件的CAN故障确认函数,根据所述故障恢复机制调用预先定义的CAN故障恢复函数,将所述待确认CAN故障作为预先定义的所述CAN故障恢复函数实参,得到CAN故障诊断值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110565072.0A CN113342319B (zh) | 2021-05-24 | 2021-05-24 | 一种can故障诊断的软件代码自动生成的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110565072.0A CN113342319B (zh) | 2021-05-24 | 2021-05-24 | 一种can故障诊断的软件代码自动生成的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113342319A true CN113342319A (zh) | 2021-09-03 |
CN113342319B CN113342319B (zh) | 2024-03-22 |
Family
ID=77471110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110565072.0A Active CN113342319B (zh) | 2021-05-24 | 2021-05-24 | 一种can故障诊断的软件代码自动生成的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113342319B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115333893A (zh) * | 2022-07-01 | 2022-11-11 | 奇瑞商用车(安徽)有限公司 | 一种can通信矩阵纠错方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0310782A2 (en) * | 1987-10-05 | 1989-04-12 | ROLM Systems | Failing resource manager in a multiplex communication system |
CN103119561A (zh) * | 2010-09-23 | 2013-05-22 | 苹果公司 | 用于对非叶代码进行基于编译器的矢量化的系统和方法 |
CN103279376A (zh) * | 2011-10-17 | 2013-09-04 | 霍尼韦尔国际公司 | 将可执行代码并入健康维护系统的方法和可重新配置系统 |
CN105225049A (zh) * | 2015-10-09 | 2016-01-06 | 清华大学深圳研究生院 | 一种高可扩展性故障诊断专家系统 |
CN107179971A (zh) * | 2017-05-23 | 2017-09-19 | 上海蔚来汽车有限公司 | 用于can总线故障处理的自动编码方法和系统 |
CN108063708A (zh) * | 2017-11-28 | 2018-05-22 | 重庆长安汽车股份有限公司 | 一种can通信丢失故障诊断方法及电子控制单元 |
CN108829547A (zh) * | 2018-05-15 | 2018-11-16 | 中国船舶重工集团公司第七〇九研究所 | 一种海洋平台的计算机控制器及其实现方法 |
CN109361569A (zh) * | 2018-11-26 | 2019-02-19 | 中汽研(天津)汽车工程研究院有限公司 | 基于can总线的通信诊断故障码自动化测试系统及测试方法 |
US20190356552A1 (en) * | 2011-11-16 | 2019-11-21 | Autoconnect Holdings Llc | System and method for generating a global state information for a vehicle based on vehicle operator information and other contextuals |
CN212486529U (zh) * | 2020-07-29 | 2021-02-05 | 重庆长安汽车股份有限公司 | 一种基于can工具模拟故障信号的传输系统 |
-
2021
- 2021-05-24 CN CN202110565072.0A patent/CN113342319B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0310782A2 (en) * | 1987-10-05 | 1989-04-12 | ROLM Systems | Failing resource manager in a multiplex communication system |
CN103119561A (zh) * | 2010-09-23 | 2013-05-22 | 苹果公司 | 用于对非叶代码进行基于编译器的矢量化的系统和方法 |
CN103279376A (zh) * | 2011-10-17 | 2013-09-04 | 霍尼韦尔国际公司 | 将可执行代码并入健康维护系统的方法和可重新配置系统 |
US20190356552A1 (en) * | 2011-11-16 | 2019-11-21 | Autoconnect Holdings Llc | System and method for generating a global state information for a vehicle based on vehicle operator information and other contextuals |
CN105225049A (zh) * | 2015-10-09 | 2016-01-06 | 清华大学深圳研究生院 | 一种高可扩展性故障诊断专家系统 |
CN107179971A (zh) * | 2017-05-23 | 2017-09-19 | 上海蔚来汽车有限公司 | 用于can总线故障处理的自动编码方法和系统 |
CN108063708A (zh) * | 2017-11-28 | 2018-05-22 | 重庆长安汽车股份有限公司 | 一种can通信丢失故障诊断方法及电子控制单元 |
CN108829547A (zh) * | 2018-05-15 | 2018-11-16 | 中国船舶重工集团公司第七〇九研究所 | 一种海洋平台的计算机控制器及其实现方法 |
CN109361569A (zh) * | 2018-11-26 | 2019-02-19 | 中汽研(天津)汽车工程研究院有限公司 | 基于can总线的通信诊断故障码自动化测试系统及测试方法 |
CN212486529U (zh) * | 2020-07-29 | 2021-02-05 | 重庆长安汽车股份有限公司 | 一种基于can工具模拟故障信号的传输系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115333893A (zh) * | 2022-07-01 | 2022-11-11 | 奇瑞商用车(安徽)有限公司 | 一种can通信矩阵纠错方法 |
CN115333893B (zh) * | 2022-07-01 | 2024-04-05 | 奇瑞商用车(安徽)有限公司 | 一种can通信矩阵纠错方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113342319B (zh) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106528100B (zh) | 用于安全关键软件开发的基于模型的技术和过程的系统和方法 | |
CN102184138B (zh) | 一种软件错误自动重现和定位的方法及系统 | |
CN102831052B (zh) | 测试用例自动化生成装置及方法 | |
Lochau et al. | Delta-oriented model-based integration testing of large-scale systems | |
CN101206570B (zh) | 用于生成用户界面的方法和系统 | |
CN111103861B (zh) | 开发基于车辆售后诊断需求的集成系统的方法和装置 | |
Kang et al. | Concept of an intelligent operator support system for initial emergency responses in nuclear power plants | |
CN113342319A (zh) | 一种can故障诊断的软件代码自动生成的方法及系统 | |
CN112561370A (zh) | 软件发版的管理方法、装置、计算机设备及存储介质 | |
CN112346987A (zh) | 基于Xmind的测试用例生成转换方法及系统 | |
CN107193249A (zh) | 程序开发辅助装置以及程序开发辅助方法 | |
Tiwari et al. | Analysis of use case requirements using sfta and sfmea techniques | |
Lind et al. | A practical approach to size estimation of embedded software components | |
CN112631918A (zh) | 软件自动化测试验证的方法 | |
KR20210138933A (ko) | 소프트웨어 개발 및 테스트 자동화 프레임워크 | |
Burgstaller et al. | FMTESTING: A FEATUREIDE Plug-in for Automated Feature Model Analysis and Diagnosis | |
Zheng et al. | A flexible optimization algorithm for GO-FLOW methodology to deal with shared signals | |
CN113592690A (zh) | 一种基于数据库模型的危害管理方法 | |
CN112445461A (zh) | 一种业务规则生成方法、装置、电子设备和可读存储介质 | |
KR101731629B1 (ko) | Circus로부터 go 코드를 자동으로 생성하는 방법 및 장치 | |
CN116340186B (zh) | 汽车电子软件检测系统、方法及介质 | |
US9171106B2 (en) | Apparatus and method to collect and condense design violations from output data files | |
CN115542882B (zh) | 一种控制器接口配置方法及装置 | |
CN110704230B (zh) | 分布式多模块系统的诊断方法、系统、电子设备和介质 | |
CN118427832A (zh) | 一种基于程序流图的plc代码漏洞检测方法和系统 |
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 |