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实现相关推荐
- 关于Autosar中的NM模块的理解
关于Autosar中的NM模块的理解 本篇文章主要介绍AutoSar中关于NM模块的理解. 阅读本篇文章希望达到的目的: 1. NM(网络管理)是用来做什么的: 2. AutoSar中网络管理的原理: ...
- can bus 中spn是什么_CP AUTOSAR功能栈简介NM网络管理(Can)
CanNM模块架构图 1,概述 CP AUTOSAR提供一种直接分布式网络管理方式,有单独的网络管理报文用于网络管理,且总线上各个节点都是平等的,相比于OSEK基于令牌的直接网络管理方式更简单易部署. ...
- 开发合格的汽车电子产品-Autosar+MBD+功能安全
1. 前言 近几年,随着汽车行业的快速发展,尤其是国内一波补贴过后,多多少少留下一些扎扎实实造车的企业,他们将一些国外先进的技术带入到汽车产品开发中,这些技术慢慢在汽车行业(包括乘用车和商用车)得到普 ...
- 【AutoSAR CAN】01 - CAN模块的功能及提供的API
文章目录 1 CAN模块的功能概述 2 CAN模块提供的API 传送门 ==>> AutoSAR实战系列300讲总目录 1 CAN模块的功能概述 CAN模块也就是我们所谓的CAN 驱动程序 ...
- AUTOSAR DiagnosticLogAndTrace(DLT)模块功能概述(一)----DLT基础概念、与SWC\DEM\DET的交互、VFB Trace
从文章中您可以了解以下内容 DLT在AUTOSAR架构中的位置及与其他模块的依赖关系 DLT的基本功能LOG和TRACE DLT的控制命令 DLT与SWC的交互方式及接口 DLT与DEM.DET模块的 ...
- AUTOSAR从入门到精通100讲(十三)-autosar架构中的ASPICE模块
ASPICE,全称"Automotive Software Process Improvement and Capacity Determination" ,汽车软件过程改进及能力 ...
- AUTOSAR从入门到精通100讲(三十八)-AUTOSAR 通信服务 - NM概念详解
1.NM简介 NM是NetWork Management的简称,是对具体总线网络管理的抽象管理,统管所有总线网络管理.在AUTOSAR BSW 层中,其上层是通信管理模块(ComM),下层是具体总线网 ...
- AUTOSAR 网络管理NM
关于AUTOSAR的底层驱动.平台OS.平台应用.RTE.应用软件这些和VxWorks653很相似,就不多赘述了. 此处说一下AUTOSAR独有的网络通讯规范和网络管理模块NM 一.AUTOSAR C ...
- 搞一下CP AUTOSAR 入门 | 02 CP AUTOSAR 基础模块功能描述
前言 本系列请点击:<搞一下CP AUTOSAR入门> 所有系列请点击:<汽车电子系列分享> 在上一篇介绍了CP AUTOSAR的分层结构,对于多数使用AUTOSAR架构开发汽 ...
最新文章
- C#中各种数据类型转换的方法的类
- matlab中cell的使用
- 从各类信用利差走势看风险偏好
- Spring-AOP 混合使用各种切面类型及不同切面总结
- 乔布斯成功的七条秘诀
- 【Rsyslog】Ubuntu 升级rsyslog
- deque,list,queue,priority_queue
- SAP CRM One Order里item quantity和CUMULAT_H的联动
- 如何通过CSS开启硬件加速来提高网站性能
- 优化if-else代码的八种方案!
- pytorch torch.nn.L1Loss
- 有关Ajax实现的两种方法
- jmeter ramup设置_Jmeter(2)基础知识
- 13个有意思的网站,你一定要看
- AIX补丁中TL、SP、CSP、IF、PTF的含义
- 2021年中国兽医热疗室市场趋势报告、技术动态创新及2027年市场预测
- .Net -- EF Core详解
- IBM 架构师为何以及如何成为了架构师
- ICTCLAS的Python3实现
- 渗透测试之安全手册(干货)
热门文章
- Docker service命令详解
- Python每日一记127文本型数字转化为数值型数字(eval函数)
- 关爱中老年健康,践行康养华夏,中老年春晚《康养华夏》栏目启动大会在广州盛大举行
- 计算机学生如何创新,试论如何在计算机教育中培养学生的创新能力
- CDH/HDP迁移之路
- Pycharm Professional Edition 激活码(license),有效期至2018年10月14日
- 剑指offe面试题19——正则表达式匹配
- 十年饮冰,难凉热血--毕业四年多的经历,致敬每一位IT男
- Enolsoft PDF Converter with OCR Mac(PDF格式转换及OCR识别软件)
- 被新冠后遗症困住15个月后,斯坦福学霸被迫缺席毕业典礼,现仍需每天卧床16小时:我本该享受20岁的人生啊...