用MATLB仿真一个单闭环控制量,同时还存在两个开环控制变量的阶跃响应曲线。(自动控制方法是PID中的P控制。通过查表法直接给开环参数稳态最佳的大小)
实际项目背景:甘肃省,航天510所的LIPS100电推力器。一共有三个控制变量,开环控制变量是:Ia(阳极电流)、mmrf(阳极主流率) 这个阳极主流率是阀门变量,不能够突变,模拟用(大学一年级课,电路分析基础中)类似电感放电的e指数公式。
要求:比例控制参数P可调,阶跃响应在通电前设定幅值3.5~12.8 假设仿真实验时长120S,在第60S时给定阶跃控制信号。
- 把查表用的TXT文件放到MATLAB当前文件夹路径。fDemandToIa.txt和subBestSchedule_2.txt
- MATLAB仿真脚本名称为 stepEmulation.m 可以用记事本打开(推荐使用Notepad++)
- 仿真脚本中用详尽的注释标注了 比例控制参数pParameter以及阶跃控制信号幅值:
- f_stepaFd = 7 ; %——————————————————修改阶跃初始值
- f_stepbFd = 4 ; %——————————————————修改阶跃终末值
脚本代码如下可供参考,自动化专业毕业的我转行IT做码农:
% M脚本实现的功能是,根据输入的各项参数仿真推力跟随阶跃控制信号的性能
% 作者kangyupeng94@live.cn
% 时间2019年07月18日 甘肃兰州
clear;close all;
pParameter = 0.003 ;%——————————————————修改比例控制参数
f_step0Fd = 0 ; %启动开机前需求幅值应为0
% 载入需求推力和阳极电流与主流率之间的查表文件
fDemandToIa = load('fDemandToIa.txt');
subBestSchedule_2 = load('subBestSchedule_2.txt');
% 两次阶跃信号的幅值,单位 %'Unit:mN
% 强制要求精度最高到0.001否则报错
f_stepaFd = 7 ; %——————————————————修改阶跃初始值
f_stepbFd = 4 ; %——————————————————修改阶跃终末值
% 仿真总时间,单位S
totalTime = 120;
% 人为给定阶跃信号的时刻,单位S
stepActionTime = 60;
% 仿真的控制步长时间长度,单位S
% 100ms = 0.1S
delta_t = 0.1;
% 整个仿真过程的步进数为totalSteps
totalSteps = totalTime/delta_t;
tao = 10; %单位秒S是阀门的时间常数
flag = stepActionTime/delta_t;
% 通过查表对比返回一个索引值对应的主流率大小
mmfrNoa = find(subBestSchedule_2(:,1) == f_stepaFd);
mmfr_stepaFd = subBestSchedule_2(mmfrNoa,2);
% 循环产生第一阶段的实际模型主流率
for j = 1:flag
mmfrN1(j)=(f_step0Fd)+(mmfr_stepaFd-(f_step0Fd))*(1-exp(-j*delta_t/tao));
end
% 通过查表对比返回一个索引值对应的主流率大小
mmfrNob = find(subBestSchedule_2(:,1) == f_stepbFd);
mmfr_stepbFd = subBestSchedule_2(mmfrNob,2);
% 循环产生第二阶段的实际模型主流率
for k =1:((totalTime-stepActionTime)/delta_t)
mmfrN2(k)= mmfr_stepaFd+(mmfr_stepbFd-mmfr_stepaFd)*(1-exp(-k*delta_t/tao));
end
%%把上面的两个主流率实际模型过程补在一起
mmfrNN = [mmfrN1 mmfrN2];
% 通过查表对比返回一个索引值对应的阳极电流大小
IaNoa = find(fDemandToIa(:,1) == f_stepaFd);
Ia_stepaFd = fDemandToIa(IaNoa,2);
IaNob = find(fDemandToIa(:,1) == f_stepbFd);
Ia_stepbFd = fDemandToIa(IaNob,2);
%%这里给模拟的传递函数中的固定参数赋值常量
k1 = -42.6390869166903;
k2 = -1.32483293227065;
k3 = 0.200510429472484;
k4 = -5.70516914317562;
k5 = 37.163468956944;
k6 = 2.95838142236669;
k7 = 1.15327067269415;
k8 = 0.6243246881009;
% 产生两个数组
stepActionTime_JieShu =((totalTime-stepActionTime)/delta_t);
% zeros(m,n:); %生成m*n的全0矩阵
ia_a=ones(flag,1);
ia_b=ones(stepActionTime_JieShu,1);
ia_a=ia_a*Ia_stepaFd;
ia_b=ia_b*Ia_stepbFd;
% 把上面两个阶段的阳极电流矩阵拼接在一起
ia =[ia_a ia_b];
% ones(m,n) ;生成m*n的全1矩阵
f_demand_a=ones(flag,1);
f_demand_b=ones(stepActionTime_JieShu,1);
f_demand_a=f_demand_a*f_stepaFd;
f_demand_b=f_demand_b*f_stepbFd;
f_demand = [f_demand_a f_demand_b];
% 循环模拟每个控制周期
% 初始情况下的实际推力和励磁电流应该为0
im =zeros(totalSteps,1);
ff =zeros(totalSteps,1);
for i = 1: totalSteps
ff(i) = k1 * (1 - exp(k2 * mmfrNN(i))) * im(i) * im(i) ...
+ (k3 * (mmfrNN(i) * ia(i)) * (mmfrNN(i) * ia(i)) + k4 * (mmfrNN(i) * ia(i)) + k5 * sqrt(mmfrNN(i) * ia(i)) + k6) * im(i)...
+ k7 * (1 - exp(k8 * mmfrNN(i)));
im(i+1) = im(i) + pParameter*( f_demand(i) - ff(i) );
if i == (totalSteps-1)
break;
end
end
% 画图输出
% 用循环构造时间序列
for j = 1:totalSteps
t(j) = j;
end
%%把推力的0.2倍幅值、主流率、励磁电流绘制在同一幅图里
%%
figure(2)
plot(t,ff*0.2,'b') %推力函数值用蓝色
hold on %MATLAB同一个figure里绘图保持命令
plot (t,mmfrNN,'r') %主流率处理后用红色
plot(t,im*4,'g') %闭环参数励磁电流用绿色
xlabel('时间 s');
ylabel('');
legend('推力','主流率','励磁电流');
title('主流率实际模型;推力×0.2显示;励磁电流×4')
grid on; %打开网格

可以发现:实际仿真得到的推力蓝色线条的变化趋势和绿色的闭环反馈控制参数的变化趋势是一致的。
用MATLB仿真一个单闭环控制量,同时还存在两个开环控制变量的阶跃响应曲线。(自动控制方法是PID中的P控制。通过查表法直接给开环参数稳态最佳的大小)的更多相关文章
- Java 二维数组,排序、切换顺序,查表法二进制十进制,这班查找、排序(冒泡、选择)、遍历,获取最大小值(4)
Java 二维数组,排序.切换顺序,查表法二进制十进制,折半查找.排序(冒泡.选择).遍历,获取最大小值(4)
- 语义分割(semantic segmentation) 常用神经网络介绍对比-FCN SegNet U-net DeconvNet,语义分割,简单来说就是给定一张图片,对图片中的每一个像素点进行分类;目标检测只有两类,目标和非目标,就是在一张图片中找到并用box标注出所有的目标.
from:https://blog.csdn.net/u012931582/article/details/70314859 2017年04月21日 14:54:10 阅读数:4369 前言 在这里, ...
- Chapter 2 简单DC-DC变换器稳态分析小结
Chapter 2 简单DC-DC变换器稳态分析小结 1 本章重点 1.1 小纹波近似 所谓小纹波近似就是DC-DC变换器的稳态分析中,假定开关频率次的纹波相对于直流分量而言非常小,可以将其忽略进行各 ...
- 基于SimpleChain Beta的跨链交互与持续稳态思考
1. 区块链扩展性迷局 比特币作为第一个区块链应用与运行到目前为止最被信任的公链,其扩展性问题却持续被作为焦点贯穿着整个链的发展周期.事实上,在2009年1月4日比特币出现的那一天到2010年10月1 ...
- [Fundamental of Power Electronics]-PART I-2.稳态变换器原理分析-2.2 伏秒平衡/安秒平衡 小纹波近似
2.2 电感伏秒平衡.电容充放电平衡以及小纹波近似 让我们更加仔细地观察图2.6中的buck变换器的电感和电容的波形.我们是不可能设计一个滤波器能够只允许直流分量通过而完全滤除开关频率次谐波的.所以, ...
- [Fundamental of Power Electronics]-PART I-2.稳态变换器原理分析-2.4 Cuk变换器实例
2.4 Cuk 变换器 作为第二个示例,考虑图2.20(a)的变换器.该变换器执行类似于降压-升压变换器的直流转换功能:它可以增加或减小直流电压的幅值,并且可以反转极性.使用晶体管和二极管的实际实现如 ...
- [Fundamental of Power Electronics]-PART I-2.稳态变换器原理分析-2.5/2.6 多极点滤波器电压纹波估计及要点小结
2.5 含两极点低通滤波器变换器的输出电压纹波估计 在分析包含两极点低通滤波器的变换器如Cuk变换器及Buck变换器(图2.25)输出时,小纹波近似将会失效.对于这些变换器而言,无论输出滤波电容的值是 ...
- [Fundamental of Power Electronics]-PART I-2.稳态变换器原理分析-2.3 Boost 变换器实例
2.3 Boost 变换器实例 图2.13(a)所示的Boost变换器器是另一个众所周知的开关模式变换器,其能够产生幅值大于直流输入电压的直流输出电压.图2.13(b)给出了使用MOSFET和二极管的 ...
- LibTorch | 使用神经网络求解一维稳态对流扩散方程
0. 写在前面 本文将使用基于LibTorch(PyTorch C++接口)的神经网络求解器,对一维稳态对流扩散方程进行求解.研究问题参考自教科书\(^{[1]}\)示例 8.3. 目录 0. 写在前 ...
随机推荐
- Qt 5.9对Mac的图形显示有许多改进
We have some platform specific improvements as well as support for new platforms and compilers comin ...
- Android自定义View入门(一)
最近在写一个关于音乐播放的应用,写到播放界面UI时,就想自己实现的一个播放界面.那么如何实现自定义View呢?通过查看他人博客和Android官方开发文档,初步了解了一些浅显的内容.在此记录,已供需要 ...
- 龙芯GO!龙芯平台上构建Go语言环境指南
龙芯软件生态系列——龙芯GO!龙芯平台上构建Go语言环境指南2016-07-05 龙芯中科1初识Go语言Go语言是Google公司于2009年正式推出的一款开源的编程语言,是由Robert Gries ...
- delphi资源文件制作及使用详解
一.引子:现在的Windows应用程序几乎都使用图标.图片.光标.声音等,我们称它们为资源(Resource).最简单的使用资源的办法是把这些资源的源文件打入软件包,以方便程序需要的时候调用.资源是程 ...
- 机器学习Machine Learning(ML)
什么是机器学习 定义 对于某个任务T和表现的衡量P,当计算机程序在该任务T的表现上,经过P的衡量,随着经验E而增长,称计算机能够通过经验E来学习该任务.(Tom Mitchell) 举例而言,在跳棋游 ...
- Qt自定义委托在QTableView中绘制控件、图片、文字(内容比较全)
自定义委托,继承于,QStyledItemDelegate类,重载Paint()函数, 1.实现在QTableView中绘制 格式字符串 2.实现在QTableView中绘制进度条 3.实现在QTab ...
- qt开发的小软件,可以递归转换文件编码(qt为了防止内存泄露所做的保护机制)
应用场景 当你下载别人的源码的时候,而别人的源码跟你自己电脑里面的编码不一致的情况下将会出现乱码,但是如果要一个个转换编码的话那么那样所需要花的时间太多,所以就有必要写一个软件递归遍历项目下面所有的文 ...
- 怎么看待php 面向对象思想
面向对象的程序设计思路是现代程序设计由面向过程演变面向对象的必然趋势,所以面向对象的而设计思路必然有它不同的时代意义,必然有着不同面向过程的不同历史使命,而php 5以后成功添加面向对象的设计思路其实 ...
- 关于学习js的Promise的心得体会
最近一直在研究js的Promise对象,其中有一篇blog写得比较通俗易懂,转发如下: http://www.cnblogs.com/lvdabao/p/es6-promise-1.html 参照上面 ...
- Java基础篇01
01. 面向对象 --> 什么是面向对象 面向对象 面向对象程序设计,简称OOP(Object Oriented Programming). 对象: 指人们要研究的任何事物,不管是物理上具体的事 ...