在Simulink中对S 函数进行参数传递的三种方法

1)之前在调程序的时候,用的都是S函数来进行编写的,但是因为需要对不同的系数设置不同的值,然后看仿真的结果。一开始仿真的时候只会在S函数的文件中修改相应变量的值,每次都要在几个文件中修改四五个值,然后进行仿真。
2) 上一种的方法实在是太麻烦了,后来经过在MATLAB中文论坛中查找相应的资料和看了孙忠潇老师的书之后,开始会利用S函数的属性页中的对话框(如图1所示)进行参数变量的传递,然后把模型中涉及的S函数中的变量全部写到一个M脚本文件中(脚本文件),每次仿真程序的时候,先运行这个M文件,然后就可以仿真了,这个好处在于可以成批量的修改参数,如何设置可以参考用Simulink进行仿真遇到的一些问题以及相应的解决方法整理。需要注意的是用这个方法之后是不需要再S函数中定义变量了,直接使用变量名就可以了。为什么这里要强调是M脚本文件呢?因为脚本文件中的值自己运行之后,其值会直接输出到工作区间中,固然用M 函数文件也可以输出到工作去年中,但是M函数文件默认是只输出一个变量的,如果在调用的时候你要输出多个变量的话,那么就需要指定输出变量的名称,这样的话相比M脚本文件麻烦了许多的。但是在有的情况还是可以使用的。
正如这段代码一样:
A=2;
B=3;
C=4;

在直接运行M脚本文件的时候是可以在工作区间看到这三个变量的,但是如果使用M函数的时候是这样的:[A,B,C]=MFunctionfile_name。
但是这种方法还是不能对S函数中的参变量进行自动的修改并且仿真。目前发现对于S函数模块可以利用get_param来获取参数,但是好像并没有什么用。相应的命令是get_param(‘model_name/S-Function4’,’Parameters’),但是得到的是你设置的变量名称,并不是变量的值。而且当你使用Set_param时也可以对S函数的参数变量这一栏进行修改,但是修改之后你原来设置的参数名称也都没了。
3)后来在无意中对一个示波器进行创建子系统的操作(因为我们不会无聊到对一个模块来创建子系统吧),就在想是不是也可以对S函数模块进行这种操作,因为操作子系统之后就可以使用Set_param函数来设置参数变量了。然后就验证了一个发现是可以这样做的。
验证的模型框图如图2所示,图3是自己写的一个S函数,图4是采用第二种方法来传递参数变量的,图5是采用第三种方法来传递参数变量的。对S函数模块创建子系统还是需要在图4的基础中进行创建。最终的结果如图6所示,两种方法的结果是不同的。
在MATLAB中采用M文件实现对Simulink中的S函数程序实现自动调参数

这里写图片描述

图1 S函数模块属性页

这里写图片描述

图2 仿真模型图

这里写图片描述

图 3 S函数

这里写图片描述

                    图4 第二种方法S函数模块属性页

这里写图片描述

                   图5 第三种方法S函数属性页

这里写图片描述

         图6 最终实验结果图
  • 7
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
S-Function 可以使用MATLAB®,C,C ,Ada,或Fortran 语言来编写。使用MEX 实用工具,将C,C ,Ada,和Fortran 语言的S-Function 编译成MEX-文件,在需要的时候,它们可与其它的MEX-文件一起动态地连接到MATLAB 。 S-Function 使用一种特殊的调用格式让你可以与Simulink 方程求解器相互作用,这与发生在求解器和内置Simulink 块之间的相互作用非常相似。S-Function 的形式是非常通用的,且适用于连续、离散和混合系统。 S-function 为你提供了一种在Simulink 模型增加自制块的手段,你可以使用MATLAB,C,C ,Ada,或Fortran 语言来创建自己的块。按照下面一套简单的规则,你可以在S-function 实现自己的算法。在你编写一个S-Functin 函数,并将函数名放置在一个S-Functin 块(在用户定义的函数块库有效)之后,通过使用masking 定制用户界面。 目录 S-FUNCTION 概述.......... 1 什么是 S-FUNCTION...... 2 在模型使用S-FUNCTION...... 3 向 S-Function 传递参数....... 3 何时使用 S-Function 4 S-FUNCTION 的工作原理.......... 5 Simulink 块的数学关系........ 5 仿真过程......... 5 S-Function 回调程序. 6 S-FUNCTION 的实现...... 8 M-文件的S-Function.......... 8 MEX 文件的S-function ....... 8 MEX 文件与M-文件的S-function 比较... 9 S-FUNCTION 的概念..... 10 直接馈通....... 10 动态维矩阵... 10 设置采样时间和偏移量.......11 S-FUNCTION 范例........ 14 M 文件S-function 范例...... 15 C S-Function 范例... 16 Fortran S-Function 范例.... 18 C S-Function 范例......... 18 Ada S-Function 范例......... 18 编写 M S-FUNCTION.... 19 概述........ 20 S-Function 参数...... 20 S-Function 的输出... 20 定义 S-FUNCTION 块特性....... 22 处理 S-FUNCTION 参数 22 M 文件的S-FUNCTION 范例... 23 范例 1——简单的M 文件S-Function ... 23 范例 2——连续状态S-Function . 25 范例 3——离散状态S-Function . 27 范例 4——混合系统S-Function . 28 范例 5——变步长S-Function ..... 31 ii 使用C 语言编写S-FUNCTION .......... 33 概述........ 34 创建 C MEX S-Function.... 35 自动生成 S-FUNCTION 36 配置生成的 S-Function...... 37 S-Function Builder 如何生成S-Function......... 37 设置 include 路径.... 37 S-FUNCTION BUILDER 的对话窗........ 39 Initialization 选卡..... 39 Data Properties 选卡......... 40 Libraries 选卡.......... 42 Outputs 选卡 43 Continuous Derivatives 选卡....... 45 Discrete Update 选卡........ 46 Build Info 选卡........ 47 一个基本的 C MEX S-FUNCTION 范例....... 48 定义与包含... 49 回调函数的实现...... 50 Simulink/Real-Time Workshop 接口..... 51 Building Timestwo 范例..... 51 C S-FUNCTION 模板..... 52 S-Function 源文件必需的内容..... 52 SimStruct...... 53 编译 C S-Function.. 53 SIMULINK 如何与C S-FUNCTION 相互作用 54 进程层面....... 54 数据层面....... 56 编写回调函数... 59 将 LEVEL 1 C MEX S-FUNCTION 转换到LEVEL 2 . 60 创建 C S-FUNCTION 63 创建 ADA S-FUNCTION.......... 64 创建 FORTRAN S-FUNCTION 65 实现块特性 67 对话框参数....... 68 iii 可调参数....... 68 运行参数 70 创建运行参数.......... 70 更新运行参数.......... 71 创建输入和输出端口... 72 创建输入端口.......... 72 创建输出端口.......... 73 输入的标量扩展...... 74 掩码多端口 S-Function...... 75 自定义数据类型.......... 76 采样时间 77 基于块的采样时间... 77 指定基于端口的采样时间.. 79 基于块与基于端口的混合采样时间 ........ 81 多速率 S-Function 块......... 82 多速率 S-Function 块的同步........ 83 工作向量 84 工作向量与过零检测.......... 85 包括指针工作向量的范例.. 85 内存分配....... 86 FUNCTION-CALL 子系统.......... 87 错误处理 89 防超程代码... 89 SsSetErrorStatus 的终止条件..... 90 数组边界检查.......... 90 S-FUNCTION 范例........ 91 连续状态的 S-Function 范例........ 92 离散状态的 S-Function 范例........ 93 混合系统的S-Function 范例........ 93 变步长的 S-Function 范例. 94 过零检测的 S-Function 范例........ 94 时变连续传递函数的 S-Function 范例... 94
S-FUNCTION 概述 .................................................................................................................................... 1 什么是 S-FUNCTION................................................................................................................................ 2 在模型使用 S-FUNCTION.................................................................................................................... 3 向 S-Function 传递参数..................................................................................................................... 3 何时使用 S-Function.......................................................................................................................... 4 S-FUNCTION 的工作原理........................................................................................................................ 5 Simulink 块的数学关系...................................................................................................................... 5 仿真过程.............................................................................................................................................. 5 S-Function 回调程序.......................................................................................................................... 6 S-FUNCTION 的实现................................................................................................................................ 8 M-文件的 S-Function......................................................................................................................... 8 MEX 文件的 S-function ..................................................................................................................... 8 MEX 文件与 M-文件的 S-function 比较........................................................................................... 9 S-FUNCTION 的概念.............................................................................................................................. 10 直接馈通............................................................................................................................................ 10 动态维矩阵........................................................................................................................................ 10 设置采样时间和偏移量.....................................................................................................................11 S-FUNCTION 范例.................................................................................................................................. 14 M 文件 S-function 范例.................................................................................................................... 15 C S-Function 范例............................................................................................................................ 16 Fortran S-Function 范例.................................................................................................................. 18 C++ S-Function 范例....................................................................................................................... 18 Ada S-Function 范例 ....................................................................................................................... 18 编写 M S-FUNCTION.............................................................................................................................. 19 概述........................................................................................................................................................ 20 S-Function 参数................................................................................................................................ 20 S-Function 的输出............................................................................................................................ 20 定义 S-FUNCTION 块特性..................................................................................................................... 22 处理 S-FUNCTION 参数......................................................................................................................... 22 M 文件的 S-FUNCTION 范例................................................................................................................. 23 范例 1—— 简单的 M 文件 S-Function ........................................................................................... 23 范例 2—— 连续状态 S-Function .................................................................................................... 25 范例 3—— 离散状态 S-Function .................................................................................................... 27 范例 4—— 混合系统 S-Function .................................................................................................... 28 范例 5—— 变步长 S-Function ........................................................................................................ 31 使用 C 语言编写 S-FUNCTION ............................................................................................................. 33 概述........................................................................................................................................................ 34 创建 C MEX S-Function.................................................................................................................. 35 自动生成 S-FUNCTION.......................................................................................................................... 36 配置生成的 S-Function.................................................................................................................... 37 S-Function Builder 如何生成 S-Function...................................................................................... 37 设置 include 路径 ............................................................................................................................. 37 S-FUNCTION BUILDER 的对话窗........................................................................................................... 39 Initialization 选卡.............................................................................................................................. 39 Data Properties 选卡 ....................................................................................................................... 40 Libraries 选卡.................................................................................................................................... 42 Outputs 选卡..................................................................................................................................... 43 Continuous Derivatives 选卡.......................................................................................................... 45 Discrete Update 选卡 ...................................................................................................................... 46 Build Info 选卡 .................................................................................................................................. 47 一个基本的 C MEX S-FUNCTION 范例 ............................................................................................... 48 定义与包含........................................................................................................................................ 49 回调函数的实现................................................................................................................................ 50 Simulink/Real-Time Workshop 接口 ............................................................................................. 51 Building Timestwo 范例................................................................................................................... 51 C S-FUNCTION 模板.............................................................................................................................. 52 S-Function 源文件必需的内容........................................................................................................ 52 SimStruct........................................................................................................................................... 53 编译 C S-Function............................................................................................................................ 53 SIMULINK 如何与 C S-FUNCTION 相互作用 ........................................................................................ 54 进程层面............................................................................................................................................ 54 数据层面............................................................................................................................................ 56 编写回调函数........................................................................................................................................ 59 将 LEVEL 1 C MEX S-FUNCTION 转换到 LEVEL 2 .............................................................................. 60 创建 C++ S-FUNCTION.......................................................................................................................... 63 创建 ADA S-FUNCTION......................................................................................................................... 64 创建 FORTRAN S-FUNCTION.............................................................................................................. 65 实现块特性................................................................................................................................................ 67 对话框参数............................................................................................................................................ 68 可调参数............................................................................................................................................ 68 运行参数................................................................................................................................................ 70 创建运行参数.................................................................................................................................... 70 更新运行参数.................................................................................................................................... 71 创建输入和输出端口............................................................................................................................ 72 创建输入端口.................................................................................................................................... 72 创建输出端口.................................................................................................................................... 73 输入的标量扩展................................................................................................................................ 74 掩码多端口 S-Function.................................................................................................................... 75 自定义数据类型.................................................................................................................................... 76 采样时间................................................................................................................................................ 77 基于块的采样时间............................................................................................................................ 77 指定基于端口的采样时间................................................................................................................ 79 基于块与基于端口的混合采样时间 ................................................................................................ 81 多速率 S-Function 块....................................................................................................................... 82 多速率 S-Function 块的同步........................................................................................................... 83 工作向量................................................................................................................................................ 84 工作向量与过零检测........................................................................................................................ 85 包括指针工作向量的范例................................................................................................................ 85 内存分配............................................................................................................................................ 86 FUNCTION-CALL 子系统........................................................................................................................ 87 错误处理................................................................................................................................................ 89 防超程代码........................................................................................................................................ 89 SsSetErrorStatus 的终止条件 ........................................................................................................ 90 数组边界检查.................................................................................................................................... 90 S-FUNCTION 范例.................................................................................................................................. 91 连续状态的 S-Function 范例........................................................................................................... 92 离散状态的 S-Function 范例........................................................................................................... 93 混合系统的 S-Function 范例........................................................................................................... 93 变步长的 S-Function 范例............................................................................................................... 94 过零检测的 S-Function 范例........................................................................................................... 94 时变连续传递函数的 S-Function 范例........................................................................................... 94

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独坐寒江边

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值