# 使用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. **可靠性提升**:
   - 完善异常处理
   - 增加状态验证
   - 优化数据备份