S函数即系统函数System Function的意思,在研究中,有时需要用到复杂的算法设计等,而这些算法因为其复杂性不适合用普通的Simulink模块来搭建,即matlab所提供的Simulink模块不能满足用户的需求,需要用编程的形式设计出S函数模块,将其嵌入到系统中。如果恰当地使用S函数,理论上,可以在Simulink下对任意复杂的系统进行仿真。
作者以为MATLAB2015a为例讲解下S函数使用过程中的一些小技巧。
第一步:在主窗口中输入sfundemos,或者点击Simulink->User-Defined Functions->S-Function Examples,即可出现如图1所示的界面,用红色框圈出来的部分就是S函数
图1 S函数库
第二步:在MATLAB主窗口下建立一个Simulink形式的.slx文件,起名为robot.slx
第三步:Matlab为了用户使用方便,有一个S函数的模板sfuntmpl.m,一般来说,我们仅需要在sfuntmpl.m的基础上进行修改即可。在MATLAB命令行中输入edit sfuntmpl 即可出现模板函数的内容,模板内容如下所示
把sfuntmpl 文件和之前建立好的robot.slx放在一个路径之下,sfuntmpl 文件重命名为 ctrlmpl.m,然后回到robot.slx框图中,把Simulink->User-Defined Functions->S-Function Examples拖入进框图里面,如下图
第三步:双击S-Function出现如下界面,切记把S-function name 的名称改为和之前建立好的sfuntmpl 文件名字一致为ctrlmpl,这是最关键的一步,保证了在仿真的时候,robot.slx文件可以关联到S函数ctrlmpl.m
第四步:搭建整体框图如下,进行机器人轨迹跟踪仿真
robot.slx文件中的整体框图仿真
仿真结果如下图
机器人位置和速度跟踪轨迹
控制输入