1.在matlab中安装C语言模块mingw
![](https://img-blog.csdnimg.cn/55dc5e55994f4a2f83ac7f2fb2992199.png)
![](https://img-blog.csdnimg.cn/37a5c57d59fe4e48a173b51da214d3f8.png)
2.在simulink中引用S-Function模块 和S-Function Examples模块
![](https://img-blog.csdnimg.cn/ca5313b71cf04754a758cabdd4d724af.png)
3.使用S-Function Examples模块创建C文件,双击S-Function Examples模块后再选择C-file再选择basic C-Mex
![](https://img-blog.csdnimg.cn/34373494f2bd4c0d8913a2cb5688a643.png)
![](https://img-blog.csdnimg.cn/c87eb47140124911849dd4ee78630f76.png)
4.将创建的C文件模板另存到仿真文件所在文件夹,并将文件名重命名为工程名称如Boost.c,在S-Function中将名称更改为C文件名如Boost,在C的宏定义中将S_FUNCTION_NAME 后面名称改为文件名
![](https://img-blog.csdnimg.cn/a3df0ec85ae84b32a3f714b49160114d.png)
![](https://img-blog.csdnimg.cn/6478df5fc5584fe08dd2660749306d56.png)
5.在simulink中设置的 model properties中的initfcn中输入mex Boost.c,这样matlab在仿真前会先编译所生产的C文件
![](https://img-blog.csdnimg.cn/b5376141762b4d59b6af5e575fdae22a.png)
6.修改.c文件中的采样时间
7.修改S-Function的输入输出,如果为默认下图形式,并且将输入连接到采样,输出连接到示波器,会发现波形为100K的采样波形,到此就实现了采样保持器
![](https://img-blog.csdnimg.cn/a637a37a506f461eb183f66316add2ce.png)
8.使用C发PWM波
a.定义结构体变量Cnt和周期
![](https://img-blog.csdnimg.cn/754ae6ec79874ea583cd09d01e19fe79.png)
b.初始化结构体变量,其中400为周期,计算方法为PWM的频率除以采样时间
Prd = Fre/Slample 例程中开关频率为100K(1e-5) 采样时间为2.5e-8
![](https://img-blog.csdnimg.cn/f6d5a473abd04820a770b1d9599cfd12.png)
c.添加S-Function输出端口数量,如下改为2可以有两组输出
![](https://img-blog.csdnimg.cn/97902ae566c24698b926fe34e51cd627.png)
d.在模块中执行PWM运算,即可在示波器中看到PWM波
![](https://img-blog.csdnimg.cn/d9c9a398d55140f29bce8ec02b989009.png)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)