【Simulink建模】电源档位模型搭建


本文使用Matlab R2020b Simulink从零开始构建电源档位模型。

1. 需求分析

电源档位需求规范如下:
当ACC_SW=0,IG1_SW=0时,电源档位KeyState为KEY_OFF档(KeyState=0)。
当ACC_SW=1,IG1_SW=0时,电源档位KeyState为KEY_ACC档(KeyState=1)。
当ACC_SW=1,IG1_SW=1时,电源档位KeyState为KEY_ON档(KeyState=2)。
当ACC_SW=0,IG1_SW=1时,电源档位KeyState为KEY_START档(KeyState=3)。

ACC_SW,IG1_SW为硬线输入,接口为Get_bool_ACC_SW(),Get_bool_IG1_SW()。
KeyState为电源档位状态报文输出,接口为Set_uint8_KeyState()。
KEY_OFF、KEY_ACC、KEY_ON、KEY_START为软件中定义的常量。

2. 模型搭建

2.1 打开Matlab,调整Matlab工作路径至模型存放路径

在这里插入图片描述

“注意”:工作路径避免存在中文路径,这里仅做演示。

3.1 打开Simulink,新建空白模型

在这里插入图片描述

3.2 保存模型,并命名为KeyState

在这里插入图片描述

3.3 修改模型配置

修改模型配置,适配代码生成;
参考:Simulink代码生成常用配置项及脚本修改
运行cfg_Simulink.m,一键修改Model Configuration;
在这里插入图片描述
在这里插入图片描述

3.4 使用Library Browser库添加Stateflow-Chart,命名为KeyStateChk

在这里插入图片描述

也可以双击模型空白地方,输入chart在下拉框中选择Chart,添加Stateflow-Chart。
在这里插入图片描述

3.5 修改Chart语言为C语言

双击新建的Chart,在Chart根界面中右键,选择Properties…,在新的界面中中Action Language选择为C。
在这里插入图片描述

3.6 根据需求绘制模型

在这里插入图片描述

KeyState默认值为KEY_OFF,当逻辑满足时执行不同功能;

3.7 修改数据类型

单击MODELING->Symbols Pane,调出Symbols窗口,在该窗口修改各数据的类型及默认值;
ACC_SW、IG1_SW:输入,boolean;
KeyState:输出,uint8
KEY_OFF:常量,uint8,0
KEY_ACC:常量,uint8,1
KEY_ON:常量,uint8,2
KEY_START:常量,uint8,3
在这里插入图片描述

3.8 添加输入输出Port

Simulink空白处双击,输入in1,选择In1添加输入Port;
在这里插入图片描述

Simulink空白处双击,输入Out1,选择Out1添加输出Port;
在这里插入图片描述

将输入输出Port与Char的输入输出连接;(使用In1与Out1连接时会自动更名为Chart输入输出名称)
在这里插入图片描述

3.9 建立数据字典

点击MODELING->Model Explorer,在Model Explorer界面中新建数据字典,并命名为KeyState;
在这里插入图片描述
在这里插入图片描述

使用Excel创建输入输出信号,并生成数据字典;
参考:Simulink 从Excel自动生成数据字典
在这里插入图片描述

运行CreateSldd.m,一键修改生成数据字典;
在这里插入图片描述

3.10 模型与数据字典关联

在模型空白处右键,选择Model Properties;
在这里插入图片描述

在Model Properties中,External Data业中选择数据字典并关联;
在这里插入图片描述

在模型迁移线上添加信号;
在这里插入图片描述

选中已添加信号的迁移线,右键选择Properties;
在这里插入图片描述

在弹出Signal Properties界面中,勾选Signal name must resolve to Simulink signal object;
在这里插入图片描述

修改完成如下图
在这里插入图片描述

3.11 生成代码

修改完成后,使用快捷键Ctrl+B生成代码;
在工作路径下生成了KeyState_ert_rtw文件夹,文件夹内时生成的代码,主要是五个文件:KeyState.c、KeyState.h、KeyState_private.h、KeyState_types.h、rtwtypes.h;
在这里插入图片描述

3. 代码集成

由于输入输出信号为外部信号,需要声明输入输出接口函数;
在模型配置中配置了Custom Code,包含signal_api.h头文件;
在这里插入图片描述

需要在signal_api.h头文件中声明模型中使用的Get_bool_ACC_SW()、Get_bool_IG1_SW()、Set_uint8_KeyState(uint8 data)函数,随后集成代码就可以编译通过;

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SissonLi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值