一阶惯性环节matlab编程_matlab一阶惯性环节

一阶惯性环节matlab编程_matlab一阶惯性环节该楼层疑似违规已被系统折叠隐藏此楼查看此楼我照着网上的程序自己改出来的程序是这样的clc;clear;ts=0.001;%采样时间sys=tf(-53,[19926,100],’ioDelay’,540);%tf是传递函数,用来实现G(s);在自动控制领域经常用到,dsys=c2d(sys,ts,’z’);%把控制函数离散化,转化…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

我照着网上的程序自己改出来的程序是这样的

clc;

clear ;

ts=0.001; %采样时间

sys=tf(-53,[19926,100],’ioDelay’,540); %tf是传递函数,用来实现G(s); 在自动控制领域经常用到,

dsys=c2d(sys,ts,’z’); %把控制函数离散化,转化为拆分方程

[num,den]=tfdata(dsys,’v’); % 离散化后提取分子、分母 ,提取拆分方程系数

u_0=0.0;

u_1=0.0;

u_2=0.0;

y_1=0.0;

y_2=0.0;

x=[0,0,0]’;

error_1=0;

error_2=0;

for k=1:1:1000000

time(k)=k*ts; %采样次数

S=1; %选择需要跟踪的函数

if S==1

kp=-2.5237;ki=-025316;kd=18.2627; %初始化PID

rin(k)=1; %Step Signal ,阶跃信号

end

if S==2

kp=x;ki=x;kd=x;

rin(k)=0.5*sin(2*pi*k*ts); %Sine Signal 正弦信号

end

if S==3 %三角波信号

kp=x;ki=x;kd=x;

if mod(time(k),2)<1

rin(k)=mod(time(k),1);

else

rin(k)=1-mod(time(k),1);

end

rin(k)=rin(k)-0.5;

end

if S==4 %锯齿波信号

kp=x;ki=x;kd=x; %测试得合适参数,如果输出过冲,可将kd调小。

rin(k)=mod(time(k),1);

end

du(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controller 控制系数

u(k)=u_1+du(k);

%Linear model

yout(k)=-den(2)*y_1+num(1)*u_0+num(2)*u_1; %实际输出

error(k)=rin(k)-yout(k); %Return of parameters 误差

u_2=u_1; %保存上上次输入 为下次计算

u_1=u(k); %保存上一次控制系数 为下次计算

y_2=y_1; %保存上上次次输出 为下次计算

y_1=yout(k); %保存上一次输出 为下次计算

x(1)=error(k)-error_1; %Calculating P

x(2)=error(k)-2*error_1+error_2; %Calculating D

x(3)=error(k); %Calculating I

error_2=error_1;

error_1=error(k);

end

figure(1);

plot(time,rin,’b’,time,yout,’r’); %输入 和实际控制输出

xlabel(‘time(s)’),ylabel(‘rin,yout’);

axis([0,1000,0,1.2]);

% figure(2);

% plot(time,error,’r’) %输入与输出误差输出曲线

% xlabel(‘time(s)’);ylabel(‘error’);

得到的图形是这样的

5331104c75716c236664e4710d3946ce.png

我用Simulink得到的图是这样的

21ca07a2b5b5dd4e3d7816de6d945411.png

有大佬告诉我一下我的程序哪里出错了吗

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185896.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于UrlHttpConnection.setRequestProperty()的调用顺序问题的验证「建议收藏」

    关于UrlHttpConnection.setRequestProperty()的调用顺序问题的验证「建议收藏」因为在项目中使用到了HttpURLConnection请求资源,对于其中的方法setRequestProperty()

    2022年9月10日
    0
  • 设计模式之访问者(visitor)模式

    在患者就医时,医生会根据病情开具处方单,很多医院都会存在以下这个流程:划价人员拿到处方单之后根据药品名称和数量计算总价,而药房工作人员根据药品名称和数量准备药品,如下图所示。在软件开发中,有时候也需

    2021年12月28日
    37
  • traceroute和tracert原理

    traceroute和tracert原理一、Traceroutetraceroute命令用IP生存时间(TTL)字段和ICMP错误消息来确定从一个主机到网络上其他主机的路由。路由器收到TTL为1的包文减1后直接丢弃,然后回复ICMP(type=11,code=0,TTLequals0duringtransit——传输期间生存时间为0)。目标主机收到traceroute的UDP探测包回复ICMP(type=3,code=3,端口不可达)。Linux上称之为traceroute,Windos类似的功能为trace

    2022年9月24日
    0
  • linux dlopen 相关

    linux dlopen 相关dlopen 3 Linux 手册页名称 dladdr dlclose dlerror dlopen dlsym dlvsym 动态链接加载器的编程接口概要 include lt nbsp dlfcn h nbsp gt void dlopen constchar nbsp filename nbsp int nbsp flag nbsp char dlerror void void dls

    2025年6月14日
    0
  • supervisor添加进程_monitor进程

    supervisor添加进程_monitor进程Supervisor简介Supervisor超级用户,监管员Supervisor。超级用户是一个负责管理和维护网络的用户。supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具。可以很方便的监听、启动、停止、重启一个或多个进程。用supervisor管理的进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重启,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。1.安装PIPw

    2022年9月10日
    0
  • html+css实现漂亮的透明登录页面,HTML实现炫酷登录页面

    html+css实现漂亮的透明登录页面,HTML实现炫酷登录页面承蒙各位小伙伴的支持,鄙人有幸入围了《CSDN2020博客之星》的前200名,现在进入投票环节,如果我平时写的文章和分享对你有用的话,请每天点击一下这个链接,投上你们宝贵的一票吧!谢谢!❤️每一票都是我坚持的动力和力量!https://bss.csdn.net/m/topic/blog_star2020/detail?username=qq_23853743作者:AlbertYang,软件设计师,Java工程师,前端工程师,爱阅读,爱思考,爱编程,爱自由,信奉终生学习,每天学习一点点,就是领.

    2022年4月30日
    339

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号