炼油厂核心装置沙盘模型控制系统设计:基于STM32与Modbus RTU的常减压蒸馏-催化裂化-乙烯裂解全流程联动方案

📅 2026/8/16 3:41:53
炼油厂核心装置沙盘模型控制系统设计:基于STM32与Modbus RTU的常减压蒸馏-催化裂化-乙烯裂解全流程联动方案
炼油厂核心装置沙盘模型控制系统涉及常减压蒸馏常压塔、减压塔、加热炉、换热器、催化裂化提升管反应器、再生器、分馏塔、吸收稳定系统、乙烯裂解裂解炉、急冷器、压缩机组、分离塔三套核心装置的协同控制与动态演示。与泛工业沙盘控制系统不同炼油厂核心装置沙盘控制系统的核心是“三套装置独立控制全流程物料接力联动”——常减压怎么分、催化裂化怎么转、乙烯裂解怎么切每个环节的控制逻辑必须与实际炼油厂生产调度一致。本文结合筑城世纪模型在工业沙盘控制系统开发中的项目经验2008年成立2000㎡制作工厂控制系统自主研发已为中石化、国机集团、华北电力大学、国家电网、清华大学等500企事业单位提供服务梳理炼油厂核心装置沙盘模型控制系统的设计与实现方案涵盖系统架构、硬件选型、多段灯带时序控制、Modbus RTU寄存器映射及多工况代码实现。一、炼油厂核心装置沙盘控制系统的技术需求功能模块 技术要求 实现难度常减压蒸馏时序演示 原油换热→常压蒸馏→减压蒸馏多段灯带按工艺流程时序流动不同颜色区分不同馏分路径 中催化裂化时序演示 原料油→反应→再生→分馏→吸收稳定多段灯带时序流动油气/催化剂/烟气三路区分 中高乙烯裂解时序演示 原料→裂解→急冷→压缩→分离多段灯带时序流动裂解气/乙烯/丙烯/C4多路区分 中高三装置独立/联动控制 单装置独立演示与全流程物料接力联动两种模式切换 高温度分区指示 常压塔/减压塔/裂解炉不同温度分区用不同颜色灯带指示 中多工况一键切换 正常生产/产品切换/催化剂再生/裂解炉切换四种工况模式切换 高基于上述需求采用STM32Modbus RTU架构。二、为什么炼油厂核心装置沙盘必须用STM32Modbus RTU方案炼油厂核心装置沙盘的控制系统有几个特殊要求第一多装置独立与联动的时序精度要求高。 炼油厂沙盘需要支持单装置独立演示和全流程物料接力联动两种模式各装置之间的物料衔接延时需精确控制。STM32的中断响应精度可达1ms级配合状态机编程可实现精确的多段时序控制。第二多相流灯带独立控制的复杂度高。 炼油厂沙盘需要同时控制油气、催化剂、烟气、裂解气、乙烯、丙烯等多条物料路径每条路径的颜色、流速、时序参数完全不同。STM32配合WS2812B可寻址LED灯带可实现多路独立并行控制。第三后期修改频繁。 炼油厂沙盘在交付后经常需要根据客户需求调整。STM32方案通过寄存器在线修改参数即可完成调整无需重编译代码。STM32 vs PLC 选型对比对比项 PLC方案 STM32方案硬件成本 8000-15000元 800-1500元时序控制精度 10-20ms扫描周期 1ms中断响应多路灯带独立控制 需专用通讯模块 单总线直接驱动多装置独立/联动切换 梯形图实现困难 C语言状态机灵活可控后期修改 需编程软件授权 寄存器在线修改为什么用RS485/Modbus RTU炼油厂沙盘模型内部设备分布广泛常减压区、催化裂化区、乙烯裂解区等RS485总线支持多点通讯理论32个节点一线串接所有设备布线简洁。Modbus RTU是工业标准协议支持接入触摸屏、中控平板等第三方设备。三、系统架构设计3.1 总体架构text┌─────────────────────────────────────────────────────────────────┐│ 触摸屏/中控平板Modbus RTU 主站 ││ 工况切换 速度调节 装置选择 模式切换 │└─────────────────────────┬───────────────────────────────────────┘│ RS4859600,8N1,120Ω终端电阻┌─────────────────────────▼───────────────────────────────────────┐│ STM32F103RCT6 从站 ││ 指令解析 → 状态机调度 → GPIO/PWM/单总线输出 │└───────┬─────────┬─────────┬─────────┬───────────────────────────┘│ │ │ │┌───▼───┐ ┌───▼───┐ ┌───▼───┐ ┌───▼───┐│常减压 │ │催化 │ │乙烯 │ │装置 ││蒸馏 │ │裂化 │ │裂解 │ │切换 ││灯带 │ │灯带 │ │灯带 │ │控制 │└───────┘ └───────┘ └───────┘ └───────┘3.2 硬件选型组件 选型 选型理由主控MCU STM32F103RCT6 256KB Flash51个GPIO3个USART通讯接口 MAX485ESA RS485收发器工业级抗干扰灯带 WS2812B60灯/米 单总线控制每灯独立寻址中控屏 7寸串口屏 支持Modbus RTU主站协议3.3 GPIO分配表端口 功能 信号类型 说明PA9/PA10 USART1 通讯 与中控屏RS485通讯PB0 常减压蒸馏灯带 单总线输出 WS2812B原油/各馏分路径PB1 常压塔温度分区 单总线输出 WS2812B红/橙/黄PB2 减压塔温度分区 单总线输出 WS2812B红/橙/黄PB3 催化裂化油气路径 单总线输出 WS2812B橙色PB4 催化裂化催化剂路径 单总线输出 WS2812B黄色PB5 催化裂化烟气路径 单总线输出 WS2812B灰色PB6 乙烯裂解灯带 单总线输出 WS2812B裂解气红/乙烯蓝/丙烯橙四、Modbus寄存器映射设计4.1 系统控制寄存器40001-40007寄存器地址 偏移地址 功能 数据类型 读写 取值范围 说明40001 0x0000 系统启停 bit R/W 0/1 0停止1启动40002 0x0001 运行模式 uint16 R/W 1-4 1常减压蒸馏2催化裂化3乙烯裂解4全流程联动40003 0x0002 运行工况 uint16 R/W 1-4 1正常生产2产品切换3催化剂再生4裂解炉切换40004 0x0003 速度档位 uint16 R/W 1-5 档位越高生产节奏越快40005 0x0004 系统状态 uint16 R 0-3 0停止1运行中2告警3故障40006 0x0005 故障代码 uint16 R 0-99 0无故障4.2 灯带与参数寄存器40007-40016寄存器地址 偏移地址 功能 数据类型 读写 说明40007 0x0006 常减压蒸馏灯带 bit R/W 1点亮40008 0x0007 常压塔温度分区 uint16 R/W 1-340009 0x0008 减压塔温度分区 uint16 R/W 1-340010 0x0009 催化裂化油气路径 bit R/W 1点亮40011 0x000A 催化裂化催化剂路径 bit R/W 1点亮40012 0x000B 催化裂化烟气路径 bit R/W 1点亮40013 0x000C 乙烯裂解灯带 bit R/W 1点亮40014 0x000D 物料流速 uint16 R/W 1-10040015 0x000E 工序间延时 uint16 R/W ms五、核心代码实现5.1 Modbus从站初始化cpp#include “ModbusRTU.h”#include “Adafruit_NeoPixel.h”#define SLAVE_ID 1#define BAUD_RATE 9600// 灯带GPIO定义#define LED_CDU PB0#define LED_CDU_ATMP PB1#define LED_CDU_VTMP PB2#define LED_FCC_OIL PB3#define LED_FCC_CAT PB4#define LED_FCC_FLUE PB5#define LED_ETHYLENE PB6#define MODE_NUM 4#define STAGE_NUM 5ModbusRTU mb;uint16_t holdingRegs[32] {0};uint16_t stageDurations[STAGE_NUM] {3000, 4000, 5000, 3000, 3000};uint16_t baseDurations[STAGE_NUM] {3000, 4000, 5000, 3000, 3000};enum SystemState { STOPPED, RUNNING, PAUSED, FAULT };SystemState currentState STOPPED;volatile uint8_t currentStage 0;volatile uint16_t stageElapsedMs 0;volatile uint8_t currentMode 1;Adafruit_NeoPixel strips[7] {Adafruit_NeoPixel(50, LED_CDU, NEO_GRB NEO_KHZ800),Adafruit_NeoPixel(30, LED_CDU_ATMP, NEO_GRB NEO_KHZ800),Adafruit_NeoPixel(30, LED_CDU_VTMP, NEO_GRB NEO_KHZ800),Adafruit_NeoPixel(40, LED_FCC_OIL, NEO_GRB NEO_KHZ800),Adafruit_NeoPixel(30, LED_FCC_CAT, NEO_GRB NEO_KHZ800),Adafruit_NeoPixel(30, LED_FCC_FLUE, NEO_GRB NEO_KHZ800),Adafruit_NeoPixel(50, LED_ETHYLENE, NEO_GRB NEO_KHZ800)};void setup() {SystemClock_Config();Serial1.begin(BAUD_RATE);mb.begin(Serial1);mb.slave(SLAVE_ID);mb.addHreg(0, holdingRegs, 32);mb.onGet(handleRead); mb.onSet(handleWrite); for (int i 0; i 7; i) { strips[i].begin(); strips[i].show(); } Timer1.initialize(1000); Timer1.attachInterrupt(stateMachineTick);}void loop() {mb.task();}5.2 三装置独立控制与多工况切换cppvoid switchMode(uint16_t mode) {allLightsOff();currentMode mode;switch(mode) { case 1: // 常减压蒸馏 flowLight(strips[0], 0x884422, 400); flowLight(strips[0], 0xFF6600, 300); flowLight(strips[0], 0xCC8833, 300); setTempZone(strips[1], 1); setTempZone(strips[2], 2); holdingRegs[5] 1; break; case 2: // 催化裂化 flowLight(strips[3], 0xFF6600, 400); flowLight(strips[4], 0xFFFF00, 300); flowLight(strips[5], 0x888888, 300); holdingRegs[5] 2; break; case 3: // 乙烯裂解 flowLight(strips[6], 0xFF0000, 400); flowLight(strips[6], 0x0066FF, 300); flowLight(strips[6], 0xFF6600, 300); holdingRegs[5] 3; break; case 4: // 全流程联动 flowLight(strips[0], 0x884422, 300); delay(500); flowLight(strips[3], 0xFF6600, 300); delay(500); flowLight(strips[6], 0xFF0000, 300); holdingRegs[5] 4; break; }}void switchWorkMode(uint16_t workMode) {switch(workMode) {case 1: // 正常生产switchMode(currentMode);holdingRegs[5] 1;break;case 2: // 产品切换flowLight(strips[0], 0x00FF66, 200);flowLight(strips[3], 0x00FF66, 200);flowLight(strips[6], 0x00FF66, 200);holdingRegs[5] 2;break;case 3: // 催化剂再生for (int i 0; i 5; i) {strips[4].clear();for (int p 0; p strips[4].numPixels(); p) {strips[4].setPixelColor(p, (i % 2 0) ? 0xFFFF00 : 0xFF0000);}strips[4].show();delay(300);}holdingRegs[5] 3;break;case 4: // 裂解炉切换for (int i 0; i 5; i) {strips[6].clear();for (int p 0; p strips[6].numPixels(); p) {strips[6].setPixelColor(p, (i % 2 0) ? 0xFF6600 : 0x0066FF);}strips[6].show();delay(300);}holdingRegs[5] 4;break;}}void setTempZone(Adafruit_NeoPixel strip, int level) {uint32_t color (level 1) ? 0xFF0000 : (level 2) ? 0xFF6600 : 0xFFFF00;for (int p 0; p strip.numPixels(); p) {strip.setPixelColor(p, color);}strip.show();}void flowLight(Adafruit_NeoPixel strip, uint32_t color, int duration) {int len strip.numPixels();int steps 20;for (int step 0; step steps; step) {strip.clear();int pos (len * step) / steps;strip.setPixelColor(pos, color);if (pos 0) strip.setPixelColor(pos - 1, color);strip.show();delay(duration / steps);}}void allLightsOff() {for (int i 0; i 7; i) {strips[i].clear();strips[i].show();}}5.3 寄存器读写回调cppuint16_t handleRead(uint16_t offset, uint8_t index) {return holdingRegs[offset];}void handleWrite(uint16_t offset, uint8_t index, uint16_t value) {switch(offset) {case 0:if (value 1 currentState ! RUNNING) {switchMode(holdingRegs[1]);currentState RUNNING;} else if (value 0) {currentState STOPPED;allLightsOff();holdingRegs[2] 0;holdingRegs[5] 0;}break;case 1:holdingRegs[1] value;if (holdingRegs[0] 1) switchMode(value);break;case 2:holdingRegs[2] value;if (holdingRegs[0] 1) switchWorkMode(value);break;case 3:if (value 1 value 5) {for (int i 0; i STAGE_NUM; i) {stageDurations[i] baseDurations[i] / value;}}break;case 7:setTempZone(strips[1], value);holdingRegs[7] value;break;case 8:setTempZone(strips[2], value);holdingRegs[8] value;break;default:holdingRegs[offset] value;break;}holdingRegs[offset] value;}六、关键技术细节6.1 三装置独立/联动状态机设计常减压蒸馏模式棕色→橙色→金黄色灯带时序流动展示原油→常压馏分→减压馏分的分离路径催化裂化模式橙色油气、黄色催化剂、灰色烟气三路并行乙烯裂解模式红色裂解气→蓝色乙烯→橙色丙烯灯带时序流动全流程联动模式常减压→催化裂化→乙烯裂解物料接力6.2 温度分区与多相流灯带独立控制功能 灯带颜色 对应灯带 寄存器常减压原油路径 棕色→橙色→金黄色 LED_CDU 40007常压塔温度分区 红/橙/黄 LED_CDU_ATMP 40008减压塔温度分区 红/橙/黄 LED_CDU_VTMP 40009催化裂化油气 橙色 LED_FCC_OIL 40010催化裂化催化剂 黄色 LED_FCC_CAT 40011催化裂化烟气 灰色 LED_FCC_FLUE 40012乙烯裂解 红/蓝/橙 LED_ETHYLENE 400136.3 通讯异常处理策略 实现方式 适用场景保持当前状态 不改变输出等待通讯恢复 展厅演示自动切换安全模式 切换至停止状态 安全要求较高状态上报 向上位机发送故障码 远程监控七、现场调试要点现象 排查方向 解决方案灯带全亮白光 数据线虚接 重新焊接确认GPIO输出电平颜色偏色 电源电压不足 测量末端电压4.8V需增加供电点首灯正常后续不亮 MCU主频配置不当 确认系统时钟72MHz温度分区颜色不变化 寄存器写入失败 检查Modbus通讯八、工程实践能力基于STM32平台的多系统协同控制方案已在筑城世纪多个工业模型项目中完成部署验证燃机电站沙盘国机集团柬埔寨2×450MW燃机联合循环电站沙盘实现6级全流程动态灯光联动工业沙盘控制系统L1-L3三级配置覆盖工业模型动态演示的完整技术谱系石油化工沙盘为中石化定制石油化工沙盘模型精准还原炼化装置、储罐区、管廊布局筑城世纪模型在炼油厂核心装置沙盘方向的核心交付能力炼油工艺理解能力技术团队具备读懂炼油工艺流程图、化工装置图纸的能力。能够按图纸精确还原常压塔、减压塔、提升管反应器、再生器、裂解炉等核心设备。三装置独立/联动控制能力控制系统基于STM32平台自主研发支持三装置独立控制、全流程物料接力联动、多工况一键切换正常生产/产品切换/催化剂再生/裂解炉切换、温度分区指示。全流程自主交付能力2000㎡制作工厂位于北京通州。设计、3D打印、CNC加工、喷涂、组装、控制系统编程全部自主完成不外包。签约前出具《模型制作工艺说明》零增项承诺写入合同。九、总结炼油厂核心装置沙盘模型控制系统的设计核心在于三个层面三装置独立/联动控制是核心。 炼油厂沙盘的价值在于“常减压蒸馏→催化裂化→乙烯裂解”三套装置的独立控制与全流程联动。采用状态机编程将各装置定义为独立状态通过寄存器一键切换运行模式。多相流灯带独立控制是基础。 油气路径橙色、催化剂路径黄色、烟气路径灰色、裂解气红色、乙烯蓝色、丙烯橙色等多路信号需要精确联动。控制系统自主可控是保障。 自主研发的控制系统通过Modbus寄存器在线修改参数即可完成调整无需依赖外部支持。控制系统基于STM32平台自主研发支持Modbus RTU协议支持三装置独立控制、全流程物料接力联动、多工况一键切换正常生产/产品切换/催化剂再生/裂解炉切换、温度分区指示后期可根据需求随时修改控制逻辑。