带死区的PID控制算法及仿真

news2024/11/16 9:55:53

在计算机控制系统中,某些系统为了避免控制作用过于频繁,消除由于频繁动作所引起的振荡,可采用带死区的PID控制算法,控制算式为:

式中,e(k)为位置跟踪偏差;e为一个可调参数,其具体数值可根据实际控制对象由实验确定。若e,值太小,会使控制动作过于频繁,达不到稳定被控对象的目的;若e值太大,则系统将产生较大的滞后。

带死区的控制系统实际上是一个非线性系统,当|e(k)|≤|e0|时,数字调节器输出为零;当|e(k)|> |e0|时,数字输出调节器有PID 输出。带死区的PID控制算法流程图如图1所示。

仿真实例:

被控对象为:

样时间为1ms ,对象输出上有一个幅值为0.5的正态分布的随机干扰信号。采用积分分离式 PID控制算法进行阶跃响应,取 =0.20,死区参数e=0.10,采用低通滤波器对对象输出信号进行滤波,滤波器为:

图1 带死区的PID控制算法程序框图

取M =1,采用一般积分分离式 PID控制方法,其控制结果如图2所示。取M =2,采用带死区的积分分离式PID控制方法,其控制结果如图3所示。由仿真结果可以看出,引入带死区 PID控制后,控制器输出更加平稳。

图2 不带死区PID控制(M=1)

图2 带死区PID控制(M=2)

仿真程序:

clear all;

close all;

ts=0.001;

sys=tf(5.235e005,[1,87.35,1.047e004,0]);

dsys=c2d(sys,ts,'z);

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

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

y 1=0;y_2=0;y_3=0;

yn_1=0;

error_1=0;error_ 2=0;ei=0;

sysl=tf([1].[0.04,1D): %Low Freq Signal Filter

dsys1=c2d(sys1,ts, tucsin');

[num1,denl]=tfdata(dsys1,'v);

f_1=0;

for k=1:1:2000

time(k)=k*ts;

yd(k)=1; %Step Signal

%Linear model

y(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(2)*u_1+num(3)*u_2+num(4)*u_3;

n(k)=0.50*rands(1); %Noisy signal

yn(k)=y(k)+n(k);

%Low frequency filter

filty(k)=-den1(2)*f_1+numl(1)*(yn(k)+yn_1);

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

if abs(error(k))<=0.20

ci=ei+error(k)*ts;

else

ei=0;

end

kp=0.50;ki=0.10;kd=0.020;

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

M=2;

if M==1

u(k)=u(k);

else if M==2 %Using Dead zone control

if abs(error(k))<=0.10

u(k)=0;

end

end

if u(k)>=10

u(k)=10;end

ifu(k)<=-10

u(k)=-10;end

%----------Return of PID parameters-------%

yd_1=yd(k);

u_3=u_2;u_2=u_1;u_1=u(k);y_3=y_2;y_2=y_1;y_1=y(k);

f_1=filty(k);

yn1=yn(k);

error_ 2=error_1;error_1=error(k);

end

figure(1);subplot(211);

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

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

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

xlabel('time(s));ylabeI('Control input');figure(2);

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

xlabel('time(s)):ylabel('Noisy signal');

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

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

相关文章

软件测试职场六年,一个女测试工程师的自我认知

微软自动化测试二年&#xff0c;而后转入阿里做自动化测试三年&#xff0c;经历了入行时的迷茫&#xff0c;而后的笃定&#xff0c;转入移动后对自身定位和价值的怀疑&#xff0c;继而对自动化测试的重新认识&#xff0c;职场六年&#xff0c;终于敢对自动化测试有所论述了。 先…

五个好用的PDF软件推荐!

我们在工作中经常需要选择一款好用的办公软件来转换PDF文件&#xff0c;如果选择的软件不好用&#xff0c;那就回影响我们工作的效率&#xff0c;如果选对了软件&#xff0c;就可以让我们的效率越来越高&#xff0c;足以证明软件的在我们办公中的重要性&#xff0c;下面小编就来…

win远程桌面连接无显示器Ubuntu(22.04.1 LTS)

1、安装ssh server 安装虚拟显示器会导致物理显示器无法使用&#xff0c;为防止虚拟显示出现问题无法连接Ubuntu&#xff0c;在必要时可以使用SSH连接系统。 # Ubuntu Terminal sudo apt-get install openssh-server在Windows中尝试连接 # Windows PowerShell ssh UsernameU…

C语言递归函数(递归调用)详解

一个函数在它的函数体内调用它自身称为递归调用&#xff0c;这种函数称为递归函数。执行递归函数将反复调用其自身&#xff0c;每调用一次就进入新的一层&#xff0c;当最内层的函数执行完毕后&#xff0c;再一层一层地由里到外退出。递归函数不是C语言的专利&#xff0c;Java、…

css背景

1、背景颜色&#xff1a;半透明 <style>div{width: 1000px;height: 100px;/* 背景颜色半透明&#xff0c;其他文字不受影响 */background: rgba(0 ,0 ,0 ,0.3 );}</style> </head> <body><div></div> </body>2、背景图 属性名: ba…

vue前端框架课程笔记(一)

目录初识Vue演示代码模板语法插值语法指令语法使用举例数据绑定两种数据绑定方式示例el和data的两种写法el的两种写法data的两种写法MVVM模型数据代理Object.defineProperty示例参数说明关于getter和setter使用举例泛化的数据代理举例vue中的数据代理原理事件处理指令methods配…

word样式管理:如何对样式进行修改删除

在前面的图文中简单为大家介绍了Word文本样式和表格样式的创建技巧。但对于已经创建好的样式&#xff0c;有时会对样式中的格式进行再次修改&#xff1b;或者是当拿到某个Word文档&#xff0c;它的样式经历多次或多人不断修改&#xff0c;可能导致样式库中的样式混乱不堪&#…

Dockerfile构建Tomcat镜像

Dockerfile构建Tomcat镜像构建步骤1 编写Dockfile文件2 dockcer build构建镜像3 docker run运行容器4 使用容器卷挂载搜索镜像的个数 docker search tomcat |wc -l因此&#xff0c;需要根据自己的项目需求来针对性的构建镜像 构建步骤 1 编写Dockfile文件 看成在编写一个纯净…

React 项目 黑马极客园

React 项目 黑马极客园git地址视频地址项目准备1.项目介绍2.项目搭建3.使用scss预处理器4.配置基础路由5.组件库antd使用6.配置别名路径8.别名路径提示9.安装dev-tools调试工具登录模块1.基本结构搭建2. 创建表单结构3. 表单校验实现4. 获取登录表单数据5. 封装http工具模块6. …

Android Studio Electric Eel | 2022.1.1 版本

前言 各位读者&#xff0c;新年快乐&#xff0c;现在是2023年了&#xff0c;新的一年&#xff0c;我们的开发也会焕然一新&#xff0c;Android开发的工具Android Studio&#xff0c;也能更新到Android Studio Electric Eel | 2022.1.1 版本了&#xff0c;短期内我将使用此版本学…

Delphi 中.deployproj文件结构

Delphi中&#xff0c;如果生成Android或者IOS等APP&#xff0c;需要在Project -> Deployment中按下Deploy图标 &#xff0c;然后就会生成和项目工程文件名称一致&#xff0c;后缀是.deployproj的文件。当然如果直接按下运行图标(RUN)也会自动生成这个文件。一、.deployproj文…

【自然语言处理】情感分析(五):基于 BERT 实现

情感分析&#xff08;五&#xff09;&#xff1a;基于 BERT 实现本文是 情感分析 系列的第 555 篇&#xff0c;也是本系列的收官之作。前四篇分别是&#xff1a; 【自然语言处理】情感分析&#xff08;一&#xff09;&#xff1a;基于 NLTK 的 Naive Bayes 实现【自然语言处理…

简答说明通用智能基础模型的基本处理逻辑

当能量多的时候 激发的是欲望 按照中庸之道 多余的能力要消耗掉 当没有可以查询的模仿行为或者是大量消耗能量行为的时候 就开始记录行为统计为一个发生概率行为表 当拥有了概率记录数据后&#xff0c;按照最大发生概率依次模仿行为 行为得到的反馈 反馈的时间越短 则判断剩余能…

【论文速递】BEVFormer: 通过时空变换器从多相机图像中学习BEV表示

【论文原文】&#xff1a;ECCV2022 - BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers 论文&#xff1a;https://arxiv.org/abs/2203.17270 代码&#xff1a;https://github.com/fundamentalvision/BEVFormer…

C++ opencv之配置环境

opencv下载官网下载连接:https://opencv.org/releases/选择相应版本下载&#xff0c;windows操作系统下载windows版本下载exe后&#xff0c;双击即可安装&#xff0c;选择好路径&#xff0c;尽量安装路径不要存在中文&#xff0c;安装好如下:vs2022配置opencv为DLL添加Path环境…

windows10搭建spark本地开发环境

windows10搭建spark本地开发环境1. spark概述2. 安装spark2.1 Windows10 安装Spark本地开发环境2.1.1 **版本说明**2.1.2 **环境准备**2.1.2.1 JDK 安装和配置2.1.2.1.1 JDK下载2.1.2.1.2 JDK安装2.1.2.1.3 JDK配置2.1.2.2 Scala 安装和配置2.1.2.2.1Scala下载2.1.2.2.2 Scala安…

51单片机学习笔记-11 DS18B02温度传感器(单总线)

11 DS18B02温度传感器 [toc] 注&#xff1a;笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 11.1 温度传感器与单总线通信 11.1.1 DS18B20温度传感器 DS18B20是一种常见的数字温度传感器&#xff0c;其控制命令和数据都是以…

SAP ADM100-Unit3 系统配置介绍:系统如何评估它的参数

本节将了解系统评估配置文件参数的顺序,并了解这些参数存储的位置。 1、配置profile参数 各个实例和SAP系统都是使用Profile配置文件参数来配置的。这些参数的默认值被定义在内核程序代码中。 可以通过配置文件改变这些参数的默认值,当实例被开启时将读取配置文件中参数值。…

大屏加载速度优化--突破chrome 6个请求线程限制

1. 问题 当大屏中的内容很多时&#xff0c;比如50个以上&#xff0c;整个页面呈现速度会慢很多&#xff0c;影响用户体验。 通过 chrome开发者工具可以看到&#xff0c;默认情况下&#xff0c;chrome仅开启6个请求线程&#xff0c;用于发起ajax请求。 2. 解决方案 改进的方式…

epoll模型要点总结

(图是网上的&#xff0c;懒得自己画了) 1 epoll_ctl是向红黑树rbr插入、删除、修改fd。epoll_wait在双向链表rdllist中查询IO可读、可写、错误事件。 为什么使用红黑树&#xff1f;从插入、删除考虑。 2 epoll_ctl插入新fd时&#xff0c;新建epitem&#xff0c;会设置回调函…