之间的区别是什么ImplicitReceive和ExplicitReceive AUTOSAR代码?

249(30天)

接受的答案

MathWorks支万博1manbetx持团队
编辑:MathWorks支万博1manbetx持团队 2022年7月28日
RTE AUTOSAR意义上,主要区别如下:
  • ImplicitReceive:输入总是缓冲。所以,输入值是相同的在一个可运行的执行,无论多少次使用它。
  • ExplicitReceive:输入没有被缓存。所以,输入值变化时使用它在一个可运行的执行。
然而,当从模型生成代码时,明确案例的代码可以被视为缓冲的代码,如下面的万博1manbetx示例所示:
1)ImplicitReceive
/ *模型的步骤函数TID1 * /
无效Runnable_2s(空白)/ *样品时间:[2.0,0.0年代]* /
{
/ *更新RateTransition:“< Root > / RateTransition”包含:
* DiscreteIntegrator:“< Root > /集成商”
* /
Rte_IrvIWrite_Runnable_2s_IRV1 (rtDW.Integrator_DSTATE);
/ *更新DiscreteIntegrator:“< Root > /集成商”包含:
*尺寸:“< Root > / In2_2s”
* /
rtDW。Integrator_DSTATE + = 2.0 * Rte_IRead_Runnable_2s_ReceivePort_In2 ();
}
2)ExplicitReceive
/ *模型的步骤函数TID1 * /
无效Runnable_2s(空白)/ *样品时间:[2.0,0.0年代]* /
{
real_T tmpRead;
/ *尺寸:“< Root > / In2_2s”* /
Rte_Read_ReceivePort_In2 (&tmpRead);
/ *更新RateTransition:“< Root > / RateTransition”包含:
* DiscreteIntegrator:“< Root > /集成商”
* /
Rte_IrvIWrite_Runnable_2s_IRV1 (rtDW.Integrator_DSTATE);
/ *更新DiscreteIntegrator:“< Root > /集成商”* /
rtDW。Integrator_DSTATE + = 2.0 * tmpRead;
}
从上面的代码中,可以观察到明显的情况下可以考虑缓冲在这个意义上使用“tmpRead”算法,而不是直接调用“Rte_Read”。
这是必需的,为了使代码和仿真行为匹配,因为,在仿真软件中,信号总是缓冲,而且没有一个信号的概念中间行变化值之间的时间步下游块阅读它。万博1manbetx
1评论
回族金
回族金 2021年4月27日
也就是说在双向输入代码级别执行期间不会改变这个单位吗?然后是什么意思有不同类型?

登录置评。

答案(1)

Vincenzo齐射
Vincenzo齐射 2019年10月23日
编辑:Vincenzo齐射 2019年10月23日
可以重命名吗 tmpRead 变量 ExplicitReceive选项是活跃?
如何?我无法改变它使用“信号名称必须解决仿真软件信号对象”的旗帜……万博1manbetx
提前谢谢你

类别

找到更多的在AUTOSAR Blockset帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!