本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第1章,第1.9节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看
1.9 案例研究
CPS本质上是异构的。因此,CPS模型的特点是能够与计算模型结合。本节将通过一个实例来展示多个计算模型的使用。这是一个高度简化的实例,但只需要一点点想象力,就能很容易地看出一个模型如何发展成一个准确和完整的大型复杂系统模型。关于大型复杂系统,我们很容易想到的一个例子是加载在智能电网或运载工具(如飞机和高级汽车)上的电力系统。这种系统具有多种电力来源(如风力发电机、太阳能电池板、涡轮机、备用发电机等),应当协调地为多样性的负载提供能源。该系统包括控制器和监督控制器,其中控制器用来使发电机的电压与频率保持在近似的常数,监督控制器则用来提供负载和发电机的连接与断开服务,并提供故障处理服务以保护设备。该系统还包括网络,该网络的动态变化能够对整个系统产生影响。
下例所示为一个高度简化版本的系统,用来展示如何使各种车辆运行管理系统发挥作用。
例1.4 一个燃气发电机的简化模型,如图1-8所示,它能够连接和断开负载。这是一个连续时间模型,由相应的连续时间域指示器(Continuous Director)表示,详见第9章。该模型有两个输入,一个驱动(drive)信号和一个负载导纳(loadAdmittance)。输出是一个电压(voltage)信号。此外,该模型有3个参数,一个时间常量T,一个输出阻抗Z和一个驱动极限L。当发电机获得或多或少的燃气(由drive输入表示)且负载变化(由loadAdmittance输入表示)时,模型将随时间给出一个变化的发电机电压输出。
图1-8 燃气动力发电机简化模型
该模型展示了简化的线性和非线性的动力系统。非线性动力由限制驱动(drive)输入的Limiter角色实现(见2.2节补充阅读:Math库)。特别是,如果drive输入变成负数,它将设置驱动为零(不可能将燃气从发电机里抽出来)。当在参数L所给的上界时,它使驱动(drive)输入达到饱和。其中L的默认值为无穷(Infinity),这意味着不设饱和值(发电机能够承受任意大的驱动(drive)输入)。
本模型中,线性动力部分是由一个小的反馈回路提供的,其中包括一个AddSubtract角色、一个Scale角色,以及一个Integrator角色。如果Limiter角色的输出是D,那么该回路提供一个值V,并满足如下微分方程:
其中D和V都是时间的函数(关于模型如何产生上式方程详见第9章)。
对于该方程的理解不是此处重点,因为模型的这个部分通常由机械工程师来构建,他们是该方面的专家。但是读者可以做一些直观的观察。第一,如果D=V,那么导数为零,所以发电机是稳定的并产生一个恒定的输出。第二,当D≠V时,反馈回路将调整V的值,使其接近D。如果D>V,那么方程使V的导数为正,那么V会增加。如果D模型的最后一部分是对负载产生的影响进行建模。这种影响可由Expression 角色来进行建模(见13.2.4节),利用欧姆定律计算输出电压的函数值V,该函数体现发电机的效率、输出阻抗Z和负载导纳A。电气工程师会认为该计算实现了一个简单的分压器。
在文本中,注意以下这点就足够了:如果A=0(无负载)或者Z=0(该发电机是理想电源),那么输出电压等于V。然而,真实的发电机并没有非零阻抗。当负载导纳从零开始增加时,输出电压会下降。
上面的模型是一个最简单有趣的连续动态模型。为了把该模型与数字控制器集成在一起,可以将模型封装成另一个定义了离散接口的模型,如下所述。
例1.5 将图1-8所示的发电机模型进行封装,以提供一个离散接口,如图1-9所示。这里,驱动(drive)和页载导纳(loadAdmittance)输入进入ZeroOrderHold角色的实例。这样,输入信号就可以以离散事件的形式提供,而不是以连续时间信号的形式。ZeroOrderHold角色在事件到达的间隙里将保持值不变,通过这样的方式将离散事件转换为连续时间信号(见9.2节)。
图1-9 图1-8中发生器模型的封装,提供一个离散接口
输出电压经过可以产生离散事件的周期采样(PeriodicSampler)角色(见9.2节)。这里Periodic Sampler角色产生的离散事件是输出电压的采样值,采样周期为参数P。
该模型反提供了时间常数T和输出阻抗Z,但是隐藏了驱动极限L。当然,模型设计者可以选择要提供的参数。
一个连续时间模型可以嵌入于离散事件模型中(见第7章),如下所述。
例1.6 图1-9中的离散发电机模型嵌入于图1-10中的离散事件模型中。该模型有两个参数,负载导纳A和过压阈值OVT。DiscreteGenerator角色的时间常数T设置为5.0。该模型还包括其他两个组件,这两个组件:一个监视器(Suppervisor),用来提供过载电压保护;另一个是控制器(Controller),它基于输出电压的测量值来调节DiscreteGenerator的drive输入。
图1-10 包含发电机、控制器、过压控制器的离散事件模型
此外,该模型还包括一个简单的测试场景,在该场景中,SingleEvent角色(见7.1节补充阅读)在时间为15.0时请求一个负载连接,通过TimedPlotter角色(见第17章)进行模型运行结果的展示,如图1-11所示。
图1-11 由图1-10中模型所生成的图
在测试场景中,与输出阻抗(1.0)相比,虽然负载导纳也相当高(1.0),但其会产生很大的影响,因此,在时间为15秒接入负载时,电压突然下降为其目标值(110V)的一半。控制器(Controller)通过大幅增加驱动(drive)来为它补偿,但是这将导致电压超过目标值,在时间为24秒时,电压会超过OVT阈值。监视器(Supervisor)会通过断开负载对这种过压情况做出反应,因为现在发电机有了较大的drive输入。同时这导致电压上升得很高,控制器(Controller)通过调节驱动(drive)输入最终会使电压恢复到目标水平。
更进一步地注意到,当负载断开连接时,控制器使驱动(drive)信号为负。如果这是一个燃气发电机,控制器(Controller)将试图让发电机进行后向的燃汽流动。幸运的是,发电机模型包含了个Limiter角色,它用来阻止模型真的提供负向的气体流。
图1-10中的模型包括了两种完全不同的控制器,一个监督用的控制器称为监视器(Supervisor)一个底层控制用的称为控制器(Controller)。这两个控制器被指定使用两个附加的计算模型(MoC),如下所述。
例1.7:如图1-12所示,图1-10中的监视器(Supervisor)是一个有限状态机模型。虽然这里的符号将在第6章解释,但我们依然可以理解其一般行为。
图1-12 图1-10中的监视器(Supervisor)
这个有限状态机有两个输入:一个开关信号输入“onOff”(是一个请求连接或断开负载的布尔值),一个故障信号输入“fault”(是一个表示过压情况是否发生的布尔值)。有一个输出loadAdmittance,它是提供给发电机的实际负载导纳。
有限状态机的初始状态是off。当onOff输入为真,则有限状态机将从off状态转移到on状态,并输出一个loadAdmittance,其值由参数A给出。它连接着负载。
当有限状态机的状态是on时,如果fault事件输入为真,则它将转移到最终状态fault并设置负载导纳(loadAdmittance)为0.0,断开负载。如果onOff事件为假,那么它将转移到off状态,并且也会断开负载。这两种转移的不同在于一旦有限状态机进入fault状态,若没有系统重置(将有限状态机回复到初始状态)它将无法重连负载。
例1.8 图1-11中的控制器(Controller)模型是图1-13所示的数据流模型。该模型使用SDF指示器(见第3章),它很适合进行采样数据信号处理。在这种情况下,控制器比较输入电压(voltage)和目标电压(110V),并将产生的误差信号输入PID控制器。PID控制器是一种常用的线性时不变系统。控制工程师知道如何设定这种控制器的参数,但在该情况下,我们只需简单地选择一些实验性的参数来产生一个有趣的测试用例。
注意图1-10中模型有部分是明显异构的,它涉及多个工程学科和计算机科学。一般来说,这种类型的模型都是工程师团队共同努力得出的结果,并且如果有一个框架可以使这些团队将他们的模型组合起来,那么将是极具价值的。
图1-13 图1-10的控制器(Controller)
关于该模型更多细节和扩展很容易想到,例如:
发电机可以定义成面向角色的类(actor-oriented class),以便它可以被重复应用,可以在一个集中的定义下开发和维护(详见2.6节)。
使用第9章所讨论的技术,可以更精细地建立发电机模型,以反映更复杂的线性和非线性动态系统。
可以更精细地建立发电机模型,以考虑频率和相位的影响,例如通过使用相量的复数来表示阻抗和导纳。
大小可变的模型(比如,n个发电机和m个负载,n和m是参数)可以通过2.7节中所述的高阶组件来创建。
网络定时(network timing)、时钟同步(clock synchronization)和共享资源竞争的影响可以用第10章中的技术来建模。
信号处理技术,如机器学习和频谱分析(见第3章),可以被集成到控制算法中。
单位系统(units system)模型可以包含在模型中,以使得模型对于时间、频率等测量单位的描述更加精确。
本体(ontology)可以加入模型中,使模型精确表示哪个信号和参数表示电压、导纳和阻抗等,或者使模型可以区分特定领域的概念,如发电机的内部电压和受输出阻抗和负载影响的输出端电压的区别。