项目概述
将半导体设备上位机UI原型转换为完整的Qt/C++可运行应用程序。
技术栈:
- Qt 6.x (Qt Widgets, Qt Charts, Qt SQL)
- C++17
- QCustomPlot (图表)
- SQLite (数据存储)
- CMake 构建系统
数据方案:
- 模拟数据生成器:200ms刷新频率,模拟传感器波动
- SQLite数据库:存储配方、运行记录、报警历史、审计日志
项目结构
semi_tool/
├── CMakeLists.txt
├── main.cpp
├── SemiTool.pro
├── include/
│ ├── mainwindow.h
│ ├── loginwindow.h
│ ├── dashboardpage.h
│ ├── monitorpage.h
│ ├── recipepage.h
│ ├── alarmpage.h
│ ├── historypage.h
│ ├── runcontrolpage.h
│ ├── exportpage.h
│ └── common/
│ ├── navigator.h
│ ├── kpiwidget.h
│ ├── sensorwidget.h
│ ├── statemachinewidget.h
│ └── chartwidget.h
├── src/
│ ├── main.cpp
│ ├── mainwindow.cpp
│ ├── loginwindow.cpp
│ ├── dashboardpage.cpp
│ ├── monitorpage.cpp
│ ├── recipepage.cpp
│ ├── alarmpage.cpp
│ ├── historypage.cpp
│ ├── runcontrolpage.cpp
│ ├── exportpage.cpp
│ └── common/
│ ├── navigator.cpp
│ ├── kpiwidget.cpp
│ ├── sensorwidget.cpp
│ ├── statemachinewidget.cpp
│ └── chartwidget.cpp
├── data/
│ └── recipes.json
└── docs/
└── 软件开发文档.md
模块详细设计
1. 登录窗口 (LoginWindow)
- UI组件: 用户名输入、密码输入、权限级别下拉
- 功能: 三级权限(Operator/Engineer/Admin)、登录验证、审计日志写入
- 信号:
loginSuccess(UserInfo)
2. 主窗口 (MainWindow)
- 布局: 顶部导航栏 + 中心内容区
- 导航: 流程图入口 + 各功能模块按钮
- 功能: 页面切换、状态栏显示
3. 腔室总览仪表盘 (DashboardPage)
- KPI卡片: 腔室压力、温度、RF功率、工艺进度
- 腔室示意图: SVG风格腔室图形
- 快捷操作: 启动/暂停/停止按钮
- 实时曲线: 温度/压力/RF功率迷你图
4. 工艺监控页 (MonitorPage)
- 状态机可视化: 6步工艺流程指示器
- 实时曲线图: QCustomPlot 多曲线显示
- 传感器表格: 实时数据 + 偏差指示
- 报警状态: 当前活跃报警列表
5. 配方管理页 (RecipePage)
- 配方列表: 侧边栏配方库
- 步骤表格: 可编辑的工艺参数表
- 曲线预览: 配方参数曲线
- 操作: 新建/编辑/保存/导出
6. 报警管理页 (AlarmPage)
- 统计面板: CRITICAL/WARNING/INFO 数量
- 活跃报警: 带闪烁效果的报警卡片
- 阈值配置: 可编辑的报警参数表
- 历史记录: 报警事件查询表格
7. 历史数据页 (HistoryPage)
- 查询条件: 时间范围、配方、结果筛选
- Run记录表: 分页显示的工艺记录
- 趋势图: 历史良率/膜厚趋势
8. 运行控制页 (RunControlPage)
- 状态机: 当前工艺步骤高亮
- 控制按钮: 启动/暂停/中止/跳过
- 运行日志: 实时滚动的日志窗口
- 核心参数: 大字体参数显示
9. 数据导出页 (ExportPage)
- 单Run导出: CSV/Excel/PDF 格式选择
- 批量报表: 日/周/月报生成
- GMP报告: 审计追踪、权限变更等
通用组件设计
KPI卡片 (KPIWidget)
属性:标题、数值、单位、设定值、偏差百分比
状态:正常(绿)/警告(黄)/异常(红)
传感器行 (SensorWidget)
属性:传感器名称、当前值、单位、范围条
自动刷新:200ms
状态机 (StateMachineWidget)
节点状态:已完成(绿)/当前(蓝+发光)/待执行(灰)
箭头连接线
曲线图 (ChartWidget)
封装 QCustomPlot
支持:温度/压力/功率多曲线
刷新:实时数据追加
实施计划
阶段1:项目框架 (Day 1)
-
\] 创建 CMakeLists.txt 项目配置
-
\] 创建 MainWindow 主框架
阶段2:登录模块 (Day 1)
-
\] LoginWindow 登录窗口
-
\] 权限级别控制
阶段3:核心页面 (Day 2-3)
-
\] DashboardPage 仪表盘 + KPI组件
-
\] RunControlPage 运行控制 + 状态机
-
\] RecipePage 配方管理 + 表格编辑
-
\] HistoryPage 历史查询 + 分页
-
\] ExportPage 导出页面
-
\] 报表生成
-
\] 软件架构文档
-
\] 使用说明文档
关键实现细节
1. 模拟数据生成
class SimulatedDataGenerator : public QObject {
// 每200ms生成模拟传感器数据
// 温度:340-360°C 范围波动
// 压力:10-15 mTorr 范围波动
// RF功率:500W ±5%
};
2. 状态机模拟
enum ProcessState {
Idle, // 空闲
Pumping, // 抽真空
Heating, // 加热
Processing, // 主工艺
Cooling, // 冷却
Venting, // 充气
Complete // 完成
};
3. 配方数据模型
struct RecipeStep {
int stepNumber;
QString name;
int duration; // 秒
double temperature; // °C
double pressure; // mTorr
double rfPower; // W
double gasFlow1; // sccm SiH4
double gasFlow2; // sccm NH3
};
struct Recipe {
QString name;
QString version;
QList<RecipeStep> steps;
// ...
};
编译与运行
# 创建构建目录
mkdir build && cd build
# 配置 CMake
cmake .. -G "MinGW Makefiles"
# 编译
cmake --build .
# 运行
./SemiTool.exe
依赖项
- Qt 6.x (Core, Widgets, Charts, SQL)
- QCustomPlot (用于高性能图表)
- CMake 3.16+
- C++17 编译器
验收标准
- ✅ 程序可正常编译运行
- ✅ 登录验证功能正常
- ✅ 8个功能页面完整呈现
- ✅ 实时曲线动态更新
- ✅ 状态机模拟运行
- ✅ 配方编辑保存功能
- ✅ 报警闪烁效果
- ✅ 数据导出功能
- ✅ 完整的开发文档