实际项目背景:甘肃省,航天510所的LIPS100电推力器。一共有三个控制变量,开环控制变量是:Ia(阳极电流)、mmrf(阳极主流率) 这个阳极主流率是阀门变量,不能够突变,模拟用(大学一年级课,电路分析基础中)类似电感放电的e指数公式。

要求:比例控制参数P可调,阶跃响应在通电前设定幅值3.5~12.8 假设仿真实验时长120S,在第60S时给定阶跃控制信号。

  1. 把查表用的TXT文件放到MATLAB当前文件夹路径。fDemandToIa.txt和subBestSchedule_2.txt
  2. MATLAB仿真脚本名称为 stepEmulation.m 可以用记事本打开(推荐使用Notepad++)
  3. 仿真脚本中用详尽的注释标注了 比例控制参数pParameter以及阶跃控制信号幅值:
  4. f_stepaFd = 7  ;    %——————————————————修改阶跃初始值
  5. 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控制。通过查表法直接给开环参数稳态最佳的大小)的更多相关文章

  1. Java 二维数组,排序、切换顺序,查表法二进制十进制,这班查找、排序(冒泡、选择)、遍历,获取最大小值(4)

    Java 二维数组,排序.切换顺序,查表法二进制十进制,折半查找.排序(冒泡.选择).遍历,获取最大小值(4)

  2. 语义分割(semantic segmentation) 常用神经网络介绍对比-FCN SegNet U-net DeconvNet,语义分割,简单来说就是给定一张图片,对图片中的每一个像素点进行分类;目标检测只有两类,目标和非目标,就是在一张图片中找到并用box标注出所有的目标.

    from:https://blog.csdn.net/u012931582/article/details/70314859 2017年04月21日 14:54:10 阅读数:4369 前言 在这里, ...

  3. Chapter 2 简单DC-DC变换器稳态分析小结

    Chapter 2 简单DC-DC变换器稳态分析小结 1 本章重点 1.1 小纹波近似 所谓小纹波近似就是DC-DC变换器的稳态分析中,假定开关频率次的纹波相对于直流分量而言非常小,可以将其忽略进行各 ...

  4. 基于SimpleChain Beta的跨链交互与持续稳态思考

    1. 区块链扩展性迷局 比特币作为第一个区块链应用与运行到目前为止最被信任的公链,其扩展性问题却持续被作为焦点贯穿着整个链的发展周期.事实上,在2009年1月4日比特币出现的那一天到2010年10月1 ...

  5. [Fundamental of Power Electronics]-PART I-2.稳态变换器原理分析-2.2 伏秒平衡/安秒平衡 小纹波近似

    2.2 电感伏秒平衡.电容充放电平衡以及小纹波近似 让我们更加仔细地观察图2.6中的buck变换器的电感和电容的波形.我们是不可能设计一个滤波器能够只允许直流分量通过而完全滤除开关频率次谐波的.所以, ...

  6. [Fundamental of Power Electronics]-PART I-2.稳态变换器原理分析-2.4 Cuk变换器实例

    2.4 Cuk 变换器 作为第二个示例,考虑图2.20(a)的变换器.该变换器执行类似于降压-升压变换器的直流转换功能:它可以增加或减小直流电压的幅值,并且可以反转极性.使用晶体管和二极管的实际实现如 ...

  7. [Fundamental of Power Electronics]-PART I-2.稳态变换器原理分析-2.5/2.6 多极点滤波器电压纹波估计及要点小结

    2.5 含两极点低通滤波器变换器的输出电压纹波估计 在分析包含两极点低通滤波器的变换器如Cuk变换器及Buck变换器(图2.25)输出时,小纹波近似将会失效.对于这些变换器而言,无论输出滤波电容的值是 ...

  8. [Fundamental of Power Electronics]-PART I-2.稳态变换器原理分析-2.3 Boost 变换器实例

    2.3 Boost 变换器实例 图2.13(a)所示的Boost变换器器是另一个众所周知的开关模式变换器,其能够产生幅值大于直流输入电压的直流输出电压.图2.13(b)给出了使用MOSFET和二极管的 ...

  9. LibTorch | 使用神经网络求解一维稳态对流扩散方程

    0. 写在前面 本文将使用基于LibTorch(PyTorch C++接口)的神经网络求解器,对一维稳态对流扩散方程进行求解.研究问题参考自教科书\(^{[1]}\)示例 8.3. 目录 0. 写在前 ...

随机推荐

  1. Android零基础入门第20节:CheckBox和RadioButton使用大全

    原文:Android零基础入门第20节:CheckBox和RadioButton使用大全 本期先来学习Button的两个子控件,无论是单选还是复选,在实际开发中都是使用的较多的控件,相信通过本期的学习 ...

  2. EasyUI之combogrid

    html代码: <div class="item-label">@Html.L("Name"):</div> <input id= ...

  3. 读取注册表获取Windows系统XP/7/8/10类型(使用wcscmp比较wchar[]内容)

    很多方案是采用GetVersion.GetVersionEx这两个API来查询操作系统的版本号来判断当前的操作系统是Windows系列中的哪个,在Win10没有出现前,这种方法是行的通的,但是Win1 ...

  4. How Qt Signals and Slots Work(感觉是通过Meta根据名字来调用)

    Qt is well known for its signals and slots mechanism. But how does it work? In this blog post, we wi ...

  5. Qt之OpenSSL(有pro文件的路径格式,以及对libeay32和ssleay32的引用)

    简述 OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用. 简述 下载安装 使用 更多参考 下载安装 ...

  6. hive Metastore contains multiple versions

    凌晨接到hive作业异常,hive版本为1.2.1,hadoop版本apache 2.7.1,元数据存储在mysql中,异常信息如下: Logging initialized using config ...

  7. Python基础(六) 函数

    .函数 函数是对动作的封装 2.1函数的基本结构 #函数的定义 def 函数名(): #函数提 pass #函数的执行 函数名() 2.2参数初识 #形参 def hanshu(aaa): #参数相当 ...

  8. HTML连载16-颜色控制属性2&标签选择器

    一.颜色控制属性(上接连载15) (4)十六进制 在前端开发中通过十六进制来表示颜色,其实本质就是RGB,十六进制中是通过每两位表示一个颜色. 例如:#FFEE00,其中FF代表的是R,EE代表的G, ...

  9. zabbix-3.2.6安装部署

    一.准备一台虚拟机并安装centos7.x版本系统 二.配置zabbix_server 1.http install: #安装各类软件支持库 yum install apr-devel apr-uti ...

  10. C#版剑指Offer-001二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...