STM32
直播中

刘继牛

8年用户 1056经验值
私信 关注
[问答]

如何去使用simulink-stateflow中的bus总线呢

如何去使用simulink-stateflow中的bus总线呢?bus总线有何作用呢?

回帖(1)

岳臻俊

2021-11-22 15:34:22
  最近在使用simulink开发AEB的功能,因为信号处理后要传入状态机用于状态跳转,最开始使用的全部以input的形式直接传入stateflow,但是后来发现matlab官方例子里使用的bus总线直接传递,方便了很多,所以改为bus的形式,粗略记录一下省的忘记,如果有能帮上的同学,甚是荣幸。
  流程:确认信号类型+数量→创建bus类型→匹配bus类型→设置stateflow输入信号类型,匹配→ok
  先上官方例子,可在stateflow的help-example-Aerospace Applications查看,stateflow输入u以总线形式进入,然后正常结构体形式使用即可:
  
  
  实操:
  1.simulink里创建Bus Creator,将需要的信号连接
  
  2.打开bus的属性,可以看到output data type,下拉里并没有具体的bus类型,需要创建一个名为AEB_BUS的bus模板,就像先定义一个struct模板。
  
  3.在Base Workspace下添加bus,名为AEB_BUS,然后再添加bus的元素,我使用了7个量,如右所示,类型的话我的全是逻辑值,所以选择了布尔型。
  
  4.这时,回到第3步,将bus的输出类型匹配上刚设置好的这个bus类型即可。现在进入状态机,打开Model explorer(快捷键:ctrl+h),新增输入信号,然后类型选为Bus:AEB_BUS,匹配到我们的bus总线:
  
  可以看到bus信号结构体可以被识别到,告成:
  
  从外围看,simulink和STM之间要清爽了不少。
  
  ----------------------------------------update-------------------------------------------------
  发现重新打开模型后,bus类型没有了,查到是没有保存base workspace,创建的bus模板会随着base workspace的清除而消失。记得保存base workspace。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分