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是一种通用的模型表示形式,可以在多种不同的应用中使用,从而实现更广泛的应用。

相关推荐
鎈卟誃筅甡7 小时前
JavaScript设计模式 -- 迭代器模式
设计模式·迭代器模式
xiangxiongfly9158 小时前
Java 设计模式之迭代器模式
java·设计模式·迭代器模式
FLZJ_KL8 小时前
【设计模式】【行为型模式】迭代器模式(Iterator)
java·设计模式·迭代器模式
卷福同学8 小时前
设计模式2:单例模式
java·单例模式·设计模式
Resean02238 小时前
架构设计系列(四):设计模式
java·设计模式·架构·系统架构
依恋、阳光9 小时前
建造者模式构建对象
java·设计模式·建造者模式·类与对象
道友老李10 小时前
【设计模式精讲】创建型模式之单例模式(饿汉式、懒汉式、双重校验、静态内部类、枚举)
单例模式·设计模式
旺代11 小时前
设计模式在Qt中的应用
开发语言·qt·设计模式
workflower12 小时前
实例研究:设计一个文档编辑器(24)- 完
java·开发语言·设计模式·编辑器·软件工程·需求分析·软件需求
小小李程序员13 小时前
工厂设计模式
java·python·设计模式