CN112000396B - 一种燃料电池系统测试控制方法、装置、设备及存储介质 - Google Patents
一种燃料电池系统测试控制方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112000396B CN112000396B CN202010785551.9A CN202010785551A CN112000396B CN 112000396 B CN112000396 B CN 112000396B CN 202010785551 A CN202010785551 A CN 202010785551A CN 112000396 B CN112000396 B CN 112000396B
- Authority
- CN
- China
- Prior art keywords
- thread
- control instruction
- layer thread
- test
- test operation
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 548
- 239000000446 fuel Substances 0.000 title claims abstract description 76
- 238000000034 method Methods 0.000 title claims abstract description 75
- UFHFLCQGNIYNRP-UHFFFAOYSA-N Hydrogen Chemical compound [H][H] UFHFLCQGNIYNRP-UHFFFAOYSA-N 0.000 claims description 56
- 229910052739 hydrogen Inorganic materials 0.000 claims description 56
- 239000001257 hydrogen Substances 0.000 claims description 56
- 238000012545 processing Methods 0.000 claims description 38
- 230000001960 triggered effect Effects 0.000 claims description 36
- 230000004044 response Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 abstract description 21
- 230000006870 function Effects 0.000 description 37
- 238000004458 analytical method Methods 0.000 description 15
- 238000013480 data collection Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 238000013500 data storage Methods 0.000 description 7
- 230000000903 blocking effect Effects 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/36—Arrangements for testing, measuring or monitoring the electrical condition of accumulators or electric batteries, e.g. capacity or state of charge [SoC]
- G01R31/378—Arrangements for testing, measuring or monitoring the electrical condition of accumulators or electric batteries, e.g. capacity or state of charge [SoC] specially adapted for the type of battery or accumulator
- G01R31/38—Primary cells, i.e. not rechargeable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
- Y02E—REDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
- Y02E60/00—Enabling technologies; Technologies with a potential or indirect contribution to GHG emissions mitigation
- Y02E60/30—Hydrogen technology
- Y02E60/50—Fuel cells
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Fuel Cell (AREA)
Abstract
本发明涉及燃料电池系统测试技术领域,公开了一种燃料电池系统测试控制方法、装置、设备及存储介质,用以避免测试过程中测试软件出现卡顿,减少占用计算资源。所述方法包括:通过当前层线程接收到前一层线程根据测试操作参数确定的所述当前层线程对应的控制指令;若所述当前层线程为非调用类线程,则通过所述当前层线程执行所述控制指令对应的操作;若所述当前层线程为调用类线程,则执行所述控制指令对应的测试操作,并根据执行所述控制指令对应的测试操作后的测试操作参数确定下一层线程对应的控制指令,并启动所述下一层线程,将所述下一层线程对应的控制指令发送给所述下一层线程,并将所述下一层线程作为当前层线程。
Description
技术领域
本发明涉及燃料电池系统测试技术领域,特别涉及一种燃料电池系统测试控制方法、装置、设备及存储介质。
背景技术
现有的燃料电池系统测试软件中,线程互相交叉,逻辑复杂。通常通过状态机控制执行测试任务的全部线程。在测试软件被启动后,预先配置的多个测试任务对应的状态机以及各状态机控制的线程也被启动。通过用户选择的测试任务确定对应的状态机,并由该状态机控制多个线程进行测试任务。由于测试软件启动时全部线程均被启动,容易造成测试卡顿。
发明内容
本发明提供了一种燃料电池系统测试控制方法、装置、设备及存储介质,用以避免测试过程中测试软件出现卡顿,减少占用计算资源。
第一方面,本发明实施例提供一种燃料电池系统测试控制方法,包括:
通过当前层线程接收到前一层线程根据测试操作参数确定的所述当前层线程对应的控制指令;
若所述当前层线程为非调用类线程,则通过所述当前层线程执行所述控制指令对应的操作;
若所述当前层线程为调用类线程,则执行所述控制指令对应的测试操作,并根据执行所述控制指令对应的测试操作后的测试操作参数确定下一层线程对应的控制指令,并启动所述下一层线程,将所述下一层线程对应的控制指令发送给所述下一层线程,并将所述下一层线程作为当前层线程。
上述实施例中,由当前层线程根据接收到的前一层线程的控制指令,执行控制指令对应的操作或者启动下一层线程,以及发送下一层线程对应的控制指令。换句话说,控制线程逐层启动,而不是全部线程同时启动。当前层线程由其前一层线程启动,并接收前一层线程确定的控制指令。若当前层线程为非调用类线程,则执行控制指令对应的操作,可视为测试任务结束。若当前层线程为调用类线程,则在执行控制指令对应的操作后,确定出需要当前层线程启动的下一层线程,以及下一层线程的控制指令。将下一层线程作为当前层线程,执行相同的过程。实现逐层启动线程,不需要在测试软件启动后启动全部线程,避免测试卡顿。
在一种可能的实现方式中,所述前一层线程为第一层线程;所述通过当前层线程接收到前一层线程根据测试操作参数确定的所述当前层线程对应的控制指令之前,还包括:
响应于触发的应用程序启动指令,启动所述第一层线程,并通过所述第一层线程生成用户界面;
响应于通过所述用户界面触发的携带测试操作参数的测试指令,通过所述第一层线程根据测试操作参数与线程的对应关系,确定所述测试操作参数对应的下一层线程;
根据所述测试操作参数确定所述下一层线程对应的控制指令,并启动所述下一层线程,将所述下一层线程对应的控制指令发送给所述下一层线程,并将所述下一层线程作为所述当前层线程。
上述实施例中,用户可以触发应用程序启动,处理器可响应于触发的应用程序启动指令,启动第一层线程,通过第一层线程生成燃料电池系统测试应用程序或软件的用户界面。用户可以在该用户界面中触发测试指令,第一层线程根据预先配置的测试操参数与线程的对应关系,确定出测试指令中测试操作参数对应的线程,也是需要第一层线程启动下一层线程。通过第一层线程选择用户触发的测试指令对应的线程作为下一层线程,启动该下一层线程。向该下一层线程发送对应的控制指令,将该下一层线程作为当前层线程。在应用程序后,仅启动第一层线程,不启动全部的线程。而是在用户触发测试指令后,通过第一层线程开支逐层启动其它线程,以及完成测试指令对应的测试任务。
在一种可能的实现方式中,若所述当前层线程为第二层线程,则所述当前层线程为调用类线程;
所述执行所述控制指令对应的测试操作,包括:
依据所述第二层线程对应的线程启动顺序,将所述顺序中未启动的最小序号对应的线程作为下一层线程,将所述次序作为测试操作参数。
上述实施例中,用户触发的一次测试任务可以包括多个子测试任务或测试操作。测试指令与第二层线程具有对应关系,其中,每个第二层线程配置的线程启动顺序是不同的。若第一层线程根据测试指令启动了对应的第二层线程,由第二层线程根据其对应的线程启动顺序,依照顺序逐个次序启动线程,实现进行复杂测试任务时,控制线程逐层启动或逐个启动,避免测试过程中出现卡顿,减少线程占用处理器的计算资源。
在一种可能的实现方式中,若所述前一层为第二层线程,则所述第二层线程接收到的控制指令是由第一层线程根据测试操作参数确定并触发的,或是由所述非调用类线程执行操作后通过反馈信号触发的。
上述实施例中,在测试指令对应的测试任务包含多个子测试任务的场景中,第二层线程接收到的控制指令是由第一层线程触发的,使第二层线程指令控制指令对应的操作,如依据所述第二层线程对应的线程启动顺序,将所述顺序中未启动的最小序号对应的线程作为下一层线程,将所述次序作为测试操作参数。第二层线程接收到的控制指令也可以是由非调用类线程执行操作后通过反馈信号触发的,使第二层线程获知最近一次启动的下一层线程对应的子测试任务已结束,依据所述第二层线程对应的线程启动顺序,将所述顺序中未启动的最小序号对应的线程作为下一层线程,将所述次序作为测试操作参数。使得用户通过测试指令可以触发多个子测试任务,控制执行多个子测试任务的线程逐个启动,而不是同时启动全部子测试任务的线程。
在一种可能的实现方式中,若所述当前层线程为调用类线程,所述执行所述控制指令对应的测试操作,包括:
若所述控制指令为控制测试台上电指令,则向第一测试控制设备发送测试台上电指令,通过所述第一测试控制设备读取所述测试台电压值,向第一层线程发送所述测试台电压值,将所述测试台电压值作为测试操作参数;或
若所述控制指令为控制唤醒燃料电池系统控制器指令,则向所述第一测试控制设备发送燃料电池系统控制器唤醒指令,将所述唤醒指令作为测试操作参数;或
若所述控制指令为控制进氢阀开启指令,则向所述第一测试控制设备发送开启进氢阀指令,通过所述第一测试控制设备读取氢气高压值,向所述第一层线程发送所述氢气高压值,将所述氢气高压值作为测试操作参数。
上述实施例中,调用类线程可以具有一种或多种功能,或者说可以执行一种或多种操作。若调用类线程为多种功能时,可以根据接收到的控制指令,如控制指令的类型或携带的测试操作参数等,执行控制指令对应的操作,例如向第一测试控制设备发送各种指令,使第一测试控制设备对燃料电池系统或者测试台执行指令对应的操作,或者直接控制对燃料电池系统进行提供高压电源。
在一种可能的实现方式中,若所述当前层线程为调用类线程,所述执行所述控制指令对应的测试操作,包括:
若所述控制指令中的测试操作参数为唤醒指令,则从控制器局域网络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报文,则向所述CAN硬件中写入所述控制指令中的转换的CAN报文,确定写入成功信号,并作为所述测试操作参数。
在一种可能的实现方式中,处理模块具体用于:
若所述控制指令中包含测试台电压值,则判定所述控制指令中的测试台电压值是否满足第一预设条件,并向第一层线程发送判定结果,以及向第二层线程发送反馈信号;或
若所述控制指令中包含心跳信号,则判定所述心跳信号是否满足第二预设条件,并向所述第一层线程发送判定结果,向所述第二层线程发送反馈信号;或
若所述控制指令中包含高压电源电压,则判定所述高压电源电压是否满足第三预设条件,并向所述第一层线程发送判定结果,向所述第二层线程发送反馈信号;或
若所述控制指令中包含氢气高压值,则判定所述氢气高压值是否满足第四预设条件,并向所述第一层线程发送判定结果,向所述第二层线程发送反馈信号。
在一种可能的实现方式中,处理模块还用于:
通过所述第一层线程确定的用户界面,展示接收到的数据,所述数据包括如下一种或多种:
测试台电压值、氢气高压值、心跳信号、高压电源电压、判定所述控制指令中的测试台电压值是否满足第一预设条件的判定结果、判定所述心跳信号是否满足第二预设条件的判定结果、判定所述高压电源电压是否满足第三预设条件的判定结果、判定所述氢气高压值是否满足第四预设条件的判定结果。
在一种可能的实现方式中,处理模块还用于:
通过所述第一层线程启动存储线程。
在一种可能的实现方式中,处理模块还用于:
若所述当前层线程为非调用类线程,则通过所述当前层线程执行所述控制指令对应的操作之后,通过所述存储线程存储所述当前层线程执行所述控制指令对应的测试操作后的测试操作参数。
在一种可能的实现方式中,处理模块还用于:
若所述当前层线程为调用类线程,则执行所述控制指令对应的测试操作,并根据执行所述控制指令对应的测试操作后的测试操作参数确定下一层线程对应的控制指令,并启动所述下一层线程,将所述下一层线程对应的控制指令发送给所述下一层线程,并将所述下一层线程作为当前层线程之后,通过所述存储线程存储所述当前层线程接收到前一层线程根据测试操作参数确定的所述当前层线程对应的控制指令,和/或,所述当前层线程执行所述控制指令对应的测试操作后的测试操作参数。
在一种可能的实现方式中,处理模块还用于:
在若所述当前层线程为非调用类线程,则通过所述当前层线程执行所述控制指令对应的操作之后,或者在所述若所述当前层线程为调用类线程,则执行所述控制指令对应的测试操作,并根据执行所述控制指令对应的测试操作后的测试操作参数确定下一层线程对应的控制指令,并启动所述下一层线程,将所述下一层线程对应的控制指令发送给所述下一层线程,并将所述下一层线程作为当前层线程之后,通过所述当前层线程接收到所述前一层线程发送的关闭指令,所述关闭指令为所述前一层线程确定所述当前层线程执行所述当前层线程对应的控制指令后触发的;
若所述当前层线程为非调用类线程,则响应于所述关闭指令,关闭所述当前层线程;
若所述当前层线程为调用类线程,则响应于所述关闭指令,确定所述下一层线程执行所述下一层线程对应的控制指令,将所述关闭指令发送给所述下一层线程,关闭所述当前层线程,并将所述下一层线程作为当前层线程。
第三方面,本发明实施例提供一种燃料电池系统测试控制设备,包括:处理器和存储器;
其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行下列过程如上述第一方面中任一项所述方法的步骤。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面中任一项所述方法的步骤。
另外,第二方面至第四方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有燃料电池系统测试场景中线程启动控制示意图;
图2为本发明实施例提供的燃料电池系统测试场景中线程启动控制示意图;
图3为根据一示例性实施例提供的一种燃料电池系统测试控制方法的示意流程图;
图4为根据一示例性实施例提供的另一种燃料电池系统测试控制的多个操作者类型示意图;
图5为根据一示例性实施例提供的另一种燃料电池系统测试控制方法的示意流程图;
图6为根据一示例性实施例提供的一种燃料电池系统测试控制设备结构示意框图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
对燃料电池系统进行测试过程中,包含多个测试操作或者子测试任务,例如,测试操作A、测试操作B、测试操作C。根据可以根据设置测试操作顺序,确定不同的测试任务。现有的燃料电池系统测试软件在设计时,由状态机控制每一种测试操作顺序。例如,图1中的状态机1控制测试操作A、测试操作B、测试操作C对应的线程,执行测试任务。状态机2控制测试操作B、测试操作A、测试操作C对应的线程,执行测试任务。这样的设计,在测试软件启动后,需要启动全部状态机控制的线程,在用户选择测试任务后,由测试任务对应的状态机控制其相应的多个线程执行测试任务。而其它状态机以及相应的线程被启动后,处于等待状态。由于软件启动后,开启的线程过多,容易出现卡顿的情况,影响测试。并且,大量的线程处于等待状态而未被调用,造成了处理器计算资源的浪费。另外,多个线程具有相同的功能,但由不同的状态机进行控制,在进行测试软件维护或者二次开发的过程中,维护难度增加。
有鉴于此,为解决现有测试过程中出现的卡顿、处理器的计算资源浪费、维护难度大等问题。本发明实施例提供了一种燃料电池系统测试控制方法,如图2所示,在测试软件启动后,由上层线程启动下层线程,逐层启动线程,避免同时启动全部线程造成卡顿。
实施例一
如图3根据一示例性实施例示出了一种燃料电池系统测试控制方法的示意流程图,燃料电池系统测试控制方法可以包括如下步骤:
步骤S301,通过当前层线程接收到前一层线程根据测试操作参数确定的当前层线程对应的控制指令。
本发明实施例提供的燃料电池系统测试控制方法中,当前层线程为前一层线程的下一层线程。由前一层线程确定当前层线程的控制指令,并由前一层线程将确定出的控制指令发送给当前层线程。其中,前一层线程确定当前层线程的控制指令是根据前一层线程执行操作后的测试操作参数确定的。测试操作参数可以是前一层线程接收的控制指令中携带的,也可以是前一层线程执行其接收的控制指令对应的操作后的操作结果参数。
步骤S302,若当前层线程为非调用类线程,则通过当前层线程执行控制指令对应的操作。
如果当前层线程为非调用类线程,可以反映出当前层线程不具有启动其它层线程的能力或功能。当前层线程在接收到前一层线程的控制指令后,执行控制指令对应的操作。
步骤S303,若当前层线程为调用类线程,则执行控制指令对应的测试操作,并根据执行控制指令对应的测试操作后的测试操作参数确定下一层线程对应的控制指令,并启动下一层线程,将下一层线程对应的控制指令发送给下一层线程,并将下一层线程作为当前层线程。
如果当前层线程为调用类线程,可以反映出当前层线程具有启动其它线程的能力或功能。当前层线程执行控制指令对应的测试操作,并根据执行测试操作后的测试操作参数确定下一层线程对应的控制指令,以实现将测试操作参数通过控制指令传递给下一层线程。由当前层线程启动下一层线程,并将确定出的控制指令发送给下一层线程。下一层线程可以作为当前层线程,执行步骤S301-S303的步骤,以实现启动该层线程的下一层线程。
若前一层线程为第一层线程,在步骤S301之前方法还可以包括:
响应于触发的应用程序启动指令,启动第一层线程,并通过第一层线程生成用户界面;
响应于通过用户界面触发的携带测试操作参数的测试指令,通过第一层线程根据测试操作参数与线程的对应关系,确定测试操作参数对应的下一层线程;
根据测试操作参数确定下一层线程对应的控制指令,并启动下一层线程,将下一层线程对应的控制指令发送给下一层线程,并将下一层线程作为当前层线程。
在实际应用场景中,用户可以通过点选测试应用程序的图标的方式,启动测试应用程序。处理器响应于用户触发的应用程序启动指令,启动第一层线程。第一层线程具有生成用户界面的功能。在第一层线程生成的用户界面中可以选择测试项目、观察测试过程、查看测试结果等功能。
用户可以在用户界面中通过点选或者输入的方式触发测试指令。测试指令中可以携带测试操作参数,例如测试操作中设置的参数,或是设置的多个子测试任务标识,或者多个子测试任务的执行顺序等。
可以通过第一层线程,根据预先配置的测试操作参数与线程的对应关系,确定要启动的下一层线程。例如,测试指令中携带的测试操作参数可以表征测试任务或测试指令的标识,根据测试任务的标识与线程的对应关系,将测试指令中携带的标识对应的线程,确定为下一层线程。然后由第一层线程确定下一层线程对应的控制指令。
通过第一层线程启动下一层线程,并将第一层线程确定出的下一层线程的控制指令发送给下一层线程,可以实现控制启动或者调用下一层线程,使下一层线程执行控制指令对应的操作。需要说明的是,第一层线程发送给下一层线程的控制指令可以是控制信号,下一层线程可以通过接收到控制信号,获知其被启动或调用,并执行预先配置的操作或实现预先配置的功能。
在一种可能的实施方式中,若步骤S301中的当前层线程为第二层线程,当前层线程为调用类线程。换句话说,第二层线程可以为调用类线程,启动其它线程实现测试任务对应的测试操作。
在实际应用场景中,第一层线程根据预先配置的测试操作参数与线程的对应关系,确定要启动的下一层线程,也即确定要启动的线程为第二层线程。其中,此时测试操作参数与线程的对应关系中的,不同线程对应的线程启动顺序不同。通过第一层线程选择与测试指令对应的第二层线程。
通过第一层线程启动的第二层线程,收到第一层线程确定出的控制指令后,依据预先配置的该第二层线程对应的线程启动顺序,逐次序启动线程。例如,每次控制该顺序中未启动线程中序号最小的线程进行启动。
第二层线程可以将次序作为测试操作参数,根据次序(或者序号)与线程的对应关系,确定出下一层线程,以及确定下一层线程对应的控制指令。第二层线程启动下一层线程,将下一层线程对应的控制指令发送给下一层线程。
需要说明的是,第二层线程接收到的控制指令可以是由第一层线程根据测试操作参数确定并触发的,或是由非调用类线程执行操作后通过反馈信号触发的。非调用类线程执行操作后可以通过反馈信号,使第二层线程获知第二层线程最近一次启动的线程对应的测试操作或者测试子任务已经执行结束,可以启动最近一次启动的线程对应次序的下一次序的线程。
在实际应用场景中第二层线程接收到第一层线程发送的控制指令后,可以直接启动线程启动顺序中的第一个次序对应的线程。由第一个次序对应的线程执行测试操作或者由第一个次序对应的线程执行操作后逐层启动其它线程执行操作,直至第一个次序对应的测试操作或者子测试任务执行结束。其中,第二层线程可以通过接收到非调用类线程发送给第二层线程的反馈信号触发的控制指令获知第一个次序对应的测试操作或者子测试任务执行结束。然后第二层线程启动第二个次序对应的线程,以此类推,直至线程启动顺序中的最后一个次序对应的线程启动后,接收非调用类线程发送的反馈信号触发的控制指令后,第二层线程可以确定测试指令对应的全部测试操作或子测试任务执行完毕,也可以通知第一层线程,通过用户界面提示用户测试任务结束。
本发明实施例提供的燃料电池系统测试控制方法中的线程可以具有复合功能,例如线程可以接收多种控制指令,根据接收的控制指令执行控制指令对应的操作。其中,接收到的控制指令中可以携带前一层线程执行操作后的测试操作参数,如数据或信号。当然,接收到的控制指令中也可以是与测试操作参数对应的指令标识,便于当前层线程快速的响应该控制指令,并执行对应的操作。
一种可能的实施方式中,当前层线程可以根据接收的控制指令,执行与控制指令相应的操作。例如,若控制指令为控制测试台上电指令,则向第一测试控制设备发送测试台上电指令,通过第一测试控制设备读取测试台电压值,向第一层线程发送测试台电压值,将测试台电压值作为测试操作参数,根据测试操作参数确定下一层线程对应的控制指令,并启动下一层线程,将下一层线程对应的控制指令发送给下一层线程,并将下一层线程作为当前层线程。
再如,若控制指令为控制唤醒燃料电池系统控制器指令,则向第一测试控制设备发送燃料电池系统控制器唤醒指令,将唤醒指令作为测试操作参数,根据测试操作参数确定下一层线程对应的控制指令,并启动下一层线程,将下一层线程对应的控制指令发送给下一层线程,并将下一层线程作为当前层线程。
又如,若控制指令为控制进氢阀开启指令,则向第一测试控制设备发送开启进氢阀指令,通过第一测试控制设备读取氢气高压值,向第一层线程发送氢气高压值,将氢气高压值作为测试操作参数,根据测试操作参数确定下一层线程对应的控制指令,并启动下一层线程,将下一层线程对应的控制指令发送给下一层线程,并将下一层线程作为当前层线程。
一种可能的实施方式中,当前层线程为调用类线程,在执行控制指令对应的测试操作时,若确定接收到的控制指令中的测试操作参数为唤醒指令,则从控制器局域网络(Controller Area Network,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报文控制高压电源设备向燃料电池系统提供高压电源。在写入CAN报文后,生成写入成功信号,作为测试操作参数,启动具有CAN报文读取功能的线程的控制指令,并启动该层线程。
一种可能的实施方式中,当前层线程为调用类线程,在执行控制指令对应的测试操作时,若控制指令中的测试操作参数为解析的CAN报文,则确定解析的CAN报文中包含的心跳信号,向第一层线程发送心跳信号,将心跳信号作为测试操作参数。或者,若控制指令中的测试操作参数为解析的CAN报文,则确定解析的CAN报文中包含的高压电源电压,向第一层线程发送高压电源电压,将高压电源电压作为测试操作参数。然后根据测试操作参数确定下一层线程对应的控制指令,并启动下一层线程,将下一层线程对应的控制指令发送给下一层线程,并将下一层线程作为当前层线程。
具体实施时,该层线程为具有信号匹配功能的线程,从匹配控制指令中携带的解析后的CAN报文中的物理信号为心跳信号或者高压电源电压,并将确定出的心跳信号或者高压电源电压发送给第一层线程,以使第一层线程在用户界面中展示心跳信号或者高压电源电压。
该层线程将确定出的物理信号作为测试操作参数,确定下一层线程对应的控制指令,例如确定出的信号判定功能的线程的控制指令,以使该线程对确定出的物理信号进行判定。
一种可能的实施方式中,当前层线程为非调用类线程。例如具有数据判定功能的线程,可以根据接收的控制指令,执行与控制指令相应的操作。例如,若控制指令中包含测试台电压值,则判定控制指令中的测试台电压值是否满足第一预设条件,并向第一层线程发送判定结果,以及向第二层线程发送反馈信号。其中第一预设条件可以是确定控制指令中的测试台电压值小于第一门限值。
再例如,若控制指令中包含心跳信号,则判定心跳信号是否满足第二预设条件,并向第一层线程发送判定结果,向第二层线程发送反馈信号。其中,第二预设条件可以是确定心跳信号的发送频次小于第二门限值。
又如,若控制指令中包含高压电源电压,则判定高压电源电压是否满足第三预设条件,并向第一层线程发送判定结果,向第二层线程发送反馈信号。其中,第三预设条件可以是确定控制指令中的高压电源电压小于第三门限值。
又如,若控制指令中包含氢气高压值,则判定氢气高压值是否满足第四预设条件,并向第一层线程发送判定结果,向第二层线程发送反馈信号。其中第四预设条件可以是确定控制指令中的氢气高压值小于第四门限值。
一种可能的实施方式中,上述具有数据判定功能的线程的功能,可以由多个非调用类线程替代,执行上述一种或多种操作。
在实际应用场景中,其它层线程可以在执行操作后,向第一层线程发送操作结果等数据,通过第一层线程确定的用户界面,展示接收到的数据,数据包括如下一种或多种:
测试台电压值、氢气高压值、心跳信号、高压电源电压、判定控制指令中的测试台电压值是否满足第一预设条件的判定结果、判定心跳信号是否满足第二预设条件的判定结果、判定高压电源电压是否满足第三预设条件的判定结果、判定氢气高压值是否满足第四预设条件的判定结果。
另外,为了便于对测试数据的分析,可以由第一层线程启动存储线程。存储线程用于存储被启动的线程接收到的控制指令、以及被启动的线程执行操作后的测试操作参数。
本发明实施例提供的燃料电池系统的测试控制方法中,各线程之间耦合度低,对其中的一个线程的功能进行修改时,不影响其它线程的功能。与现有技术相比,逐层启动线程,避免测试过程中出现卡顿。线程在不同的测试任务下可以被复用,从而减少线程数量,降低维护难度,以及处理器的计算资源。
可选地,在测试软件启动后,可以逐层控制线程关闭。而不是在结束测试软件后,关闭全部启动的线程,在测试软件启动后,及时关闭已执行完对应测试操作的线程,避免出现卡顿。
例如,在若所述当前层线程为非调用类线程,则通过所述当前层线程执行所述控制指令对应的操作之后,或者在所述若所述当前层线程为调用类线程,则执行所述控制指令对应的测试操作,并根据执行所述控制指令对应的测试操作后的测试操作参数确定下一层线程对应的控制指令,并启动所述下一层线程,将所述下一层线程对应的控制指令发送给所述下一层线程,并将所述下一层线程作为当前层线程之后,所述方法还包括:
通过所述当前层线程接收到所述前一层线程发送的关闭指令,所述关闭指令为所述前一层线程确定所述当前层线程执行所述当前层线程对应的控制指令后触发的;
若所述当前层线程为非调用类线程,则响应于所述关闭指令,关闭所述当前层线程;
若所述当前层线程为调用类线程,则响应于所述关闭指令,确定所述下一层线程执行所述下一层线程对应的控制指令,将所述关闭指令发送给所述下一层线程,关闭所述当前层线程,并将所述下一层线程作为当前层线程。
具体实施时,前一层线程确定当前层线程执行完当前层线程对应的控制指令后,触发向当前层线程发送关闭指令。如果当前层线程为非调用类线程,在接收到关闭指令之后,响应于关闭指令,关闭当前层线程,实现控制当前层线程执行完对应的测试操作后,关闭该当前层线程。
如果当前层线程为调用类线程,在接收到关闭指令之后,响应于关闭指令,确定当前层线程所启动的下一层线程是否执行完下一层线程对应的控制指令,也是确定下一层线程是否执行完对应的控制指令对应的测试操作。若确定下一层线程执行完下一层线程所对应的控制指令,当前层线程向下一层线程发送关闭指令,实现控制下一层线程关闭,并在向下一层线程发送关闭指令之后,关闭当前层线程。将下一层线程作为当前层线程,实现逐层关闭线程。
通过逐层关闭线程,测试软件运行过程中,控制开启的线程数量,也可以避免测试过程中出现卡顿,减少占用处理器的计算资源。
实施例二
在燃料电池系统测试应用程序或软件的开发过程中,可以使用LabVIEW程序开发环境。使用操作者架构进行测试程序开发,设计不同的操作者,一个操作者对应一个线程。燃料电池系统测试应用程序(或软件)启动后,由上层操作者启动下层操作者。操作者与操作者间使用消息传递控制指令,其中控制指令中携带测试操作参数等信息。若操作者为调用类操作者,其配置有需要启动的下一个操作者,当前操作者执行控制指令对应的操作后,启动配置的下一个操作者。例如通过,操作者私有属性配置的类,实现下一个操作者的启动(或者调用)。
如图4示出了一种燃料电池测试系统测试控制的操作者示意图。下面分别介绍各层操作者(也是线程)具有的功能。
第一层操作者可以为前面板操作者,具有响应用户操作、显示测试信息等功能。测试应用程序启动后,处理器启动第一层操作者,生成用户界面。通过一层操作者响应用户触发的测试指令,根据测试指令中的测试操作参数,以及预先配置的测试操作参数选择对应的第二层操作者,确定需要启动的第二层操作者,以及确定该第二层操作者的控制指令。
第二层操作者可以为命令流操作者,具有控制启动操作者的功能。不同第二层操作者对应不同的操作者启动顺序。第二层操作者接收到第一层该操作者的控制指令后,可以将控制指令转化为可执行的数据,在一定条件下传递给对应的操作者。例如,根据配置的操作者启动顺序,响应于接收的控制指令后,根据操作者启动顺序中次序(或序号)与控制指令的对应关系,可以确定各次序对应操作者的控制指令(或者命令),利用各操作者的控制指令,启动下层操作者。需要说明的是,上述第一层操作者和第二层操作者均为调用类操作者,具有启动其它操作者的能力或功能。
另外,根据燃料电池系统测试应用程序开发及测试需求,可以精细化各操作者的功能。调用类操作者还可以包括数据采集操作者、数据判定操作者、报文读取操作者、报文写入操作者、报文解析操作者、报文匹配操作者。非调用类操作者可以包括数据存储操作者和数据判定操作者。
数据采集操作者可以通过调用数据采集卡驱动类,解析从命令流操作者发出的控制指令,向第一测试控制设备读写模拟量(AI/AO),数字量读写(DI/DO),并将读取的数据解析后作为测试操作参数,启动数据判定操作者。以及将读取的数据解析后发送给前面板操作者在用户界面中进行显示,并发送给数据存储操作者进行存储。其中,第一测试控制设备可以实施为具有模拟信号输入/输出及数字信号输入输出能力的数据采集卡。
由于燃料电池系统测试过程中,处理器与燃料电池系统测试设备之间通信通常使用CAN网络,为提高操作者复用效率,可以将CAN报文的处理功能细化处理,将CAN报文处理功能分配给多个操作者。其中,燃料电池系统测试设备可以实施为具有CAN通信能力的燃料电池系统、具有CAN通信能力的高压电源、具有CAN通信能力的电子负载等。
报文读取操作者可以通过调用CAN驱动类,实时读取CAN网络的报文数据的功能,并将读取到的报文数据作为测试操作参数,生成下一个操作者的控制指令,也是生成报文解析操作者的控制指令,启动报文解析操作者,并将控制指令发送给报文解析操作者。
报文解析操作者具有根据设置的CAN协议进行将数据转换为CAN报文,或者将CAN报文转换为普通数据的能力或功能。其中,根据CAN通信协议,将报文读取操作者发出控制指令中携带的报文数据进行解析,将解析后的CAN报文作为测试操作参数,并生成报文匹配操作者的控制指令,并发送至报文匹配操作者。报文解析操作者还可以将命令流操作者发出的控制命令中携带的指令转化为报文数据,将转化后的CAN报文作为测试操作参数,生成报文写入操作者的控制指令,并发送至报文写入操作者。
报文写入操作者可以通过调用CAN驱动类,实现定周期循环发送报文和事件的功能,将从报文解析操作者发出的控制指令中的报文数据发送至CAN网络,并生成写入成功信号,反馈给命令流操作者,以使命令流操作者获知报文写入操作执行结束。
报文匹配操作者将从报文解析操作者发出的控制指令中携带的解析后的CAN报文中的物理量,例如心跳信号、高压电源电压等物理量进行匹配,并将匹配到的心跳信号、高压电源电压等物理量发送给前面板操作者,在前面板操作者生成的用户界面中的相应位置进行显示,并将确定出的心跳信号或者高压电源电压作为测试操作参数,生成数据判定操作者的控制指令,启动数据判定操作者,并将控制指令发送给数据判定操作者。还可以将确定出的心跳信号或者高压电源电压发送给数据存储操作者进行数据存储。
数据判定操作者可以根据接收的控制指令的类型或者控制指令中携带的测试操作参数,利用预先配置的判定条件,对控制指令中的测试操作参数是否判定条件进行判定。也可以对接收的控制指令进行二次解析,将解析后的数据,利用预先配置的判定条件,进行是否满足条件的判定,并将判定结果反馈给命令流操作者,以使命令流操作者获知某个测试操作的判定过程执行结束。例如,在实际测试场景中,数据判定操作者可以判定控制指令中的测试台电压值是否满足第一预设条件,判定心跳信号是否满足第二预设条件,判定高压电源电压是否满足第三预设条件,或者判定氢气高压值是否满足第四预设条件。其中,预设条件可以根据实际应用场景,设置相应的判决门限值。
在实际应用场景中,调用类操作者还可以包括串口操作者具有调用串口驱动类,用于解析从命令流操作者发出的控制指令,与燃料电池系统测试设备通过串口进行通信,并将从设备中获取的数据进行解析,作为测试操作者参数生成控制指令,发送至数据判定参作者。可以从设备中获取的数据解析后发送给前面板操作者和数据存储操作者。其中,燃料电池系统测试设备可以实施为具有串口通信能力的环境仓等设备。
数据存储操作者具有将从前面板操作者发出的控制指令,命令流操作者发出的控制指令,数据判定操作向命令流操作者反馈的数据,报文匹配操作者向前面板操作者反馈的数据,数据采集操作者发出的控制指令数据采集操作者向前面板反馈的数据,并存储至存储器或磁盘中。
一种可能的实施方式中,可以通过操作者复用的方式,使操作者在不同测试任务中被启动或调用。若测试任务包括多个子测试任务,也可以通过操作者复用的方式,使操作者在不同子测试任务中被启动或调用,减少占用的存储或计算资源。
实施例三
基于上述实施例中关于各操作者功能,在燃料电池系统测试过程中,一个测试指令对应的测试任务可以包括多个测试操作或者多个测试子任务。通过命令流操作者根据操作者启动顺序中次序(或序号)与控制指令的对应关系,可以确定各次序对应操作者的控制指令(或者命令),各次序对应的线程可以是各测试操作或测试子任务对应的根操作者,由根操作者开始启动下一个操作者,然后逐个操作者进行启动。
图5根据一示例性实施例示出了各操作者的连接关系。例如,命令流操作者501配置的操作者启动顺序为第一次序对应的测试子任务为测试台上电操作、第二次序对应的测试子任务为燃料电池系统控制器唤醒操作、第三次序对应的测试子任务为高压电源上电操作、第四次序对应的测试子任务为氢气高压检测操作、第五次序对应的测试子任务为燃料电池系统开机操作。
第一次序对应的测试子任务对应的根操作者为数据采集操作者502,第二次序对应的测试子任务对应的根操作者为数据采集操作者502,第三次序对应的测试子任务对应的根操作者为报文解析操作者503,第四次序对应的测试子任务对应的根操作者为数据采集操作者502,第五次序对应的测试子任务对应的根操作者为报文解析操作者503。其中,每个次序对应的操作者的控制指令各不相同。
例如,第一次序对应的控制指令为C1、第二次序对应的控制指令为C2、第三次序对应的控制指令为C3、第四次序对应的控制指令为C4、第五次序对应的控制指令为C5。
命令流操作者501响应于前面板操作者510发送的控制指令,操作者启动顺序中的第一次序对应的操作者,也即数据采集操作者502。在第一次序对应的测试子任务中,数据采集操作者502的下一层操作者为数据判定操作者504。
数据采集操作者502接收到控制指令C1后,根据控制指令C1中携带的测试操作参数(例如指令类型或者命令类型),数据采集操作者502根据控制指令C1中携带的测试操作参数,可以确定出该控制指令C1对应的操作为,向第一测试控制设备(例如数据采集硬件)的发送上电命令,例如通过第一测试控制设备的指定通道中写入上电指令,使燃料电池系统的测试台上电,以及从第一测试控制设备的指定通道中读取测试台电压值。数据采集操作者502将读取的测试台电压值作为测试操作参数,生成数据判定操作者504的控制指令M1,由数据采集操作者502启动数据判定操作者504,并将控制指令M1发送给数据判定操作者504。
数据判定操作者504根据控制指令M1中携带的测试操作参数,也即测试台电压值,利用预先配置的测试台电压值判定条件,判定控制指令M1携带的测试台电压值是否小于预设门限值,并将判定结果(可以实施为“是”,“否”,“小于”,“大于”)发送给前面板操作者510,以及生成反馈信号(反馈控制指令)发送给命令流操作者501,以使命令流操作者501根据反馈信号或反馈控制指令,获知第一次序对应的子测试任务结束,可以启动第二次序对应的子测试任务对应的数据采集操作者502。
可选地,可以在第二次序对应的子测试任务执行之前,控制关闭第一次序对应的子测试任务过程中被启动的操作者。例如,数据采集操作者502在启动数据判定操作者504后,可以向命令流操作者501发送响应信号,使命令流操作者501获知数据采集操作者502执行完控制指令C1对应的测试操作。数据判定操作者504执行完控制指令M1对应的测试操作后,可以向数据采集操作者502发送响应信号,是数据采集操作者502获知数据判定操作504执行完控制指令M1对应的测试操作。
命令流操作者501向数据采集操作者502发送关闭指令。数据采集操作者502为调用类操作者,因此在接收到命令流操作者501发送的关闭指令后,需要确定数据判定操作者504是否执行完控制指令M1对应的测试操作。数据采集操作者502的响应信号,确定数据判定操作者504执行完控制指令M1对应的测试操作,将关闭指令发送给数据判定操作者504,并且关闭数据采集操作者502。
数据判定操作者504为非调用类操作者,在接收到数据采集操作者502发送的关闭指令后,直接响应于关闭指令,关闭数据判定操作者504。
需要说明的是,数据采集操作者502在执行第一次序对应的子测试任务过程中已被启动,并且,未在第二次序对应的子测试任务之前控制关闭,因而在执行第二次序对应的子测试任务时,命令流操作者501启动数据采集操作者502的过程可以视为调用过程。
数据采集操作者502接收到命令流操作者501发送的控制指令C2,生成报文读取操作者505的控制指令M2,启动报文读取操作者505。报文读取操作者505接收到控制指令M2后,从CAN硬件中读取CAN报文,并将读取的CAN报文作为测试操作参数生成报文解析操作者503的控制指令N1,启动报文解析操作者503,并将控制指令N1发送给报文解析操作者503。报文解析操作者503对控制指令N1中携带的CAN报文进行解析,并将解析后的CAN报文作为测试操作参数,生成报文匹配操作者506的控制指令N2,启动报文匹配操作者506,将控制指令N2发送给报文匹配操作者506。报文匹配操作者506确定控制指令N2中携带的解析后的CAN报文中的物理量,例如确定物理量为心跳信号,将心跳信号作为测试操作参数,生成数据判定操作者504的控制指令N3。数据判定操作者504根据预设的判定条件判定控制指令N3中携带的测试操作参数,并将判定结果发送给前面板操作者510,以及向命令流操作者501发送反馈信号,以使命令流操作者获知第二次序对应的子测试任务结束,可以启动第三次序对应的子测试任务对应的报文解析操作者503。
第三次序对应子测试任务对应的根操作者为报文解析操作者503,由于报文解析操作者503在第二次序对应子测试任务执行过程中有报文读取操作者505启动,因而在执行第三次对应的子测试任务时,命令流操作者501启动报文解析操作者503的过程可以视为调用过程。
报文解析操作者503接收到命令流操作者501发送的控制指令C3,其中控制指令C3中的测试操作参数为需要转换为CAN报文的指令,例如,高压电源上电控制指令。报文解析操作者503将控制指令C3中的测试操作参数转换为CAN报文,并将转换后的CAN报文作为测试操作参数,生成报文写入操作者507的控制指令Q1,启动报文写入操作者507,并将控制指令Q1发送给报文写入操作者507。报文写入操作者507接收到控制指令Q1后,将控制指令Q1中的转换后的CAN报文写入CAN硬件中,通过CAN网络向为燃料电池系统提供高压电源的设备发送高压电源上电报文,以使提供高压电源的设备为燃料电池系统提供高压电源。
报文写入操作者507生成成功写入信号,作为测试操作参数,启动或调用报文读取操作者505生成报文读取操作者505的控制指令P1,并将控制指令P1发送给报文读取操作者505,从CAN硬件中读取CAN网络中的CAN报文,例如提供高压电源的设备发起周期性的携带有高压电源电压报文,并将读取的CAN报文作为测试操作参数,生成报文解析操作者503的控制指令P2,启动或调用报文解析操作者503,将控制指令P2发送给报文解析操作者503。
报文解析操作者503接收到控制指令P2后,将控制指令P2中的测试操作参数进行解析,并将解析后的CAN报文作为测试操作参数,生成报文匹配操作者506的控制指令P3,启动或调用报文匹配操作者506,将控制指令P3发送给报文匹配操作者506。报文匹配操作者506接收到控制指令P3后,匹配控制指令P3携带的解析后的CAN报文中携带的物理量,匹配到携带的物理量信号为高压电源电压,将高压电源电压作为测试操作参数,生成数据判定操作者504的控制指令P4,启动或调用数据判定操作者504,向数据判定操作者504发送控制指令P4。数据判定操作者504接收到控制指令P4后,根据预设的判定条件判定控制指令P4中携带的测试操作参数,例如高压电源电压,并将判定结果发送给前面板操作者510,以及向命令流操作者501发送反馈信号,以使命令流操作者获知第三次序对应的子测试任务结束,可以启动第四次序对应的子测试任务对应的数据采集操作者502。
数据采集操作者502接收到控制指令C4后,根据控制指令C4中携带的测试操作参数(例如指令类型或者命令类型),数据采集操作者502根据控制指令C4中携带的测试操作参数,可以确定出该控制指令C4对应的操作为向第一测试控制设备(例如数据采集硬件)的发送开启进氢阀指令,例如通过第一测试控制设备的指定通道中写入开启进氢阀指令,使第一测试控制设备控制开启进氢阀,为燃料电池系统高压氢气,以及从第一测试控制设备的指定通道中读取氢气高压值。数据采集操作者502将读取的氢气高压值作为测试操作参数,生成数据判定操作者504的控制指令M3,由数据采集操作者502启动数据判定操作者504,并将控制指令M3发送给数据判定操作者504。
数据判定操作者504根据控制指令M3中携带的测试操作参数,也即氢气高压值,利用预先配置的氢气高压值判定条件,判定控制指令M3携带的氢气高压值是否小于预设门限值,并将判定结果(可以实施为“是”,“否”,“小于”,“大于”)发送给前面板操作者510,以及生成反馈信号(反馈控制指令)发送给命令流操作者501,以使命令流操作者501根据反馈信号或反馈控制指令,获知第四次序对应的子测试任务结束,可以启动第五次序对应的子测试任务对应的报文解析操作者503。
报文解析操作者503接收到命令流操作者501发送的控制指令C5,其中控制指令C5中的测试操作参数为需要转换为CAN报文的指令,例如,燃料电池系统开机指令。报文解析操作者503将控制指令C5中的测试操作参数转换为CAN报文,并将转换后的CAN报文作为测试操作参数,生成报文写入操作者507的控制指令Q3,启动报文写入操作者507,并将控制指令Q3发送给报文写入操作者507。报文写入操作者507接收到控制指令Q3后,将控制指令Q3中的转换后的CAN报文写入CAN硬件中,通过CAN网络向为燃料电池系统发送开机报文,以使燃料电池系统响应开机报文执行开机操作。报文写入操作者507生成或确定成功写入信号,作为测试操作参数或者反馈信号,发送给命令流操作者501,以使命令流操作者501根据反馈信号,获知第五次序对应的子测试任务结束。
一种可能的实施方式中,当某层操作者m执行测试操作结束后,启动下一个操作者或者向命令流操作者501发送反馈信号后,关闭或结束该层操作者m。
实施例四
基于上述实施例中命令流操作者501响应于接收的控制指令后,命令流操作者501对应的操作者启动顺序,由命令流操作者501控制启动各个次序(或序号)对应的子测试任务对应的根操作者的执行过程。可以设置多个命令流操作者,每个命令流操作者对应的操作者启动顺序不同,实现燃料电池系统测试应用程序集成多种测试流程或者多类型测试任务。
本发明还提供一种燃料电池系统测试应用程序构架,包括1个前面板操作者、5个命令流操作者,1个数据判定操作者,1个数据存储操作者,1个报文读取操作者,2个报文写入操作者,1个报文解析操作者,1个报文匹配操作者,2个数据采集操作者。
基于本发明提供的控制线程逐层启动的发明构思,可以应用其它测试场景中,例如,燃料电池子系统测试场景、燃料电池零部件测试场景或者汽车零部件测试场景等。还可以应用于上述测试场景相关的测试应用程序开发设计过程中。
另外,在测试场景中的设备,可以是具有CAN通信能力的燃料电池系统、具有模拟信号输入/输出以及数字信号输入输出能力的数据采集卡、具有CAN通信能力的高压电源、具有CAN通信能力的电子负载,具有串口通信能力的环境仓等设备。
基于相同的发明构思,本发明实施例提供一种燃料电池系统测试控制装置,包括:
处理模块,用于通过当前层线程接收到前一层线程根据测试操作参数确定的当前层线程对应的控制指令;
处理模块,还用于若当前层线程为非调用类线程,则通过当前层线程执行控制指令对应的操作;
处理模块,还用于若当前层线程为调用类线程,则执行控制指令对应的测试操作,并根据执行控制指令对应的测试操作后的测试操作参数确定下一层线程对应的控制指令,并启动下一层线程,将下一层线程对应的控制指令发送给下一层线程,并将下一层线程作为当前层线程。
在一种可能的实现方式中,前一层线程为第一层线程;处理模块还用于:
响应于触发的应用程序启动指令,启动第一层线程,并通过第一层线程生成用户界面;
响应于通过用户界面触发的携带测试操作参数的测试指令,通过第一层线程根据测试操作参数与线程的对应关系,确定测试操作参数对应的下一层线程;
根据测试操作参数确定下一层线程对应的控制指令,并启动下一层线程,将下一层线程对应的控制指令发送给下一层线程,并将下一层线程作为当前层线程。
在一种可能的实现方式中,若当前层线程为第二层线程,则当前层线程为调用类线程;处理模块,还用于:
依据第二层线程对应的线程启动顺序,将顺序中未启动的最小序号对应的线程作为下一层线程,将次序作为测试操作参数。
在一种可能的实现方式中,若前一层为第二层线程,则第二层线程接收到的控制指令是由第一层线程根据测试操作参数确定并触发的,或是由非调用类线程执行操作后通过反馈信号触发的。
在一种可能的实现方式中,处理模块具体用于:
若控制指令为控制测试台上电指令,则向第一测试控制设备发送测试台上电指令,通过第一测试控制设备读取测试台电压值,向第一层线程发送测试台电压值,将测试台电压值作为测试操作参数;或
若控制指令为控制唤醒燃料电池系统控制器指令,则向第一测试控制设备发送燃料电池系统控制器唤醒指令,将唤醒指令作为测试操作参数;或
若控制指令为控制进氢阀开启指令,则向第一测试控制设备发送开启进氢阀指令,通过第一测试控制设备读取氢气高压值,向第一层线程发送氢气高压值,将氢气高压值作为测试操作参数。
在一种可能的实现方式中,处理模块具体用于:
若控制指令中的测试操作参数为唤醒指令,则从控制器局域网络CAN硬件中读取CAN报文,将CAN报文作为测试操作参数;或
若控制指令中的测试操作参数为读取的CAN报文,则解析读取的CAN报文,将解析的CAN报文作为测试操作参数;或
若控制指令中的测试操作参数为解析的CAN报文,则确定解析的CAN报文中包含的心跳信号,向第一层线程发送心跳信号,将心跳信号作为测试操作参数;或
若控制指令中的测试操作参数为解析的CAN报文,则确定解析的CAN报文中包含的高压电源电压,向第一层线程发送高压电源电压,将高压电源电压作为测试操作参数;或
若控制指令为控制高压电源上电指令,则将控制高压电源上电指令转换为CAN报文,将转换的CAN报文作为测试操作参数;或若控制指令中的测试操作参数为转换的CAN报文,则向CAN硬件中写入控制指令中的转换的CAN报文,确定写入成功信号,并作为测试操作参数。
在一种可能的实现方式中,处理模块具体用于:
若控制指令中包含测试台电压值,则判定控制指令中的测试台电压值是否满足第一预设条件,并向第一层线程发送判定结果,以及向第二层线程发送反馈信号;或
若控制指令中包含心跳信号,则判定心跳信号是否满足第二预设条件,并向第一层线程发送判定结果,向第二层线程发送反馈信号;或
若控制指令中包含高压电源电压,则判定高压电源电压是否满足第三预设条件,并向第一层线程发送判定结果,向第二层线程发送反馈信号;或
若控制指令中包含氢气高压值,则判定氢气高压值是否满足第四预设条件,并向第一层线程发送判定结果,向第二层线程发送反馈信号。
在一种可能的实现方式中,处理模块还用于:
通过第一层线程确定的用户界面,展示接收到的数据,数据包括如下一种或多种:
测试台电压值、氢气高压值、心跳信号、高压电源电压、判定控制指令中的测试台电压值是否满足第一预设条件的判定结果、判定心跳信号是否满足第二预设条件的判定结果、判定高压电源电压是否满足第三预设条件的判定结果、判定氢气高压值是否满足第四预设条件的判定结果。
在一种可能的实现方式中,处理模块还用于:
通过第一层线程启动存储线程。
在一种可能的实现方式中,处理模块还用于:
若当前层线程为非调用类线程,则通过当前层线程执行控制指令对应的操作之后,通过存储线程存储当前层线程执行控制指令对应的测试操作后的测试操作参数。
在一种可能的实现方式中,处理模块还用于:
若当前层线程为调用类线程,则执行控制指令对应的测试操作,并根据执行控制指令对应的测试操作后的测试操作参数确定下一层线程对应的控制指令,并启动下一层线程,将下一层线程对应的控制指令发送给下一层线程,并将下一层线程作为当前层线程之后,通过存储线程存储当前层线程接收到前一层线程根据测试操作参数确定的当前层线程对应的控制指令,和/或,当前层线程执行控制指令对应的测试操作后的测试操作参数。
在一种可能的实现方式中,处理模块还用于:
在若所述当前层线程为非调用类线程,则通过所述当前层线程执行所述控制指令对应的操作之后,或者在所述若所述当前层线程为调用类线程,则执行所述控制指令对应的测试操作,并根据执行所述控制指令对应的测试操作后的测试操作参数确定下一层线程对应的控制指令,并启动所述下一层线程,将所述下一层线程对应的控制指令发送给所述下一层线程,并将所述下一层线程作为当前层线程之后,通过所述当前层线程接收到所述前一层线程发送的关闭指令,所述关闭指令为所述前一层线程确定所述当前层线程执行所述当前层线程对应的控制指令后触发的;
若所述当前层线程为非调用类线程,则响应于所述关闭指令,关闭所述当前层线程;
若所述当前层线程为调用类线程,则响应于所述关闭指令,确定所述下一层线程执行所述下一层线程对应的控制指令,将所述关闭指令发送给所述下一层线程,关闭所述当前层线程,并将所述下一层线程作为当前层线程。
本发明实施例提供一种燃料电池系统测试控制设备600,包括:处理器601和存储器602;
存储器602,用于存储处理器601执行的计算机程序。存储器602可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器602也可以是非易失性存储器(non-volatile memory),例如只读存储器,快闪存储器(flashmemory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器602是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器602可以是上述存储器的组合。
处理器601,可以包括一个或多个中央处理单元(central processing unit,CPU),图形处理单元(Graphics Processing Unit,GPU)或者为数字处理单元等等。
本发明实施例中不限定上述存储器602和处理器601之间的具体连接介质。本发明实施例在图6中以存储器602和处理器601之间通过总线603连接,总线603在图6中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线603可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器存储有程序代码,当程序代码被处理器执行时,使得处理器执行如上述燃料电池系统测试控制方法中的步骤。
本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述燃料电池系统测试控制方法的步骤。其中,可读存储介质可以为非易失可读存储介质。
以上参照示出根据本发明实施例的方法、装置(系统)和/或计算机程序产品的框图和/或流程图描述本申请。应理解,可以通过计算机程序指令来实现框图和/或流程图示图的一个块以及框图和/或流程图示图的块的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机的处理器和/或其它可编程数据处理装置,以产生机器,使得经由计算机处理器和/或其它可编程数据处理装置执行的指令创建用于实现框图和/或流程图块中所指定的功能/动作的方法。
相应地,还可以用硬件和/或软件(包括固件、驻留软件、微码等)来实施本申请。更进一步地,本申请可以采取计算机可使用或计算机可读存储介质上的计算机程序产品的形式,其具有在介质中实现的计算机可使用或计算机可读程序代码,以由指令执行系统来使用或结合指令执行系统而使用。在本申请上下文中,计算机可使用或计算机可读介质可以是任意介质,其可以包含、存储、通信、传输、或传送程序,以由指令执行系统、装置或设备使用,或结合指令执行系统、装置或设备使用。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种燃料电池系统测试控制方法,其特征在于,所述方法包括:
通过当前层线程接收到前一层线程根据测试操作参数确定的所述当前层线程对应的控制指令;
若所述当前层线程为非调用类线程,则通过所述当前层线程执行所述控制指令对应的操作;
若所述当前层线程为调用类线程,则执行所述控制指令对应的测试操作,并根据执行所述控制指令对应的测试操作后的测试操作参数确定下一层线程对应的控制指令,并启动所述下一层线程,将所述下一层线程对应的控制指令发送给所述下一层线程,并将所述下一层线程作为当前层线程;
其中,所述若所述当前层线程为调用类线程,且所述当前层线程不是第二层线程,则所述执行所述控制指令对应的测试操作,包括:
若所述控制指令为控制测试台上电指令,则向第一测试控制设备发送测试台上电指令,通过所述第一测试控制设备读取所述测试台电压值,向第一层线程发送所述测试台电压值,将所述测试台电压值作为测试操作参数;或
若所述控制指令为控制唤醒燃料电池系统控制器指令,则向所述第一测试控制设备发送燃料电池系统控制器唤醒指令,将所述唤醒指令作为测试操作参数;或
若所述控制指令为控制进氢阀开启指令,则向所述第一测试控制设备发送开启进氢阀指令,通过所述第一测试控制设备读取氢气压力值,向所述第一层线程发送所述氢气压力值,将所述氢气压力值作为测试操作参数;或
若所述控制指令中的测试操作参数为唤醒指令,则从控制器局域网络CAN硬件中读取CAN报文,将所述CAN报文作为所述测试操作参数;或
若所述控制指令中的测试操作参数为所述读取的CAN报文,则解析所述读取的CAN报文,将解析的CAN报文作为测试操作参数;或
若所述控制指令中的测试操作参数为所述解析的CAN报文,则确定所述解析的CAN报文中包含的心跳信号,向所述第一层线程发送所述心跳信号,将所述心跳信号作为所述测试操作参数;或
若所述控制指令中的测试操作参数为所述解析的CAN报文,则确定所述解析的CAN报文中包含的电源电压,向所述第一层线程发送所述电源电压,将所述电源电压作为所述测试操作参数;或
若所述控制指令为控制电源上电指令,则将所述控制电源上电指令转换为CAN报文,将转换的CAN报文作为所述测试操作参数;或若所述控制指令中的测试操作参数为所述转换的CAN报文,则向所述CAN硬件中写入所述控制指令中的转换的CAN报文,确定写入成功信号,并作为所述测试操作参数;
其中,所述若所述当前层线程为非调用类线程,所述执行所述控制指令对应的测试操作,包括:
若所述控制指令中包含测试台电压值,则判定所述控制指令中的测试台电压值是否满足第一预设条件,并向第一层线程发送判定结果,以及向所述第二层线程发送反馈信号;或
若所述控制指令中包含心跳信号,则判定所述心跳信号是否满足第二预设条件,并向所述第一层线程发送判定结果,向所述第二层线程发送反馈信号;或
若所述控制指令中包含电源电压,则判定所述电源电压是否满足第三预设条件,并向所述第一层线程发送判定结果,向所述第二层线程发送反馈信号;或
若所述控制指令中包含氢气压力值,则判定所述氢气压力值是否满足第四预设条件,并向所述第一层线程发送判定结果,向所述第二层线程发送反馈信号。
2.根据权利要求1所述的方法,其特征在于,所述前一层线程为所述第一层线程;
所述通过当前层线程接收到前一层线程根据测试操作参数确定的所述当前层线程对应的控制指令之前,还包括:
响应于触发的应用程序启动指令,启动所述第一层线程,并通过所述第一层线程生成用户界面;
响应于通过所述用户界面触发的携带测试操作参数的测试指令,通过所述第一层线程根据测试操作参数与线程的对应关系,确定所述测试操作参数对应的下一层线程;
根据所述测试操作参数确定所述下一层线程对应的控制指令,并启动所述下一层线程,将所述下一层线程对应的控制指令发送给所述下一层线程,并将所述下一层线程作为所述当前层线程。
3.根据权利要求1或2所述的方法,其特征在于,若所述当前层线程为调用类线程,且所述当前层线程为第二层线程,则所述执行所述控制指令对应的测试操作,包括:
依据所述第二层线程对应的线程启动顺序,将所述顺序中未启动的最小序号对应的线程作为下一层线程,将所述顺序作为测试操作参数。
4.根据权利要求1所述的方法,其特征在于,若所述前一层线程为第二层线程,则所述第二层线程接收到的控制指令是由所述第一层线程根据测试操作参数确定并触发的,或是由所述非调用类线程执行操作后通过反馈信号触发的。
5.根据权利要求1或4所述的方法,其特征在于,所述方法还包括:
通过所述第一层线程确定的用户界面,展示接收到的数据,所述数据包括如下一种或多种:
测试台电压值、氢气压力值、心跳信号、电源电压、判定所述控制指令中的测试台电压值是否满足第一预设条件的判定结果、判定所述心跳信号是否满足第二预设条件的判定结果、判定所述电源电压是否满足第三预设条件的判定结果、判定所述氢气压力值是否满足第四预设条件的判定结果。
6.根据权利要求2所述的方法,其特征在于,所述方法还包括:
通过所述第一层线程启动存储线程。
7.根据权利要求6所述的方法,其特征在于,所述若所述当前层线程为非调用类线程,则通过所述当前层线程执行所述控制指令对应的操作之后,所述方法还包括:
通过所述存储线程存储所述当前层线程执行所述控制指令对应的测试操作后的测试操作参数。
8.根据权利要求6所述的方法,其特征在于,所述若所述当前层线程为调用类线程,则执行所述控制指令对应的测试操作,并根据执行所述控制指令对应的测试操作后的测试操作参数确定下一层线程对应的控制指令,并启动所述下一层线程,将所述下一层线程对应的控制指令发送给所述下一层线程,并将所述下一层线程作为当前层线程之后,所述方法还包括:
通过所述存储线程存储所述当前层线程接收到前一层线程根据测试操作参数确定的所述当前层线程对应的控制指令,和/或,所述当前层线程执行所述控制指令对应的测试操作后的测试操作参数。
9.根据权利要求1所述的方法,其特征在于,在若所述当前层线程为非调用类线程,则通过所述当前层线程执行所述控制指令对应的操作之后,或者在所述若所述当前层线程为调用类线程,则执行所述控制指令对应的测试操作,并根据执行所述控制指令对应的测试操作后的测试操作参数确定下一层线程对应的控制指令,并启动所述下一层线程,将所述下一层线程对应的控制指令发送给所述下一层线程,并将所述下一层线程作为当前层线程之后,所述方法还包括:
通过所述当前层线程接收到所述前一层线程发送的关闭指令,所述关闭指令为所述前一层线程确定所述当前层线程执行所述当前层线程对应的控制指令后触发的;
若所述当前层线程为非调用类线程,则响应于所述关闭指令,关闭所述当前层线程;
若所述当前层线程为调用类线程,则响应于所述关闭指令,确定所述下一层线程执行所述下一层线程对应的控制指令,将所述关闭指令发送给所述下一层线程,关闭所述当前层线程,并将所述下一层线程作为当前层线程。
10.一种燃料电池系统测试控制装置,其特征在于,所述装置包括:
处理模块,用于通过当前层线程接收到前一层线程根据测试操作参数确定的所述当前层线程对应的控制指令;
所述处理模块,还用于若所述当前层线程为非调用类线程,则通过所述当前层线程执行所述控制指令对应的操作;
所述处理模块,还用于若所述当前层线程为调用类线程,则执行所述控制指令对应的测试操作,并根据执行所述控制指令对应的测试操作后的测试操作参数确定下一层线程对应的控制指令,并启动所述下一层线程,将所述下一层线程对应的控制指令发送给所述下一层线程,并将所述下一层线程作为当前层线程;
其中,所述若所述当前层线程为调用类线程,且所述当前层线程不是第二层线程,则所述执行所述控制指令对应的测试操作,包括:
若所述控制指令为控制测试台上电指令,则向第一测试控制设备发送测试台上电指令,通过所述第一测试控制设备读取所述测试台电压值,向第一层线程发送所述测试台电压值,将所述测试台电压值作为测试操作参数;或
若所述控制指令为控制唤醒燃料电池系统控制器指令,则向所述第一测试控制设备发送燃料电池系统控制器唤醒指令,将所述唤醒指令作为测试操作参数;或
若所述控制指令为控制进氢阀开启指令,则向所述第一测试控制设备发送开启进氢阀指令,通过所述第一测试控制设备读取氢气压力值,向所述第一层线程发送所述氢气压力值,将所述氢气压力值作为测试操作参数;或
若所述控制指令中的测试操作参数为唤醒指令,则从控制器局域网络CAN硬件中读取CAN报文,将所述CAN报文作为所述测试操作参数;或
若所述控制指令中的测试操作参数为所述读取的CAN报文,则解析所述读取的CAN报文,将解析的CAN报文作为测试操作参数;或
若所述控制指令中的测试操作参数为所述解析的CAN报文,则确定所述解析的CAN报文中包含的心跳信号,向所述第一层线程发送所述心跳信号,将所述心跳信号作为所述测试操作参数;或
若所述控制指令中的测试操作参数为所述解析的CAN报文,则确定所述解析的CAN报文中包含的电源电压,向所述第一层线程发送所述电源电压,将所述电源电压作为所述测试操作参数;或
若所述控制指令为控制电源上电指令,则将所述控制电源上电指令转换为CAN报文,将转换的CAN报文作为所述测试操作参数;或若所述控制指令中的测试操作参数为所述转换的CAN报文,则向所述CAN硬件中写入所述控制指令中的转换的CAN报文,确定写入成功信号,并作为所述测试操作参数;
其中,所述若所述当前层线程为非调用类线程,所述执行所述控制指令对应的测试操作,包括:
若所述控制指令中包含测试台电压值,则判定所述控制指令中的测试台电压值是否满足第一预设条件,并向第一层线程发送判定结果,以及向第二层线程发送反馈信号;或
若所述控制指令中包含心跳信号,则判定所述心跳信号是否满足第二预设条件,并向所述第一层线程发送判定结果,向所述第二层线程发送反馈信号;或
若所述控制指令中包含电源电压,则判定所述电源电压是否满足第三预设条件,并向所述第一层线程发送判定结果,向所述第二层线程发送反馈信号;或
若所述控制指令中包含氢气压力值,则判定所述氢气压力值是否满足第四预设条件,并向所述第一层线程发送判定结果,向所述第二层线程发送反馈信号。
11.一种燃料电池系统测试控制设备,其特征在于,包括处理器和存储器;
其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行权利要求1~9任一项所述方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1~9任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010785551.9A CN112000396B (zh) | 2020-08-06 | 2020-08-06 | 一种燃料电池系统测试控制方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010785551.9A CN112000396B (zh) | 2020-08-06 | 2020-08-06 | 一种燃料电池系统测试控制方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112000396A CN112000396A (zh) | 2020-11-27 |
CN112000396B true CN112000396B (zh) | 2024-04-12 |
Family
ID=73463089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010785551.9A Active CN112000396B (zh) | 2020-08-06 | 2020-08-06 | 一种燃料电池系统测试控制方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112000396B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112652089A (zh) * | 2020-12-17 | 2021-04-13 | 华人运通(上海)云计算科技有限公司 | 诊断方法、车辆、系统及存储介质 |
CN114200224B (zh) * | 2021-11-04 | 2024-01-19 | 东风柳州汽车有限公司 | 车载器件测试系统及方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1688976A (zh) * | 2002-09-17 | 2005-10-26 | 洁能氏公司 | 控制燃料电池测试设备的系统和方法 |
CN102097636A (zh) * | 2011-01-07 | 2011-06-15 | 武汉理工大学 | 一种燃料电池系统的故障诊断装置及方法 |
CN107340441A (zh) * | 2017-06-07 | 2017-11-10 | 同济大学 | 一种燃料电池汽车动力总成集成测试系统 |
WO2019094966A1 (en) * | 2017-11-13 | 2019-05-16 | President And Fellows Of Harvard College | Thread-based potentiometric ion-sensing |
CN109782735A (zh) * | 2019-01-24 | 2019-05-21 | 安徽优旦科技有限公司 | 一种测试数据模拟方法、装置及系统 |
CN109950579A (zh) * | 2019-03-19 | 2019-06-28 | 上海汉翱新能源科技有限公司 | 一种燃料电池发动机智能控制平台及其控制方法 |
CN110574079A (zh) * | 2017-04-07 | 2019-12-13 | 爱尔比奎特公司 | 用于验证控制系统操作的技术 |
CN111176961A (zh) * | 2019-12-05 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 一种应用程序测试方法、装置及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030022036A1 (en) * | 2001-07-25 | 2003-01-30 | Ballard Power Systems Inc. | Fuel cell controller self inspection |
-
2020
- 2020-08-06 CN CN202010785551.9A patent/CN112000396B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1688976A (zh) * | 2002-09-17 | 2005-10-26 | 洁能氏公司 | 控制燃料电池测试设备的系统和方法 |
CN1702471A (zh) * | 2002-09-17 | 2005-11-30 | 洁能氏公司 | 控制燃料电池测试设备的系统和方法 |
CN102097636A (zh) * | 2011-01-07 | 2011-06-15 | 武汉理工大学 | 一种燃料电池系统的故障诊断装置及方法 |
CN110574079A (zh) * | 2017-04-07 | 2019-12-13 | 爱尔比奎特公司 | 用于验证控制系统操作的技术 |
CN107340441A (zh) * | 2017-06-07 | 2017-11-10 | 同济大学 | 一种燃料电池汽车动力总成集成测试系统 |
WO2019094966A1 (en) * | 2017-11-13 | 2019-05-16 | President And Fellows Of Harvard College | Thread-based potentiometric ion-sensing |
CN109782735A (zh) * | 2019-01-24 | 2019-05-21 | 安徽优旦科技有限公司 | 一种测试数据模拟方法、装置及系统 |
CN109950579A (zh) * | 2019-03-19 | 2019-06-28 | 上海汉翱新能源科技有限公司 | 一种燃料电池发动机智能控制平台及其控制方法 |
CN111176961A (zh) * | 2019-12-05 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 一种应用程序测试方法、装置及存储介质 |
Non-Patent Citations (2)
Title |
---|
Alternating Hydrogen Supply System with Multiple Metal Hydride Hydrogen Tanks for Small Fuel Cell Vehicle;K. IKEMOTO;《2018 18th International Conference on Control, Automation and Systems (ICCAS)》;307-312 * |
燃料电池汽车氢气管理系统测试平台的构建;宋锦刚;《电源技术》;第34卷(第07期);717-720 * |
Also Published As
Publication number | Publication date |
---|---|
CN112000396A (zh) | 2020-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112000396B (zh) | 一种燃料电池系统测试控制方法、装置、设备及存储介质 | |
CN109977012B (zh) | 系统的联调测试方法、装置、设备及计算机可读存储介质 | |
CN109218820A (zh) | 一种视频渲染器及视频渲染方法 | |
CN105824652A (zh) | 一种操作系统下直接更改bios设置的方法及系统 | |
CN111782525B (zh) | Java方法远程调试方法及装置 | |
CN111695827A (zh) | 业务流程的管理方法、装置、电子设备及存储介质 | |
CN110908837A (zh) | 应用程序异常处理方法、装置、电子设备及存储介质 | |
CN114218052A (zh) | 一种业务交互图生成方法、装置、设备及存储介质 | |
CN105528261A (zh) | 一种嵌入式设备中智能输出调试信息的方法及系统 | |
CN114647519A (zh) | 原生平台和Flutter平台间的数据传输方法、装置及存储介质 | |
CN110908866A (zh) | 软件监控方法及相关设备 | |
CN114238127A (zh) | 接口测试方法、装置、设备及存储介质 | |
CN114116487B (zh) | 压力测试方法、装置、电子设备及存储介质 | |
CN115357493A (zh) | 测试方法、装置、电子设备和存储介质 | |
CN108153671B (zh) | 一种面向atml信号的运行时服务的测试系统及方法 | |
CN110362906B (zh) | 一种模拟车载电压动态变化环境的方法及系统 | |
CN114610446A (zh) | 一种自动注入探针的方法、装置及系统 | |
CN111026719B (zh) | 数据处理装置及其控制方法 | |
CN114077473A (zh) | 通信方法、装置及系统 | |
CN112988422A (zh) | 一种异步消息处理方法、装置、电子设备及存储介质 | |
CN107220149B (zh) | 在Windows下对Linux系统中无线通讯模块调试数据抓取方法和系统 | |
CN116032814B (zh) | 一种基于capl的can网关自动测试系统、方法及测试机 | |
CN107368357B (zh) | 资源管理窗口的多标签显示方法及模块 | |
CN104360889A (zh) | 一种驱动程序加载方法及装置 | |
CN114367995B (zh) | 基于rpa和ai的高密度无人值守机器人控制方法 |
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 |