Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

Bang-Bang 温度控制系统建模

此示例说明如何对调节锅炉温度的 Bang-Bang 控制系统进行建模。该模型有两个组件:

  • 锅炉被控对象模型是一个 Simulink® 子系统,用于对锅炉动态特性进行建模。

  • Bang-Bang Controller 是实现 Bang-Bang 控制逻辑的 Stateflow® 图。

该图使用:

  • 实现 Bang-Bang 循环计时的时序逻辑

  • 8 位定点数据,表示锅炉的温度

使用 after 运算符实现控制逻辑

Bang-Bang Controller 确定锅炉何时开启或关闭。最初,锅炉处于关闭状态。在 40 秒后,如果锅炉是冷的,则锅炉开启。在 20 秒后,锅炉关闭,重复 Bang-Bang 控制循环。

为了控制 OnOff 状态之间的转移,图调用绝对时间时序逻辑运算符 after。例如,在 On 状态被激活 20 秒后,转移标签 after(20,sec) 触发从 OnOff 的转移。如果函数 coldOff 状态被激活 40 秒后返回 true,则标签 after(40,sec)[cold()] 会导致从 OffOn 的转移。

Off 状态还使用时序逻辑来控制状态 LED。由于 Simulink 模型中的 Stateflow 图不支持对绝对时间时序逻辑使用运算符 every,因此状态通过使用具有自环转移的子状态 Flash 来实现 LED 的操作。转移标签 after(5,sec) 触发子状态的 entry 动作,并使 LED 每 5 秒闪烁一次。

在 8 位处理器上处理浮点数据

Boiler Plant Model 子系统对锅炉在加热或冷却期间的温度反应进行仿真。

根据 Bang-Bang Controller 图的输出,子系统在先前的锅炉温度基础上增加或减少一个温度增量(+1 用于加热,-0.1 用于冷却),并将结果传递给 Digital Thermometer 子系统。

Digital Thermometer 子系统将得到的温度转换为 8 位定点表示。转换分三步进行。

  • Sensor 模块将输入锅炉温度 $T_{actual}$ 转换为中间模拟电压输出 $V_{sensor} = 0.05 \cdot T_{actual} + 0.75$

  • 模数转换器 (ADC) 子系统对来自传感器模块的模拟电压进行数字化处理,采用的方法是将电压乘以 $\frac{256}{5}$,向下舍入到整数,然后将结果限制为最大值不超过 255(无符号 8 位整数的最大值)。子系统输出一个量化整数 $Q = \lfloor \frac{256}{5} \cdot V_{sensor} \rfloor = \lfloor \frac{256 \times 0.05}{5} \cdot T_{actual} + \frac{256 \times 0.75}{5} \rfloor$

  • Linear Fixed-Point Conversion 模块对 Sensor 和 ADC 模块的组合传递函数求逆函数,以将锅炉温度编码为斜率为 $S = \frac{5}{256 \times 0.05} = 0.390625$ 且偏置为 $B = -\frac{0.75}{0.05} = -15$ 的定点数。这些定点参数将 8 位量化整数 $Q$ 转换为数字编码温度 $T_{digital} = SQ + B = \frac{5}{256 \times 0.05} \cdot \lfloor \frac{256 \times 0.05}{5} \cdot T_{actual} + \frac{256\times 0.75}{5} \rfloor - \frac{0.75}{0.05} \approx T_{actual}$

Bang-Bang Controller 图接收此数字编码温度,并将其解释为无符号 8 位定点数据 temp。该图在 8 位环境中处理此温度数据,没有任何显式转换。

检查仿真结果

在仿真后,Simulink 示波器显示锅炉在大约 450 秒(7.5 分钟)后达到 20 摄氏度的温度。Bang-Bang 控制逻辑在余下的仿真中有效地保持该温度。

另请参阅

| | (Simulink)

相关主题