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

    关注

    2013

    文章

    3681

    浏览量

    344353
  • PID控制器
    +关注

    关注

    2

    文章

    173

    浏览量

    19584
  • myRIO
    +关注

    关注

    28

    文章

    11

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

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

    将偏差的比例(Proportion)、积分(Integral)和微分(Differential)通过线性组合构成控制量,用这一控制量对被控对象进行控制,这样的控制器
    的头像 发表于 09-30 11:44 2088次阅读
    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 1083次阅读
    一步到位,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 2167次阅读
    <b class='flag-5'>LabVIEW</b>的详细简介和应用(文末免费分享<b class='flag-5'>LabVIEW</b>相关资料合集)

    工程机械控制器如何选型?控制器选型指南 #控制器 #车载控制器 #整车控制器 #控制器选型

    控制器
    长沙硕博电子科技股份有限公司
    发布于 :2025年03月14日 10:54:24

    激光 PID 控制器的工作原理与优势

    在激光技术广泛应用的今天,激光设备的性能优劣直接影响着众多领域的生产与科研成果。而激光 PID控制器,凭借其卓越的调控能力,成为激光设备的 “智能核心调控”。
    的头像 发表于 03-12 16:03 924次阅读

    用硬件电路去实现PID控制

    和得到控制量,本文希望通过模拟电子电路方式实现PID。基本的电路图如下所示输入端电流通过电容对反馈的电压与参考电压的差值进行微分处理,并且借助电感对差值实现积分,而
    的头像 发表于 03-03 19:33 1957次阅读
    用硬件电路去<b class='flag-5'>实现</b><b class='flag-5'>PID</b>的<b class='flag-5'>控制</b>

    PID控制算法的C语言实现PID算法原理

    在工业应用中 PID 及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握 PID 算法的设计与实现过程,对于一般的研发人员来讲,应该是足够应对一般研发问题了,而难能可贵
    发表于 02-26 15:24

    PID控制器介绍

    PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。比例(P)调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少 偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。
    发表于 02-26 15:14

    比例谐振(PR)控制器的学习过程记录

    控制器就是比例微分积分(Proportion Integration Differentiation,PID)控制器了。然而,在交流系统中,PID
    的头像 发表于 01-20 10:46 1958次阅读
    比例谐振(PR)<b class='flag-5'>控制器</b>的学习过程记录