LabVIEW中PID控制的的高级功能
LabVIEW中PID控制的的高级功能
比例-积分-微分(PID)控制占当今控制和自动化应用的90%以上,主要是因为它是一种有效且简单的解决方案。虽然PID算法最初用于线性、时不变系统,但现在已经发展到控制具有复杂动力学的系统。在现实世界中,所有系统都具有非线性组件,因此在使用PID等经典反馈控制时存在一些挑战。借助增益调度和级联PID等方法,能够使用相同的PID算法控制非线性系统。
1. 经典控制
最早反馈控制用于机械系统的控制。系统使用机械手段(例如浮球阀)来控制温度,速度和液位。现代基于计算机的控制系统通过进行传感器测量,将其与所需的设定值进行比较,然后根据该差异调整控制输出来利用反馈。例如,可以通过测量当前温度,将其与所需温度值进行比较,然后使用加热器或风扇将温度移近所需的设定值来完成控制温度。然后,困难在于弄清楚调整多少控制输出以实现最佳响应。加热器应该完全打开还是只打开一部分?基本的PID控制器将单个输入与设定值进行比较,并计算单个输出值以控制系统,并且算法假设响应将是线性的,不会随时间变化。
2. 增益调度
在非线性系统中使用PID的一种方法是通过增益调度技术。人们在PID控制中遇到性能问题的最常见原因是P、I和D的增益参数不正确。对于非线性系统,最佳参数可能会发生变化,具体取决于系统所处的“状态”。例如,许多系统在预热阶段表现出不同的特性,与运行一段时间后特性不同。另一个例子是,一旦达到某个设定点,就使用不同的增益参数,因为一旦处于稳态,系统就会做出不同的响应。增益调度是根据系统状态修改P、I和D增益参数的过程。这些状态可以通过某个持续时间来定义,甚至可以通过使用系统输入来定义。这种方法最适合具有可预测动态变化的系统,以便可以计算和应用预定增益。增益调度能够通过将过程划分为多个近似线性特征的部分来控制。然后,将每个部分调整为一组不同的参数,以最佳方式控制系统。使用LabVIEW中的PID工具包,这非常容易实现。

图1:LabVIEW中的PID增益调度
图1显示了如何使用PID增益Schedule.vi,根据设定值和测量值之间的电流差设置PID增益参数。在本例中,正在测量温度传感器,将温度传感器与用户定义的设定值进行比较。计算两个值之间的差值(也称为误差项),发送到增益调度程序。调度程序本身只是一组PID增益,这些增益根据输入进行索引。当温度接近设定值时,可以使用一组不同的增益参数来实现更好的控制响应。有许多不同的方法可以实现增益调度,一旦输入稳定在接近设定值附近,这种方法有利于通过增加积分增益或I项来减少稳态误差。
3. 避免整体清盘
PID控制器的积分参数连续对系统的误差项求和,这对于减少稳态误差非常有效。不断积分改误差的一个副作用是“清盘”的可能性。这是当累积误差导致测量信号超过基于控制器I项的所需设定值时。这也带来了长时间的延误和其他不稳定的影响。根据应用的不同,由于材料损失或周围硬件损坏,代价可能很昂贵,甚至很危险。尽管如此,当试图达到特定的设定点时,积分项使超调几乎不可避免。减少积分上链影响的一种技术是在系统开始稳定在设定点附近后重置累积误差。通过重置PID功能,仍然可以获得使用积分项减少稳态误差的好处,但不会导致大量过冲。这里是一个如何在LabVIEW中实现的示例。

图2:通过复位PID.避免整体清盘
与增益调度示例类似,图2显示了一个温度传感器被读取,然后与用户定义的设定值进行比较。计算误差项,一旦在某个值(在本例中为0.25)内,PID功能就会复位,然后从该点开始仅积分稳态误差。
4. 非SISO系统
虽然PID算法适用于单输入单输出(SISO)系统,但通过软件定制,在多输入多输出(MIMO)系统中使用此控制器的方法有很多。
o不同输出的条件结构
o并联回路PID
o多个PID

图3:单输入多输出(SIMO)示例
在图3中,有一个来自温度传感器的输入,然后是两个控制器输出或执行器,用于改变温度。PID可以输出正值和负值,因此,示例使用条件结构来决定何时使用每个执行器。假设输出通道1连接到加热器,输出通道2连接到风扇以冷却系统。如果PID输出值为正,那么希望通过将输出值写入加热器,并通过将零写入通道2来关闭风扇,来提高温度。但是,如果PID输出值为负,则假情况结构将输出值写入风扇,将零写入输出通道1。这是实现具有多个输出的PID的一种非常常见的方法。
5. 级联PID

图4:级联PID示例
在本例中,我们将第一个PID函数的输出发送到第二个PID函数的输入中,从而减慢响应时间并使输出平滑到执行器。实现级联PID的更常用方法是使用来自系统的两个输入,例如提供有关位置和速度的信息。这种多输入、单输出(MISO)系统在运动或位置控制应用中非常常见。

图5:位置速度级联PID示例
将位置编码器与所需的设定值进行比较,然后计算出的输出成为速度控制的设定值。当系统具有与速度成比例的固有延迟时,这一点尤其适用。例如,摩擦会导致系统滞后,具体取决于位置变化的速率。
6. 带前馈控制的PID
干扰解耦是基本PID控制的一种变体,有助于对干扰响应缓慢的系统。如果可以测量干扰,则可以立即调整补偿器输出以做出响应。例如,如果风扇将冷空气引入温度室,则可以立即增加加热器输出,而不是首先等待温度传感器附近的温度下降。

图6:带前馈控制的PID
在上图中,测量干扰传感器,乘以一些用户定义的增益值,然后添加到PID输出值中。如果干扰增加,补偿器输出通道将立即增加,以保持对系统的控制。这种方法并不总是必要的,因为增加传统PID补偿器的比例增益也会改善干扰抑制,并且不需要测量干扰。
这是LabVIEW的一个功能介绍,更多的使用方法与开发案例,欢迎登录官网,了解更多信息。有需要LabVIEW项目合作开发,请与我们联系。
相关文章:
LabVIEW中PID控制的的高级功能
LabVIEW中PID控制的的高级功能 比例-积分-微分(PID)控制占当今控制和自动化应用的90%以上,主要是因为它是一种有效且简单的解决方案。虽然PID算法最初用于线性、时不变系统,但现在已经发展到控制具有复杂动力学的系统。在现实世界…...
STM32基于HAL库RT-Thread Demo测试
STM32基于HAL库RT-Thread Demo测试 🎈源码地址:https://github.com/RT-Thread/rt-thread/tree/master📌基于STM32CUBEMX中间件安装《基于 CubeMX 移植 RT-Thread Nano》📍环境搭建《使用 Env 创建 RT-Thread 项目工程》ǵ…...
萌新小白必做题(2)找素数
一.思路分析 先来看看素数的性质: 素数又称质数,是指除了1和本身外没有其它因数的自然数。素数有许多有趣的性质和应用,例如可以用于加密算法和数学证明等。比如2、3、5、7等都是素数,而4、6、8、9等则不是素数。素数的研究是数…...
《基于 Vue 组件库 的 Webpack5 配置》8.在生成打包文件之前清空 output(dist) 目录(两种方式)
方式一 如果 webpack 是 v5.20.0,直接使用属性 output.clean,配置如下: module.exports {//...output: {clean: true}, };方式二 如果使用较低版本,可以使用插件 clean-webpack-plugin: 先安装:npm…...
3、Kafka Broker
4.1 Kafka Broker 工作流程 4.1.1 Zookeeper 存储的 Kafka 信息 (1)启动 Zookeeper 客户端。 [hadoop102 zookeeper-3.5.7]$ bin/zkCli.sh(2)通过 ls 命令可以查看 kafka 相关信息。 [zk: localhost:2181(CONNECTED) 2] ls /kaf…...
数字孪生智慧建筑可视化系统,提高施工效率和建造质量
随着科技的不断进步和数字化的快速发展,数字孪生成为了建筑行业的一个重要的概念,被广泛应用于智能化建筑的开发与管理中。数字孪生是将现实世界的实体与数字世界的虚拟模型进行连接和同步,从而实现实时的数据交互和模拟仿真。数字孪生在建筑…...
SpringCloud: feign整合sentinel实现降级
一、加依赖: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache…...
List<LinkedHashMap<String, String>>类型的数据转换为Map<String, List<String>>类型数据
import java.util.*;public class Main {public static void main(String[] args) {// 示例数据:List<LinkedHashMap>List<LinkedHashMap<String, String>> keyParamList new ArrayList<>();LinkedHashMap<String, String> map1 ne…...
react 学习 —— 16、使用 ref 操作 DOM
什么时候使用 ref 操作 DOM? 有时你可能需要访问由 React 管理的 DOM 元素 —— 例如,让一个节点获得焦点、滚动到它或测量它的尺寸和位置。在 React 中没有内置的方法来做这些事情,所以你需要一个指向 DOM 节点的 ref 来实现。 怎么使用 r…...
Qt planeGame day10
Qt planeGame day10 Game基本框架 qt中没有现成的游戏框架可以用,我们需要自己搭框架首先创建一个QGame类作为框架,这个基本框架里面应该有如下功能:游戏初始化 void init(const QSize& siez,const QString& title);游戏反初始化(…...
贪吃蛇项目实践
游戏背景: 贪吃蛇是久负盛名的游戏,它也和俄罗斯⽅块,扫雷等游戏位列经典游戏的⾏列。 实现基本的功能: 贪吃蛇地图绘制 蛇吃⻝物的功能 (上、下、左、右⽅向键控制蛇的动作) 蛇撞墙死亡 蛇撞⾃⾝死亡 计…...
【C++】哈希应用——海量数据面试题
哈希应用——海量数据面试题 一、位图应用1、给定100亿个整数,设计算法找到只出现一次的整数?2、给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集?(1)用一个位图…...
CUDA学习笔记(五)GPU架构
本篇博文转载于https://www.cnblogs.com/1024incn/tag/CUDA/,仅用于学习。 GPU架构 SM(Streaming Multiprocessors)是GPU架构中非常重要的部分,GPU硬件的并行性就是由SM决定的。 以Fermi架构为例,其包含以下主要组成…...
逻辑漏洞详解
原理: 没有固定的概念,一般都是不符合常识的情况。比如任意用户注册,短信炸弹,占用资源,交易支付、密码修改、密码找回、越权修改、越权查询、突破限制。 根据实际业务逻辑进行比对,购物的可以根据数量&a…...
MySQL——八、MySQL索引视图
MySQL 一、视图1、什么是视图2、为什么需要视图3、视图的作用和优点4、创建视图5、视图使用规则6、修改视图7、删除视图 二、索引1、什么是索引2、索引优缺点3、索引分类4、索引的设计原则5、创建索引5.1 创建表是创建索引5.2 create index5.3 ALTER TABLE 6、删除索引7、MySQL…...
力扣100097. 合法分组的最少组数(哈希+贪心)
题目描述: 给你一个长度为 n 下标从 0 开始的整数数组 nums 。 我们想将下标进行分组,使得 [0, n - 1] 内所有下标 i 都 恰好 被分到其中一组。 如果以下条件成立,我们说这个分组方案是合法的: 对于每个组 g ,同一…...
uniapp map地图实现marker聚合点,并点击marker触发事件
1.uniapp官方文档说明 2.关键代码片段 // 仅调用初始化,才会触发 on.("markerClusterCreate", (e) > {})this._mapContext.initMarkerCluster({enableDefaultStyle: false, // 是否使用默认样式zoomOnClick: true, // 点击聚合的点,是否…...
【Mysql】Mysql中的B+树索引(六)
概述 从上一章节我们了解到InnoDB 的数据页都是由7个部分组成,然后各个数据页之间可以组成一个双向链表 ,而每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表 ,每个数据页都会为存储在它里边儿的记录生成一个页目录 ÿ…...
【Dockerfile镜像实战】构建LNMP环境并运行Wordpress网站平台
这里写目录标题 一、项目背景和要求二、项目环境三、部署过程1)创建自定义网络2)部署NginxStep1 创建工作目录并上传相关软件包Step2 编写Dockerfile文件Step3 编写配置文件nginx.confStep4 创建nginx镜像Step5 运行容器 3)部署MysqlStep1 创…...
【工具】利用ffmpeg将网页中的.m3u8视频文件转化为.mp4格式
目录 0.环境 1.背景 2.前提 3.详细描述 1)在网站上找到你想下载的视频的.m3u8链接 2)打开命令行,用ffmpeg命令进行转化 3)过程&结果截图 0.环境 windows64 ffmpeg 1.背景 网页上有个.m3u8格式的视频文件,…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
