25-1023工业控制-火力发电厂辅助控制系统
WYY
2025-03-14 d7d6bd1430bc0e475272cd1a19fefeecee89a44d
架构分析
1个文件已添加
508 ■■■■■ 已修改文件
Client/王雨阳/log/README.MD 508 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Client/ÍõÓêÑô/log/README.MD
New file
@@ -0,0 +1,508 @@
# ä½¿ç”¨QT5.9.4  ï¼Œ32位
# ä¸€ã€ä»¥ä¸‹ä»¥å‘电量从100 MW提升至200 MW为例,说明各系统的协同控制策略及PID算法应用:
---
### **1. æ±½è½®æœºç³»ç»Ÿï¼šè´Ÿè·æŒ‡ä»¤å“åº”**
- **目标**:通过调门开度与主汽压力协同控制实现功率提升。
- **控制逻辑**:
  - **协调控制PID(CCS)**:电网指令(200 MW)输入至CCS系统,主汽压力设定值动态调整为匹配目标负荷(如从10 MPa升至12 MPa)[[4]]。
  - **调门开度PID**:根据实际功率与目标的偏差(200-100=100 MW),通过PID输出逐步开大调门,同时抑制超调(如设置调门开度变化率限制)[[4]]。
  - **转速PID**:若电网频率波动,转速PID介入一次调频,临时调整调门开度以稳定转速[[4]]。
---
### **2. ç‡ƒçƒ§ç³»ç»Ÿï¼šç‡ƒæ–™ä¸Žé£Žé‡åŒ¹é…**
- **目标**:增加燃料量并优化燃烧效率,支撑主汽压力提升。
- **控制逻辑**:
  - **燃料量PID**:主汽压力偏差(12-10=2 MPa)触发燃料量PID,叠加负荷前馈信号(如燃料量预增加20%),动态调整给煤机转速[[5]]。
  - **氧量交叉限幅PID**:根据燃料量计算理论空气量,通过二次风门PID将氧量控制在3%-5%,抑制NOx生成[[2]][[6]]。
  - **炉膛负压PID**:引风机变频器根据负压设定值(如-50 Pa)调整转速,抵消送风量增加导致的负压波动[[6]]。
---
### **3. æ±½æ°´ç³»ç»Ÿï¼šè’¸æ±½å‚数稳定**
- **目标**:维持主汽温度540℃±5℃,防止超温或欠温。
- **控制逻辑**:
  - **串级汽温PID**:
    - **导前汽温PID**:监测过热器出口温度,微分环节快速响应减温水扰动[[3]][[5]]。
    - **主汽温PID**:积分环节消除静态误差,输出叠加至减温水调节阀[[3]]。
  - **三冲量锅炉水位PID**:
    - å‰é¦ˆï¼šè’¸æ±½æµé‡ä¿¡å·ï¼ˆè´Ÿè·æå‡å¯¼è‡´è’¸å‘量增加)→ é¢„测给水量需求[[3]]。
    - åé¦ˆï¼šæ°´ä½åå·®ï¼ˆå¦‚从-50 mm恢复至0 mm)→ è°ƒæ•´ç»™æ°´æ³µè½¬é€Ÿ[[3]]。
---
### **4. ç»™æ°´ç³»ç»Ÿï¼šåŠ¨æ€å¹³è¡¡**
- **目标**:匹配给水量与蒸发量,防止水位大幅波动。
- **控制逻辑**:
  - **给水泵变频PID**:根据给水流量设定值(如从300 t/h升至600 t/h)调整泵转速,前馈信号为负荷指令[[5]]。
  - **压力闭环PID**:给水母管压力设定值(如15 MPa)通过PID调节泵出口阀开度,避免压力波动影响水位控制[[5]]。
---
### **5. å®‰å…¨ä¸Žä¼˜åŒ–ç­–ç•¥**
- **时滞补偿**:采用改进量子粒子群算法优化PID参数,减少燃料-蒸汽-功率传递过程中的延迟[[6]][[7]]。
- **约束处理**:
  - ç‡ƒæ–™é‡å—限于磨煤机最大出力(如≤120 t/h)[[6]]。
  - æ±½æ¸©ç¡¬é™å¹…(≤545℃)触发减温水紧急喷淋[[3]]。
- **性能评估**:通过ITAE指标在线评估各PID回路性能,触发参数自整定[[1]][[4]]。
---
### **动态响应示例**
| æ—¶é—´ï¼ˆs) | åŠ¨ä½œ                                                         | æŽ§åˆ¶ç®—法依赖                     |
| --------- | ------------------------------------------------------------ | -------------------------------- |
| 0-10      | è´Ÿè·æŒ‡ä»¤200 MW触发CCS,燃料量PID快速增加给煤机转速,氧量PID同步调整二次风门 | CCS+燃料量PID+氧量PID [[4]][[6]] |
| 10-30     | ä¸»æ±½åŽ‹åŠ›ä¸Šå‡è‡³11.5 MPa,调门PID逐步开大,功率升至180 MW      | è°ƒé—¨PID+压力PID [[4]]            |
| 30-50     | æ±½æ¸©å› ç‡ƒæ–™å¢žåŠ è€Œä¸Šå‡ï¼Œä¸²çº§PID加大减温水流量,维持540℃        | ä¸²çº§æ±½æ¸©PID [[3]]                |
| 50-60     | ç»™æ°´æµé‡åŒ¹é…è’¸å‘量,水位稳定在±20 mm内                       | ä¸‰å†²é‡PID [[3]]                  |
---
通过上述协同控制,发电量可在60秒内平稳提升至200 MW,主汽压力波动≤±0.3 MPa,汽温偏差≤±3℃,满足电网调度与安全约束[[1]][[4]][[6]]。
---
# äºŒã€ç³»ç»Ÿæž¶æž„设计
## 5.1 æ•´ä½“æž¶æž„
```mermaid
graph TD
    A[用户界面层] --> B[中央协调控制器]
    B --> C[子系统控制器]
    B --> D[物理模型]
    C --> D
    B --> E[数据管理器]
    D --> E
    E --> F[服务器]
```
## 5.2 æ ¸å¿ƒç»„件设计
### 5.2.0 å¤´æ–‡ä»¶common.h包含数据结构体
```c
// Common.h
#ifndef COMMON_H
#define COMMON_H
#include <string>
// åè®®ç±»åž‹æžšä¸¾
enum MessageType {
    // åŸºç¡€æ¶ˆæ¯ç±»åž‹
    POWER_PLANT_DATA_REQ,    // è¯·æ±‚电厂数据
    POWER_PLANT_DATA_RES,    // ç”µåŽ‚æ•°æ®å“åº”
    SIMULATION_SAVE_REQ,     // ä¿å­˜æ¨¡æ‹Ÿç»“果请求
    SIMULATION_SAVE_RES,     // ä¿å­˜æ¨¡æ‹Ÿç»“果响应
    SIMULATION_LOAD_REQ,     // åŠ è½½åŽ†å²æ•°æ®è¯·æ±‚
    SIMULATION_LOAD_RES      // åŠ è½½åŽ†å²æ•°æ®å“åº”
};
// æ¶ˆæ¯å¤´éƒ¨ç»“æž„
struct Head {
    int type;       // æ¶ˆæ¯ç±»åž‹ï¼ˆMessageType枚举值)
    int length;     // æ¶ˆæ¯ä½“长度
};
// æ±½è½®æœºç³»ç»ŸçŠ¶æ€
struct TurbineState {
    double currentPower;         // å½“前功率(MW)
    double mainSteamPressure;    // ä¸»æ±½åŽ‹åŠ›ï¼ˆMPa)
    double mainSteamTemperature; // ä¸»æ±½æ¸©åº¦ï¼ˆâ„ƒï¼‰
    double valvePosition;        // è°ƒé—¨å¼€åº¦ï¼ˆ%)
    double turbineSpeed;         // è½¬é€Ÿï¼ˆrpm)
};
// ç‡ƒçƒ§ç³»ç»ŸçŠ¶æ€
struct CombustionState {
    double fuelRate;            // ç‡ƒæ–™é‡ï¼ˆt/h)
    double oxygenContent;       // æ°§å«é‡ï¼ˆ%)
    double furnacePressure;     // ç‚‰è†›è´ŸåŽ‹ï¼ˆPa)
    double secondaryAirDamper;  // äºŒæ¬¡é£Žé—¨å¼€åº¦ï¼ˆ%)
    double inducedFanSpeed;     // å¼•风机转速(%)
};
// æ±½æ°´ç³»ç»ŸçŠ¶æ€
struct SteamWaterState {
    double leadSteamTemperature; // å¯¼å‰æ±½æ¸©ï¼ˆâ„ƒï¼‰
    double drumLevel;            // é”…炉水位(mm)
    double steamFlow;            // è’¸æ±½æµé‡ï¼ˆt/h)
    double desuperheaterValve;   // å‡æ¸©æ°´é˜€å¼€åº¦ï¼ˆ%)
};
// ç»™æ°´ç³»ç»ŸçŠ¶æ€
struct FeedwaterState {
    double waterFlow;           // ç»™æ°´æµé‡ï¼ˆt/h)
    double waterPressure;       // ç»™æ°´åŽ‹åŠ›ï¼ˆMPa)
    double pumpSpeed;           // ç»™æ°´æ³µè½¬é€Ÿï¼ˆ%)
    double outletValve;         // æ³µå‡ºå£é˜€å¼€åº¦ï¼ˆ%)
};
// å®Œæ•´çš„系统状态
struct SystemState {
    TurbineState turbine;           // æ±½è½®æœºç³»ç»ŸçŠ¶æ€
    CombustionState combustion;     // ç‡ƒçƒ§ç³»ç»ŸçŠ¶æ€
    SteamWaterState steamWater;     // æ±½æ°´ç³»ç»ŸçŠ¶æ€
    FeedwaterState feedwater;       // ç»™æ°´ç³»ç»ŸçŠ¶æ€
};
// æ¨¡æ‹Ÿè¿è¡Œä¿¡æ¯
struct SimulationInfo {
    char startTime[32];         // å¼€å§‹æ—¶é—´
    char endTime[32];           // ç»“束时间
    double startPower;          // åˆå§‹åŠŸçŽ‡ï¼ˆMW)
    double targetPower;         // ç›®æ ‡åŠŸçŽ‡ï¼ˆMW)
    double rampRate;            // å˜åŒ–率(MW/min)
    int status;                 // è¿è¡ŒçŠ¶æ€ï¼ˆ0-失败,1-成功)
};
// === è¯·æ±‚结构体 ===
// ç”µåŽ‚æ•°æ®è¯·æ±‚
struct PowerPlantDataReq {
    Head head;
    int requestType;    // è¯·æ±‚类型(0-全部数据,1-汽轮机,2-燃烧系统,3-汽水系统,4-给水系统)
    PowerPlantDataReq() {
        head.type = POWER_PLANT_DATA_REQ;
        head.length = sizeof(PowerPlantDataReq);
    }
};
// æ¨¡æ‹Ÿç»“果保存请求
struct SimulationSaveReq {
    Head head;
    SimulationInfo simInfo;     // æ¨¡æ‹Ÿè¿è¡Œä¿¡æ¯
    SystemState finalState;     // ç³»ç»Ÿæœ€ç»ˆçŠ¶æ€
    SimulationSaveReq() {
        head.type = SIMULATION_SAVE_REQ;
        head.length = sizeof(SimulationSaveReq);
    }
};
// åŽ†å²æ•°æ®åŠ è½½è¯·æ±‚
struct SimulationLoadReq {
    Head head;
    int recordId;               // è®°å½•ID
    char startTime[32];         // å¼€å§‹æ—¶é—´
    char endTime[32];           // ç»“束时间
    SimulationLoadReq() {
        head.type = SIMULATION_LOAD_REQ;
        head.length = sizeof(SimulationLoadReq);
    }
};
// === å“åº”结构体 ===
// ç”µåŽ‚æ•°æ®å“åº”
struct PowerPlantDataRes {
    Head head;
    SystemState state;          // ç³»ç»ŸçŠ¶æ€
    int status;                 // å“åº”状态(0-成功,非0-失败)
    char message[128];          // çŠ¶æ€ä¿¡æ¯
    PowerPlantDataRes() {
        head.type = POWER_PLANT_DATA_RES;
        head.length = sizeof(PowerPlantDataRes);
    }
};
// æ¨¡æ‹Ÿç»“果保存响应
struct SimulationSaveRes {
    Head head;
    int recordId;               // è®°å½•ID
    int status;                 // ä¿å­˜çŠ¶æ€ï¼ˆ0-成功,非0-失败)
    char message[128];          // çŠ¶æ€ä¿¡æ¯
    SimulationSaveRes() {
        head.type = SIMULATION_SAVE_RES;
        head.length = sizeof(SimulationSaveRes);
    }
};
// åŽ†å²æ•°æ®åŠ è½½å“åº”
struct SimulationLoadRes {
    Head head;
    SimulationInfo simInfo;     // æ¨¡æ‹Ÿè¿è¡Œä¿¡æ¯
    SystemState state;          // ç³»ç»ŸçŠ¶æ€
    int status;                 // åŠ è½½çŠ¶æ€ï¼ˆ0-成功,非0-失败)
    char message[128];          // çŠ¶æ€ä¿¡æ¯
    SimulationLoadRes() {
        head.type = SIMULATION_LOAD_RES;
        head.length = sizeof(SimulationLoadRes);
    }
};
// === æŽ§åˆ¶è¾“入结构体 ===
// æŽ§åˆ¶å™¨è¾“出的控制量
struct ControlInputs {
    double valvePosition;       // è°ƒé—¨å¼€åº¦æŒ‡ä»¤ï¼ˆ%)
    double fuelRate;            // ç‡ƒæ–™é‡æŒ‡ä»¤ï¼ˆt/h)
    double secondaryAirDamper;  // äºŒæ¬¡é£Žé—¨å¼€åº¦æŒ‡ä»¤ï¼ˆ%)
    double inducedFanSpeed;     // å¼•风机转速指令(%)
    double desuperheaterValve;  // å‡æ¸©æ°´é˜€å¼€åº¦æŒ‡ä»¤ï¼ˆ%)
    double pumpSpeed;           // ç»™æ°´æ³µè½¬é€ŸæŒ‡ä»¤ï¼ˆ%)
    double outletValve;         // æ³µå‡ºå£é˜€å¼€åº¦æŒ‡ä»¤ï¼ˆ%)
};
#endif // COMMON_H
```
### 5.2.1 æ•°æ®ç®¡ç†å™¨ï¼ˆPowerPlantDataManager)
负责系统与服务器之间的数据通信:
1. **功能职责**:
   - å»ºç«‹å’Œç»´æŠ¤TCP连接
   - è¯·æ±‚和接收初始系统状态
   - å‘送模拟结果到服务器
   - å¤„理服务器响应
2. **关键接口**:
```cpp
class PowerPlantDataManager {
public:
    // è¿žæŽ¥æœåС噍
    bool connectToServer(const QString& address, int port);
    // è¯·æ±‚初始数据
    bool requestInitialData();
    // ä¿å­˜æ¨¡æ‹Ÿç»“æžœ
    bool saveSimulationResult(const SimulationInfo& simInfo,
                            const SystemState& finalState);
    // çŠ¶æ€é€šçŸ¥ä¿¡å·
    signals:
        void connectionStatusChanged(bool connected);
        void initialDataReceived();
        void saveSucceeded(int recordId);
        void saveFailed(const QString& error);
};
```
### 5.2.2 ç‰©ç†æ¨¡åž‹ï¼ˆPowerPlantModel)
实现电厂物理过程的模拟计算:
1. **功能职责**:
   - æ¨¡æ‹Ÿç‡ƒçƒ§è¿‡ç¨‹
   - æ¨¡æ‹Ÿçƒ­åŠ›è¿‡ç¨‹
   - æ¨¡æ‹Ÿæœºæ¢°è¿‡ç¨‹
   - æ¨¡æ‹Ÿæ°´å¾ªçŽ¯è¿‡ç¨‹
2. **关键接口**:
```cpp
class PowerPlantModel {
public:
    // æ›´æ–°ç‰©ç†çŠ¶æ€
    void updateState(const ControlInputs& inputs, double deltaTime);
    // èŽ·å–ç³»ç»ŸçŠ¶æ€
    const SystemState& getState() const;
    // è®¾ç½®/加载初始状态
    void setState(const SystemState& state);
    bool loadInitialData();
    // ä¿å­˜æ¨¡æ‹Ÿç»“æžœ
    bool saveSimulationResults(const SimulationInfo& simInfo);
};
```
### 5.2.3 å­ç³»ç»ŸæŽ§åˆ¶å™¨
实现各子系统的控制算法:
1. **汽轮机控制器(TurbineController)**:
```cpp
class TurbineController {
public:
    void update(const TurbineState& state);
    void setTargetPower(double power);
    double getValvePosition() const;
};
```
2. **燃烧控制器(CombustionController)**:
```cpp
class CombustionController {
public:
    void update(const CombustionState& state);
    void setPressureSetpoint(double pressure);
    double getFuelRate() const;
    double getAirDamper() const;
};
```
3. **汽水控制器(SteamWaterController)**:
```cpp
class SteamWaterController {
public:
    void update(const SteamWaterState& state);
    double getDesuperheaterValve() const;
};
```
4. **给水控制器(FeedwaterController)**:
```cpp
class FeedwaterController {
public:
    void update(const FeedwaterState& state);
    void setFlowSetpoint(double flow);
    double getPumpSpeed() const;
    double getOutletValve() const;
};
```
### 5.2.4 ä¸­å¤®åè°ƒæŽ§åˆ¶å™¨ï¼ˆCentralCoordinationController)
协调各子系统的控制过程:
1. **功能职责**:
   - åè°ƒå„子系统控制器
   - ç®¡ç†æŽ§åˆ¶å‘¨æœŸ
   - å¤„理控制指令
   - ç›‘控系统状态
2. **关键接口**:
```cpp
class CentralCoordinationController {
public:
    // æŽ§åˆ¶æŒ‡ä»¤
    void setTargetPower(double power);
    void setRampRate(double rate);
    void startRamp();
    void stopRamp();
    // çŠ¶æ€èŽ·å–
    const SystemState& getModelState() const;
private:
    // æŽ§åˆ¶å¾ªçޝ
    void controlLoop();
signals:
    void stateUpdated();
    void rampCompleted();
};
```
## 5.3 ç³»ç»Ÿäº¤äº’流程
### 5.3.1 å¯åŠ¨æµç¨‹
1. **系统初始化**:
```cpp
void MainWindow::setupSystem() {
    // 1. åˆ›å»ºç»„ä»¶
    plantModel = new PowerPlantModel();
    dataManager = new PowerPlantDataManager();
    controller = new CentralCoordinationController();
    // 2. å»ºç«‹è¿žæŽ¥
    plantModel->setDataManager(dataManager);
    controller->setPlantModel(plantModel);
    // 3. è¿žæŽ¥æœåŠ¡å™¨å¹¶åŠ è½½åˆå§‹æ•°æ®
    dataManager->connectToServer("localhost", 8080);
    plantModel->loadInitialData();
}
```
### 5.3.2 æŽ§åˆ¶æµç¨‹
1. **功率提升过程**:
```cpp
void CentralCoordinationController::controlLoop() {
    // 1. èŽ·å–å½“å‰çŠ¶æ€
    const SystemState& state = plantModel->getState();
    // 2. æ›´æ–°å„子系统控制器
    updateControllers(state);
    // 3. æ”¶é›†æŽ§åˆ¶è¾“出
    ControlInputs inputs = collectControlInputs();
    // 4. æ›´æ–°ç‰©ç†æ¨¡åž‹
    plantModel->updateState(inputs, deltaTime);
}
```
### 5.3.3 æ•°æ®ä¿å­˜æµç¨‹
1. **模拟结果保存**:
```cpp
void MainWindow::onSimulationCompleted() {
    // 1. å‡†å¤‡æ¨¡æ‹Ÿä¿¡æ¯
    SimulationInfo simInfo = prepareSimulationInfo();
    // 2. èŽ·å–æœ€ç»ˆçŠ¶æ€
    const SystemState& finalState = plantModel->getState();
    // 3. ä¿å­˜åˆ°æœåС噍
    dataManager->saveSimulationResult(simInfo, finalState);
}
```
## 5.4 ç³»ç»Ÿç‰¹ç‚¹
1. **分层设计**:
   - ç‰©ç†è®¡ç®—与控制算法分离
   - å­ç³»ç»ŸæŽ§åˆ¶ä¸Žåè°ƒæŽ§åˆ¶åˆ†ç¦»
   - æ•°æ®é€šä¿¡ä¸Žä¸šåŠ¡é€»è¾‘åˆ†ç¦»
2. **模块化结构**:
   - å„组件职责明确
   - æŽ¥å£å®šä¹‰æ¸…æ™°
   - ä¾¿äºŽç»´æŠ¤å’Œæ‰©å±•
3. **数据流向清晰**:
   - æŽ§åˆ¶æŒ‡ä»¤ï¼šController â†’ Model
   - çŠ¶æ€åé¦ˆï¼šModel â†’ Controller
   - æ•°æ®å­˜å‚¨ï¼šModel â†’ DataManager â†’ Server
4. **协调机制完善**:
   - ç»Ÿä¸€çš„æŽ§åˆ¶å‘¨æœŸ
   - å®Œæ•´çš„状态同步
   - å¯é çš„异常处理
## 5.5 åŽç»­ä¼˜åŒ–方向
1. **性能优化**:
   - ä¼˜åŒ–物理计算效率
   - æ”¹è¿›æ•°æ®é€šä¿¡æœºåˆ¶
   - æé«˜æŽ§åˆ¶å“åº”速度
2. **功能扩展**:
   - æ·»åŠ æ›´å¤šç‰©ç†æ¨¡åž‹
   - å®žçŽ°é«˜çº§æŽ§åˆ¶ç®—æ³•
   - å¢žå¼ºæ•°æ®åˆ†æžèƒ½åŠ›
3. **可靠性提升**:
   - å®Œå–„异常处理
   - å¢žåŠ çŠ¶æ€éªŒè¯
   - ä¼˜åŒ–数据备份