简聊Simulink功能开发和集成

Vehicle攻城狮

简聊Simulink功能开发和集成:原文配图 1

The people who are crazy enough to think they can change the world are the …

为了实现一复杂系统的应用开发,我们可通过功能分解的方式对复杂问题简单化,最后将各个开发验证OK的子功能模块集成在一起即可实现开发目标。

简聊Simulink功能开发和集成:原文配图 2

通过分解得到的各个子功能模块,即Software Component,利用Simulink搭建逻辑框图,实现特定的功能逻辑处理,如对采集的信号进行滤波或合理性校验、实现控制信号最终的驱动等。

简聊Simulink功能开发和集成:原文配图 3

每个功能模块的Simulink模型最终都可得到相应的函数接口:

简聊Simulink功能开发和集成:原文配图 4

得到每个功能模块的函数接口后,我们需要将其部署在OS中,让OS在不同的任务(Task)下调用对应的函数接口,即可实现该子模块的功能。

简聊Simulink功能开发和集成:原文配图 5
简聊Simulink功能开发和集成:原文配图 6

嵌入式系统中,从应用层的角度看,任务(Task)主要分为如下几种:

(1)周期性任务:这是最常见的,按固定频率周期性执行的任务。根据需要可能有多个不同频率,比如 1ms, 5ms,10ms,20ms,50ms,100ms,1000ms任务。

(2)一次性任务:比如控制器的上电初始化任务(ini任务):ini任务主要对某些变量赋合理的初值,下电switch off任务:如发动机风扇在发动机熄火后依然需要运转直至发动机水温降低到设定的温度才会退出。

(3)中断任务:实时性要求特别高的,受中断调度的任务,如我们玩单片机时按键中断点亮LED灯案例,再如发动机的点火喷油任务是通过定时器中断任务去触发的。

(4)事件型任务:如某些CAN信号是事件型,我们只有在事件发生接收到该CAN信号时才会进行相应处理。那如何利用Simulink生成不同任务的函数接口呢?常见的方式主要有两种:一、采用不同的采样周期进行建模,当每个Subsystem分别以不同采样率建模后,每个Subsystem将会根据采样率的不同的生成对应的函数入口。

简聊Simulink功能开发和集成:原文配图 7

二、使用FunctionCall Subsystem进行建模:

简聊Simulink功能开发和集成:原文配图 8

当使Functioncall Subsystem进行建模时,需要使用Stateflow构建一调度器。

简聊Simulink功能开发和集成:原文配图 9

该文主要简单介绍了如何利用Simulink进行模块开发并集成的过程,谬误之处,请大家不吝赐教。

← 返回文章列表