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

相关推荐
编程、小哥哥1 小时前
设计模式之抽象工厂模式(替换Redis双集群升级,代理类抽象场景)
redis·设计模式·抽象工厂模式
WaaTong12 小时前
《重学Java设计模式》之 单例模式
java·单例模式·设计模式
WaaTong14 小时前
《重学Java设计模式》之 原型模式
java·设计模式·原型模式
霁月风14 小时前
设计模式——观察者模式
c++·观察者模式·设计模式
暗黑起源喵16 小时前
设计模式-工厂设计模式
java·开发语言·设计模式
wrx繁星点点1 天前
状态模式(State Pattern)详解
java·开发语言·ui·设计模式·状态模式
金池尽干1 天前
设计模式之——观察者模式
观察者模式·设计模式
也无晴也无风雨1 天前
代码中的设计模式-策略模式
设计模式·bash·策略模式
捕鲸叉1 天前
MVC(Model-View-Controller)模式概述
开发语言·c++·设计模式
wrx繁星点点1 天前
享元模式:高效管理共享对象的设计模式
java·开发语言·spring·设计模式·maven·intellij-idea·享元模式