利用NI系统识别、控制设计以及仿真产品设计和测试待确认系统中的控制器
概览
对于需要识别系统行为并设计控制器以获取可能最佳的闭环系统特性的工程师们,NI提供了基于LabVIEW的软件工具和灵活的、低成本的硬件解决方案。相对昂贵的功能限定的系统,这是一个绝佳的替代方案。不同于这些嵌入式的、缺乏灵活性的替代方案,NI产品提供了一个易于使用的、集成的图形化环境和内置跨越广泛范围的数据采集和控制硬件设备的能力
引言
本文描述了利用NI系统识别与控制设计助手设计一个闭环控制系统或者设备的过程。该设备是一个直流马达(图1)。

[+] 放大图片
图1.Quanser工程教学训练平台(QET)将是我们要为之设计一个闭环控制器的设备
Quanser工程教学训练平台将工作于速度模式。一个电压信号驱动马达,而转速计的输出确定速度。马达系统连接至一个NI数据采集(DAQ)设备,这个DAQ设备的模拟输入0(AI0)与转速计相连,模拟输出0(AO0)与马达命令输入端相连。为了方便演示,您可以将直流马达替换为一个RC电路。
此例中将使用下列LabVIEW附加软件:
• NI LabVIEW系统识别工具集
• NI LabVIEW控制设计工具集
• NI LabVIEW仿真模块
您可以在控制设计与仿真软件包中一起购买这些产品。为了使用这些附加软件,您必须安装下列软件:
• NI LabVIEW 7.1
• NI Signal Express 1.0
该闭环系统如何工作取决于两个数量值之差:过程变量(作为马达速度的函数的转速计的电压输出)和设置点(您所指定的命令电压)。然后,控制器判定发送给马达的下一个电平命令,以满足在控制器设计中设定的规范。图2描述了最终的闭环系统。

[+] 放大图片
图2.最终的闭环系统,图中的设备模型是图1中的QET
该范例描述了为一个动态特性未确定的系统设计一个简单的PI控制器的过程。注意,在快速工作平台环境中所描述的所有功能特性在LabVIEW中也都可用。本文所描述的所有的项目脚本与LabVIEW VI,都作为本文的附件可供使用。
识别系统
为了识别一个开环系统,我们需要给其施加一个包含有对应于其实际操作条件的电平和频率内容的激励信号。关于这一过程的更多信息,敬请参考《系统识别过程中激励与采集的考量》,您可以从如下位置找到该文章:www.ni.com > NIDeveloper Zone > Development Library > Analysis and Signal Processing > PID Control / System Characterization / Stability.
您可以使用许多不同类型信号(包括扫频信号、方波、叠加白噪声的方波等)识别一个系统。在此例中,激励信号是一个3V p-p三角波。您可以使用NI快速工作台软件中提供的“创建信号”步骤创建该信号。图3描述了您如何创建这个信号的过程。

图3.创建一个3V p-p三角波
表1说明了哪里可以找到针对这特定步骤的设置和可以使用哪些数值。
|
步骤 |
设置/操作 |
|
信号输入/输出 |
信号类型=三角波 |
|
频率 = 1 Hz |
|
|
电压幅值 = 3 V |
|
|
采样率 = 1kS/s |
|
|
数据块大小 = 5000个采样 |
表1.创建信号的设置
为了在快速工作台软件中的数据查看器中展示所创建的信号,请将“计算所得信号”输出拖放至数据查看器中(如图4所示)。

图4.创建的信号在快速工作台软件的数据查看器中
接下来,您必须让DAQ设备生成这一信号作为一个模拟输出。使用DAQmx生成步骤来实现这个功能,如图5所示。

图5.通过DAQmx生成步骤输出创建的信号作为DAQ板卡上的一个模拟信号。
表2描述了对应这一步骤的设置
|
步骤 |
设置/操作 |
|
信号输入/输出 |
配置键:设备:确保选择合适的DAQ设备与通道 |
表2.在合适的“设备”和“通道”上生成信号的设置(在此例中为AO0).
注意:在该例中,并未完成DAQ设备的AO与AI通道的同步。典型情况下,您应当实现这些通道间的同步,因为由AI与AO间定时的差别引起的任何时延将在开环系统的传递函数被记录,从而会导致系统识别的一定误差。您可以使用高级定时页完成通道间同步的工作。在此例中,AI与AO的采样率为1 kHz,所以这两个通道间的最大抖动为0.5 ms。与设备的动态特性相比,这样大小的抖动时可以忽略不计的。
使用DAQmx采集步骤获取设备对激励信号的响应。图6描述了这一个采集操作。

图6.通过DAQmx采集步骤采集自直流马达设备的反馈响应作为DAQ板卡的模拟信号
表3.描述了哪里可以找到适用该步骤的设置:
|
步骤 |
设置/操作 |
|
信号输入/输出 |
配置键:设备:确保选择设备与通道 |
|
配置键:采集定时:读入5000采样 |
|
|
配置键:采集定时:1 kHz采样率 |
表3.在合适的“设备”和“通道”上采集信号的设置(在此例中为AI0).
接下来,将DAQmx采集步骤的输出拖放至数据查看窗口。快速工作台软件将提示您:来自当前步骤的数据似乎与显示窗口已有的数据不相关。一个小的断开符号,如图7中圆圈标记所示,显示在DAQmx生成步骤与DAQmx采集步骤之间,这说明断开符号下面的步骤不依赖于该符号上面的步骤。当您在系统识别过程中使用创建与采集步骤后,该符号将消失。
当该对话框出现时,选择“否”按钮以便为该信号创建一个新的显示窗口。

图7.创建一个新的显示窗口以查看来自DAQmx采集步骤的输出信号。黄色圆圈标记了在DAQmx生成步骤与DAQmx采集步骤之间显示的断开符号。该符号表示该断开符号下方的步骤不依赖于位于该断开符号上方的步骤。
接下来,点击绿色运行箭头运行项目脚本一次。该项目生成并以1 kS/s的采样率采集5000个数据点——共五秒的设备响应数据。该响应数据显示于您在前一步骤中添加的显示窗口内。图8描述了激励信号与设备响应数据。

图8.激励信号位于显示窗口的上半部;设备对于该信号的响应位于显示窗口的下半部
您利用激励信号与响应数据定义开环直流马达系统的一个传递函数。为了定义这一模型,您将对马达模型进行参数估计。关于参数估计的更多信息,敬请参见《系统识别模型结构的选择》,您可以从如下位置找到该文章:www.ni.com >> NI Developer Zone >> Development Library >> Analysis and Signal Processing >> PID Control / System Characterization / Stability
在此例中,您使用参数估计步骤的默认设置(如图9所示),以创建一个一阶传递函数。这里,模型的阶次基于设备的动态特性。

图9.识别直流马达系统的参数估计
表4.描述了哪里可以找到适用该步骤的设置:
|
步骤 |
设置/操作 |
|
|
输入信号与模型键:激励信号:计算所得信号 |
|
在“DAQmx采集”输出显示窗口下面添加显示窗口 |
|
|
将“估计所得响应”拖放至新的显示窗口 |
表4.设别QET直流马达设备系统的参数估计所需的设置
注意:图7中所示的断开符号不再出现。NI快速工作台软件消除了这一图标,因为您在系统识别过程中使用了创建与采集步骤。另外还须注意:典型情况下,最大的预测误差发生在信号的开始处。这一误差源于两个原因:系统启动(通常情况下,此时机器尚未处于很好的平衡)的初始效应和用于识别模型的数值算法需要数个时步才能完成自身的初始化。例如,该特定QET直流马达所旋转的圆盘上有两个钻孔,取决于启动中所处的位置,马达启动或快或慢。因此,在您每次运行最终的快速工作台项目脚本时,所得到的传递函数的相关系数都会有细微改变。
在您识别一个模型后,您必须保存传递函数以供后续分析。选择“系统识别〉〉输入-输出模型〉〉保存系统识别模型”,如图10所示,以保存这一模型。

图10.保存系统识别模型
在范例的这一步骤中,该传递函数是离散的。虽然您可以在快速工作台软件中设计一个离散比例-积分(PI)控制器,但是该例将传递函数模型转化为一个连续模型,因为该马达是一台连续设备。为了方便在连续域(也称为s-域)的设计,该例将这个模型传输至一个控制设计类型的函数,然后将该模型转化为连续表示。图11a和11b描述了这一过程。

图11a:将系统标识符模型转化为一个控制设计模型类型(传输函数)
为了在图11a中展示该步骤,选择“系统识别〉〉输入-输出模型〉〉转化为控制设计模型”。

图11b:使离散模型连续化
为了在图11b中展示该步骤,选择“控制设计〉〉模型转换〉〉使模型离散化”。在这一步骤的配置页面,从操作的下拉式列表中选择使连续化。
接下来,为连续传输函数创建一个新的显示窗口。为创建这一显示窗口,右击数据查看器窗口中的DAQmx采集结果显示窗口,并从快捷菜单中选择“添加显示窗口〉〉下拉”。图12描述了这一个创建过程。

图12.添加一个窗口以显示开环系统的传输函数.
然后,将离散化模型步骤地输出拖放至新的显示窗口,如图13所示。

图13.显示开环系统设备在s-域中的传输函数
现已识别该系统为一个一阶传递函数。每次运行快速工作台项目的脚本,传递函数的相关系数将细微改变。这是因为马达自身的旋转轮和其他机械部件(和转速计,以及AI与AO未100%同步等情况。),如前面参数模型估计部分的解释。
设计控制器
既然该设备的传输函数业已得到,下一步便是针对这一计划设计控制器。该例描述了如何设计一个满足上升时间、趋稳时间和过冲等要求的控制器。该控制器将完成闭环系统。
该例利用PID合成步骤设计了一个简单的比例-积分(PI)控制器,如图14所示。您也可以完成一个根轨迹图或交互波德图设计。

图14.设计一个用于直流马达的PI控制器
表5.给出了设计一个PI控制器所需的设置。
|
步骤 |
设置/操作 |
|
控制设计 |
控制器合成键:选中“增益”与“积分”复选框 |
|
调整P与I的增益以获得所期望的步骤响应。参考图14以了解推荐设置。 |
表5.设计一个用于直流马达设备系统的PI控制器所需的设置
当您调整P与I的增益值时,该步骤响应曲线随之改变,以显示所得到的上升时间、过冲、振荡和趋稳时间等参数。调整P与I的增益,使得所得到的步骤响应曲线与图14中的步骤响应相似。该步骤响应具有约25 ms的上升时间和少于稳定状态幅值的50%的过冲。可选地,您可以通过在PID合成步骤后添加一个时域分析步骤,检验这些时域参数。
警示:过高的过冲会导致控制器输出的控制电压远超出模拟输出板卡和马达能处理的范围。然而,在该例的后续部分,您将使用仿真模型以对输出的有效范围施加限制。
在您调整得到合适的P与I的增益后,利用保存控制设计模型步骤保存该模型,该步骤位于“控制设计〉〉输入-输出模型”。图15描述了这一步骤。

图15.保存PI控制器
仿真闭环系统
在此例中,前述部分提供了关于识别设备模型和基于此设备模型设计一个PI控制器的信息。在您将该控制器运用于实际直流马达之前,您使用仿真模块以验证该控制器是否如您预期那样工作。仿真模块包含若干个您用来对连续传输函数在一定时间范围内积分的常微分方程(ODE)求解算子。关于仿真模块的更多信息,敬请参见www.ni.com >> Products & Services >> Real-Time Measurement and Control >> NI Real-Time Software >> Add-On Toolkits >> Simulation Module。
图16展示了LabVIEW模块框图,包含定义了仿真框图的仿真环。注意:仿真框图的淡黄色使其区别于LabVIEW模块框图。另外还须注意:仿真模块支持您直接实现反馈回路以完成闭环系统。

图16.使用仿真模块仿真要识别的设备与闭环配置的PI控制器
请注意LoadController.vi与LoadPlant.vi。这些子VI加载您在快速工作台软件中创建的模块,并将这些模块转换为合适的仿真函数。LoadController子VI还将离散传递函数转换为连续函数。回顾您在快速工作台软件中实现的这一步骤。然而,快速工作台环境中提供的所有功能特性在LabVIEW中均可用。
图17展示了闭环系统对于一个方波的响应。查阅图14以验证这是不是所期望的系统行为。

图17.仿真有方波输入的闭环系统并显示其响应
注意图17中前面板上的旋钮。您使用这些旋钮改变激励信号的类型、幅值和频率,并即时查看闭环系统的响应。
利用闭环系统驱动马达
既然您已验证了设备的闭环响应和控制器模型,下一步便是使用该控制器驱动实际的直流马达。首先,该例演示了一个开环系统。
注意:该例未进行系统输入值与输出值的同步,因为小的抖动(在1000 kS/s的输入与输出的情况下,抖动不超过0.5 ms)确保输出不会展现任何显著差别。
图18展示了在开环配置下用于驱动直流马达的LabVIEW模块框图。

图18.在开环配置下驱动该设备(直流马达)
图19展示了这一模块框图的前面板。

图19.在开环配置下驱动该设备(直流马达)。马达的响应较慢。
图19描述了您如何设置马达的转速,每分钟的转数(RPM)。按照该直流马达制造商的建议,该例将此此数值转化为对应的模拟电压。在此情形下,乘数为0.0015 V/RPM。然后,DAQ设备的模拟输出通道0(AO0)将该值发送至直流马达。
然后,该例使用DAQ设备的模拟输入通道0(AI0)采集来自直流马达的转速计的数据。该例再利用制造商提供的乘数666.6 RPM/V,将转速计的数值转化为RPM。
当您按下停止按钮,该例通过发送0伏电压值至AI0停止马达。
注意:在图19中,马达对于设定的RPM的任何变化响应较慢。该例也展示了稳态误差,这是马达设定转速与实际转速间的一个持续误差。该误差源于图18所示的乘法常数的校准不确定性。稳态误差在高转速时尤为显著,因为没有倍乘精确的转化因子会导致相对误差,而高转速增加了这种相对误差。
通过闭环控制和在开环系统中增加PI控制器,马达的响应变得更快速并更加准确的接近您设定的RPM值。该控制器比较马达的实际转速和您设定的转速,并相应调整马达的转速。图20描述了响应时间与精度的这一改善。

图20.在闭环配置下驱动该设备(直流马达)。在过冲、趋稳时间等特性如控制器设计过程中所定义的情况下,马达响应加快。
PI控制器的积分项通过综合考虑以往误差使得稳态误差最小化。图21展示了对应于图20所示的前面板的LabVIEW模块框图。

图21.在闭环配置下驱动该设备(直流马达)
图21中的模块框图利用图18所示的同一个乘数完成转速到对应模拟电压的转换或自对应模拟电压的转换。马达的实际转速与您设定的转速或者设置点相比较。该控制器从图15所示的文件加载。
图21展示了饱和函数如何限制马达的输出电压。该图也展示了您可以如何使用SIM集合框图参数VI编程改变ODE求解算子以及仿真的其他参数。
注意:在真实世界中,饱和函数不是必需的,因为DAQ模拟输出助手快速VI包含一个设置输出电压范围的控件。然而,该例展示了仿真模块的能力以及您如何在一个闭环中添置饱和函数。而且,如果您在饱和函数的前后放置了一个LabVIEW数据探针,设置点的突变会导致马达的过冲。
总结
该例描述了您可以如何使用LabVIEW及其相关软件来识别、控制和仿真一个真实世界的动态系统。虽然该例没有使用任何实时(RT)硬件,但是您可以使用LabVIEW实时模块以及仿真模块,将控制器配置到任一个NI RT系列硬件。
http://sine.ni.com/cs/app/doc/p/id/cs-538,这里有一个范例,它演示了如何构建一个面向高性能摩托车引擎的基于FPGA的全权引擎控制系统。
注意:您也可以通过添加一个用户定义的步骤,描述快速工作台项目脚本中的仿真自身模块。您也可以通过打开LabVIEW并从下拉式菜单中选择“工具〉〉快速工作台〉〉转化快速工作台项目”,将快速工作台项目脚本转换为LabVIEW代码。
更多的复杂系统,如前述高性能摩托车引擎,或许有多个输入和多个输出。在这些情形下,您可以使用状态-空间模型识别与控制设计方法以在多-输入多-输出(MIMO)环境中操作。控制设计工具集、系统识别工具集和仿真模块均支持这些设计方法。
法律条款
本教程由National Instruments公司(简称“NI”)开发。 尽管National Instruments可为该程序提供技术支持,但是该指南的内容并非完全通过测试和验证,NI不以任何方式保证其质量,也不保证相关产品或驱动程序的新版本出现时继续为其提供技术支持。本教程仅以其“现状”向用户提供,教程没有任何担保。教程使用受ni.com网站上《使用条款》的约束。 (http://ni.com/legal/termsofuse/unitedstates/us/)
