0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用LabVIEW和NI myRIO实现PID控制器

科技观察员 来源:allaboutcircuits 作者:马克·纳维达斯 2022-05-10 16:22 次阅读

在本系列中,我们将讨论如何使用 LabVIEW 和一个爱好直流伺服电机来实现一个简单的 PID 控制器。我们通过移除其内部控制器并用 myRIO 接口替换它来定制伺服。

这是我们以定制伺服电机为基础的第二篇文章,专门关注 PID 控制器的编程。您需要按照本系列的第一部分(讨论项目的硬件)来实施下面显示的步骤。

LabVIEW

LabVIEW 是由 National Instruments 开发的图形化编程语言。该语言的最大好处之一是可供它使用的大量工具包、模块和库。使用这些,您可以为众多工程和研究项目快速开发最复杂的应用程序。

这个实验也不例外。我们将完全控制 NI LabVIEW PID 和模糊逻辑工具包,而不是完全从头开始编写 PID 控制器。使用软件包附带的常规“PID.VI”,我们将能够更快地解决绕过原始伺服控制器的挑战。

教程无意涵盖 PID 的基本理论细节。相反,它将向您展示如何实现一个简单的 PID 控制器。

要求

要遵循,您应该有以下可用和/或安装:

NI myRIO 嵌入式硬件设备

NI myRIO 扩展端口 (MXP) 原型板附件(预装 myRIO)

现在应该连接到 Protoboard 附件的定制伺服电机

NI LabVIEW

NI LabVIEW PID 和模糊逻辑工具包

在本教程中,我使用 NI LabVIEW 2014 版对安装了 NI LabVIEW PID 和 Fuzzy Logic Toolkit 的 NI myRIO 设备进行编程。如果您仍然是学生,您应该能够从您的大学获得所有软件和相关许可证。

伺服控制——理论与实践

之前,我们解释了如何控制伺服以及我们如何绕过设备的内部控制器来控制速度而不是位置。我们说过这些设备接受脉宽调制 (PWM) 信号(图 1)并遵循标准 RC 爱好伺服协议。

poYBAGJ6IM2ATuJ6AAAu6ijywZ4059.jpg

图 1:通过 PWM 进行简单的伺服控制

根据该标准协议,常规伺服系统将以 1000 μs 的脉冲长度 (T ON ) 移动到其最左侧位置,以 2000 μs 移动到最右侧位置,并在 1500 μs 时停留在中间位置(表 1)。

pYYBAGJ6IM6AT-7HAAA63WnfIBo737.jpg

表 1:标准伺服行为

定制后,它应该以 1000 μs 向左移动最快,以 2000 μs 向右移动,并在 1500 μs 时保持静止(表 2)。请注意,这些假设假设刷新率为 50 Hz。

poYBAGJ6IM-AdR64AAA7A8XcVS0723.jpg

表 2:定制后的伺服行为

然而,在实践中,这些值可能会有很大的变化,尤其是对于我们在本教程中使用的预算伺服系统。

因此,我们将凭经验确定中心位置,我们自己,然后为顺时针和逆时针行程添加任意正负偏移。

软件

创建 LabVIEW 项目

首先,让我们创建一个LabVIEW项目。启动LabVIEW,在初始屏幕上,选择“创建项目”(或者,您可以转到文件》》创建项目)。

在新的弹出窗口中,选择“myRIO Project”并单击“Next”。

pYYBAGJ6INCAe_jWAADC-0tg2pI519.jpg

图 2:创建 myRIO 项目——第 1 步

然后给项目起个名字。我把我的简称为“PID”。

最后,确保已插入并找到 myRIO,此时您可以单击“完成”。

pYYBAGJ6INGAYlVxAADvVg7RUIU754.jpg

图 3:创建 myRIO 项目——第 2 步

创建一个新VI

然后,在 myRIO 目标下创建一个名为“PID Controller.VI”的新 VI,如图 4 所示。您可以忽略甚至删除“Main.VI”——它是默认创建的,作为在下创建的每个 myRIO 项目的示例这个模板。

poYBAGJ6INKAaDapAAB0qZpE7P8547.jpg

图 4:在 myRIO 上创建一个新 VI

打开新 VI 并切换到程序框图窗口。创建一个带有相关停止按钮的 while 循环。我们将在这里放置所有需要连续执行的代码。

pYYBAGJ6INOAAZMnAAAaVFfZbew979.jpg

图 5:带有停止按钮的 While 循环

接下来,使用 Quick Drop (CTRL+Space) 或从 myRIO 函数面板中选择函数,添加“Analog Input” express VI,如图 6 所示。

在配置弹出窗口中,确保选择的通道为“A/AI0 (Pin 3)”并为通道命名。我将其称为“反馈”,因为使用此功能块,我们将从内部伺服电位器读取我们的位置值。

然后单击“确定”并将 express VI 放入 while 循环中。

pYYBAGJ6INSAYCXKAACDz51Rq-o581.jpg

图 6:添加模拟输入功能。

同样,让我们​​创建一个 PWM 输出,以便我们可以控制伺服速度。同样,使用 Quick Drop 或函数选板,添加一个名为“PWM”的快速 VI(图 7)。

对于您的通道,选择“A/PWM0(引脚 27)”。将频率设置为 50 Hz(通过“设置常数”选项)并在“占空比”下选择“使用 Express VI 的输入设置”。

poYBAGJ6INWAKKMxAADBxWfTdco004.jpg

图 7:添加 PWM 功能

然后单击“确定”并将块放入while循环中。您应该有一个类似于图 8 中所示的布局。

pYYBAGJ6INaAMVKQAAA1Orr9dkI872.jpg

图 8:向 while 循环添加模拟输入和脉宽调制 (PWM) 功能。

确定伺服的中心位置

接下来,我们的目标是确定伺服的中心位置。为此,请为“占空比”输入创建一个控件。

您也可以为“反馈”创建一个指标,这样您就可以观察电位计的值(范围在 0 到 5 之间,但正如我们稍后将看到的,将这些值转换为不同的范围很简单)。我们还将使用“等待”功能添加一些时间。框图如图9所示;Wait 函数显示为手表,附加的常数 10 表示我们有 10 ms 的延迟。

poYBAGJ6INiAK6BhAABJi-PiV5U151.jpg

图 9:添加控件、指示器和计时。

从理论上讲,我们的占空比将介于 1 ms 和 2 ms 的脉冲宽度之间,其中 1.5 ms 是停止伺服的值(零速度)。我们的 50 Hz 信号的周期为 20 ms,因此这些脉冲宽度对应于 0.05、0.10 和 0.075 的占空比。

在实践中,产生零速度的实际脉冲宽度可能与理论值不同。要找到实际值,请在占空比设置为 0.075 的情况下运行 VI,然后对其进行调整,直到伺服不旋转。在我的例子中,实际值为 0.058(图 10)。

pYYBAGJ6INmAOKGxAAAVMZVXwbs383.jpg

图 10: 中心查找代码的前面板(前面板)。

添加任意偏移量

接下来,我们将向该中心值添加任意速度控制偏移。

我选择了 0.012 的偏移量。这意味着顺时针方向的最大角速度对应于 0.046 (0.058 - 0.012) 的占空比,类似地,逆时针方向的最大角速度对应于 0.070 (0.058 + 0.012)。这些映射如表 3 所示。

pYYBAGJ6INqAUfqJAAArzGxi2iM922.jpg

表 3:速度映射

任何中间值都代表给定方向上最大角速度的一小部分。例如,对于以最大速度的一半逆时针旋转,控制器需要将占空比设置为 0.058 + (0.012/2) = 0.064。

PID控制器实现

一旦我们确定了中间位置,我们就可以最终实现 PID 控制器。使用 Quick Drop 或函数选板,从 LabVIEW PID 和 Fuzzy Logic 工具包中添加“PID.vi”。

为设定点输入创建一个控件;设定点是我们希望输出具有的值(在这个系统中,旋转速度)。

我们还可以为 PID 增益和输出范围创建控制(暂时保持这些不变)。

您现在应该有一个类似于图 11 所示的 VI。

poYBAGJ6INqAPzbfAABSmcnuvgs779.jpg

图 11:添加 PID 控制。

我们需要确保我们的设定点、输出和反馈在适当的值范围内变化。

我们的输出范围设置为在 -100 和 100 之间变化(图 11),因此让我们将相同的范围应用于反馈。反馈最初在 0 到 5 的范围内,因此我们需要缩放这些值(表 4)。

pYYBAGJ6INuAZUwnAAAXrGcrO1w813.jpg

表4:反馈映射表;0 应该映射到 -100,而 5 应该映射到 100。

通过对反馈值应用斜率(用 A 表示)和偏移量(用 B 表示)来实现缩放。我们可以通过求解以下两个联立方程找到所需的斜率和偏移量:

poYBAGJ6INyAGlc7AAAfEu6YCrI782.jpg

图 12:求解将反馈值缩放到 -100 到 100 范围所需的斜率 (A) 和偏移量 (B)。

缩放反馈和输出

下图显示了我们如何将斜率和偏移量合并到 VI 中。

poYBAGJ6IN2ADIIbAABxwfHuEKY612.jpg

图 13:缩放反馈值。

根据我们之前确定的占空比值,我们还必须缩放在 -100 和 100 之间变化的输出:

表 5:输出(占空比)映射表。

pYYBAGJ6IN6AeebzAAA2IALryfg692.jpg

图 14:求解将输出值缩放到 0.046 到 0.070 范围所需的斜率 (A) 和偏移量 (B)。

下图显示了我们如何将输出缩放合并到 VI 中。

poYBAGJ6IN-AEclHAACJH97BB1g936.jpg

图 15:该项目的最终 VI。

概括

如果您已逐步按照教程进行操作,那么您已经成功实现了伺服的 PID 控制器,绕过了原来的伺服控制威廉希尔官方网站

如果您现在切换到 VI 的前面板,您可以独立调整所有三个 PID 增益并使用“Setpoint”控件控制伺服。更改增益允许您调整 PID 控制器,从而获得更好的伺服性能。

另外,请注意,我已将界面更改为滑块,如下图 16 所示,以便以更自然的方式移动伺服。

pYYBAGJ6IOCADzkdAABDTDuoqTA193.jpg

图 16:该项目最终 VI 的前面板。

您也可以通过右键单击数字控件并选择“替换》》数字》》水平指针幻灯片”来执行此操作。

恭喜您使用 LabVIEW 和 NI myRIO 实现了 PID 控制器!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LabVIEW
    +关注

    关注

    1970

    文章

    3654

    浏览量

    323253
  • PID控制器
    +关注

    关注

    2

    文章

    173

    浏览量

    18579
  • myRIO
    +关注

    关注

    28

    文章

    11

    浏览量

    28090
收藏 人收藏

    评论

    相关推荐

    如何使用Python实现PID控制

    PID控制(比例-积分-微分控制)是一种常见的反馈控制算法,广泛应用于工业控制系统中。在Python中
    的头像 发表于 11-14 09:09 424次阅读

    如何选择合适的PID控制器

    ,以实现精确的过程控制。选择合适的PID控制器不仅能够提高系统的稳定性和响应速度,还能减少能耗和提高生产效率。 1. 理解PID
    的头像 发表于 11-13 14:34 456次阅读

    如何调节PID参数 PID控制器的调试方法

    控制器通过计算误差信号(期望值与实际值之差)的比例、积分和微分来调整控制量,以减少误差并实现系统的稳定。比例项(P)对当前误差进行响应,积分项(I)对过去累积的误差进行响应,而微分项(D)则预测未来误差的变化。 调节
    的头像 发表于 11-13 14:31 1520次阅读

    什么是PID控制器的原理 PID算法在自动化中的应用

    PID控制器是一种广泛应用于工业控制系统中的控制器,它根据系统的偏差来计算控制量,以实现对被控对
    的头像 发表于 11-13 14:27 724次阅读

    PID控制器的类型和选择指南

    PID控制器是一种广泛应用于工业控制系统中的控制器,它根据系统的偏差来计算控制量,以实现对系统的
    的头像 发表于 11-06 10:37 461次阅读

    什么是PID控制器及其应用

    单元(I)和微分单元(D)三个基本部分组成,通过调整这三个部分的参数(Kp、Ki、Kd)来实现对被控对象的精确控制PID控制器的原理 PID
    的头像 发表于 11-06 10:27 857次阅读

    工业控制中常用的pid控制器是什么

    比例(P)、积分(I)和微分(D)三个参数的调节,实现对系统输出的精确控制。 一、PID控制器的基本原理 比例控制(P
    的头像 发表于 06-30 10:41 961次阅读

    PID控制器与PWM控制器的区别

    在工业自动化和控制系统设计中,PID控制器(比例-积分-微分控制器)和PWM控制器(脉冲宽度调制控制器
    的头像 发表于 06-05 18:25 3046次阅读

    PID控制器与电阻的区别

    在电子技术和控制系统中,PID控制器和电阻都扮演着重要的角色。然而,它们在功能、工作原理和应用领域等方面存在显著的差异。本文将从多个角度对PID
    的头像 发表于 06-05 16:01 931次阅读

    PID控制器与开关控制器的区别

    在工业自动化控制系统中,PID控制器和开关控制器是两种常见的控制策略。它们各自具有独特的工作原理、应用场景和优缺点。本文旨在详细探讨
    的头像 发表于 06-05 15:50 806次阅读

    PID控制器和PLC的区别

    在工业自动化和过程控制领域,PID控制器(比例-积分-微分控制器)和PLC(可编程逻辑控制器)是两个非常重要的组成部分。它们各自拥有独特的功
    的头像 发表于 06-05 15:32 3412次阅读

    PID控制器中P、I、D的含义

    的核心在于通过调整比例(P)、积分(I)和微分(D)三个参数,实现对被控对象的精确控制。本文将详细探讨PID控制器中P、I、D的含义、作用及其在控制
    的头像 发表于 06-05 15:30 4712次阅读

    什么是PID控制器?有哪些作用?

    在现代工业自动化控制系统中,PID(比例-积分-微分)控制器无疑是最常见且重要的控制算法之一。PID控制
    的头像 发表于 06-05 15:30 3112次阅读

    PID在工业控制领域的实现原理

    PID控制器非常实用且有效。它们基于简单的数学原理,通过调整三个参数(比例系数P、积分系数I和微分系数D)来对系统的偏差进行控制。这种简单性使得PID
    发表于 04-12 11:06 766次阅读
    <b class='flag-5'>PID</b>在工业<b class='flag-5'>控制</b>领域的<b class='flag-5'>实现</b>原理

    什么是PID控制器?PID控制器控制器中的积分控制是什么?

    PID,就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种很常见的控制算法。 一、PID控制器
    的头像 发表于 01-11 08:35 1826次阅读
    什么是<b class='flag-5'>PID</b><b class='flag-5'>控制器</b>?<b class='flag-5'>PID</b><b class='flag-5'>控制器</b><b class='flag-5'>控制器</b>中的积分<b class='flag-5'>控制</b>是什么?