电竞比分网-中国电竞赛事及体育赛事平台

分享

診斷基礎(chǔ):如何理解Operation Cycle?

 開(kāi)心果NeedCar 2023-06-21 發(fā)布于上海

診斷開(kāi)發(fā)過(guò)程中,理解需求時(shí),Operation Cycle的定義和實(shí)現(xiàn)不可避免。到底什么是Operation Cycle?reset算是新的Operation Cycle嗎?本文,我們侃侃Operation Cycle。

1、什么是Operation Cycle

(一)DEM(Specifification of Diagnostic Event Manager)解釋

關(guān)于Operation Cycle的定義,Autosar的DEM(Specifification of Diagnostic Event Manager)解釋如下:

老實(shí)說(shuō),我沒(méi)太理解這個(gè)定義,只是看懂了舉例:點(diǎn)火循環(huán)、駕駛循環(huán)等可以作為Operation Cycle。

對(duì)于操作循環(huán)的類(lèi)型,Autosar中給了多個(gè)例子,如下所示:

即:點(diǎn)火循環(huán)、上下電循環(huán)、OBD駕駛循環(huán)、暖機(jī)循環(huán)、主動(dòng)激活/被動(dòng)使能循環(huán)均可以看作是一個(gè)Operation Cycle。

  • 點(diǎn)火循環(huán):一般指KL15滿足off->on->off狀態(tài)變化時(shí),為一個(gè)點(diǎn)火循環(huán)。具體解釋如下所示:

  • 上下電循環(huán):可以理解為ECU從完全斷電到供電的過(guò)程。與點(diǎn)火循環(huán)有什么不同呢?點(diǎn)火循環(huán)中,ECU未必?cái)嚯姟?/span>

  • OBD駕駛循環(huán):主要由Master ECU提供,Primary ECUs使用。具體釋義如下:

  • 暖機(jī)循環(huán):類(lèi)似OBD駕駛循環(huán),具體釋義如下所示:

(二)Road vehicles — Unified diagnostic services (UDS) —Part 1

再理解一下14229-1中的解釋?zhuān)缦滤荆?br>

解釋:一個(gè)操作循環(huán)可以看作是監(jiān)控運(yùn)行(monitor to run)的起止條件。一個(gè)操作循環(huán)可以包含多個(gè)監(jiān)控循環(huán)。eg:節(jié)點(diǎn)丟失的監(jiān)控,10ms的周期性報(bào)文Message_A,一個(gè)操作循環(huán)內(nèi),監(jiān)控條件滿足,會(huì)多次監(jiān)控Message_A,或者說(shuō)一直監(jiān)控。監(jiān)控的頻率(監(jiān)控循環(huán))可以≤10ms,以此判斷Message_A在當(dāng)前操作循環(huán)內(nèi)的丟失情況。
(三)企業(yè)標(biāo)準(zhǔn)中的定義
項(xiàng)目開(kāi)發(fā)中,任何需求的實(shí)現(xiàn),一般會(huì)遵循這樣一個(gè)準(zhǔn)則:企標(biāo)規(guī)范優(yōu)先通用規(guī)范。某企業(yè)標(biāo)準(zhǔn)如下所示:

什么意思呢?操作循環(huán)的開(kāi)始是指ECU執(zhí)行完完整的啟動(dòng)時(shí)序,操作循環(huán)的結(jié)束是指ECU執(zhí)行完shutdown時(shí)序,shutdown時(shí)序完成要在執(zhí)行Power Down及Sleep Mode設(shè)置之前。這里的Power Down可以理解為(Power On Reset動(dòng)作,即:PORST Pin的拉低動(dòng)作);Sleep Mode可以理解為低功耗模式,或者transceiver休眠模式的設(shè)置。
提示:這里的shutdown是指EcuM的下電時(shí)序。
在實(shí)際的工程開(kāi)發(fā)中,一般只選擇一種Operation Cycle,當(dāng)監(jiān)控使能條件滿足以后,即可對(duì)預(yù)定事件(Event)監(jiān)控。

2、程序reset,可以看作是一個(gè)新的Operation Cycle開(kāi)始嗎?

上述,我們?cè)谠噲D解釋清楚什么是Operation Cycle,個(gè)人而言,第三種解釋?xiě)?yīng)該更清晰。如果是這樣,我們需要更進(jìn)一步地解釋清楚:程序Reset,能否看作一個(gè)新的Operation Cycle開(kāi)始?

對(duì)于ECU Reset,類(lèi)型很多,eg:Application Reset、System Reset、異常復(fù)位(Trap)、診斷復(fù)位($11服務(wù)、$10 02/82)、Cold Start等。

每種ECU復(fù)位類(lèi)型,執(zhí)行的程序可能會(huì)不同。一般和電壓相關(guān)的復(fù)位類(lèi)型,我們稱(chēng)為冷啟動(dòng),此種復(fù)位類(lèi)型程序需要執(zhí)行ECU的上下電時(shí)序,可以看作一個(gè)完整的操作循環(huán)(不考慮異常斷電,異常下電可能導(dǎo)致NVM存儲(chǔ)失敗或者未及時(shí)存儲(chǔ))。

如果復(fù)位類(lèi)型是Application Reset(比如:調(diào)用MCU_PerformReset()),在一些程序設(shè)計(jì)中,不會(huì)執(zhí)行完整的Shutdown時(shí)序,如此,還能否看作一個(gè)新的操作循環(huán)?:個(gè)人不認(rèn)可。如果不能作為一個(gè)新的操作循環(huán),程序Reset以后,監(jiān)控的中間變量是否需要全部清除?個(gè)人更傾向于清除監(jiān)控的所有中間變量,因?yàn)?,Event如果真的異常,對(duì)應(yīng)的監(jiān)控變量仍然會(huì)達(dá)到DTC上報(bào)的閾值;如果保留了中間變量(比如:FDC:fault dectect counter),會(huì)使得程序在已有的中間變量基礎(chǔ)上繼續(xù)累加,導(dǎo)致DTC上報(bào)過(guò)快,甚至誤報(bào)

舉例:某個(gè)Event失敗10次,上報(bào)對(duì)應(yīng)的DTC,如果程序Reset或者監(jiān)控條件不滿足時(shí),沒(méi)有清除中間變量,會(huì)帶來(lái)怎樣的影響呢?

(一)程序Reset,導(dǎo)致DTC上報(bào)過(guò)快

如下圖:

  1. Operation Cycle 1中,T0開(kāi)始監(jiān)控某Event;

  2. T1時(shí)刻,此Event失敗9次。同時(shí),由于程序軟復(fù)位(假設(shè)此處的reset,中間變量未有清除),開(kāi)始新的Operation Cycle 2;

  3. T2時(shí)刻,由于工況的不穩(wěn)定,認(rèn)為Event再次失?。矗菏×?0次),導(dǎo)致對(duì)應(yīng)的DTC立馬上報(bào)。

如此,會(huì)使得DTC有誤報(bào)風(fēng)險(xiǎn)。

(二)監(jiān)控條件不滿足,導(dǎo)致的DTC上報(bào)過(guò)快

如下圖:

  1. 某Event在T0~T1期間,監(jiān)控了9次失敗;

  2. T1開(kāi)始,監(jiān)控條件不滿足,失敗次數(shù)不清除;

  3. T2時(shí)刻,Event的監(jiān)控條件重新滿足,可能由于工況的不穩(wěn)定因素(比如:Tasking的抖動(dòng)),導(dǎo)致Event檢查失敗,累加到了10次,上報(bào)DTC。

如此,會(huì)使得DTC有誤報(bào)風(fēng)險(xiǎn)。

3、Operation Cycle操作

在DEM中,Operation Cycle的狀態(tài)包括:DEM_CYCLE_STATE_STARTDEM_CYCLE_STATE_END。

這兩種Operation Cycle可以通過(guò)接口Dem_SetOperationCycleState(Std_ReturnType, uint8, Dem_OperationCycleStateType)設(shè)置。按照如上的討論,可以在程序初始化,DEM模塊初始化時(shí)(Dem_Init()),將Operation Cycle設(shè)置為DEM_CYCLE_STATE_START,在Shutdown時(shí)序中將Operation Cycle設(shè)置為DEM_CYCLE_STATE_END。

Dem_SetOperationCycleState()接口可以由SWC調(diào)用,即:Operation Cycle的起始和結(jié)束,可以由上層控制,如下所示:

如果想獲取當(dāng)前Operation Cycle狀態(tài),可以通過(guò)Std_ReturnType Dem_GetOperationCycleState(uint8OperationCycleId,Dem_OperationCycleStateType* CycleState)接口。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多