matlab控制器参数整定方法

2023-11-06 22:40

本文主要是介绍matlab控制器参数整定方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • systune方法
    • code
    • simulink + code
  • HinfStruct方法
    • 标准控制结构
    • simulink + code

systune方法

在这里插入图片描述
针对上述控制结构图,利用matlab整定参数。

code

%% Tuning Control Systems with SYSTUNE
% systuneWorkflowExample.m
G = tf([2],[0.0015 0.009 2]);
C0 = tunablePID('C','pi');  % tunable PIa = realp('a',1);    %  参数化
F0 = tf(a,[1 a]);    % 滤波器结构AP = AnalysisPoint('u'); % 断点T0 = feedback(G*AP*C0,F0);  % 广义闭环传函
T0.InputName = 'r';
T0.OutputName = 'y';
% 指定设计要求
% 设计要求参考链接:
% https://www.mathworks.com/help/control/tuning-goals-1.html?s_tid=srchtitle
Req1 = TuningGoal.Tracking('r','y',0.7);
Req2 = TuningGoal.Margins('u',6,45);
% 执行参数优化算法
rng('default')
Options = systuneOptions('RandomStart',3);
[T,fSoft] = systune(T0,[Req1,Req2],Options);
% 查看指标完成度
fSoft
% 显示整定最佳参数
showTunable(T)  % tuned values of all tunable elements
% 阶跃响应
clf, step(T)

simulink + code

在这里插入图片描述


%% G = tf([2],[0.0015 0.009 2]);
ST0 = slTuner('rct_diskdrive',{'C','F'});
% a = realp('a',1); % 参数化
% setBlockParam(ST0,'F',tf(a,[1 a])); % 明确指定如何参数化F块
T0 = getIOTransfer(ST0,{'r'},{'y'}); % 获取闭环传递函数的广义模型
% 指定设计要求
Req1 = TuningGoal.StepTracking('r','y',0.01);
% 参数整定
rng('default')
Options = systuneOptions('RandomStart',3);
[T,fSoft] = systune(T0,[Req1],Options);
fSoft %要求的完成度,小于1为达到要求
showTunable(T) %展示整定值
clf,step(T)
% 将整定数据写入simulink
ST = copy(ST0); % 复制ST0数据
setBlockValue(ST,T); % 将整定好的数据写入ST
writeBlockValue(ST); % 写入simulink
% 阶跃响应
Try = getIOTransfer(ST,'r','y');
step(Try)

在这里插入图片描述

HinfStruct方法

标准控制结构

在这里插入图片描述

simulink + code

在这里插入图片描述

% https://www.mathworks.com/help/robust/gs/fixed-structure-h-infinity-synthesis-with-hinfstruct.htmlload hinfstruct_demo G
wc = 1000;  % target crossover
s = tf('s');
LS = (1+0.001*s/wc)/(0.001+s/wc);
% 创建slTuner接口的实例,并将Simulink块C和F标记为可调参数
ST0 = slTuner('rct_diskdrive',{'C','F'});
a = realp('a',1);
setBlockParam(ST0,'F',tf([a],[1 a])); % 明确指定如何参数化F块
T0 = getIOTransfer(ST0,{'r','n'},{'y','e'}); % 获取闭环传递函数的广义模型
T0 = blkdiag(1,LS) * T0 * blkdiag(1,1/LS); % 加权
% 随机数优化
rng(0)
opt = hinfstructOptions('Display','final','RandomStart',5);
T = hinfstruct(T0,opt);
% 查看最优参数值
showTunable(T)
step(T(1,1));

在这里插入图片描述

这篇关于matlab控制器参数整定方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/359491

相关文章

Java 枚举的基本使用方法及实际使用场景

《Java枚举的基本使用方法及实际使用场景》枚举是Java中一种特殊的类,用于定义一组固定的常量,枚举类型提供了更好的类型安全性和可读性,适用于需要定义一组有限且固定的值的场景,本文给大家介绍Jav... 目录一、什么是枚举?二、枚举的基本使用方法定义枚举三、实际使用场景代替常量状态机四、更多用法1.实现接

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

java连接opcua的常见问题及解决方法

《java连接opcua的常见问题及解决方法》本文将使用EclipseMilo作为示例库,演示如何在Java中使用匿名、用户名密码以及证书加密三种方式连接到OPCUA服务器,若需要使用其他SDK,原理... 目录一、前言二、准备工作三、匿名方式连接3.1 匿名方式简介3.2 示例代码四、用户名密码方式连接4

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

IDEA中Maven Dependencies出现红色波浪线的原因及解决方法

《IDEA中MavenDependencies出现红色波浪线的原因及解决方法》在使用IntelliJIDEA开发Java项目时,尤其是基于Maven的项目,您可能会遇到MavenDependenci... 目录一、问题概述二、解决步骤2.1 检查 Maven 配置2.2 更新 Maven 项目2.3 清理本

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

CentOS 7 YUM源配置错误的解决方法

《CentOS7YUM源配置错误的解决方法》在使用虚拟机安装CentOS7系统时,我们可能会遇到YUM源配置错误的问题,导致无法正常下载软件包,为了解决这个问题,我们可以替换YUM源... 目录一、备份原有的 YUM 源配置文件二、选择并配置新的 YUM 源三、清理旧的缓存并重建新的缓存四、验证 YUM 源

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使

Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

《Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法》在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(blockde... 目录1. 查看所有磁盘的物理信息方法 1:使用 lsblk(推荐)方法 2:使用 fdisk -l(