PID 控制器和 InfluxDB:第 1 部分 - 背景
作者:Anais Dotis-Georgiou / 开发者
2024 年 8 月 27 日
导航至
在快速发展的化学工业中,保持对化学反应器(如连续搅拌釜反应器 (CSTR))的精确控制对于确保最佳性能和产品质量至关重要。这篇博客文章深入探讨了集成先进的数据工具和技术来实现这种控制。我们将探索如何利用 InfluxDB、Kafka 和 Faust 流处理,以及 Telegraf,来有效地建模和管理 CSTR 及其 PID 控制器(比例-积分-微分控制器)。在本系列结束时,您将深入了解如何创建强大的数据管道,从而实现实时监控和控制,提高您的工艺效率和可靠性。
为了有效地建模和管理 CSTR 及其 PID 控制器,我们使用了一套强大的工具。InfluxDB 是一个针对高写入和查询负载优化的时序数据库,非常适合处理化学过程生成的实时数据。Kafka 是一个分布式流处理平台,使我们能够构建实时数据管道,确保系统组件之间的无缝数据流。Faust 是一个 Python 流处理库,提供用于构建复杂流处理应用程序的高级 API,这对于实时数据转换和分析至关重要。最后,Telegraf 是一个用于收集、处理和写入指标的代理,它充当桥梁,将我们的实时数据馈送到 InfluxDB 中。这些工具共同创建了一个全面的生态系统,用于精确高效地监控和控制化学过程。这篇博客文章的相应代码仓库可以在这里找到。
此博客中描述的项目的架构图。CSTR 的数字孪生产生数据,Kafka 收集这些数据。Faust 充当 PID 控制器。Telegraf 订阅 Kafka 主题,以将传感器和控制数据发送到 InfluxDB。Grafana 监控反应器和冷却夹套。
什么是 CSTR?
连续搅拌釜反应器 (CSTR) 是一种工业过程中常用的化学反应器。它通过不断混合反应物和产物,使整个反应器保持均匀的组成。CSTR 的主要优点是它能够处理大规模的反应并保持一致的质量,使其成为需要稳态运行的工艺的理想选择。
为了对 CSTR 进行建模,我们使用一组微分方程来描述反应物和产物浓度随时间的变化。比例-积分-微分 (PID) 控制器用于通过调整控制变量(通常是冷却夹套)来维持系统中的所需设定点。PID 控制器计算误差值,即所需设定点与测量的过程变量之间的差值,并根据比例、积分和微分项应用校正。
CSTR 使用的一个典型例子是生产乙二醇,它是防冻剂和涤纶纤维的关键成分。生产过程包括在水存在下水解环氧乙烷。在这个例子中,我们可以将环氧乙烷视为化学物质 A,将水视为化学物质 B。 来自 APMonitor 的 CSTR 示意图。
您可以在这里了解有关对这种类型的反应器进行建模的特定数学知识。但本质上,CSTR 模型是使用常微分方程 (ODE) 描述的,这些方程考虑了反应器中的质量和能量平衡,其中
- Ca 是离开反应器的反应物 A 的浓度。
- Cb 是离开反应器的反应物 B 的浓度。
- Caf 是进入反应器的反应物 A 的浓度,是一个常数。
- Tf 是进入反应器的反应物 A 的温度,是一个常数。
- Tc 或 u 是冷却夹套的温度或控制变量,由 PID 控制器确定。
本质上,CSTR 中的许多化学反应都是放热的,并且会随着时间的推移产生热量,就像乙二醇的生产一样。随着反应的进行和热量的产生,反应器的温度升高,进一步加速反应并可能产生更多的热量。出于多种原因,需要控制此温度
- 安全
- 不受控制的热量产生可能导致失控反应,其中反应速率不受控制地增加,导致危险的高温和高压。
- 这可能会导致设备故障、有害物质的释放,甚至爆炸。
- 产品质量
- 许多反应都有最佳温度范围,可以最大限度地提高所需产品的产量和选择性。
- 偏离此温度范围可能会导致不需要的副产品的形成,从而降低所需产品的整体质量和产量。
- 工艺效率
- 将反应维持在特定温度范围内可确保有效利用资源。
- 过多的热量可能需要额外的冷却,从而增加运营成本,而温度控制不足可能会减慢反应速度,从而降低吞吐量。
因此,PID 控制器不断计算所需温度(设定点)与实际反应器温度之间的误差,并调整冷却夹套温度以最大限度地减少此误差。出于以下几个原因,在 CSTR 和 PID 控制系统中更改设定点
- 最大化产量和质量:不同的反应阶段可能具有不同的最佳温度,以获得最大的产品质量产量。调整设定点可以帮助在整个过程中保持最佳条件。
- 某些反应在较高温度下进行得更快,而另一些反应如果温度过高可能会产生不需要的副产品。调整设定点有助于优化这些反应动力学。
- 安全:防止失控反应和爆炸。
- 工艺过渡:在涉及多个步骤或阶段的工艺中,每个步骤可能需要不同的温度才能获得最佳性能。设定点可以实现平稳过渡。
- 研究和开发:更改设定点使研究人员能够在开发新工艺或优化现有工艺时研究温度对反应动力学和产量的影响。
项目概述和要求
这篇博客文章的相应代码仓库可以在这里找到。它包含三个目录
- without_kafka:此目录包含一个关于如何使用 Python 建模 CSTR 和 PID 控制器,而不使用 InfluxDB、Kafka 或 Telegraf 的示例。
- cstr_kafka_influxdb:此目录包含一个关于使用 Kafka 和 Python 建模 CSTR 的示例。
- cstr_kafka_influxdb_docker:此目录包含一个关于 dockerized CSTR 建模的示例。这是建议您独立尝试此操作的环境。
每个目录都包含一个 README.md 文件,其中包含有关如何自行运行这些演示的说明。
此项目提供了一个 CSTR 数字孪生模型,该模型模拟在提供的温度设定点条件下执行反应 (A → B)。我们生成的数据如下所示:
CSTR 数字孪生模型的结果。顶部图表显示反应物 A (Ca) 随时间的浓度;中间图表显示反应器 (T) 的温度和设定点 (setpoint),底部图表显示冷却夹套 (u) 的温度。
结论
这篇博客文章为创建 CSTR 的数字孪生模型以及使用 Kafka 和 Faust 作为 PID 控制器,同时将温度数据存储在 InfluxDB 中奠定了基础。我们使用 Telegraf 从 Kafka 主题获取数据。然后,我们使用 Grafana 可视化结果。与往常一样,请在此处开始使用 InfluxDB v3 Cloud。在下一篇文章中,我们将介绍如何运行该项目,深入探讨架构和逻辑,并讨论所选技术栈的一些优点和缺点。如果您需要帮助,请在我们的社区网站或 Slack 频道上联系我们。如果您也在使用 InfluxDB 进行数据处理项目,我很乐意收到您的来信!