GCKontrol生成S-function函数

摘要

S-function是系统函数(System Function)的简称,可以十分方便地用来描述各种动态系统,尤其是复杂的动态系统,属于Simulink动态系统的核心。

它的一项关键功能是可以集成自定义模型,通过将自己编写的模型封装为 S-function,可以将其集成到Simulink中进行仿真,这意味着我们可以将GCKontrol建立的模型通过生成S-function函数功能移植到Simulink平台中,这样一来,我们能够充分利用GCKontrol和Simulink的优势,使得GCKontrol可以更灵活地在更多样化的环境中进行系统仿真,可以在Simulink中使用其强大的仿真和分析工具,与其他Simulink模块如控制器、传感器、执行器等相互配合,实现对复杂系统的全局仿真分析,适应不同的应用场景和需求。

图1 GCKontrol与Simulink

案例介绍

GCKontrol通过生成S函数功能,将建立的模型生成S-function的c文件,可以在 Matlab/Simulink中的S-Function模块中进行调用,实现与其他 Simulink 模块进行集成,比如控制器、传感器、执行器等,实现复杂系统的全局仿真分析。

GCKontrol中建立仿真模型

在GCKontrol建立舵机模型,以及设定输入输出接口,输入为期望舵角,输出为实际舵角,然后在上方菜单栏选择生成S函数。

图2 GCKontrol舵机仿真模型

图3 S函数生成页面

生成S函数配置时选择导出路径,生成出sfcn_+模型名称的文件夹,文件夹中包含S函数的C文件。

图4 生成S函数文件夹

导入到Simulink中建立测试模型

将Matlab路径切换到导出的S-function文件夹下。

图5 切换到生成的S函数文件夹

打开Simulink,在Simulink中添加S-function模块,双击导入文件,选择生成的S函数名.c文件,导入成功后将S-function名称改为与文件名一致,并搭建测试所需的模型,如下图所示。

图6 S-function导入文件

图7 选择文件夹

在Matlab中编译已经生成的脚本。在导出S-function路径下有compile.m,将该脚本拖拽到Matlab命令行执行即可。

图8 Compile文件

图9 编译完成
设置仿真步长,改为定步长。

图10 设置步长

图11 设置Simulink求解器步长

连接输入,在Simulink进行仿真。

仿真测试及结果

在Simulink求解器中,选择定步长求解0.01s,仿真结果如下图所示。

图12 Simulink仿真结果

与GCKontrol仿真结果对比如下图所示:

图13 联合仿真结果

将舵机、潜艇模型、控制器三个子系统分别生成S-function函数导入到Simulink中建立潜艇自动控制模型,运行仿真对比结果。

图14 GCK仿真模型

图15 生成S函数导入到Simulink

下面是执行器舵角和潜艇实际航向角的结果在GCKontrol和Simulink中的对比,可以看出结果一致。

图16 仿真结果对比

总结

从上述案例可以看出,通过GCKontrol可以很方便快捷地将在GCK中搭建的模型转换成S-function导入到Simulink中进行仿真,从而更好地实现对大型复杂系统进行模型集成,以及可以直接使用MATLAB的分析和优化工具,便于优化模型的性能,提高仿真效率。同时S-function是一种通用的模型表示形式,可以在多种不同的应用中使用,从而实现更广泛的应用。

相关推荐
小白不太白95010 小时前
设计模式之 模板方法模式
java·设计模式·模板方法模式
色空大师10 小时前
23种设计模式
java·开发语言·设计模式
闲人一枚(学习中)10 小时前
设计模式-创建型-建造者模式
java·设计模式·建造者模式
博风11 小时前
设计模式:6、装饰模式(包装器)
设计模式
A_cot11 小时前
理解设计模式与 UML 类图:构建稳健软件架构的基石
microsoft·设计模式·简单工厂模式·工厂方法模式·uml
君败红颜11 小时前
设计模式之创建模式篇
设计模式
闲人一枚(学习中)14 小时前
设计模式-创建型-抽象工厂模式
设计模式·抽象工厂模式
小白不太白95016 小时前
设计模式之 观察者模式
观察者模式·设计模式
小白不太白95017 小时前
设计模式之 责任链模式
python·设计模式·责任链模式
吾与谁归in18 小时前
【C#设计模式(13)——代理模式(Proxy Pattern)】
设计模式·c#·代理模式