- 博客(30)
- 收藏
- 关注
原创 教你如何阅读Autosar代码(6):常量变量定义
编译器抽象应该为常量的声明和定义定义CONST宏。编译器抽象应该定义VAR宏来声明和定义变量。memclass:常量本身的分类;memclass:变量本身的分类;vartype:变量的类型;type:常量的类型;
2023-05-23 11:27:13
803
原创 教你如何阅读Autosar代码(5):指针定义
编译器抽象应该定义CONSTP2CONST宏,用于声明和定义访问常量的常量指针。编译器抽象应该定义CONSTP2FUNC宏,用于定义指向函数的常量指针的类型。编译器抽象应该定义CONSTP2VAR宏,用于声明和定义访问变量的常量指针。编译器抽象应该定义P2CONST宏,用于声明和定义RAM中指向常量的指针。编译器抽象应该定义P2VAR宏,用于在RAM中声明和定义指向变量的指针。ptrtype:被指向的变量的类型;ptrtype:被指向的常量的类型;ptrtype:被指向的常量的类型;
2023-05-23 11:18:51
1553
2
原创 教你如何阅读Autosar代码(4):函数定义
编译器抽象应该定义FUNC_P2CONST宏,用于声明和定义返回常量指针的函数。这将确保特定编译器所要求的函数声明的正确语法。编译器抽象应该定义FUNC_P2VAR宏,用于声明和定义返回指向变量指针的函数。这将确保特定编译器所要求的函数声明的正确语法。编译器抽象应该为函数的声明和定义定义FUNC宏,以确保函数声明的语法符合特定编译器的要求。ptrclass:定义指针距离的分类;memclass:函数本身的分类;retype:函数的返回类型;
2023-05-23 10:51:41
1477
原创 教你如何阅读Autosar代码(3):通用定义
内存类TYPEDEF应该作为空定义提供。类型定义中的内存类应使用,其中不能指定内存限定符。这对于定义指针类型是必要的,例如P2VAR,其中的宏需要两个形参。第一个参数可以在类型定义中指定(到指针引用的内存位置的距离),但第二个参数(指针本身的内存分配)此时无法定义。因此,应该应用内存类TYPEDEF。(void *) 表示这个指针的类型可以是任意的类型。0 表示这个指针是一个空指针。AUTOMATIC为空定义,用于局部指针。关键字static inline的抽象。关键字inline的抽象。
2023-05-23 09:46:26
876
原创 ISO13849功能安全从入门到精通(3):安全功能及其对降低风险的贡献4
例如,如果机器必须在有限速度下运行时进行设置,那么在低加速度值下进行设置时,参数P1将是正确的选择:随着危险缓慢出现并给予足够的运动自由,操作员将能够移出危险区域。例如,在无故障的条件下,在操作者的手的方向移动的滚子不能陷住它。在所有其他情况下,F1是正确的选择,前提是危险暴露的持续时间不超过机器总操作时间的1/20。需求来源于必要的风险降低。由于这些考虑而降低的PLr在任何情况下都不得低于通过比较方式考虑的机器的PLr,因为并不能从事故发生率低和严重程度低得出实施的安全功能提供的安全水平高于要求。
2023-05-06 09:51:34
551
原创 ISO13849功能安全从入门到精通(2):安全功能及其对降低风险的贡献3
必要的安全功能是在考虑到应用和危害的情况下定义的。例如,如果必须预料到飞行碎片,则光幕将是不合适的解决方案,并且需要避雷器(防护装置)。因此,安全功能是一种功能,通过这种功能,各种措施(包括控制技术中的措施)可以将特定危害所带来的风险降低到可接受的水平。在C类标准中没有相关规定的情况下,安全功能由机器的设计者定义,例如:a)有控制地停止运动并在静止位置施加抱闸b)防止机器零件下降造成破碎点c)降低直接暴露眼睛的切割激光的功率d)防止轴在安装模式下掉落。
2023-05-05 17:09:56
2066
原创 ISO13849功能安全从入门到精通(2):安全功能的设计和技术实现
在随后的实施过程中,质量标准以所使用组件的质量(寿命)、它们的相互作用(尺寸)、诊断的有效性(例如自检)和结构的容错性的形式应用。然而,该标准描述了一个非常简化的过程,即使用条形图的指定架构,其中已经采用了PL的建模。这是通过对八项典型的、主要是技术性对策的计分制度来实现的,在可能的100分中,至少要达到65分。随机硬件故障可以通过良好的结构和低故障概率来控制,伴随着广泛的系统故障-即系统自设计以来固有的故障,如尺寸故障,软件故障或逻辑故障-需要通过故障避免和控制措施来提供保护。
2023-05-04 16:37:01
1002
原创 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
250
原创 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
226
原创 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
198
原创 Matlab Function模块如何保存变量值供下一周期使用
在Matlab Function模块的使用过程中,我们往往会遇到这样的场景:当模块第一次运行时,进行一定的参数设置或逻辑,当模块大于第一次运行后,需要另外一种不同的设置。这样就需要一个能记录运行次数的变量。但是Matlab Function模块中一般定义的变量都是函数内的局部变量,无法存储保持到下一周期,这就需要定义一个“全局变量”,这里需要用到Data Store Memory模块。举个例子:1、新建一个模型如下:2、在Matlab Function模块中写入如下函数内容:...
2022-05-18 15:52:38
3450
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人