simulink-stateflow中的bus总线使用

    最近在使用simulink开发AEB的功能,因为信号处理后要传入状态机用于状态跳转,最开始使用的全部以input的形式直接传入stateflow,但是后来发现matlab官方例子里使用的bus总线直接传递,方便了很多,所以改为bus的形式,粗略记录一下省的忘记,如果有能帮上的同学,甚是荣幸。stateflow上手可参考:https://blog.csdn.net/zhanshen112/article/details/79697979  很是感谢啊。

    流程:确认信号类型+数量→创建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之间要清爽了不少。