微分先行PID控制算法及仿真

news2024/11/15 21:38:57

微分先行PID控制的结构如图1所示,其特点是只对输出量y(k)进行微分,而对给定值y(k)不作微分。这样,在改变给定值时,输出不会改变,而被控量的变化通常是比较缓和的。这种输出量先行微分控制适用于给定值yd(k)频繁升降的场合,可以避免给定值升降时所引起的系统振荡,从而明显地改善了系统的动态特性。

令微分部分的传递函数为:

图1 微分先行ID控制结构图

仿真实例:

设被控对象为一延迟对象:

采样时间为20s,延迟时间为4个采样时间,即 80s。采用PID控制器进行阶跃响应。输入信号为带有高频干扰的方波信号: yd(t)= 1.0sgn(sin(0.0005*pi*t)+0.05sin(0.03*pi*t)。

取M=1,采有微分先行PID控制方法,其方波响应结果如图2所示。取M=2,采用普通PID方法,其方波响应控制结果如图3所示。由仿真结果可以看出,对于给定值yd(k)频繁升降的场合,引入微分先行后,可以避免给定值升降时所引起的系统振荡,明显地改善了系统的动态特性。

图2 微分先行PID控制方波响应(M=1)

图3 普通PID控制方波响应(M=2)

仿真程序:

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;ud_1=0;

yL1=0;y_2=0;y_3=0;error_I=0;error_2=0;

ei=0;

for k=1: 1:400

time(k)=k*ts;

%Linear model

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

kp=0.36;kd=14;ki=0.0021;

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

yd(k)=yd(k)+0.05*sin(0.03*pi*k*ts);

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

ei=eiterror(k)*ts;

gama=0.50;

Td=kd/kp;

Ti=0.5;

c1=gama*Td/(gama*Td+ts);

c2=(Td+ts)/(gama*Td+ts);

c3=Td/(gama*Td+ts);

M=2;

if M==1

ud(k)=cl*ud l+c2*y(k)-c3*y_l;

u(k)=kp*error(k)+ud(k)+ki*ei;

elseif M==2 %Simple PID Control

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

if u(k)>=110

u(k)=110;

end

if u(k)<=-110

u(k)=-110;

end

%Update parameters

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

y_3=y_2;y_2=y_1:y_1=y(k);

error_2=error_1;

error_I=error(k);

end

figure(1);

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

legend(Ideal position signal' 'Position tracking');figure(2);

plot(time,u,'r','linewidth',2);xlabel( 'time(s)');ylabel('u');

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

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

相关文章

isNotEmpty() 和 isNotBlank() 的区别,字符串判空, StringUtils工具包 StringUtil工具类

目录1.StringUtils 和 StringUtilStringUtils 的依赖&#xff1a;StringUtils 的用法&#xff1a;StringUtil 工具类2. isNotEmpty() 和 isNotBlank()1.StringUtils 和 StringUtil 注&#xff1a;StringUtils 和 StringUtil 的区别&#xff08;StringUtil为自定义工具类&#…

微信小程序——获取接口调用凭据access_token

问题背景 今天在搞一个微信小程序的时候&#xff0c;使用到了发布内容的问题&#xff0c;然后想使用微信请求接口&#xff0c;结果遇到了请求接口需要获取调用凭证access_token。 查看微信小程序开发文档 打开微信小程序开发文档后&#xff0c;打开服务端相关文档&#xff0…

电影《流浪地球2》观后感

趁着过年看了电影《流浪地球2》这部电影&#xff0c;同时也听说&#xff0c;今天好几部同期电影也不错&#xff0c;思考了一下&#xff0c;选择这部&#xff0c;记得以前有个笑话&#xff0c;说《流浪地球》成功开启了中国科幻的大门&#xff0c;而另一部电影成功将这部大门关起…

监听器、过滤器、拦截器,参考多篇文章整合而成,没有千篇一律的抽象回答!

参考文章1 过滤器、监听器、拦截器一、监听器二、过滤器1. POM.xml导包2. web.xml配置3. Filter过滤器编程三、拦截器1. 定义拦截器2. 配置加载拦截器3. 新建页面的存放地点四、过滤器、监听器、拦截器1. 三者作用2. 三者调用的时序&#xff08;监听器、过滤器、拦截器&#xf…

ESP32设备驱动-DS18B20温度传感器驱动

DS18B20温度传感器驱动 1、DS18B20驱动 DS18B20 是一款温度传感器,可用于各种简单的项目。 通过使用 One-Wire (I2C) 总线,可以将多个传感器连接到ESP32。 DS18B20 的成本也相对较低,只需要一个额外的 4k7 上拉电阻。在本文中,将创建一个基本示例,通过串行读取温度和输出…

java ssm酒店客房管理系统设计

目 录 1 绪 论 1 1.1 系统开发背景 1 1.2 开发意义 1 1.3 可行性分析 1 1.3.1 技术可行性分析 2 1.3.2 市场需求的可行性分析 2 1.4 国内外发展状况 2 1.5 本文中的章节介绍 2 2 开发技术简介 3 2.1 B/S简介 3 2.2 MYSQL的主要功能 3 …

竟然34%的孩子有腺样体肥大,保守还是手术?

腺样体肥大是一个常见的问题&#xff0c;患病率也越来越高。研究发现&#xff0c;34%的儿童和青少年患有这种疾病。腺样体肥大最容易导致鼻塞、口腔呼吸、儿童打鼾、睡眠影响等问题&#xff0c;严重会导致反复鼻窦炎、中耳炎、听力损伤&#xff0c;一些父母也知道它可能会导致孩…

idea插件restfultool和httpclient

restfultool使用测试controllerRestController RequestMapping("/api") Slf4j public class ApiController {GetMapping("test1")public String test1(RequestParam String msg) {return "hello world " msg;}GetMapping("test2/{msg}&quo…

【华为上机真题】密码要求

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

Pytorch——anaconda环境下安装GPU版本

首先查看自己 CUDA 搜索 点击 系统信息 可以看到&#xff0c;我的CUDA 是 11.1版本 随后上官网查找匹配的 pytorch 、torchvision、torchaudio 版本 Previous PyTorch Versions | PyTorch 然后直接对 .whl 文件进行下载 https://download.pytorch.org/whl/torch_stable.ht…

操作系统-进程管理

一、进程的组成和状态 1、操作系统的作用:通过资源管理提高计算机系统的效率改善人机界面向用户提供友好的工作环境。 2、操作系统的特征:并发性、共享性、虚拟性、不确定性。 3、操作系统的功能:进程管理、存储管理、文件管理、设备管理、作业管理。 4、操作系统的分类:批处理…

创业青年张继群:数智强农 现代农业加“数”前行

富贵险中求,也在险中丢,求时十之一,丢时十之九。 大丈夫行事,当摒弃侥幸之念,必取百炼成钢,厚积分秒之功,始得一鸣惊人。 央广网南宁1月11日消息(记者罗兰 通讯员张思颖)“经过此次比赛,在今后的推广中,我们会深入思考到底怎样才能把智慧农业做好,到底怎样才能真…

程序员为什么要写技术博客?都在哪些平台呢?

目录 一、程序员为什么要写技术博客&#xff1f; 1、真正掌握技术 2、没有人会那么在意你 3、珍惜时间 4、懒于思考&#xff0c;疏于总结 5、碎片化学习 6、优秀大神 7、更好的求职机会 8、努力的人一直都有 二、程序员都在哪些平台写技术博客呢&#xff1f; 1、git…

Python 采集免费代理,并检测其是否可用

本篇博客将采集互联网中公开代理 IP&#xff0c;并通过 IP 检测站点检测代理的可用性。 未来该内容将会被集成到 爬虫训练场 中。 &#x1f4b0;学习目录&#x1f4b0;Python 采集免费代理 IP模块准备与目标站点说明实战采集代理 IP 可用性检测对接站点为何使用代理 IP&#xf…

9. 使用SMTP发送邮件

1. SMTP协议 SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;即简单邮件传输协议, 它是一组用于传送邮件的规则&#xff0c;由它来控制信件的中转方式。 SMTP是发送邮件的协议&#xff0c;python内置对SMTP的支持&#xff0c;可以发送纯文本邮件、HTML邮件以及带附…

python学习 --- 字符串基础

目录 一、字符串的驻留机制 1、驻留机制 2、驻留机制的几种情况&#xff08;使用交互模式&#xff09; 3、强制驻留 4、字符串驻留机制的优缺点 二、字符串的常用操作 1、字符串的查询操作 2、字符串大小写转换操作 3、字符串内容对齐操作 4、字符串劈分操作 5、判断…

【c语言进阶】动态内存管理知识大全(下)

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏c语言学习 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对我最大的激励和…

AxMath使用教程+常用符号与公式(持续更新中)

前言 这两天学了学Latex&#xff0c;主要是为了以后写毕业论文做铺垫&#xff0c;而且Latex在数学公式这一方面&#xff0c;要比Word方便许多&#xff0c;于是我就下载了一款国产的公式编辑器——AxMath。永久会员不贵&#xff0c;只要36元&#xff0c;而且软件很好用&#xf…

vue全家桶(一)基础知识

vue全家桶&#xff08;一&#xff09;1.vue基本使用2.vue模板语法1.差值表达式2.指令1.什么是指令2.数据绑定指令3.双向数据绑定4.事件绑定4.1click4.2事件修饰符4.3按键修饰符4.4属性绑定4.5-指令v-model的本质4.6 样式绑定4.6.1 class样式处理4.6.2 style样式处理4.7 分支循环…

Pytorch深度强化学习案例:基于DQN实现Flappy Bird游戏与分析

目录1 案例介绍2 构造深度Q网络3 经验回放与目标网络4 训练流程5 实验分析1 案例介绍 Flappy Bird是一款由来自越南的独立游戏开发者Dong Nguyen所开发的作品&#xff0c;于2013年5月24日上线。 在Flappy Bird中&#xff0c;玩家只需要用一根手指来操控&#xff1a;点击一次屏…