目录

一、前言

二、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实现相关推荐

  1. 关于Autosar中的NM模块的理解

    关于Autosar中的NM模块的理解 本篇文章主要介绍AutoSar中关于NM模块的理解. 阅读本篇文章希望达到的目的: 1. NM(网络管理)是用来做什么的: 2. AutoSar中网络管理的原理: ...

  2. can bus 中spn是什么_CP AUTOSAR功能栈简介NM网络管理(Can)

    CanNM模块架构图 1,概述 CP AUTOSAR提供一种直接分布式网络管理方式,有单独的网络管理报文用于网络管理,且总线上各个节点都是平等的,相比于OSEK基于令牌的直接网络管理方式更简单易部署. ...

  3. 开发合格的汽车电子产品-Autosar+MBD+功能安全

    1. 前言 近几年,随着汽车行业的快速发展,尤其是国内一波补贴过后,多多少少留下一些扎扎实实造车的企业,他们将一些国外先进的技术带入到汽车产品开发中,这些技术慢慢在汽车行业(包括乘用车和商用车)得到普 ...

  4. 【AutoSAR CAN】01 - CAN模块的功能及提供的API

    文章目录 1 CAN模块的功能概述 2 CAN模块提供的API 传送门 ==>> AutoSAR实战系列300讲总目录 1 CAN模块的功能概述 CAN模块也就是我们所谓的CAN 驱动程序 ...

  5. AUTOSAR DiagnosticLogAndTrace(DLT)模块功能概述(一)----DLT基础概念、与SWC\DEM\DET的交互、VFB Trace

    从文章中您可以了解以下内容 DLT在AUTOSAR架构中的位置及与其他模块的依赖关系 DLT的基本功能LOG和TRACE DLT的控制命令 DLT与SWC的交互方式及接口 DLT与DEM.DET模块的 ...

  6. AUTOSAR从入门到精通100讲(十三)-autosar架构中的ASPICE模块

    ASPICE,全称"Automotive Software Process Improvement and Capacity Determination" ,汽车软件过程改进及能力 ...

  7. AUTOSAR从入门到精通100讲(三十八)-AUTOSAR 通信服务 - NM概念详解

    1.NM简介 NM是NetWork Management的简称,是对具体总线网络管理的抽象管理,统管所有总线网络管理.在AUTOSAR BSW 层中,其上层是通信管理模块(ComM),下层是具体总线网 ...

  8. AUTOSAR 网络管理NM

    关于AUTOSAR的底层驱动.平台OS.平台应用.RTE.应用软件这些和VxWorks653很相似,就不多赘述了. 此处说一下AUTOSAR独有的网络通讯规范和网络管理模块NM 一.AUTOSAR C ...

  9. 搞一下CP AUTOSAR 入门 | 02 CP AUTOSAR 基础模块功能描述

    前言 本系列请点击:<搞一下CP AUTOSAR入门> 所有系列请点击:<汽车电子系列分享> 在上一篇介绍了CP AUTOSAR的分层结构,对于多数使用AUTOSAR架构开发汽 ...

最新文章

  1. C#中各种数据类型转换的方法的类
  2. matlab中cell的使用
  3. 从各类信用利差走势看风险偏好
  4. Spring-AOP 混合使用各种切面类型及不同切面总结
  5. 乔布斯成功的七条秘诀
  6. 【Rsyslog】Ubuntu 升级rsyslog
  7. deque,list,queue,priority_queue
  8. SAP CRM One Order里item quantity和CUMULAT_H的联动
  9. 如何通过CSS开启硬件加速来提高网站性能
  10. 优化if-else代码的八种方案!
  11. pytorch torch.nn.L1Loss
  12. 有关Ajax实现的两种方法
  13. jmeter ramup设置_Jmeter(2)基础知识
  14. 13个有意思的网站,你一定要看
  15. AIX补丁中TL、SP、CSP、IF、PTF的含义
  16. 2021年中国兽医热疗室市场趋势报告、技术动态创新及2027年市场预测
  17. .Net -- EF Core详解
  18. IBM 架构师为何以及如何成为了架构师
  19. ICTCLAS的Python3实现
  20. 渗透测试之安全手册(干货)

热门文章

  1. Docker service命令详解
  2. Python每日一记127文本型数字转化为数值型数字(eval函数)
  3. 关爱中老年健康,践行康养华夏,中老年春晚《康养华夏》栏目启动大会在广州盛大举行
  4. 计算机学生如何创新,试论如何在计算机教育中培养学生的创新能力
  5. CDH/HDP迁移之路
  6. Pycharm Professional Edition 激活码(license),有效期至2018年10月14日
  7. 剑指offe面试题19——正则表达式匹配
  8. 十年饮冰,难凉热血--毕业四年多的经历,致敬每一位IT男
  9. Enolsoft PDF Converter with OCR Mac(PDF格式转换及OCR识别软件)
  10. 被新冠后遗症困住15个月后,斯坦福学霸被迫缺席毕业典礼,现仍需每天卧床16小时:我本该享受20岁的人生啊...