日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AUTOSAR——MBD应用之NM模块Stateflow实现

發布時間:2024/3/13 编程问答 92 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AUTOSAR——MBD应用之NM模块Stateflow实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、前言

二、Autosar NM概括

2.1 術語

2.2? PDU

2.3 文件結構

2.4 NM結構體

2.5?狀態機

三、Stateflow實現

3.1 NM接口定義

3.2 NM功能實現

3.3 NM模塊測試

3.4 NM模塊部署


一、前言

? ? ? ? 基于MBD的應用開發已經非常常見,在開發過程中以簡明,高效的優點被諸多ECU開發人員青睞,有的主機廠可能也會直接要求供應商采用這種方式開發。一個功能或者模塊只要設計好外部接口,也可以獨立開發然后嵌入工程中。Autosar的nm狀態機UML與stateflow畫圖如出一轍,做起來快速簡潔。

二、Autosar NM概括

2.1 術語

?NM (NetWork Management) Message:網絡激活,發送本節點網絡報文及應用報文 一般定義NM ID(0x503)第一個字節05是網段ID,03表示該節點在該網段編號

App Message:客戶定義的Rx\Tx報文;收到非網絡報文一般ECU需保持一定時間后休眠,在該時間內收到NMM,網絡激活正常通信

PN(Partial Network):該功能是必須是該節點 指定的NM報文才能喚醒節點網絡。

Passive Mode:喚醒后只收不外發NM PDU(SWS_CanNm_00072),對于一個節點所在的網絡只能同時使能或禁用PassiveMode

Active Mode:喚醒后外發NM PDU

Active Wakeup:上層主動調用CanNm_NetworkRequest()接口喚醒網絡。常見喚醒源:KL15信號,定時器、傳感器等,主動喚醒一般發送立即幀報文5幀,然后進入RMS狀態。

Passive Wakeup:收到其他節點的有效網絡管理報文被動喚醒,調用CanNm_PassiveStartup()接口喚醒網絡

Remote Wakeup:與總線信號相關的喚醒方式,如收到網絡報文、指定診斷報文、KL15信號的應用報文

Local Wakeup:與硬線相關的喚醒方式,KL15線,硬件傳感器如腳踢門;注意KL30是蓄電池供電

2.2? PDU

Byte0 表示源節點地址,一般是 幀ID - 基地址

Byte1表示CBV控制位,具體定義看下圖7-2

其余字節一般主機廠自定義,若無特殊說明默認為0

Bit0: Repeat報文請求, 0表示為請求,1表示請求;當收到該位置1,應當進入RMS狀態

Bit3:NM 控制休眠位,0表示未被NM控制器請求,1表示請求;該功能需要使能CanNmCoordinatorSyncSupport

Bit4: Active Wakeup Bit , 0表示節點沒有喚醒網絡(屬于被動喚醒),1表示節點喚醒網絡(屬于主動喚醒)

Bit6: partial network information Bit(PNI) 0表示NM PDU包含沒有PN請求信息,1表示包含PN請求信息。

為什么需要PN(Partial Network)功能呢?實質還是為了節能。沒有PN功能時,一個網段內的所有ECU同醒同睡。有時,在一個網段內,可能只需要某些ECU正常工作即可,不相關的ECU沒必要喚醒(費電)。所以,增加PN功能是節能的一個優選項。

Bit 1 , 2 , 5, 7功能擴展的預留位,0不使用/保留

2.3 文件結構

?ComStack_Types.h應當包含Std_Types.h(AUTOSAR 標準類型) Platform_Types.h(平臺特定類型), Compiler.h編譯特定語言的擴展文件;

Nm_Cbk.h一般NM接口的回調函數聲明

Det.h默認錯誤Tracer定義的接口

NmStack_Types.h 公共的網絡管理類型

CanIf.h CanIf的接口包括發送、接收函數等

PduR_CanNm.h如果用戶數據使能包含改頭文件(COM User Data Support)

2.4 NM結構體

NM結構體也叫做配置結構體CanNmGlobalConfig,這種配置類型可以使工程實現根據不同的客戶可配置化,使用UML一目了然。

具體的結構體成員含義需參考標準。

?在state flow中需要引入改配置頭文件 CanNm_Cfg.h:

#ifndef CANNM_CFG_H #define CANNM_CFG_H 1 #include "StdTypes.h" /*chapter 10.3.4*/ typedef struct {/**********10.3.3 CanNmGlobalConfig *************/u8_t CanNmBusLoadReductionEnabled;u8_t CanNmBusSynchronizationEnabled;u8_t CanNmComControlEnabled;u8_t CanNmComUserDataSupport;u8_t CanNmCoordinatorSyncSupport;u8_t CanNmDevErrorDetect;u8_t CanNmGlobalPnSupport;u8_t CanNmImmediateRestartEnabled;u8_t CanNmImmediateTxconfEnabled;u8_t CanNmMainFunctionPeriod;u8_t CanNmNodeDetectionEnabled;u8_t CanNmNodeIdEnabled;u8_t CanNmPassiveModeEnabled;u8_t CanNmPduRxIndicationEnabled;u8_t CanNmPnEiraCalcEnabled;u8_t CanNmPnResetTime;u8_t CanNmRemoteSleepIndEnabled;u8_t CanNmRepeatMsgIndEnabled;u8_t CanNmStateChangeIndEnabled;u8_t CanNmUserDataEnabled;u8_t CanNmVersionInfoApi;u8_t CanNmPnEiraRxNSduRef;/**********10.3.4 CanNm Channel Configuration Overview********///CanNmTxPduu16_t CanNmTxConfirmationPduId;//CanNmRxPduu16_t CanNmRxPduBeginId;u16_t CanNmRxPduEndId;//CanNmUserDataTxPduu16_t CanNmTxUserDataPduId;u8_t ComMChannel;/**********10.3.5 CanNmChannelConfig *************/u8_t CanNmActiveWakeupBitEnabled;u8_t CanNmAllNmMessagesKeepAwake;u8_t CanNmBusLoadReductionActive;u8_t CanNmCarWakeUpBitPosition;u8_t CanNmCarWakeUpBytePosition;u8_t CanNmCarWakeUpFilterEnabled;u8_t CanNmCarWakeUpFilterNodeId;u8_t CanNmCarWakeUpRxEnabled;u16_t CanNmImmediateNmCycleTime;u8_t CanNmImmediateNmTransmissions;u8_t CanNmMsgCycleOffset;u16_t CanNmMsgCycleTime;u8_t CanNmMsgReducedTime;u8_t CanNmMsgTimeoutTime;u8_t CanNmNodeId;u8_t CanNmPduCbvPosition;u8_t CanNmPduNidPosition;u8_t CanNmPnEnabled;u8_t CanNmPnEraCalcEnabled;u8_t CanNmPnHandleMultipleNetworkRequests;u32_t CanNmRemoteSleepIndTime;u16_t CanNmRepeatMessageTime;u16_t CanNmTimeoutTime;u16_t CanNmWaitBusSleepTime;}CanNm_ConfigType;#endif

2.5?狀態機

NetWorkMode

包含3個子狀態Repeat Message State(重復報文狀態,RMS),Normal Operation State(NOS,正常模式狀態),Ready Sleep State(準備睡眠狀態,RSS)。

1.網絡模式從BusSleep進入NetWorkMode首先進入RMS,條件為主動或被動喚醒

2.進入Network Mode,成功接收或成功發送NM PDU應當重啟NM-Timeout計時器,應當開啟APP報文、使能DTC

3.進入RMS,應當重發NM PDU; 在RMS中如果NM計時器超時,重啟該計時器;如果收到PDU的CBV中RMS位置為1,應當進入RMS狀態

4.進入NOS狀態,應當啟動PDU周期發送;當網絡釋放(一般指電源信號OFF)應當進入RSS狀態;RSS狀態中如果網絡請求(電源信號ON),應當進入NOS狀態;NOS狀態如果收到診斷28服務使能或禁止發送NM,應當打開或者關閉NM PDU

5.在RSS狀態中禁止發送NM PDU,發送APP報文;如果NM-timeOut, 則離開RSS,進入PBS狀態;

6.在RBS中開啟CanNmWaitBusSleepTime定時器,如果超時進入BSS中休眠;如果主動或被動喚醒則重新進入網絡模式RMS狀態;

三、Stateflow實現

3.1 NM接口定義

根據NM模塊功能設計輸入、輸出、API函數

輸入:NM PDU信息, 診斷28是否使能發送或接收NM PDU,電源信號

輸出:NM PDU,使能DTC,使能APP,NM狀態

API:CAN發送接收,發送接收確認,CAN初始化;定時器函數;NetworkRequest,NetworkRelease函數

3.2 NM功能實現

定義好接口后,根據2.5小節狀態間轉換的條件就可以在State flow中實現該功能。

被動模式

?主動模式

3.3 NM模塊測試

首先了解一下在環測試的概念。MIL(model in the loop)模型在環是在matlab中純軟件仿真。? SIL(software in the loop)軟件在環 將模型轉換為以C/C++嵌入式軟件形式的軟件,也可以封裝成庫的形式進行仿真驗證。?PIL(processer in the loop)處理器在環 在真實的控制器ECU中進行仿真驗證。 HIL(Hardware in the loop)硬件在環 使用真實被控對象,比如電機進行測試驗證。

3.3.1?測試用例

對模型建立testHarness,輸入時序列test sequence

?對test sequence 進行編程

?在模型設置中使能模型覆蓋度:

?建立testManager 管理test file,對每一個 狀態建立一個test suit, 進行設置覆蓋度,點擊運行即可

test case 測試結果:

3.4 NM模塊部署

3.4.1 生成C/C++代碼

在配置文件中設置外部文件頭文件和源文件位置

?

設置生成C或者C++語言的程序

點擊Build即可生成代碼,存于?ert_rtw中

?3.4.2 嵌入APP工程

剪出主要源文件及其對應的各種頭文件,查看mk文件進行路徑修改等設置成單獨可編譯mk文件

?將剪切的代碼文件嵌入工程中,并將mk文件鏈起來,或者在工程mk文件中直接INC_DIR,CSRC_DIR加入相關文件路徑即可完成部署?

參考:

Autosar網絡管理:Partial Network基礎 - 知乎 (zhihu.com)

為什么需要PN(Partial Network)功能呢?-電子發燒友網 (elecfans.com)

總結

以上是生活随笔為你收集整理的AUTOSAR——MBD应用之NM模块Stateflow实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。