BswM模块之Ecu State Handling

2023-05-16

文章目录

  • 前言
  • 一、ESH是什么?
  • 二、基于BswM管理的ECU状态切换流程
    • 1.ECU启动
    • 2.ECU关闭
  • 总结


前言

BswM – 基础软件模式管理模块,
它的职责是基于简单规则的BSW模块仲裁来自应用层sw - c或其他模块的模式请求,并根据仲裁结果进行相应的操作。
BswM与其他模块的接口交互如下图
在这里插入图片描述
BswM模块的实现是基于第三方工具DavinCi配置生成,具体包含了模块初始化管理,通信控制管理,ECU状态控制管理,用户定义的模式管理服务。本章讲述ECU状态控制管理。

一、ESH是什么?

ESH(Ecu State Handling )ECU状态控制。BswM定义了各种Rule来控制ECU的状态,
Ecu State Handling拥有12个Rule,每个Rule中包含不同的Expression,当表达式Expression成立时,会执行该Rule下相应的Action。
每个Rule包含一个Expression,它对Rule中所要执行的操作列表Action List起决定性作用。
每个Rule中都包含一个操作列表Action List,每个列表包含了多个Action。当Rule中表达式Expression成立时,执行操作列表中的任务。

下图是DaVinCi编辑界面展现出来的Rules。
在这里插入图片描述

二、基于BswM管理的ECU状态切换流程

在这里插入图片描述

1.ECU启动

StartUp:
当ECU一上电进行初始化,ESH处于STARTUP模式,ECU处于Init状态。

WarkUp:

1) ESH处于WAKEUP模式(ESH_InitToWakeup ),ECU处于Wakeup状态。

2) 当没有正在处理的NvM指令,定时器NvM_CancelWriteAllTimer归零,允许通信,执行Dem_Init,启动自运行请求计时器,ESH进入RUN模式,ECU进入Run状态。

3) 当没有有效的唤醒源时,ESH直接进入SHUTDOWN模式(ESH_InitToWakeup -> ESH_WakeupToPrep),ECU处于Prepare Shutdown状态。

Run:

1) ESH处于RUN模式 (ESH_InitToWakeup -> ESH_WakeupToRun),ECU处于Run状态。
注: ESH_WakeupToRun中调用了ESH_DemInit 来执行初始化DEM。

2) 当没有运行请求以及所有频道无通信或者请求了KillAllRunRequest,则不允许通信,ECU清除有效的唤醒事件,
ESH进入POSTRUN模式(ESH_WakeupToRun -> ESH_RunToPostRun -> ESH_RunToPostRunNested),ECU进入Postrun状态。

PostRun:

1) ESH处于POSTRUN模式(ESH_WakeupToRun -> ESH_PostRun ),ECU处于Postrun状态

2) 当有运行请求或接收到有效唤醒事件或正在发生通信请求和释放“Kill All Run Request Port”,允许通信,ESH进入RUN模式(ESH_PostRun -> ESH_PostRunNested ),ECU进入Run状态。

3) 当满足postrun request == released或者请求KillAllRunRequest”,执行Dem_Shutdown,进入SHUTDOWN模式
(ESH_PostRun -> ESH_PostRunToPrepNested ),ECU进入Prepare Shutdown状态。

2.ECU关闭

Prepare Shutdown:
执行NvM全部写入,启动NvM_WriteAllTimer定时器,ECU进入Wait for NvM状态(ESH_PrepToWait)。

Wait for NvM:
1)当没有正在处理的NvM指令或者定时器NvM_WriteAllTimer归零,定时器WriteAllTimer停止,执行MCU下电操作EcuM_GoDown(ESH_WaitToShutdown)。

2)当没有正在处理的NvM指令或者定时器NvM_WriteAllTimer归零,进入EcuM的低功耗模式

3)当有效的唤醒事件发生和释放“KillAllRunRequest”, 定时器WriteAllTimer停止,开启定时器NvM_CancelWriteAllTimer,
取消所有写操作NvM_CancelWriteAll,进入WAKEUP模式(ESH_WaitToWakeup)。ECU进入Wakeup状态。

总结

以上就是今天要讲的内容,本文仅仅简单介绍了ESH的理论知识,DaVinCi提供了实现的具体办法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BswM模块之Ecu State Handling 的相关文章

  • Angular UI Router 1.0.0 - 使用 $transitions.onBefore 防止路由加载

    我升级到 UI Router 1 0 0 它已从 on stateChangeX to transitions onX 在这里查看 transitions https ui router github io docs latest clas
  • 一个 React 组件是否可以有两种状态

    我正在尝试构建一个简单的单位转换器来练习 React js 我希望能够更改一个单位的值 例如 公斤 并让另一个单位例如 磅在屏幕上自动更改 请查看这个网站给您一个想法 http www convertunits com from lb to
  • HTTP 请求之间具有持久状态的模型

    我想创建一个具有在 HTTP 请求之间持续存在的模型的 Web 应用程序 据我了解 像 PHP 这样的语言将每个 HTTP 请求视为一个全新的连接 除了一些全局变量 如 SESSION 因此 每次用户更改页面时 我的所有 PHP 类都会再次
  • 按下列表项的默认绘图是什么

    当用户按下 ListView 项目 android state pressed true 时 它会闪烁黄色阴影 或者您可以按住 这是什么画 我创建了自己的选择器 因为我想要自己的 ListView 项目 color 但我丢失了按下的颜色 有
  • 在事件中使用 Context/Toast 时出现不需要的重组 - Jetpack Compose

    在 Jetpack Compose 应用程序中 我有两个与此处类似的可组合项 Composable fun Main println Composed Main val context LocalContext current var te
  • Android 保存游戏状态

    我不确定应该如何保存我正在开发的游戏的游戏状态 我应该保存包含所有游戏信息的实例 对象吗 如果是 怎么办 或者我应该将所有相关信息保存在 txt 文件中并在需要时保存 加载信息 您是如何做到这一点的 您对我的建议有何看法 除非将实例 对象序
  • 在 nextjs 13 上加载页面

    您好 我正在尝试在网站需要时间加载时显示加载页面 因为它是一个相当大的网站 我认为加载屏幕会提供最好的用户体验 但是我似乎无法弄清楚如何让它在 nextjs 13 上工作 我创建了一个简单的功能组件 上面写着加载 并且有将其直接导入到我的l
  • android:媒体记录器:启动失败:-38

    简介 如何检查录音是否已在其他应用程序的后台运行 详细信息 如果录音已在本机应用程序的后台运行 录音机 现在我已将录音作为我的应用程序中的功能之一 问题 当我尝试同时在我的应用程序中录制时 出现错误 E MediaRecorder star
  • 无法使用 NGXS 更新存储来修补状态。我不断看到类型错误:无法冻结

    我正在使用一个基本的 Angular 11 应用程序 该应用程序已实现身份验证 使用 AWS Cognito 和 Amplify 我在这里想做的事情非常简单 我正在使用内置的 AWS Amplify 方法进行身份验证 我正在使用 NGXS
  • 如何避免全局状态?

    所以 我正在阅读谷歌测试博客 它说全局状态很糟糕并且使得编写测试变得困难 我相信 我的代码现在很难测试 那么如何避免全局状态呢 我使用全局状态 据我所知 最重要的用途是管理我们的开发 验收和生产环境之间的关键信息 例如 我有一个名为 Glo
  • 替换 Haskell 中的单个列表元素?

    我有一个元素列表 我希望更新它们 由此 Off Off Off Off 对此 Off Off On Off 由于我对 Haskell 有点陌生 所以我一直在使用 x xs y使用以下函数提取和更新各个组件 replace y z repla
  • 将异步获取的数据传递给子 props

    我正在制作一个应用程序 它从远程源获取一系列新闻项目并将其显示在页面上 我有端点 并且可以使用控制台日志证明可以进行成功的调用 getJSON 我将此调用放入父组件中 因为子组件需要使用数据 但是 当我将此数据传递给子组件时 会出现控制台错
  • onCreateDrawableState 永远不会调用

    我必须向RelativeLayout 添加新状态 但永远不会调用onCreateDrawableState 方法 我的班级是 public class UnreadableRelativeLayout extends RelativeLay
  • 更改 ViewController 时如何保持 UISwitch 状态?

    当我从一个视图控制器移动到另一个视图控制器时 第一个控制器上的开关会自行重置并且不保留其状态 在查看其他控制器后返回时如何使其保存状态 以及如何让它在关闭应用程序后保存其状态 我查看了各种 stackOverflow 问题和回复以及苹果文档
  • 如何使用react将对话框中的数据发送回父容器?

    我有一个反应大日历 http intljusticemission github io react big calendar examples index html 父容器 我还有一个选择 根据此选择 医生姓名 获取日历的事件 并且当我单击
  • 更新已编辑输入的值

    我在用react admin框架 我正在尝试动态更新我的输入值 在我的自定义组件中 我有onChange 方法如下所示 onChange value gt this setState currentForm this props recor
  • 如何根据另一个字段的值禁止 TFS 要求工作项中的状态从“建议”更改为“活动”?

    I ve added department approvals to the standard CMMI Template Requirement work item I d like to limit the System State f
  • 将 Woocommerce 结账状态字段设置为必填字段

    所以这个问题可能有一个简单的解决方案 但我暂时陷入困境 上次更新 Woocommerce 3 3 5 后 我在结帐页面上的状态字段出现问题 因为它不是强制性的 人们只是跳过它 我真的需要强制执行此操作 因为我已通过 API 将我的网站连接到
  • 比使用流保存增强随机生成器状态更快的替代方案

    我需要能够保存 加载这个增强随机生成器的状态 boost variate generator
  • 使用 SwiftUI 的新 iOS 14 生命周期访问 AppDelegate 中的 AppState

    我正在使用 iOS 14 中推出的 SwiftUI 新应用程序生命周期 但是 我不知道如何访问我的AppState 单一事实来源 对象应用程序代理 我需要应用程序代理在启动时运行代码并注册通知 didFinishLaunchingWithO

随机推荐

  • Linux apt-get autoremove千万别乱用

    使用linux下的apt get autoremove命令的心得体会 前几天在实验室搭建要做人工智能项目的环境时 xff0c 由于未解决python2 7和python3 6共存时 xff0c 只利用python2 7版本的库文件 xff0
  • 基于gazebo实现多机器人编队仿真(三)

    基于gazebo实现多机器人编队仿真 xff08 三 xff09 三角编队与一字编队的实现 前言原理简图代码实现虚拟坐标的发布跟随者消息接收 总结 前言 前文已经阐述了多机器人的编队模型实现与多辆小车跟随的实现 xff0c 本文以通过tf通
  • 天猫精灵通过AliOS网桥控制Zigbee设备

    天猫精灵对接AliOS 设备 The article is released under license CC BY NC ND 4 0 IoT Boot Camp系列课程是由TorchIoTBootCamp团队发起 xff0c 广大IoT
  • 什么是最长前缀匹配?为什么网络前缀越长,其地址块就越小,路由就越具体?

    使用 CIDR 时 xff0c 路由表中的每个项目由 网络前缀 和 下一跳地址 组成 在查找路由表时可能会得到不止一个匹配结果 应当从匹配结果中选择具有最长网络前缀的路由 xff1a 最长前缀匹配 longest prefix matchi
  • STM32 模拟串口(UART)使用

    学习目标 xff1a 由于在项目中需要用到多路的串口使用 xff0c 而自己的单片机目前来讲没法满足我们项目所需要的串口需求 xff0c 因此要对普通的GPIO进行转换为UART进行使用 从而使得我们单片机能够得到多一路的串口 学习内容 x
  • Linux(ubuntu) 基础

    本文主要讲解一些有关linux下的相关知识 xff1a 文章目录 一 shell 命令二 文件系统三 ubuntu磁盘管理操作四 Ubuntu下压缩和解压缩五 ubuntu用户和组六 ubuntu 文件权限管理七 Linux连接文件操作八
  • CentOS-7.2部署Squid服务

    一 安装Squid代理服务器 yum y install squid 1 启动Squid服务和设置开机启动 systemctl start squid systemctl enable squid 2 详解Squid服务器配置文件 默认的
  • 【Docker系列】Docker Swarm

    docker swarm 介绍 为什么不建议在生产环境中使用docker compose xff1f docker compose 单节点的问题 xff0c 多个实体机就无法适应的 多机器如何管理 xff1f 如果跨机器做scale横向扩展
  • 【mysql】远程连接服务器数据库出现 Client does not support authentication protocol requested by server的解决方法

    前言 之前已经配好了本地数据库与云服务器上的数据库的连接 xff0c 也能正常进行操作 几个月后某天打开navicat想打开此连接却弹出了个错误提示窗口 xff0c 显示Client does not support authenticat
  • Ubuntu16.04系统卡顿,刷新率低,输入有延迟

    问题 xff1a 从某次开机之后ubuntu就一直卡顿 xff0c 原本以为是cscode占用过大 xff0c 在删除部分文件后没有改善 xff0c swp也未使用 每次挂起重加载也经常出现失败的情况 在不断查找资料及更改配置文件之后 xf
  • vs code git配置及使用

    一 下载及安装git程序 浏览器中搜索git官网 xff1a https git scm com download win进行程序下载 xff0c 根据自己的系统选择不同版本 xff08 32 bit Git for Windows Set
  • 根文件系统rootfs的移植及制作镜像ramdisk.img

    根文件系统的移植 介绍 1 移植根文件系统的工具 gt busybox 1 短小精悍 2 版本更新较快 xff0c 版本之间差异不大 2 如何获取busybox 1 xff09 https busybox net downloads 选择b
  • 解决linux共享文件夹丢失的问题

    虚拟机已经设置了共享文件夹 xff0c ubuntu里 mnt hgfs 没有共享文件夹 在终端输入此命令 xff0c 即可恢复 xff08 前提必须有vmware tools安装过了 xff09 sudo vmhgfs fuse host
  • 汽车CAN总线入门,通俗易懂

    附件 xff1a 文档原件github CAN总线简介 CAN xff08 Controller Area Network xff0c 控制器局域网络 xff09 属于工业现场总线的范畴 最初CAN总线是由德国的Bosch 博世 公司为汽车
  • CAN网络管理Autosar(入门)

    一 xff0c 个人小心得 作为刚入门两个月汽车电子行业的软件工程师 xff0c 现阶段在学习汽车组合开关的测试 xff08 主要用CANoe软件 xff09 xff0c 在学习过程中总结了一些自己理解的知识点 xff0c 当然也希望得到大
  • UDS诊断系列讲解-总目录

    一 前言 欢迎大家来学习 UDS诊断从入门到熟练 专栏 xff0c 该篇为总目录 xff0c 方便以后大家直接进入需要学习的文章 正所谓独乐乐不如众乐乐 1 UDS的简介和存在意义 UDS诊断系列讲解之 1 1 UDS开篇 二 UDS应用层
  • 【UDS】ISO14229之0x19服务

    文章目录 前言一 理论描述1 服务分类2 状态掩码 二 操作步骤1 请求2 回复 总结 gt 返回总目录 lt 前言 简称 xff1a ReadDTCInformation xff0c 读取DTC信息 功能 xff1a 用户通过请求该服务
  • VScode:ERROR: Unable to start debugging. Unexpected GDB output from command “-exec-run“

    问题 ERROR Unable to start debugging Unexpected GDB output from command 34 exec run 34 During startup program exited with
  • 《诊断服务》禁止功能寻址

    文章目录 前言一 功能寻址是什么 xff1f 二 步骤1 使能制造商函数接口2 分析函数并填充代码 总结 前言 本章基于DaVinCi禁止功能寻址的办法 DaVinCi默认支持功能寻址 xff0c 因此需要特殊处理 一 功能寻址是什么 xf
  • BswM模块之Ecu State Handling

    文章目录 前言一 ESH是什么 xff1f 二 基于BswM管理的ECU状态切换流程1 ECU启动2 ECU关闭 总结 前言 BswM 基础软件模式管理模块 xff0c 它的职责是基于简单规则的BSW模块仲裁来自应用层sw c或其他模块的模