Bang-Bang 温度控制系统建模
此示例说明如何对调节锅炉温度的 Bang-Bang 控制系统进行建模。该模型有两个组件:
锅炉被控对象模型是一个 Simulink® 子系统,用于对锅炉动态特性进行建模。
Bang-Bang Controller 是实现 Bang-Bang 控制逻辑的 Stateflow® 图。
该图使用:
实现 Bang-Bang 循环计时的时序逻辑
8 位定点数据,表示锅炉的温度
使用 after
运算符实现控制逻辑
Bang-Bang Controller 确定锅炉何时开启或关闭。最初,锅炉处于关闭状态。在 40 秒后,如果锅炉是冷的,则锅炉开启。在 20 秒后,锅炉关闭,重复 Bang-Bang 控制循环。
为了控制 On
和 Off
状态之间的转移,图调用绝对时间时序逻辑运算符 after
。例如,在 On
状态被激活 20 秒后,转移标签 after(20,sec)
触发从 On
到 Off
的转移。如果函数 cold
在 Off
状态被激活 40 秒后返回 true
,则标签 after(40,sec)[cold()]
会导致从 Off
到 On
的转移。
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 模块将输入锅炉温度 转换为中间模拟电压输出 。
模数转换器 (ADC) 子系统对来自传感器模块的模拟电压进行数字化处理,采用的方法是将电压乘以 ,向下舍入到整数,然后将结果限制为最大值不超过 255(无符号 8 位整数的最大值)。子系统输出一个量化整数 。
Linear Fixed-Point Conversion 模块对 Sensor 和 ADC 模块的组合传递函数求逆函数,以将锅炉温度编码为斜率为 且偏置为 的定点数。这些定点参数将 8 位量化整数 转换为数字编码温度 。
Bang-Bang Controller 图接收此数字编码温度,并将其解释为无符号 8 位定点数据 temp
。该图在 8 位环境中处理此温度数据,没有任何显式转换。
检查仿真结果
在仿真后,Simulink 示波器显示锅炉在大约 450 秒(7.5 分钟)后达到 20 摄氏度的温度。Bang-Bang 控制逻辑在余下的仿真中有效地保持该温度。
另请参阅
after
| every
| Data Type Conversion (Simulink)