时间(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]]。
graph TD
A[用户界面层] --> B[中央协调控制器]
B --> C[子系统控制器]
B --> D[物理模型]
C --> D
B --> E[数据管理器]
D --> E
E --> F[服务器]
// 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
负责系统与服务器之间的数据通信:
关键接口:
```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);
};
```
实现电厂物理过程的模拟计算:
关键接口:
```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);
};
```
实现各子系统的控制算法:
汽轮机控制器(TurbineController):cpp class TurbineController { public: void update(const TurbineState& state); void setTargetPower(double power); double getValvePosition() const; };
燃烧控制器(CombustionController):cpp class CombustionController { public: void update(const CombustionState& state); void setPressureSetpoint(double pressure); double getFuelRate() const; double getAirDamper() const; };
汽水控制器(SteamWaterController):cpp class SteamWaterController { public: void update(const SteamWaterState& state); double getDesuperheaterValve() const; };
给水控制器(FeedwaterController):cpp class FeedwaterController { public: void update(const FeedwaterState& state); void setFlowSetpoint(double flow); double getPumpSpeed() const; double getOutletValve() const; };
协调各子系统的控制过程:
关键接口:
```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();
};
```
系统初始化:
```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();
}
```
功率提升过程:
```cpp
void CentralCoordinationController::controlLoop() {
// 1. 获取当前状态
const SystemState& state = plantModel->getState();
// 2. 更新各子系统控制器
updateControllers(state);
// 3. 收集控制输出
ControlInputs inputs = collectControlInputs();
// 4. 更新物理模型
plantModel->updateState(inputs, deltaTime);
}
```
模拟结果保存:
```cpp
void MainWindow::onSimulationCompleted() {
// 1. 准备模拟信息
SimulationInfo simInfo = prepareSimulationInfo();
// 2. 获取最终状态
const SystemState& finalState = plantModel->getState();
// 3. 保存到服务器
dataManager->saveSimulationResult(simInfo, finalState);
}
```