自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (3)
  • 收藏
  • 关注

原创 Autosar深入理解之EcuM(5):Sleep休眠

如果在Up阶段没有调用EcuM_GoDown()函数,而是调用了EcuM_GoPoll()函数或者EcuM_GoHalt()函数,则会进入Sleep。EcuM_EnterSleep( ECUM_ENTER_POLL):调用EcuM_EnterSleep,传入参数ECUM_ENTER_POLL。EcuM_EnterSleep( ECUM_ENTER_HALT):调用EcuM_EnterSleep,传入参数ECUM_ENTER_HALT。仅展示部分关键代码。仅展示部分关键代码。仅展示部分关键代码。

2023-07-12 14:19:22 316

原创 Autosar深入理解之EcuM(4):Shutdown关闭

完成上面的Shutdown OS后,OS就关闭了。如果Reset了,完成Shutdown流程后又会回到Startup阶段,如果Switch off了,ECU就真的关闭了。仅展示部分关键代码。仅展示部分关键代码。

2023-07-11 14:51:16 305 2

原创 Autosar深入理解之EcuM(3):Up运行

根据EcuM_CurrentShutdownTarget进行选择判断,如果是Sleep,则调用EcuM_GoPoll()或者EcuM_GoHalt(),进入Sleep流程;如果是Off或者Reset,则调用EcuM_GoDown( ECUM_MODULE_ID),进入Shutdown流程。Up阶段比较简单,EcuM的状态在ECUM_STATE_RUN,此时ECU主要由BswM控制,在运行阶段,EcuM的主要任务是验证唤醒源。

2023-07-11 14:15:42 201

原创 Autosar深入理解之EcuM(2):Startup启动

当启动引导程序调用main()函数后,main()函数会调用EcuM_Init()函数进行EcuM的初始化。EcuM_Callout_Stubs.c中主要是一些EcuM用户自定义的函数,不是AUTOSAR标准的。至此,EcuM将控制权交给了BswM,ECU进入Up阶段。向EcuM_Callout_Stubs.c中的。向EcuM_Callout_Stubs.c中的。仅展示部分关键代码。仅展示部分关键代码。

2023-07-10 17:26:07 729

原创 Autosar深入理解之EcuM(1):概述

EcuM,ECU State Manager,字面意思就是ECU状态管理,单从这个以为它是管理ECU所有的状态的,好像很复杂,其实不是,它只负责ECU的上下电和休眠管理。初始化启动操作系统OS所需的BSW模块为微控制器准备一个休眠阶段和随后的唤醒按一定顺序执行ECU的关闭或重启通过唤醒验证协议验证已发生的唤醒EcuM分为Fixed和Flex两种,目前最新的标准都只讲Flex了,这里也只介绍Flex的EcuM。

2023-07-07 15:35:39 406

原创 ISO13849功能安全从入门到精通(5):安全功能及其对降低风险的贡献7-实例分析

空间限制由于裁纸机是手动操作的,因此需要足够的空间来处理裁切产品、裁切后的叠纸的后续运输和储存、废纸的处理,以及操作员足够的移动空间。时间限制根据不同的应用,机器可以使用大约20年。部件磨损可能会延长运动停止所需的时间。因此,必须检测由此产生的违反超限的情况,并必须使机器停止运行。使用限制该机器的预期用途是切割堆叠的纸张或类似材料。这台机器由一个人手动充电。但是,根据安装地点和机器的宽度,不能排除附近有其他人的存在。实现如下运行模式:1. 压紧2. 手动切割(单次切割)

2023-05-29 16:06:27 193

原创 ISO13849功能安全从入门到精通(4):安全功能及其对降低风险的贡献5、6

但是,当技术保护措施(防护罩和/或保护装置)失效或失效时,这些补充保护措施应生效。特别是在这些情况下,紧急停止功能实际上是可以使用的。第9.4款“发生故障时的控制功能”要求有适当的安全性能水平,这必须通过机器的风险评估来确定。最终,EN ISO 13849的要求也适用于这些补充保护措施。在这种情况下,遗留机器是指在机械指令生效之前投放市场的机器。然而,如果遗留机器被扩展、修改、现代化等等,它的应用可能是必要的。如果是这种情况,则EC机械指令的要求适用于“旧”,即传统机器,与新机器相同。

2023-05-29 15:20:38 150

原创 教你如何阅读Autosar代码(6):常量变量定义

编译器抽象应该为常量的声明和定义定义CONST宏。编译器抽象应该定义VAR宏来声明和定义变量。memclass:常量本身的分类;memclass:变量本身的分类;vartype:变量的类型;type:常量的类型;

2023-05-23 11:27:13 521

原创 教你如何阅读Autosar代码(5):指针定义

编译器抽象应该定义CONSTP2CONST宏,用于声明和定义访问常量的常量指针。编译器抽象应该定义CONSTP2FUNC宏,用于定义指向函数的常量指针的类型。编译器抽象应该定义CONSTP2VAR宏,用于声明和定义访问变量的常量指针。编译器抽象应该定义P2CONST宏,用于声明和定义RAM中指向常量的指针。编译器抽象应该定义P2VAR宏,用于在RAM中声明和定义指向变量的指针。ptrtype:被指向的变量的类型;ptrtype:被指向的常量的类型;ptrtype:被指向的常量的类型;

2023-05-23 11:18:51 791 2

原创 教你如何阅读Autosar代码(4):函数定义

编译器抽象应该定义FUNC_P2CONST宏,用于声明和定义返回常量指针的函数。这将确保特定编译器所要求的函数声明的正确语法。编译器抽象应该定义FUNC_P2VAR宏,用于声明和定义返回指向变量指针的函数。这将确保特定编译器所要求的函数声明的正确语法。编译器抽象应该为函数的声明和定义定义FUNC宏,以确保函数声明的语法符合特定编译器的要求。ptrclass:定义指针距离的分类;memclass:函数本身的分类;retype:函数的返回类型;

2023-05-23 10:51:41 835

原创 教你如何阅读Autosar代码(3):通用定义

内存类TYPEDEF应该作为空定义提供。类型定义中的内存类应使用,其中不能指定内存限定符。这对于定义指针类型是必要的,例如P2VAR,其中的宏需要两个形参。第一个参数可以在类型定义中指定(到指针引用的内存位置的距离),但第二个参数(指针本身的内存分配)此时无法定义。因此,应该应用内存类TYPEDEF。(void *) 表示这个指针的类型可以是任意的类型。0 表示这个指针是一个空指针。AUTOMATIC为空定义,用于局部指针。关键字static inline的抽象。关键字inline的抽象。

2023-05-23 09:46:26 618

原创 ISO13849功能安全从入门到精通(3):安全功能及其对降低风险的贡献4

例如,如果机器必须在有限速度下运行时进行设置,那么在低加速度值下进行设置时,参数P1将是正确的选择:随着危险缓慢出现并给予足够的运动自由,操作员将能够移出危险区域。例如,在无故障的条件下,在操作者的手的方向移动的滚子不能陷住它。在所有其他情况下,F1是正确的选择,前提是危险暴露的持续时间不超过机器总操作时间的1/20。需求来源于必要的风险降低。由于这些考虑而降低的PLr在任何情况下都不得低于通过比较方式考虑的机器的PLr,因为并不能从事故发生率低和严重程度低得出实施的安全功能提供的安全水平高于要求。

2023-05-06 09:51:34 284

原创 ISO13849功能安全从入门到精通(2):安全功能及其对降低风险的贡献3

必要的安全功能是在考虑到应用和危害的情况下定义的。例如,如果必须预料到飞行碎片,则光幕将是不合适的解决方案,并且需要避雷器(防护装置)。因此,安全功能是一种功能,通过这种功能,各种措施(包括控制技术中的措施)可以将特定危害所带来的风险降低到可接受的水平。在C类标准中没有相关规定的情况下,安全功能由机器的设计者定义,例如:a)有控制地停止运动并在静止位置施加抱闸b)防止机器零件下降造成破碎点c)降低直接暴露眼睛的切割激光的功率d)防止轴在安装模式下掉落。

2023-05-05 17:09:56 497

原创 ISO13849功能安全从入门到精通(1):安全功能及其对降低风险的贡献1、2

然而,在以下情况下,必须始终遵循降低风险的策略:不存在导致推定合格的标准,存在合适的标准但设计偏离了标准,或者适用于产品标准未涵盖的其他方面。为了确定产品标准未涵盖的问题,必须始终执行下面描述的降低风险策略中的前两个步骤,即必须确定机械的极限并确定危害。如果正在设计的机器存在统一的产品特定标准(C类标准),并且该标准的参考文献已在EU的官方期刊上发表,则可以假定基本健康和安全要求已得到满足。在这种情况下,该标准被认为会产生“符合性推定”,因为它的应用证明了机器满足欧盟机械指令要求的假设是合理的。

2023-05-04 17:10:52 619

原创 ISO13849功能安全从入门到精通(2):安全功能的设计和技术实现

在随后的实施过程中,质量标准以所使用组件的质量(寿命)、它们的相互作用(尺寸)、诊断的有效性(例如自检)和结构的容错性的形式应用。然而,该标准描述了一个非常简化的过程,即使用条形图的指定架构,其中已经采用了PL的建模。这是通过对八项典型的、主要是技术性对策的计分制度来实现的,在可能的100分中,至少要达到65分。随机硬件故障可以通过良好的结构和低故障概率来控制,伴随着广泛的系统故障-即系统自设计以来固有的故障,如尺寸故障,软件故障或逻辑故障-需要通过故障避免和控制措施来提供保护。

2023-05-04 16:37:01 376

原创 ISO13849功能安全从入门到精通(1):安全功能及其特征的识别

安全功能可以由机器控制系统的某些部分来承担,也可以由机器控制系统所需的其他部件来承担。虽然相同的硬件可能用于不同的安全功能,但每个安全设施所需的风险降低质量可能不同。首先我们来看一下标准中的流程图,然后思考这个问题:控制系统中与安全相关的部分以何种方式有助于降低机器上的危险风险?由于一台机器很容易具有几种安全功能(例如自动和设置模式),因此仔细考虑每个单独的危险和相关的安全功能是很重要的。一旦确定了控制系统提供的保护措施将发挥什么作用,所需的绩效水平PLr就可以借助一个简单的决策树,即“

2023-05-04 16:19:04 672

原创 ISO13849功能安全从入门到精通-总目录

ISO13849功能安全从入门到精通-总目录

2023-05-04 16:07:52 576

原创 教你如何阅读Autosar代码(2):Compiler Abstraction

在Complier.h的描述部分,有这样一句话:This file provides the AUTOSAR compiler abstraction for the Green Hills MULTI compiler,简单翻译就是:这个文件为Green Hills MULTI编译器提供了AUTOSAR编译器抽象。在《AUTOSAR_SWS_CompilerAbstraction》中规定了一个三步概念:1. 文件Compiler.h提供了用于封装定义和声明的宏。

2023-04-28 16:21:06 1380 2

原创 教你如何阅读Autosar代码(1):概述

当我们作为一个初学者拿到如下一段Autosar代码,肯定会一头雾水,我们知道Nm_PassiveStartUp肯定是一个函数,那前面的。有些同学问,这样我还是不太理解,Std_ReturnType是什么意思啊。其实这些就是重新命名的数据类型名字,如下,其实就是uint8。我们再翻译一下上面的代码,最后就变成了这样,大家都能看懂了吧。其实,上面的这些都是关键字宏,在Complier.h中定义。这样的话,最开始的那段代码就可以翻译成下面这样。下一节我们将介绍一下Complier.h文件。

2023-04-28 14:06:20 3676 3

原创 教你如何阅读Autosar代码-总目录

教你如何阅读Autosar代码-总目录

2023-04-28 14:01:44 1195

原创 Autosar CP解读之Nm网络管理接口(1)

关于Callback,Nm提供给了bus specific NM modules通知callback,且调用由ComM提供的通知callback。Nm包含Basic functionality和NM Coordinator functionality,可以只支持Basic functionality,也可以同时支持两个功能。除了已知的几个总线,Nm也支持通用的bus specific NM(BusNm),只有这个总线模块实现了需要提供的接口并使用Nm提供的callback。

2023-03-24 10:50:08 118

原创 Autosar深入理解之Nm(2)

因为不是所有的嵌入式支持在start-up代码中进行RAM的初始化,因此Nm模块提供了Nm_InitMemory()函数,这个函数必须在start-up期间调用且在Nm_init()之前。如果Nm_GetState()被调用,当前的NM状态和当前的NM模式被写入指针变量。并且,输入回调函数的名字进入State Change Ind Callback里面,且提供头文件的名字,这个头文件包含函数的原型。下图的使用情况不推荐。在调用任何其他的NM模块功能之前,初始化函数Nm_Init()必须被应用层调用。

2023-03-23 14:08:42 119

原创 Autosar深入理解之Nm(1)

并且一个协调的网络可以是主动的,也可以是被动的。在一个主动的协调网络,当前的ECU是最后一个释放网络的ECU。因此一个可替代的同步唤醒网络的方式可以被实现:如果一个网络被总线唤醒或被ComM请求,当NM协调者处于Shut Down状态时,所有的网络都会在协调者组里被唤醒。如果一个属于协调者的网络是唤醒的且是同步的网络,关闭算法等待一个合适的点来继续关闭程序。如果一个协调的网络不是激活的,它是一个自动的被动的协调网络。被动的协调网络当一个本地的请求存在或只要至少一个激活的协调网络请求时一直保持唤醒。

2023-03-17 16:34:35 260

原创 Autosar深入理解之CanNm(5)

由NM Interface在Task和Interrupt时调用。由NM Interface在Task和Interrupt时调用。由NM Interface在Task时调用。由NM Interface在Task和Interrupt时调用。由NM Interface在Task和Interrupt时调用。由NM Interface在Task和Interrupt时调用。由NM Interface在Task和Interrupt时调用。由NM Interface在Task和Interrupt时调用。

2023-03-16 14:03:28 153

原创 Autosar深入理解之CanNm(4)

每一次调用这个函数都会触发一个NM报文的立即发送。这个信息由CAN NM评估且被提供给上层以整合的格式,通过更新在Com中的额外的I-PDUs的内容。Immediate NM Transmissions是立即发送NM报文的个数,它们之间有n-1次的Immediate Nm Cycle Time,后面的时间间隔为Msg cycle time。注意和标准的发送相比(标准的发送Immediate Restart Enabled是Off),一条额外的NM报文被立即发送,在进入Repeat Message的时候。

2023-03-16 10:45:39 118

原创 Autosar深入理解之CanNm(3)

如果从Bus-Sleep或Prepare Bus-Sleep跳转到Repeat Message State后的第一次发送不被更低的层接受,报文的请求应该在下一次主函数周期被重复,直到第一次发送请求被接受。如果CanIf Range Config DLC Check使能,CanIf DLC必须被使能来接受长度杜宇等于PDU长度的NM报文,或者不能有任何ECU发送长度比PDU长度小的NM报文。最小的NM报文DLC可以在CanIf模块中配置,如果小于配置DLC的报文将会被DLC检查后被丢弃。

2023-03-15 13:52:50 168

原创 Autosar深入理解之CanNm(2)

在经过Wait bus sleep time后,从Prepare Bus-Sleep Mode跳到Bus-Sleep Mode,同时通过调用Nm_BusSleepMode(),NM Interface将会被通知。只要应用不需要总线通讯,网络管理会处于Ready Sleep State,而其他节点的应用仍然请求总线通讯(通过发送NM报文)。总线通讯的请求会在下一次Task中处理,然而,通讯请求总是会导致Start-up,即使在下一次Task执行前通讯已经被释放。它起始于进入网络模式,并且停止于退出网络模式。

2023-03-15 10:17:35 267

原创 Autosar深入理解之CanNm(1)

然而,如果Repeat Message Time被配置为一个大于0的值,并且Timeout Time比Repeat Message Time大,并且被动模式使能为On,从Repeat Message到Prepare Bus Sleep的跳转只取决于NM报文的接收。通常地,网络中有另一个节点在Repeat Message状态来发送NM报文,因此对于被动节点来说,Repeat Message Time这个值不需要设定为大于0的值。当在被动模式时,节点不会发送NM报文,因此不会主动请求网络。

2023-03-14 16:37:52 810

原创 Autosar深入理解-总目录

Autosar深入理解-总目录

2023-03-14 16:27:48 1139

原创 Matlab Function模块如何保存变量值供下一周期使用

在Matlab Function模块的使用过程中,我们往往会遇到这样的场景:当模块第一次运行时,进行一定的参数设置或逻辑,当模块大于第一次运行后,需要另外一种不同的设置。这样就需要一个能记录运行次数的变量。但是Matlab Function模块中一般定义的变量都是函数内的局部变量,无法存储保持到下一周期,这就需要定义一个“全局变量”,这里需要用到Data Store Memory模块。举个例子:1、新建一个模型如下:2、在Matlab Function模块中写入如下函数内容:...

2022-05-18 15:52:38 2378 2

电机控制器MCU上下电功能

电机控制器MCU上下电功能

2023-07-18

VCU功能规范-巡航功能

VCU软件开发,开发巡航功能可参考,包含定速巡航和自适应巡航

2023-07-18

VCU功能规范-能量回收功能

VCU软件开发,开发能量回收功能可参考,分为滑行能量回收和制动能量回收

2023-07-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除