PID控制的方波响应

news2024/11/24 11:46:56

被控对象为一延迟对象:

采样时间为20s,延迟时间为4个采样时间,即 80s,被控对象离散化为:

y(k) =-den(2)y(k- 1)+num(2)u(k - 5)

由于方波信号的速度、加速度不连续,当位置跟踪指令为方波信号时,如采用滤波器对指令信号进行滤波,将滤波输出作为给定信号,可使方波响应及执行器的动作更加平稳,在工程上具有一定意义。

为了保证滤波后幅值不变,取三阶离散滤波器为:

取方波信号为yd(t)=sgn(sin(0.0001*pi*t)),滤波器参数取a1 =0.10,a,2=0.80。

分两种情况进行仿真:M =1时,为普通方波指令信号,方波响应结果如图1所示;M=2时,为加滤波的方波指令信号,方波响应结果如图2所示。

可见,将方波指令信号加滤波后,方波响应更加平稳,控制输入信号的抖动消除。

图1 普通方波指令信号的PID响应和控制输入(M=1)

图2 带滤波器的方波指令信号PID响应和控制输入

仿真程序:

clear all;

close all;

ts=20;

sys=tf([1],[60,1]. inputdelay',80);

dsys-c2d(sys,ts,'zoh');

[num,den]=tfdata(dsys,'v');

u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;y _l=0;

error_1=0;

ei=0;

yd_1=0;yd_2=0;

for k=1:1:1500

time(k)=k*ts;

yd(k)=1.0*sign(sin(0.00005*2*pi*k*ts));

M=1;

switch M;

case 1

yd(k)=yd(k);

case 2

yd(k)=0.10*yd(k)+0.80*yd_1+0.10*yd_2;

end

%Linear model

y(k)=-den(2)*y _1 +num(2)*u_5;

kp=0.80;

kd=10;ki=0.002;

error(k)=yd(k)-y(k);

ei=ei+error(k)*ts;

u(k)=kp*error(k)+kd*(error(k)-error_1)/ts+ki*ei;

%Update parameters

u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);y_1=y(k);

error_2=error_1;

error_1=error(k);

yd_2=yd_1;yd_1-yd(k);

end

figure(1);subplot(211);

plot(time,yd,'r',time,y,'k:','linewidth',2);xlabel('time(s)';ylabel('yd.y');

legend('ldeal position signal', Position tracking';subplot(212);

plot(time,u,'r,linewidth',2);

xlabel('time(s)';ylabel('Control input');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/185267.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 树进阶系列之树状数组的树形之路

1. 前言 树状数组也称二叉索引树,由Peter M. Fenwick于1994发明,也可称为Fenwick树。 树状数组的设计非常精巧,多用于求解数列的前缀和、区间和等问题,为区间类型问题提供了模板式解决方案。 数状数组简单易用,但对…

【100个 Unity实用技能】 | 修改Unity UI控件中默认字体配置

Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案&#xff…

【C++提高编程1】一文带你吃透函数模板和类模板(附测试用例源码、测试结果图及注释)

📝我的个人主页 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🖊✉️今天你做别人不想做的事&…

域内权限维持:注入SSP

01、简介 SSP(Security Support Provider)是Windows操作系统安全机制的提供者。简单地说,SSP是个DLL文件,主要用来实现Windows操作系统的身份认证功能。在系统启动时,SSP 将被加载到lsass.exe进程中,攻击者通过自定义恶意的DLL文件…

解决ModuleNotFoundError: No module named ‘torch.fx‘

运行yolo v5 train python train.py 报错 ModuleNotFoundError: No module named ‘torch.fx’ torch版本不匹配 目前版本torchu1.7 #卸载pytorch pip uninstall torch 再安装 python -m pip install torch -i https://mirrors.aliyun.com/pypi/simple/ python -m pip是…

本周大新闻|Quest Pro降价至1099美元,传苹果AIGC或用于XR内容生成

本周大新闻正值春节假期,因此包含近两周(1月16-1月29日)的AR/VR新闻汇总。关于2022,近期我们发布了2022年AR/VR行业融资报告、2022年AR硬件总结、2022年VR硬件总结。AR方面,最新消息称苹果AIGC曝光,或用Sir…

通信数据中心供电系统故障影响区域分析定位

(华北石油通信有限公司)摘要:供电系统对于通信机房而言至关重要,一旦供电系统发生严重故障,需要快速制定出应急预案,使故障影响可控。本文提供一种对机房供电系统故障影响区域快速定位方法。该方法的实现思…

可观察性和安全性融合的紧迫性越来越高

根据一份新报告,融合可观察性和安全性的紧迫性越来越大。 软件情报公司 Dynatrace 公布了一项针对大型组织的 1,300 名 CIO 和高级 DevOps 经理(包括来自澳大利亚的 100 名)进行的独立全球调查的结果。 调查结果表明,随着对连…

OS 学习笔记(3) 操作系统的发展与分类

OS 学习笔记(3) 操作系统的发展与分类 这篇笔记对应的王道考研 1.2 操作系统的发展与分类,同时参考了 《Operating System Concepts, Ninth Edition》和 《 Operating Systems: Three Easy Pieces》(俗称ostep) 文章目录OS 学习笔记(3) 操作系…

【数据结构】堆的应用——TOP-K问题详解

目录 🍎前言🍎: 🥝一、TOP-K 问题概述🥝: 🍉二、不同解决思路实现🍉: ①排序法: ②直接建堆法: ③K 堆法(最优解)&a…

Redis简单入门

Redis简介 Redis是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value的NoSQL数据库。特点如下: 读写速度快:Redis官网测试读写能到10万左右每秒。速度快的原因这里简单说一下,第一是因为数据存储在内存中,我们知…

标准有效的项目开发流程

代码版本管理在项目中,代码的版本管理非常重要。每个需求版本的代码开发在版本控制里都应该经过以下几个步骤。在master分支中拉取该需求版本的两个分支,一个feature分支,一个release分支;feature分支用于接受个人分支merge过来的…

二叉树DFS、BFS

目录 1,DFS遍历 2,DFS遍历OJ实战 力扣 144. 二叉树的前序遍历 力扣 94. 二叉树的中序遍历 力扣 145. 二叉树的后序遍历 力扣 105. 从前序与中序遍历序列构造二叉树 力扣 106. 从中序与后序遍历序列构造二叉树 力扣 889. 根据前序和后序遍历构造二…

C++中的new、operator new与placement new

new operator 当我们使用了new关键字去创建一个对象时,你知道背后做了哪些事情吗? A* a new A;实际上这样简单的一行语句, 背后做了以下三件事情: 分配内存,如果类A重载了operator new,那么将调用A::operator new(…

TencentOS安装并运行多版本php

TencentOS版本3.1安装并运行php7,现在需要同时运行一个php8. php选择使用了php v8.0.27 采用编译安装的方式,编译命令如下: ./configure --prefix/application/php8 --with-config-file-path/application/php8/etc --with-mhash --with-o…

51单片机学习笔记-4矩阵键盘

4 矩阵键盘 [toc] 注:笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 注:工程及代码文件放在了本人的Github仓库。 4.1 矩阵键盘介绍 在键盘中按键数量较多时,为了减少I/O口的占用&#…

vuex中 this.$store.dispatch() 与 this.$store.commit()

一、理解 this.$store.dispatch 分发 actions-> 调用 mutations->改变 states 二、思考 1、为什么不直接分发 mutation mutation 有必须同步执行的限制,而 Action 不受约束,可以在 action 内部执行异步操作2、Action 通常是异步的,…

配置日志输出到指定位置的文件,单独报错error级别以上的日志,按日志类别打印日志

目录1.配置文件2.测试程序:工具:log4j的jar包、配置文件log4j.properties(文件名自定义)、eclipse或IDEA 更多参考:https://www.cnblogs.com/ITtangtang/p/3926665.html、 1.配置文件 新建一个配置文件log4j.properties(我把它放…

区块链游戏走出一地鸡毛,元宇宙3D国风链游或成最大受益者

曾推出过《Cytus》《Deemo》《聚爆》等知名游戏的雷亚,其CEO游名扬在接受采访时曾谈到,游戏产业是文化产业加上科技产业的组合体,这两者是组成游戏产业的主要部分。看游戏的趋势,就要针对文化和科技的趋势上来看。 这话没错。 20…

flutter StreamController,ValueListenableBuilder,NotificationListener

FutureBuilder &#xff08;异步数据更新&#xff09; StreamBuilder &#xff08;异步数据更新&#xff09; 构造函数 特点 接收多个异步操作的结果class StreamBuilder<T> extends StreamBuilderBase<T, AsyncSnapshot<T>>{}单订阅&#xff1a;StreamCo…