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
    +关注

    关注

    2021

    文章

    3688

    浏览量

    348316
  • PID控制器
    +关注

    关注

    2

    文章

    173

    浏览量

    19769
  • myRIO
    +关注

    关注

    28

    文章

    11

    浏览量

    28688
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    变频内置PID控制参数的含义

    变频内置PID控制是工业自动化领域中的关键技术之一,广泛应用于电机调速、温度控制、压力调节等场景。PID
    的头像 发表于 03-04 11:02 489次阅读
    变频<b class='flag-5'>器</b>内置<b class='flag-5'>PID</b><b class='flag-5'>控制</b>参数的含义

    如何在LabVIEW环境中通过NISoftMotion驱动配置与运用NI9512

    、系统集成度和同步精度。本文将带你快速上手,重点讲解如何在LabVIEW环境中,通过NI‑SoftMotion驱动配置与运用NI 9512。
    的头像 发表于 01-30 17:34 3269次阅读
    如何在<b class='flag-5'>LabVIEW</b>环境中通过NISoftMotion驱动配置与运用<b class='flag-5'>NI</b>9512

    变频pid怎么启用

    变频PID调试是工业自动化控制中的关键环节,其核心在于通过比例(P)、积分(I)、微分(D)三个参数的动态调整,实现被控量(如压力、温度、流量等)的快速稳定
    的头像 发表于 01-28 07:37 728次阅读
    变频<b class='flag-5'>器</b><b class='flag-5'>pid</b>怎么启用

    PID控制的算法

    的偏差有关,这样就大大提高了系统的稳定性。需要注意的是最终的输出结果应该为 u(K)+增量调节值; PID的离散化过程基本思路就是这样, 从而实现控制器控制作用。
    发表于 01-23 08:18

    C语言增量式PID的通用算法

    PID控制器。 该库留出来PID控制器的所用有接口,对于调试来说非常方便,不需要外部再定义一堆函数来调用。该库实现
    发表于 01-14 08:28

    请问如何优化PID控制器的参数以实现快速响应和减少超调?

    PID控制器在电机控制中起着关键作用。如何根据电机的特性和应用需求调整PID控制器的参数(如比例系数、积分系数和微分系数),以
    发表于 12-08 06:15

    怎样理解变频内置PID控制参数的含义

    变频内置PID控制参数是工业自动化领域中实现精确控制的核心要素,其合理配置直接影响电机调速、压力调节、温度
    的头像 发表于 12-06 07:39 2525次阅读

    Aerodiode高带宽激光锁定PID控制器

    PID-C型激光锁定PID控制器专为实现宽达30MHz控制带宽内的最低噪声水平而设计。该设备采用触屏
    的头像 发表于 10-22 07:48 669次阅读
    Aerodiode高带宽激光锁定<b class='flag-5'>PID</b><b class='flag-5'>控制器</b>

    CW32电机控制基础——PID控制原理

    将偏差的比例(Proportion)、积分(Integral)和微分(Differential)通过线性组合构成控制量,用这一控制量对被控对象进行控制,这样的控制器
    的头像 发表于 09-30 11:44 2945次阅读
    CW32电机<b class='flag-5'>控制</b>基础——<b class='flag-5'>PID</b><b class='flag-5'>控制</b>原理

    一步到位,Moku数字PID控制器实现系统实时调节与验证

    PID控制被广泛应用于实验控制和工业自动化系统中,但在实际调试中,传统的PID控制器往往需要大量计算与经验积累,调节过程既繁琐又耗时。而通过
    的头像 发表于 06-03 12:00 1511次阅读
    一步到位,Moku数字<b class='flag-5'>PID</b><b class='flag-5'>控制器</b><b class='flag-5'>实现</b>系统实时调节与验证

    改进粒子群算法的永磁同步电机PID控制器

    较好的输出增益,振荡较小,抗干扰能力较强。 纯分享帖,需要者可点击附件免费获取完整资料~~~*附件:改进粒子群算法的永磁同步电机PID控制器.pdf【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,删除内容!
    发表于 05-28 15:44

    改进的BP网络PID控制器在无刷直流电机中的应用

    通过分析学习速率对BP算法的影响,提出一种分层调整学习速率的改进BP 网络算法,并把该方法设计成 PID控制器应用在无刷直流电机控制系统中,仿真结果验证了基于改进的 BP 网络的PID
    发表于 05-28 15:42

    LabVIEW的详细简介和应用(文末免费分享LabVIEW相关资料合集)

    LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。LabVIEW软件是NI设计平台的核心,也是开发测量或控制系统的理想选择。L
    的头像 发表于 05-22 11:43 2823次阅读
    <b class='flag-5'>LabVIEW</b>的详细简介和应用(文末免费分享<b class='flag-5'>LabVIEW</b>相关资料合集)

    工程机械控制器厂家 控制器国产替代 #国产控制器#控制器厂家#控制器品牌

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年04月29日 14:15:05