[Simulink] 任务调度学习 - 梯形调度

梯形调度可以在单次时间步长内指定多个Simulink子系统的执行顺序。

梯形调度长什么样?

在这里插入图片描述
其中,stateflow中的状态如下:
在这里插入图片描述

梯形调度有什么用?

  • 流程图的输出可以触发多个子系统
  • 利用流程图确定各个子系统的执行顺序

在给定的时间步长内,statefow会输出不同的时间以触发对应的Simulink子系统,也就是说stateflow决定了子系统的执行顺序。

梯形调度说明

利用上面的例子说明一下梯形调度的使用:
当输入u1>u2时,stateflow出书事件SchFunc1,激活第3个Trigger子系统执行
当输入u1<u2时,stateflow出书事件SchFunc2,激活第2个Trigger子系统执行
当输入u1==u2时,stateflow出书事件SchFunc3,激活第1个Trigger子系统执行
在这里插入图片描述
运行上面的模型,用scope观察结果
u1 == u2: 第1个子系统激活,out1输出结果,out2和index没有激活,输出0
在这里插入图片描述
u1 < u2: 第2个子系统激活,out1结果停留在取消激活前的结果,out2输出结果,但是由于第2个子系统的输入是out1,所以out2的值等于out1,index没有激活,输出0
在这里插入图片描述
同理,u1 > u2: 第3个子系统激活

梯形调度官方示例

 openExample('stateflow/LadderLogicSchedulerExample')

在这里插入图片描述
在这里插入图片描述

模型学习

  • 1ms clock:生成周期为1ms,脉冲宽度10%的周期信号
  • Edge to Function:周期信号为上升沿跳变时输出call事件
  • Sensor:生成频率为40rad/s的正弦波
  • Ladder Logic Scheduler:梯形调度
  • A1、A2、A3:三个受控触发子系统

实现效果:
系统以1ms为一个执行周期,当梯形调度输入u1大于0时,子系统A1输出2*u1,否则保持上一次输出值;
当A1的输出值大于等于0时,子系统A2激活,
当A1的输出值和传感器输出值均大于0时,子系统A3激活

工作上是否能应用到?

建模时,梯形调度用在什么情况下?
如果使用GPS对IMU进行位置修正,则可以根据GPS接收器和RTK状态,当GPS达到厘米级精度后,激活IMU修正子系统。

链接:https://pan.baidu.com/s/13nC7paDenkuSq364pYP1nQ
提取码:oxng

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值