当前位置: 首页 > news >正文

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 项目工程》&#x1f5…...

萌新小白必做题(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实现降级

一、加依赖&#xff1a; <?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) {// 示例数据&#xff1a;List<LinkedHashMap>List<LinkedHashMap<String, String>> keyParamList new ArrayList<>();LinkedHashMap<String, String> map1 ne…...

react 学习 —— 16、使用 ref 操作 DOM

什么时候使用 ref 操作 DOM&#xff1f; 有时你可能需要访问由 React 管理的 DOM 元素 —— 例如&#xff0c;让一个节点获得焦点、滚动到它或测量它的尺寸和位置。在 React 中没有内置的方法来做这些事情&#xff0c;所以你需要一个指向 DOM 节点的 ref 来实现。 怎么使用 r…...

Qt planeGame day10

Qt planeGame day10 Game基本框架 qt中没有现成的游戏框架可以用&#xff0c;我们需要自己搭框架首先创建一个QGame类作为框架&#xff0c;这个基本框架里面应该有如下功能&#xff1a;游戏初始化 void init(const QSize& siez,const QString& title);游戏反初始化(…...

贪吃蛇项目实践

游戏背景&#xff1a; 贪吃蛇是久负盛名的游戏&#xff0c;它也和俄罗斯⽅块&#xff0c;扫雷等游戏位列经典游戏的⾏列。 实现基本的功能&#xff1a; 贪吃蛇地图绘制 蛇吃⻝物的功能 &#xff08;上、下、左、右⽅向键控制蛇的动作&#xff09; 蛇撞墙死亡 蛇撞⾃⾝死亡 计…...

【C++】哈希应用——海量数据面试题

哈希应用——海量数据面试题 一、位图应用1、给定100亿个整数&#xff0c;设计算法找到只出现一次的整数&#xff1f;2、给两个文件&#xff0c;分别有100亿个整数&#xff0c;我们只有1G内存&#xff0c;如何找到两个文件交集&#xff1f;&#xff08;1&#xff09;用一个位图…...

​CUDA学习笔记(五)GPU架构

本篇博文转载于https://www.cnblogs.com/1024incn/tag/CUDA/&#xff0c;仅用于学习。 GPU架构 SM&#xff08;Streaming Multiprocessors&#xff09;是GPU架构中非常重要的部分&#xff0c;GPU硬件的并行性就是由SM决定的。 以Fermi架构为例&#xff0c;其包含以下主要组成…...

逻辑漏洞详解

原理&#xff1a; 没有固定的概念&#xff0c;一般都是不符合常识的情况。比如任意用户注册&#xff0c;短信炸弹&#xff0c;占用资源&#xff0c;交易支付、密码修改、密码找回、越权修改、越权查询、突破限制。 根据实际业务逻辑进行比对&#xff0c;购物的可以根据数量&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. 合法分组的最少组数(哈希+贪心)

题目描述&#xff1a; 给你一个长度为 n 下标从 0 开始的整数数组 nums 。 我们想将下标进行分组&#xff0c;使得 [0, n - 1] 内所有下标 i 都 恰好 被分到其中一组。 如果以下条件成立&#xff0c;我们说这个分组方案是合法的&#xff1a; 对于每个组 g &#xff0c;同一…...

uniapp map地图实现marker聚合点,并点击marker触发事件

1.uniapp官方文档说明 2.关键代码片段 // 仅调用初始化&#xff0c;才会触发 on.("markerClusterCreate", (e) > {})this._mapContext.initMarkerCluster({enableDefaultStyle: false, // 是否使用默认样式zoomOnClick: true, // 点击聚合的点&#xff0c;是否…...

【Mysql】Mysql中的B+树索引(六)

概述 从上一章节我们了解到InnoDB 的数据页都是由7个部分组成&#xff0c;然后各个数据页之间可以组成一个双向链表 &#xff0c;而每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表 &#xff0c;每个数据页都会为存储在它里边儿的记录生成一个页目录 &#xff…...

【Dockerfile镜像实战】构建LNMP环境并运行Wordpress网站平台

这里写目录标题 一、项目背景和要求二、项目环境三、部署过程1&#xff09;创建自定义网络2&#xff09;部署NginxStep1 创建工作目录并上传相关软件包Step2 编写Dockerfile文件Step3 编写配置文件nginx.confStep4 创建nginx镜像Step5 运行容器 3&#xff09;部署MysqlStep1 创…...

【工具】利用ffmpeg将网页中的.m3u8视频文件转化为.mp4格式

目录 0.环境 1.背景 2.前提 3.详细描述 1&#xff09;在网站上找到你想下载的视频的.m3u8链接 2&#xff09;打开命令行&#xff0c;用ffmpeg命令进行转化 3&#xff09;过程&结果截图 0.环境 windows64 ffmpeg 1.背景 网页上有个.m3u8格式的视频文件&#xff0c;…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...