本节根据已经建立好的Simulink模型生成嵌入式代码

1.模型的采样时间设置

打开模型设置,确认FOC的计算运行时间和电机模型的运行时间满足香农采样定律(电机模型的计算的频率要大于FOC模型的两倍),这里设置的表贴式电机的运行频率是20KHZ,FOC计算频率是10KHZ。

2.内部参数的浮点化

2.1产量参数的浮点化

点开一个常量参数,点击“Signal Attributes”标签页,将“Output data type”改成single类型,“sample time”改成“-1”,采样时间改为-1的意思是继承系统的采样时间。

2.2模型输入输出的参数类型转化

在模型输入前加上参数类型转化模块,将Double类型转成Single类型,最后别忘了在后面再加上个模型转化模块,再转回Double类型,因为数据类型不对应的话,模型会报错,无法正常运行。

3.子模块的封装

3.1子模块的"Mask"格式更改

点开Mask标签,在edit Mask界面下,根据需要键入以下代码:

port_label('input',1,'a','texmode','on');//('端口类型',端口号,'端口名称','文本模式,texmode模式支持显示特殊类型符号,如β,α等','打开端口')
port_label('input',2,'b','texmode','on');
port_label('input',3,'c','texmode','on');

port_label('output',1,'\alpha','texmode','on');
port_label('output',2,'\beta','texmode','on');

fprintf('模块的名称');

3.2子模块的原子子系统封装

将模块封装成原子子系统后可以将模块单独生成一个子系统

右键模块点开“Block Parameters:”标签,将Treat as atomic unit 标签打上对钩,

再点开Code Generation标签,进行如下设置:

用户定义的名称中填入自己打算生成的子函数的名称即可。

4.模块的嵌入式代码生成

4.1模块C代码的生成步骤

右键打算生成代码的模块,选择“Build This Subsystem”,然后在弹出的窗口点击“Build”

然后生成C代码

生成的主函数

“initialize”函数是函数的初始化函数。

4.2生成的C代码的移植和使用

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐