LabVIEW编程运动控制PID入门

article/2025/7/6 2:14:47

LabVIEW编程运动控制PID入门
电机运动控制系统包含了五种主要元件-被移动的机械装置,具回授和电机运动控制I/O的电机,电机驱动器,智慧型控制器,及程式/操作员界面软件。National Instruments除了提供精确、高效能的多轴电机运动控制产品供伺服与步进电机应用外,简单易用的电机运动控制器、软件及周边设备则提供完整功能及能力给整合的电机运动控制解决方案。然而,当开始使用电机运动产品前,伺服电机系统的PID控制参数设定,在达成精确,稳定且快速的运动控制中扮演了极重大的角色。National Instruments随着电机运动产品所附的Measurement & Automation Explorer (MAX) 整合测试环境软件,让您可轻易在其中测试电机系统。藉由在Measurement & Automation Explorer (MAX) 中获得的电机步阶响应测试结果,调整亦在MAX下设定的电机控制系统PID参数,将可轻松建立完美响应的电机运动系统。
 
PID控制回路参数
Proportional Gain (Kp) – Proportional gain比例增益可视做电机系统之刚度(stiffness)。Kp值决定了正比于位置误差之回复力(restoring force)的影响。此回复力相当作用在机械系统中弹簧的角色。较高的Kp值可加快电机系统响应但同时导致系统过衝及振荡的不稳定性。
Derivative Gain (Kd) – Derivative gain微分增益可视为电机系统的阻尼(damping)效应。Kd值决定了正比于位置误差变化率之回复力的影响。此力量等同作用于具阻尼效应的弹簧质量机构系统中的黏滞阻尼力(例如减震器)。增加Kd可降低因高加速度而在电机目标位置产生的来回震动。
Integral Gain (Ki) – Integral gain积分增益可视为施加于电机系统的静态力矩。Integral gain决定了回复力如何扮演随着时间增加在伺服系统中迫使静态位置误差为零的角色。此一回复力将与作用于电机轴心,使轴心在停止后位置误差为零的稳态力矩达成平衡。Ki值调整可增加位置精确度。高静态力矩负载需Kd值以减低电机系统停止后的位置误差。
步阶响应
您可以在NI所提供的Measurement & Automation Explorer整合测试环境中的Step Response选单中观看实际电机系统的步阶响应结果,在同一画面中绘出您系统的暂态响应图。典形的步阶暂态响应测试为先下一步阶运动指令于电机系统再量测出电机系统可在多快时间内达到稳定状态。从暂态响应测试中,可以计算系统最大overshoot过衝、rise time上升时间, peak time峰值时间, and settling time趋稳时间。
时域中的稳定度
透过步阶响应您可以确认电机系统的相对稳定度。当一电机系统所下指令为一有限位置,实际电机运转至有限位置时,此一系统可视为稳定。而一不稳定系统则为所下任何位置指令后,位置误差呈指数形式增加,亦即当电机系统到达所定位置后却震荡不已,无法逐渐稳定。
Settling time趋稳时间: 即电机系统响应曲线稳定落于经定义最终目标位置若干百分比(2%~5%)所需时间。
Rise time上升时间: 电机运动之步阶响应由目标位置的10%到90%所花费时间;所谓响应较快的系统即有较短的趋稳时间。
Peak time峰值时间: 电机响应到达过衝的首次峰值所花时间。
Maximum overshoot最大过衝: 由响应曲线所量测,从目标位置到最大峰值之数值。最大过衝值直接显示出系统相对之稳定性。
Commanded Position: 电机预定所到位置。上图为例,其为从零到1000步。
Steady-State Position error稳态位置误差: 当电机系统静止后与目标位置的差异。
Settling band趋稳区域: 为定义趋稳时间而电机位置需落于特定范围内之区域。
步级响应图之分析
六种主要响应模式:
1. 不稳定系统将产生来回震荡、呈指数形式发散之响应。
2. 过阻尼系统有平滑、较缓慢之响应结果。此一系统特徵为无过衝现像、较长的上升时间和趋稳时间。
3. 次临界阻尼系统有轻微震荡现像,但最终趋于稳定。其特色为较大之过衝量、较长趋稳时间、短暂之峰值时间和上升时间。
4. 临界阻尼系统有最佳响应,其介于过阻尼和次阻尼系统之间。此种系统响应在响应时间和阻尼效应达成平衡。临界阻尼系统特点为相对于过阻尼系统具低幅度过衝量、快速上升时间和趋稳时间优点,而相对于次临界阻尼系统,其有较长峰值时间。
5. 一震荡系统具有一定震幅且连续的位置震荡。特点为趋稳时间无限大。
6. Chattering系统具有高频低震幅震荡特点。此震荡现像通常可由人耳察觉。

 

如何进行伺服电机PID参数调整
当增加控制器之Kp值时,即意味将以较快的速度较大量的过衝值到达目标位置。而Kd值有降低到达目标位置后震荡量之功能。当Kp值降低时,Kd值则扮演较重要角色。同样的,Kd值较小时,Kp取而代之。当在调整系统时,目标即在于使Kp和Kd达成完美平衡,使系统有适当之响应时间(基本Kp值)和小量的过射(基本Kd值) 。避免过量增加或减少两者增益所导致系统的不稳定甚至是造成电机的损坏。Ki值则为修正稳态位置误差所用,通常为调整参数的最后步骤。
适当PID参数调整步骤
1. 将Integral gain (Ki)设为0。比例增益(Kp)调为适当大小,约25左右。同时适当设定Derivative gain (Kd),通常建议为两倍Kp,可用50左右。
2. 此时所测出的步阶响应图应有明显的过衝量。若无,则将Kp值调大1.5到2倍直到产生过衝。至此,此系统已有基本的P控制器效果 (相对于PID控制器) 。
3. 当电机系统达成过设后,可尝试为系统加进阻尼效应以降低最大过衝量和趋稳时间 (然而,仍应儘可能保持较小的上升时间) 。Kd值由两倍Kp值开始,可逐渐增加至1.5至2倍原设定值,直到响应图震荡变得平缓,或系统开始发出微弱嗡嗡声响,此时稍稍降低Kd值至无法听出声响,如此系统已具备PD控制器效果。
4. 如果电机转动缓慢,即对转动指令响应过慢 (高上升时间,峰值时间,趋稳时间) ,可增加比例增益(Kp)和微分增益(Kd) 1.5到2倍,直到响应速度令人满意为止。
5. 如果系统仍嗡嗡作响,且无法透过适当调整Kp,Ki值在良好响应和此问题中达成平衡,可尝试调整加大derivate sampling period (Td)值(逐次加2) ,同时再次调整Kp,Ki量值。
6. 当达成良好的步阶响应后,可开始利用积分增益(Ki)值来降低可能的稳态误差。并非所有电机系统需要积分增益。由步阶响应图上可看出最终电机位置离目标有多大误差。如果两者不一致,则系统将可由积分增益调整。调整Ki值由1开始,逐次加1或2直到稳态误差在响应图上消失为止。过大的Ki值将造成系统不稳定,应避免此种情况。至此,电机已达成完美的PID控制器系统。
程序如下附件所示。

相关资料说明,如下所示。
LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序
文字内容均在附件Word中,同时上文中提到的例子和资料,均在word中的附件里,可点击下载。登录www.bjcyck.com可以查看更多详细信息。这里只是简略的介绍,有任何关于LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序相关问题,请与我们联系。
链接地址为:http://www.bjcyck.com/nd.jsp?id=369#_np=2_358


http://chatgpt.dhexx.cn/article/FErxNiwS.shtml

相关文章

labview编程笔记之顺序结构

CSDN话题挑战赛第2期 参赛话题:学习笔记 学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐&am…

LabVIEW编程实例:如何通过TCP协议进行数据通信

目录 实例说明 编程思路 服务器端程序 客户端程序 总结 怎么获取服务器上的ip地址和端口号 对于网络通信来说,LabVIEW平台本身提供了多种方法加以实现,如可以通过TCP协议、UDP协议、DataSocket技术、甚至远程面板通信技术等方式进行通信。 下面通过…

LabVIEW编程LabVIEW控制NI cRIO-9066例程与相关资料

LabVIEW编程LabVIEW控制NI cRIO-9066例程与相关资料 NI cRIO-9066 667 MHz双核CPU,256 MB DRAM,512 MB存储容量,Zynq-7020 FPGA,8槽CompactRIO控制器—cRIO-9066是一款坚固耐用的无风扇嵌入式控制器,可用于高级控制和监…

LabVIEW示波器编程

CSDN话题挑战赛第2期 参赛话题:学习笔记 博客写作背景----项目中解决的问题 最近遇到一个使用stm32单片机多路采集信号的项目,还需要在上位机进行波形的查看,信号算法的处理,初步定为使用labview编写上位机程序进行处理。为啥用l…

LabVIEW编程语法学习笔记之变量

CSDN话题挑战赛第2期 参赛话题:学习笔记 与其他通用编程语言一样,LabVIEW中也有局部变量和全局变量的概念,用来控制变量的作用范围。 局部变量 局部变量的作用范围仅为其所在VI,其他VI对该局部变量不可见。 在LabVIEW中添加一…

labview编程笔记之条件结构

CSDN话题挑战赛第2期 参赛话题:学习笔记 学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐&a…

LabVIEW编程LabVIEW开发在LabVIEW中复用现有代码

LabVIEW编程LabVIEW开发在LabVIEW中复用现有代码 使用LabVIEW,我们可以将多种编程方法与图形化数据流结合到单个应用程序中。基于这种灵活性,可以选择所需的工具来创建待测设备(DUT)的控制、配置或测量库。LabVIEW可将多种语言(如.m、C、Pyth…

LabVIEW编程LabVIEW开发使用LabVIEW访问Microsoft Access

LabVIEW编程LabVIEW开发使用LabVIEW访问Microsoft Access Microsoft Access是Microsoft提供的常见数据库工具包。该KB提供基本操作,包括通过LabVIEW创建和连接数据库,插入,删除,更新和选择记录,以便新用户更好地了解。…

【LabVIEW编程——循环读取文件夹及文件】

LabVIEW编程——循环读取文件夹及文件 小树不修不直溜,人不修他哏啾啾!老铁们,大家好!好久不见,甚是想念。全民抗疫的这两年里,大家都生活不易,病毒依旧强势,家人们,防范…

labview编程笔记之循环结构

CSDN话题挑战赛第2期 参赛话题:学习笔记 循环结构 While循环 在LabVIEW中如何创建一个While循环呢?方法很简单。如图1所示,首先,在“函数”选板→“编程”→“结构”子选板上,选中While循环,将它拖曳到程…

【LabVIEW视觉懒人教程】1.1labview编程方式介绍

打开labview界面 labview的文件后缀名是.vi,单个vi包含前面板和程序框图,前面板是程序运行时显示给用户的界面,程序框图里面是程序的代码。 前面板空白处鼠标右键,弹出控件选板。 程序框图空白处右键,弹出函数选板。 …

labview混合编程学习

由于开发需要,上位机需要采用labview设计,但是之前研究算法主要靠matlab或者python,因此考虑采用labview混合编程的方式。 目前,界面设计采用Labview,而算法部分采用Matlab或者python,即采用混合编程的方式…

了解LabVIEW编程

LabVIEW通其他编程语言和软件一样,安装容易,容易使用。 LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文…

LabVIEW编程规范

LabVIEW编程规范 编写LabVIEW程序应该遵循哪些规范,使得编写的程序在运行效率、可读性和可维护性方面得到显著提高? 和本文编程语言类似,在LabVIEW中设计程序框图时也应该养成良好的编程习惯,使得设计出的图形化程序外观美观、便…

LabVIEW编程入门笔记

CSDN话题挑战赛第2期 参赛话题:学习笔记 学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐&a…

LabVIEW学习入门(二)

一、Labview编程特点 基本无需code,是图形编程,选择部件,然后将其连接起来并行性运行,而非顺序执行基于数据流运行 二、Labview编程特点举例说明 实现顺序执行可借助“程序框图”页的"Programming"中的"Structu…

LabVIEW编程基础:事件结构框架编程

LabVIEW又称为G语言,简单易学、形象直观,采用图形化的编程方式,是专为测试、测量和控制应用而设计的系统工程软件。 前面几篇文章依次讲解了LabVIEW中顺序顺序结构、条件结构及循环结构的编程方法,下面再讲一种与软件界面响应有关…

LabVIEW编程基础:条件结构编程

目录 一、条件结构框架特点 二、示例1:布尔型的条件输入 三、示例1运行效果 四、示例2:数值型的条件输入 五、示例3:枚举型的条件输入 六、示例3:运行效果 七、示例4:字符串型的条件输入 八、示例4&#xff1a…

啊这!终于不用敲代码了?Labview牛逼!带你轻松入门Labview~

文章目录 一、Labview的三大特征1、图形编程2、并行性运行3、基于数据流 二、Labview编程小tips1、快捷键!2、善于利用Labview中的“即使帮助”3、运行之后某个控件或函数部分闪了?!——出错了!4、我喜欢有代码洁癖的程序员&#…

noip201506 Message 信息传递

试题描述: 有 n 个同学(编号为 1 到 n )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 T_i 的同学。游戏开始时,每人都只知道自己的生日…