|
診斷開(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)解釋
老實(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。
![]()
![]() 再理解一下14229-1中的解釋?zhuān)缦滤荆?br>
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ò)快 如下圖:
如此,會(huì)使得DTC有誤報(bào)風(fēng)險(xiǎn)。 ![]() 如下圖:
如此,會(huì)使得DTC有誤報(bào)風(fēng)險(xiǎn)。
3、Operation Cycle操作 在DEM中,Operation Cycle的狀態(tài)包括:DEM_CYCLE_STATE_START和DEM_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)接口。 |
|
|
來(lái)自: 開(kāi)心果NeedCar > 《待分類(lèi)》