- ImplicitReceive:输入总是缓冲。所以,输入值是相同的在一个可运行的执行,无论多少次使用它。
- ExplicitReceive:输入没有被缓存。所以,输入值变化时使用它在一个可运行的执行。
之间的区别是什么ImplicitReceive和ExplicitReceive AUTOSAR代码?
249(30天)
显示旧的评论
MathWorks支万博1manbetx持团队
2018年8月14日
编辑:
MathWorks支万博1manbetx持团队
2022年7月28日
的区别是什么时候改变之间的AUTOSAR输入DataAccessMode ImplicitReceive ExplicitReceive ?
接受的答案
MathWorks支万博1manbetx持团队
2022年2月21日
编辑:MathWorks支万博1manbetx持团队
2022年7月28日
RTE AUTOSAR意义上,主要区别如下:
然而,当从模型生成代码时,明确案例的代码可以被视为缓冲的代码,如下面的万博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)
Vincenzo齐射
2019年10月23日
编辑:Vincenzo齐射
2019年10月23日
可以重命名吗
tmpRead
变量
当
ExplicitReceive选项是活跃?
如何?我无法改变它使用“信号名称必须解决仿真软件信号对象”的旗帜……万博1manbetx
提前谢谢你