三菱PLC 实现PID控制温度 手搓PID指令!!!

news2024/9/20 19:34:01

目录

1.前言

2.PID公式的讲解

3.程序

4.硬件介绍

5.EPLAN图纸

6.成果展示

7.结语

1.前言

新手想要学习PLC的PID控制 首先会被大串的PID 公式吓到 

PID公式有很多种:基本PID  位置式  增量式 模拟式 理想型 等等 

但是 不要急 别看这么多公式 其实 将公式拆开来了解了单个公式 就会发现其实还行

就 P比例 I积分 D微分 三个部分的值相加得出PID运算值

注意:要想控制的精准 不仅要挑 好公式 还要不断调PID参数等

结果值不理想 主要是由外部环境影响等多种因素 并没有完美的算法公式 和参数 更多的是根据实际情况结合外部因素 自己调出一个接近理想的值。

本文章就用简单好理解的基本 PID 算法:

U(t)=K_{p}\cdot e(t)+K_{i}\cdot \int_{0}^{t} e(t)dt+K_{d}\cdot \frac{\mathrm{de(t))} }{\mathrm{dt} }

其中:

  • U(t)是控制器的输出信号
  • K_{p}是比例增益
  • e(t)是误差信号,即设定值r(t)与实际测量值y(t) 之差
  • K_{i} 是积分增益
  • \int_{0}^{t} e(t)dt是累积误差,即误差的积分
  • K_{d}是微分增益​
  • \frac{\mathrm{de(t))} }{\mathrm{dt} }是误差变化率,即上一刻误差de(t)与下一刻误差dt的商

记住这个公式 后面讲程序的时候 会用到

2.PID公式的讲解

P 比例部分

比例部分公式是 Kp\cdot e(t)

就是 比例增益 X 误差值

I 积分部分

积分部分公式是K_{i}\cdot \int_{0}^{t} e(t)dt

就是 积分增益 X 累积误差

D 微分部分

微分部分公式是K_{d}\cdot \frac{\mathrm{de(t))} }{\mathrm{dt} }

就是 微分增益 X 误差变化率

对PID公式的讲解 个人认为B站大大 等角螺线 的视频已经把PID公式 讲解的不能再详细了

我这边就不过多解释了。

PID算法和比例控制【目前最简单最实用的PID教程】第一讲_哔哩哔哩_bilibili视频链接:PID算法和比例控制【目前最简单最实用的PID教程】第一讲_哔哩哔哩_bilibili

https://www.bilibili.com/video/BV1y24y197nK/?share_source=copy_web&vd_source=286a394adaa62adcb7573e7f2a0221ea

其中讲到了最基础的 什么是 比例运算 什么是积分运算 什么是微分运算 

对新手很友好 看完基本上就了解 PID了

3.PID程序

我这边是写一个 简单的PID控制温度的程序 

这边我就 结合公式去讲解程序 

首先是 一个开关控制 PID的运算 和数据的采样

按下开关 清除寄存器中的值 不然可能会影响后面的运算

数据采样时 使用 FLT指令 将 采样到的当前温度值和设定值转换成二进制浮点数 

设定  各个参数值:U(t)=Kp​\cdot e(t)+Ki​⋅​\int_{0}^{t} e(t)dt+Kd​ \cdot \frac{\mathrm{de(t))} }{\mathrm{dt} }

我这边设定的是 比例系数 积分系数 微分系数

注意:我这边是用的 基本PID 的公式 所以要注意其它公式程序中设定值到底是

积分系数还是积分时间 这几个设定的常量 要根据公式 来设定相应值

补充:如 理想型公式中 设定的是

Kp 比例系数 Ti  积分时间 Td 微分时间 虽然公式都差不多 但设参数时要注意

运算 PID 先将上一时刻的误差值 差 31.9℃存入寄存器中 

比例运算  Kp\cdot e(t)   比例运算值=比例系数 X 误差值

积分运算  K_{i}\cdot \int_{0}^{t} e(t)dt 积分运算值=积分系数 X 累积误差值

微分运算 K_{d}\cdot \frac{\mathrm{de(t))} }{\mathrm{dt} }微分运算值=微分系数 X 误差变化率

最后 将 三个运算值 相加 就得出了 PID的运算结果。

得到了 PID的运算值 就可以使用PWM控制 执行元件 调整设备到达指定温度了

有一些PLC 支持使用PWM 指令就可以直接输出了

我这边就 自己手写了一个PWM

到这边PID控制温度的程序就结束了 现在看起了是不是也是挺简单的

PID程序 并没有那么难

PID控制最难的是 在复杂环境下 在各种因素情况下调节出一个合适理想的PID参数 

4.硬件介绍

本次的使用的

PLC是 艾莫迅AMX-FX3U-26MT-E 

本PLC根据手册 并不支持 PID PWM指令

触摸屏使用的是 SUP043-A  工控串口屏

温度传感器是 使用的PT100

温控器使用的是 XMT-9系列温控器

温控器主要的作用是读取温度 将温度值通过485通讯传给PLC

实物图

5.EPLAN图纸

6.成果展示

LTY PID烧水

7.结语

关于PID参数如何调节 可以看 B站视频,或者看我们的另一篇博客。

PID参数整定——临界振荡法【目前最简单最实用的PID教程】第十二讲_哔哩哔哩_bilibili

本文主要为个人学习心得 偏新手向。如果有不足请多多包涵 及时指出QwQ。

觉得有用的话点个免费的赞吧QWQ。

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

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

相关文章

如何通过ip地址判断网络类别

在计算机网络中,IP地址不仅是设备在网络中的唯一标识,同时也隐含了网络类别的信息。了解如何根据IP地址判断网络类别,对于网络管理员、系统工程师以及网络爱好者来说都是一项基本技能。本文将详细介绍如何通过IP地址判断网络类别。 一、IP地址…

普中51单片机:矩阵按键扫描与应用详解(五)

文章目录 引言电路图开发板IO连接矩阵键盘的工作原理行列扫描逐行/逐列扫描 LCD1602代码库代码演示——暴力扫描代码演示——数码管(行列式)代码演示——线翻转法代码演示——LCD1602密码锁 引言 矩阵按键是一种通过行列交叉连接的按键阵列,可以有效地减少单片机I/…

LibreOffice的国内镜像安装地址和node.js国内快速下载网站

文章目录 1、LibreOffice1.1、LibreOffice在application-conf.yml中的配置2、node.js 1、LibreOffice 国内镜像包网址:https://mirrors.cloud.tencent.com/libreoffice/libreoffice/ 1.1、LibreOffice在application-conf.yml中的配置 jodconverter:local:enable…

代谢组数据分析一:代谢组数据准备

介绍 该数据集是来自于Zeybel 2022年发布的文章_Multiomics Analysis Reveals the Impact of Microbiota on Host Metabolism in Hepatic Steatosis_ [@zeybel2022multiomics],它包含了多种组学数据,如: 微生物组(粪便和口腔) 宿主人体学指标 宿主临床学指标 宿主血浆代谢…

C语言之数据在内存中的存储(1),整形与大小端字节序

目录 前言 一、整形数据在内存中的存储 二、大小端字节序 三、大小端字节序的判断 四、字符型数据在内存中的存储 总结 前言 本文主要讲述整型包括字符型是如何在内存中存储的,涉及到大小端字节序这一概念,还有如何判断大小端,希望对大…

大语言模型的直接偏好优化(DPO)对齐在PAI-QuickStart实践

直接偏好优化(Direct Preference Optimization,DPO)算法是大语言模型对齐的经典算法之一,它巧妙地将奖励模型(Reward Model)训练和强化学习(RL)两个步骤合并成了一个,使得训练更加快…

Python 基础知识:为什么使用 __init__.py ?

大家好!今天,我们将深入了解 Python 中的 __init__.py 文件,这个小文件却能干大事。让我们抛开任何专业术语,直接进入正题。 什么是 __init__.py ? 假设你有一个 Python 目录,里面有一堆 Python 文件&…

vue3【实战】语义化首页布局

技术要点&#xff0c;详见注释 <script setup></script><template><div class"page"><header>页头</header><nav>导航</nav><!-- 主体内容 --><main class"row"><aside>左侧边栏<s…

JavaDS —— 顺序表ArrayList

顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存储。在数组上完成数据的增删查改。在物理和逻辑上都是连续的。 模拟实现 下面是我们要自己模拟实现的方法&#xff1a; 首先我们要创建一个顺序表&#xff0c;顺序表…

C++初探究

概述 C可以追溯到1979年&#xff0c;C之父Bjarne Stroustrup在在使用C语言研发工作时发现C语言的不足&#xff0c;并想要将其改进&#xff0c;到1983年&#xff0c;Bjarne Stroustrup在C语言的基础上添加了面向对象编程的特性&#xff0c;设计出了C的雏形。 网址推荐 C官方文…

C++继承(一文说懂)

目录 一&#xff1a; &#x1f525;继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 二&#xff1a;&#x1f525;基类和派生类对象赋值转换三&#xff1a;&#x1f525;继承中的作用域四&#xff1a;&a…

太多项会毁了回归

「AI秘籍」系列课程&#xff1a; 人工智能应用数学基础 人工智能Python基础 人工智能基础核心知识 人工智能BI核心知识 人工智能CV核心知识 多项式回归的过度拟合及其避免方法 通过添加现有特征的幂&#xff0c;多项式回归可以帮助你充分利用数据集。它允许我们甚至使用简…

Java学习高级二

Java是单继承的 Object类 方法重写 Java子类访问 – 就近原则 子类构造器的特点 多态 Java–final

【豆包AI】北京春田知韵

看到有国内AI上线了&#xff0c;网络信息那么多&#xff0c;我该怎么找它的官网呢&#xff1f; 找官方网站3步 1百度 关于抖音豆包的网站是哪个?【www.doubao.com】 豆包属于哪个公司&#xff1f;【北京春田知韵科技有限公司】 www.doubao.com 2查询备案号 PC版本的安装…

理解算法复杂度:时间复杂度详解

引言 在计算机科学中&#xff0c;算法复杂度是衡量算法效率的重要指标。时间复杂度和空间复杂度是算法复杂度的两个主要方面。在这篇博客中&#xff0c;我们将深入探讨时间复杂度&#xff0c;了解其定义、常见类型以及如何进行分析。 什么是时间复杂度&#xff1f; 时间复杂度…

论文《Generalizable Adversarial Attacks Using Generative Models》笔记

【DAGAER】传统的攻击方法依赖于约束优化范式&#xff0c;具有局限性&#xff0c;例如经典的Nettack攻击方法。本文提出了一个统一的白盒对抗攻击生成框架&#xff0c;该方法学习了目标域的深度生成模型&#xff0c;不是在原始输入空间中生成对抗性例子&#xff0c;而是学习在一…

elk在宝塔中的简单部署和使用

ELK是什么&#xff1f;了解elk “ELK” 是 Elasticsearch、Logstash 和 Kibana 三个开源软件的首字母缩写。这三个软件一起常被称为 “ELK Stack” 或 “Elastic Stack”。它们主要用于日志管理和分析&#xff0c;提供了强大的数据搜索、分析和可视化功能。 Elasticsearch&am…

C++初阶学习第一弹——入门学习C++

目录 1.什么是C 2.C关键字 3.命名空间 3.1命名空间的定义 3.2命名空间的使用 1、加命名空间名称及作用域限定符 2、使用 using 将命名空间中某个成员引入 3.使用using namespace 命名空间名称 引入 4.C输入&输出 5.缺省参数 5.1 缺省参数概念 5.2缺省参数分类 6. …

Dungeonborne卡顿延迟怎么办?这样降低Dungeonborne延迟

Dungeonborne将第一人称的动作的即时性和经典的西幻RPG职业设计深度结合&#xff0c;带来无与伦比的游戏体验。玩家在游戏中扮演一位从神秘地牢中醒来的勇士&#xff0c;他必须面对各种未知的敌人和挑战&#xff0c;逐渐揭开自己的身世之谜。在这个充满魔法和奇迹的世界里&…

【计算机毕业设计】015基于weixin小程序校园防疫

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…