这是回顾复杂系统不同编程方法五篇文章中的最后一篇。之前的文章分别关注了梯形图、方框图、文本编程以及状态图,而这篇文章将探讨用于描述和模拟那些随着时间变化的动态系统的编程模型-这通常是控制系统设计必不可少的一步。
“动态系统”这个词,通常是指状态变量随着时间变化的系统。在机械系统中,这些变量可以是位置、速度和加速度;在电子系统中,电流和充电电容通常是状态变量;而在化学系统中,变量可能是不同反应物的浓度。
你可能经常需要控制动态系统,而控制算法本身其实就是一个含有内部状态变量的动态系统(控制器)。为了设计一个复杂的控制算法,你可以模拟控制器和离线工厂之间的相互作用。
动态系统的仿真
计算一个动态系统在任意给定时间的状态,要确定系统状态变量的初始值以及决定变量如何快速随时间变化的函数:
你可以将系统随时间的变化近似成一系统的状态,也就是“时间步长”。最简单的,然而也是最不准确的方法是Euler方法,它通过Euler公式计算下一个时间步的状态:
当然,还有其他更准确但是也更复杂的方法可以对系统状态进行模拟,但是它们的工作原理和Euler方程差不多,都是
控制方框图
控制工程师很少将他们的系统和一系列的方程想象在一起,实际上,他们总是把这些彼此分离、但是相互影响的元件和“控制方框图”的一部分联系起来。在控制方框图里,一个元件模块的输出依赖于元件模块本身的物理状态以及它的输入。除此而外,来自工厂的输出信号作为反馈对于输入也是很重要的。
尽管看起来不同,控制方框图实际上是和导数方程等价的。通常,控制方框图中的动态系统模块是由一个含有内部状态变量以及随时间变化的输入输出变量的逻辑框代表。
扭转钟摆的控制系统
许多控制工程师倾向于使用方框图来模拟他们的控制图,而不是列出一系列的导数方程。
输入输出变量是进入或来自动态系统的信号,用以说明框图中不同元件之间的相互作用。状态变量确定了系统的动态特性,这些特性是由内在环境和输入变量共同左右导致的。
要注意,输出是状态变量和输入变量的函数,没有动态性,但是却受状态的影响。
你可以把系统模块排成一个序列,以串连的方式,这样前一个模块的输出就变成了后一个模块的输入。举个扭摆的例子,驱动器是一个电机,可以将电流转化成扭矩,电流是由与PID控制器连接的驱动电子决定。PID控制器的输入是参考值(预设点移动到规道上时的即时值)与照相机测量的工厂模块的输出值(确定了顶盘的位置)的差值。
一个典型控制回路的特征就是反馈影响,这是下游系统模块输出和上游系统模块输入之间的联系。在我们的例子里,工厂模块的输出就是PID控制器的输入,这个仿真模型以自然的方式说明了反馈联系。
控制方框图系统的仿真
一些软件工具-包括NI MATRIXx套件、MathWork的Simulink环境、以及NI LabVIEW控制设计和仿真模块,都可以用来描述使用控制方框图的系统,并且对系统行为进行仿真。
软件工具帮助工程师在控制框图里进行仿真。来源:美国国家仪器
可以模拟控制方框图的软件,通常将系统视为大回路的一部分运行,显示系统的每一个时间步来对回路进行迭代。除此而外,这些软件提供了对于框图描述的系统的若干钟解决方案-包括适合于快速离线仿真的高准确性的可变步长解决方案,以及适合于实时目标应用的固定步长、离散型解决方案。
一些动态系统仿真产品也使图中硬件的直接作用变得很容易。比如,LabVIEW的控制设计与仿真模块就包含了数据获取设备的接口功能。
另外,很多产品提供了仿真与实时应用的接口功能。比如,你可以使用NI LabVIEW控制设计与仿真模块将你的仿真方案与诸如NI CompactRIO以及PXI硬件这样的实时目标相连接。
仿真工具可以使系统行为可视化。来源:National Instruments
动态系统模块
每一个系统模块都有输入、输出以及内部状态变量。
在控制方框图中,所有的模块都在仿真框架之内,根据仿真回路定义的整合方案来执行任务。这些模块代表了可以在不同的采样速率下运行的控制模块。这种多速率运行对于确定不同机电设备的相互作用是十分必要的,因为在一个控制回路中的设备采样速率很少能够相同。
使用仿真模型的另外一个好处在于,你可以根据仿真过程及时的调整参数。你可以修改PID控制器收益和电机配置参数,以决定闭环响应的最优参数。要注意的还是反馈的相互作用,摇摆的位置与控制器的输入关联,自然而然的作用在仿真回路内部。
最后,仿真软件包的应用可以使创建复杂用户界面变得简单。
优缺点
正像所有的计算模型一样,动态系统仿真适用于一些编程情况而对另外一些则不适用。因此,理
优点:
■ 直观、动态系统文档自动编制。创建关于复杂系统的描述,使其他工程师可以轻松阅读和了解。
■ 先进仿真方案拥有多种选项。兼有诸如Runge-Kutta、Adams以及BDF等复杂解决方案方便、经过实践检验等方面的优越性。
■ 多速率执行能力。简单直观的规划控制模块可以运行在不同的速率下。
■ 参数的动态调整。在仿真的过程中,控制模块参数的改变轻而易举。
缺点:
■ 不完备的编程系统。为了表示那些仿真套件里不直接提供的功能,你必须将仿真系统同一般性的编程语言(比如C,LabVIEW)相结合。
■ 花费在分析上的时间更多。为了将系统分解成元件动态系统,你必须进行一些分析。
通过计算仿真模型,控制专家们可以快速的开发复杂的控制算法,以检测仿真工厂间的相互作用,并把他们的控制算法应用于不同领域。