在Simulink中开发autosar应用层软件,对于多种不同运行周期的函数调度需求,有两种方案,
1.SWC只有一个runnable,在SWC内部通过stateflow触发Event事件来调度,配合function-call即可实现
2.SWC建立多个runnable,在利用FunctionCallGenerator与function-call配合,生成的runnable放到对应的task中调用,即可实现。
第一种方案在非autosar的simulink模型开发中很常见,本文主要描述第二种方案的实现过程。
目录
Step1:建立模型
建立符合Autosar的Simulink模型,包括RTE接口等
该模型只为测试使用,仅供参考
Step2:设置调用周期
利用FunctionCallGenerator设置调用周期
本例设置两个周期,一个0.01s,一个0.02s
Step3:function-call触发
Subsystem内利用function-call,生成周期性调用的函数。在该Subsystem实现对应的函数逻辑。
Step4:建立runnable
Autosar Dictionary中建立runnable,本示例建立了两个runnable,与前面的function-call对应
Step5:runnable与function映射
在Autosar SW Component中建立runnable与function的映射关系
Step6:生成代码
如下所示,生成了两个函数,即两个runnable。
将生成的arxml导入bsw工程中,进行后面的task mapping即可。
注:
需要将Treat each discrete rate as a separate task勾选,才可以生成多个runnable
若发现生成的Arxml文件是多个,请在Autosar Dictionary-XML Options选择Single file,则生成的只有一个对应模型名的Arxml文件。
附件