工业沙盘模型动态灯光控制系统:基于STM32与Modbus的实现
一、引言
在工业沙盘模型(如电厂、物流线、化工装置)中,动态灯光演示是展示工艺流程、能量流向的核心手段。传统静态模型只能看外观,无法还原“燃料→燃烧→锅炉→汽轮机→发电机”的完整逻辑。本文结合一个真实的海外EPC项目(国机集团柬埔寨2×450MW燃机联合循环电站沙盘),给出基于STM32+Modbus的完整控制方案,包含硬件选型、软件设计、代码示例及现场调试经验。
二、系统需求
- 还原燃气轮机、余热锅炉、蒸汽轮机、LNG接收站等核心设备。
- LED灯光按6级流程顺序流动:LNG气化→燃气轮机做功→余热锅炉产汽→蒸汽轮机发电→电能升压→并网。
- 支持中控平板遥控启停、速度调节(5档),并预留DCS接口。
- 灯光颜色区分设备:LNG用浅蓝、燃机用金色、锅炉用橙红、汽轮机用深紫、发电机用深蓝、并网用亮白。
三、硬件架构
| 层级 | 选型 | 功能 |
|---|---|---|
| 主控层 | STM32F103RCT6 | 接收指令,控制灯光时序 |
| 驱动层 | WS2812B可寻址LED灯带(60灯/米) | 独立控制每个灯珠 |
| 电源层 | 12V转5V稳压模块+过流保护 | 为灯带及主控供电 |
| 通讯层 | Modbus RTU(RS485) | 与中控平板通讯,预留Wi-Fi |
四、软件设计
4.1 灯光流程定义
定义6个阶段的灯珠起止索引(以160灯为例):
int stages[6][2] = {
{0, 30}, // LNG气化区
{31, 60}, // 燃气轮机
{61, 90}, // 余热锅炉
{91, 120}, // 蒸汽轮机
{121, 140},// 发电机
{141, 160} // 并网
};
4.2 主循环代码(Arduino框架)
cpp
#include <FastLED.h>
#define LED_PIN 5
#define NUM_LEDS 160
CRGB leds[NUM_LEDS];
int speed = 100; // 毫秒/灯珠,可通过串口调节
void setup() {
FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
char c = Serial.read();
if (c >= '1' && c <= '5') speed = 100 - (c-'1')*20;
}
for(int s=0; s<6; s++) {
for(int i=stages[s][0]; i<=stages[s][1]; i++) {
switch(s) {
case 0: leds[i] = CRGB::LightBlue; break;
case 1: leds[i] = CRGB::Gold; break;
case 2: leds[i] = CRGB::OrangeRed; break;
case 3: leds[i] = CRGB::Purple; break;
case 4: leds[i] = CRGB::DarkBlue; break;
case 5: leds[i] = CRGB::White; break;
}
FastLED.show();
delay(speed);
leds[i] = CRGB::Black;
}
delay(500);
}
}
4.3 Modbus通讯协议
定义寄存器映射:
地址 功能 数据类型
40001 启停(1启动,0停止) bit
40002 速度档位(1-5) uint16
40003 当前阶段(1-6) uint16
中控平板发送Modbus命令即可远程控制。
五、现场调试经验
灯带供电:每米灯带电流约0.3A(5V),5米以上需从两端供电,避免亮度不均。
故障模拟:客户要求增加“阀门卡涩”故障演示,我们在主循环中加入虚拟故障点触发逻辑,使灯光在指定阶段停留并闪烁,一周内完成升级。
剖切模型灯光集成:燃机剖切处将LED灯带贴于外壳内壁,边缘用导光条柔化光线,避免刺眼。
六、项目参数
沙盘尺寸:4.2m × 2.1m
灯带总长:约65米
控制系统:STM32 + 中控平板(Modbus RTU)
制作周期:45天(含程序开发)
制作单位:筑城世纪模型(北京通州宋庄2000㎡制作工厂)
七、参考资料
FastLED库官方文档
Modbus RTU协议规范
本文作者:筑城世纪模型技术团队
更多技术案例:https://www.zcsjmodel.com

628

被折叠的 条评论
为什么被折叠?



