simulink如何使用C语言实现S-Function
1、步骤1:打开Simulink的库浏览器,搜索“s-function”,选择“S-Function Builder”拖动到工程当中。注意,不要选择s-function,那个是不能添加C文件的。
2、步骤2:双击新添加的S-Function Builder实例,在其属下对话框选择“Data Properties”,配置好输入输出端口。以输入端口为例,Input ports为输入端口,点击左侧的箭头符号可添加端口。
3、步骤3:双击端口名“Port name”可修改端口名称,同时还可修改端口对应的数据类型:维度、复数或实数等。另外还需要在S-function name右侧的文本框输入模块名称,默认为system,确认后点击“Build”编译,软件会根据模块名生成对应的文件。
4、步骤4:编译过程中会在“Build Info”选项卡显示当前进度,成功后会显示至少三个文件,包含两个c文件和一个tlc文件,点击文件名可切换至编辑器。
5、步骤5:通常xxx_wrapper.c包含一个xxx_Outputs_wrapper()函数,它就是模块的输入输出关系函数。这里的xxx指代具体的模块名,实例中使用的是mySin。用户可以修改该函数内容来实现自己的功能。
6、步骤6:这里插入一段根据频率和时间产生正弦波的代码,其中所有参数均为指针形式给出,需要使用下标或者指针运算符访问。确认代码后保存文件,然后再matl锾攒揉敫ab命令行输入mex mySin.c mySin_wrapper.c,注意mex后面的文件名是工程中用到的。
7、步骤7:mex命令执行成功后会提示“MEX 已成功完成”,此时可回到simu盟敢势袂link界面运行看看效果。实例中的模型包含一个S-Function Builder模块,有时间time、频率fre两个输入,一个输出,其中时间直接使用Clock模块产生,频率使用一个常量。由于Clock产生的比较粗糙,这里主时间设置得很短,为0.02秒。另外还有一个Scope观察输出波形。
8、程序运行后可以在Scope中按程序生成了一个正弦波。