【Matlab】通过m文件控制simulnk模型进行仿真

本文介绍了如何通过修改S-Function并添加外部参数,以及利用m文件来控制Simulink模型进行仿真。具体步骤包括在控制模型和控制算法中设置相同的初始状态,为模块增加mask以实现参数传递。
摘要由CSDN通过智能技术生成

1.前言

为了测试控制算法对系统不同初始状态的收敛情况,我准备通过设置不同的初始状态,使用for循环,循环进行仿真,获取系统收敛情况,因此需要使用m文件来推simulink进行控制和传递参数。

2.方法

2.1  修改S-Function,增加外部参数

我的控制系统是由控制算法S-Function文件和控制模型S-Function文件构成,控制算法中使用了系统的初始状态来进行有限时间控制,故需要同时对控制算法和控制模型设置相同的初始状态。

2.1.1  控制模型

在控制模型文件刚开始调用的函数中,加入外部参数x00,因初始状态是在mdlInitializeSizes函数中定义的,所以还需要在该函数中加入外部参数x00

function [sys,x0,str,ts] = ControlTestPlant(t, x, u, flag, x00)
switch flag,
  case 0,
    [sys,x0,str,ts]=mdlInitializeSizes(x00);  % 调用初始化子函数

修改mdlInitializeSizes函数,给函数增加外部参数x00

function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes(x00)   %初始化子函数

sizes = simsizes;

sizes.NumContStates  = 2;  %连续状态变量个数
sizes.NumDiscStates  = 0;  %离散状态变量个数
sizes.NumOutputs     = 2;  %输出变量个数
sizes.NumInputs      = 1;   %输入变量个
  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值