项目概述
本项目是稳格科技为半导体工艺设备开发并交付的一套 Windows 上位机软件。系统基于 Qt/C++,连接 10 路温控器、针阀、真空计、挡板控制器和 Galaxy 工业相机,并使用 SQLite 保存设备样本、命令事件和相机帧元数据,覆盖设备监控、参数读写、图像采集、数据记录与工艺脚本执行。
项目以可部署、可追溯和现场安全为交付目标,完成上位机应用开发、设备协议集成、数据链路设计、Windows x64 Release 构建和安装包封装。研发与交付期间持续进行日志分析、性能优化和回归测试,并建设独立 v2 架构验证线,用于降低多串口、相机、数据库和脚本并发风险。持续优化属于研发质量保障过程,不是本案例的项目定位。
系统范围与技术栈
| 模块 | 技术或设备 | 本次工作 |
|---|---|---|
| 上位机 | Windows 10/11 x64、Qt 5.12.12、C++、MSVC | 应用开发、设备集成、持续测试、Release 构建与安装包交付 |
| 温控 | 10 路 Modbus RTU、9600 baud | 缩短读帧、串行事务、写应答和 SP 回读 |
| 针阀与挡板 | EI-BISYNCH、设备自定义响应 | 协议解析、ACK/NAK、状态校验 |
| 工业相机 | Galaxy SDK、125 ms 基线曝光 | 最新帧调度、ACK 修复、采集与存储看门狗 |
| 数据与脚本 | SQLite、JPEG、工艺脚本 | 单写入路径、时间戳拆分、无硬件模拟和失败边界 |
研发测试与持续迭代
研发测试阶段对约 8.89 小时的历史日志和数据库进行了只读分析。COM5 记录过 5168 次接收缓冲区清理,10 台温控器的有效更新时间也低于目标周期。结合代码路径确认,高频轮询、GUI 调度、数据库批次和串口等待窗口需要协同设计。这些数据用于优化轮询范围、串口事务队列和应答归属。
同机相机记录提供了另一组研发对比:历史基线 JPG 写入为 8.006 FPS,迭代版本记录为 3.919 FPS,两组样本均未发现相邻 JPG 内容完全相同。对比帮助团队调整原始帧 ACK、最新帧调度和存储链路。该数据是研发过程证据,不作为已交付版本的最终现场性能承诺。
核心功能开发与工程实现
已交付应用保留客户现场的操作入口、设备配置、数据目录和工艺脚本,并完成多协议设备接入、状态显示、参数读写、相机预览与记录、SQLite 持久化和异常恢复机制。研发过程中的修改均纳入版本记录、备份、构建和安装包校验。
- 温控高频读取只覆盖 PV、SP 和 Working SP,典型响应由约 75 字节减少到约 15 字节。
- Sub 设定温度写入匹配 Modbus
0x06应答,再定向读取 SP;应答或回读不一致时返回失败。 - 相机采用工作线程自驱动和最新帧语义,预览与原始存储分别限制为一个在途帧。
- 温度工程值不再被状态栏和旧控制路径二次除以 10。
Ramp Rate 硬件回读
Ramp Rate 启动值由软件伪造的固定值改为 --,随后读取设备寄存器 0x0023。稳定运行后每 3 秒读取一台设备,10 台温控器约 30 秒完成一轮。Ramp Rate 不并入 PV/SP 高频连续读帧,避免扩大每次响应和占用 9600 baud 总线。
这项实现解决的是“显示值来源”问题:UI 只在收到设备数据后显示数值。现场修改设备参数后的同步效果仍需在 1.0.3 实机运行时核对,页面不把代码实现写成已完成验收。
相机采集与存储链路
预览和存储均采用最新帧策略:GUI 或 JPEG 编码暂时跟不上时,中间帧可以被替换,不允许事件队列持续增长。原始帧 ACK 直接释放原子标志,不再等待相机工作线程完成下一次阻塞取帧。文件名和数据库字段记录真实采集时间,保存开始和完成时间单独记录,避免用合成时间戳推算帧率。
1.0.3 增加两类看门狗:相机已打开但连续 3 秒没有原始帧时关闭并重新打开,重启请求设置 10 秒冷却;存储任务占用或最后持久化超过 3 秒时解除卡死状态并使用最新帧重试。看门狗用于恢复静默停顿,不替代对驱动、USB 链路、磁盘吞吐和数据库错误的现场诊断。
架构验证与持续演进
在已交付 1.0.3 版本之外,团队使用独立源码目录、AppId 和安装目录建设 v2 架构验证线,用于验证串口所有权、事务优先级、数据库单写入、相机线程解耦和脚本状态机。该验证线服务于后续持续优化,不覆盖已交付应用及其现场数据。
SQLite 只保留一个写连接,设备样本与相机元数据按时间或批量阈值统一提交;历史查询使用独立只读连接。相机采集、预览和 JPEG 记录分线程。脚本由短步骤状态机推进,实际设备命令经统一控制总线执行,任一应答或目标值回读失败即停止。
Windows 构建、封装与软件交付
已交付版本 1.0.3 使用 CMake、MSVC Release x64 和 Inno Setup 6.7.3 构建。Release 可执行文件为 1,727,488 字节;安装暂存目录包含 78 个文件、总计 66,292,772 字节。Galaxy SDK、Qt、SQLite 驱动、VC Runtime 和设备配置均纳入封装,未包含 Qt Debug DLL。
安装包版本为 1.0.3.20260728,大小 19,884,961 字节。安装包及补丁归档均保留完整 SHA-256。安装包未做 Authenticode 签名,Windows 可能显示未知发布者提示;这属于当前交付限制。
验证证据与边界
| 验证项 | 记录结果 | 适用边界 |
|---|---|---|
| 研发日志分析 | 8.89 小时日志;COM5 缓冲清空 5168 次 | 用于优化串口轮询与事务设计 |
| 历史相机对比 | 历史基线 8.006 FPS;开发迭代记录 3.919 FPS | 用于验证 ACK 与存储链路,不作为最终现场指标 |
| 交付版 Release | Windows x64 构建通过;6 项静态断言通过 | 编译与代码路径校验,不等于硬件功能验收 |
| 交付分支 CTest | 返回码 0,但输出 No tests were found | 明确记录为没有自动化测试覆盖 |
| v2 测试程序 | 全量 Debug 构建通过;CTest 1/1 通过,覆盖 11 类无硬件检查 | 协议、状态、脚本和存储检查;实机未验证 |
| 现场硬件 | 软件已交付;连接设备测试按现场计划执行 | Ramp Rate、相机恢复、Sub 写入和 8 小时运行按现场计划验收 |
现场集成与验收安排
软件开发、Release 构建和安装包交付已经完成。由于上位机启动后可能连接串口、相机并发送控制命令,真实设备联调仍需由现场人员确认安全状态,并按“只监控、单设备命令、相机、针阀与挡板、脚本、联合运行”的顺序执行。软件交付完成与现场设备验收采用不同的记录口径。
- 监控 30 分钟,统计每台温控器的采样间隔、超时率和最大间断。
- 使用安全目标多次写入 Sub,逐次核对
0x06应答、SP 回读、设备面板和 PV。 - 固定曝光、分辨率和磁盘目录,记录采集 FPS、保存 FPS、跳帧和端到端延迟。
- 断开并恢复相机链路,核对看门狗日志及预览、存储恢复。
- 完成 8 小时联合记录后,再决定是否替换旧版程序。
项目交付方法与应用价值
该项目形成了一套面向工业 Windows 上位机开发的交付方法:先冻结设备协议、串口拓扑、数据口径和安全边界,再完成应用开发、协议集成、数据记录、安装包和回滚设计,并通过日志、数据库、无硬件测试和现场计划持续验证。该方法可用于半导体设备、真空系统、温控设备、工业相机、多串口采集、实验设备和工艺脚本控制。
类似项目的前期输入
技术评估通常需要设备协议、串口拓扑、寄存器表、相机 SDK 与样例、现有源码和构建环境、历史日志与数据库、现场安全边界、当前版本回滚方式,以及可量化的采样周期、命令成功条件、帧率、延迟和连续运行指标。缺少实机窗口时,可以先完成静态诊断、无硬件测试、安装包校验和验收方案,但不能替代现场验收。
常见问题
该上位机是否由稳格科技完成开发和交付?
是。稳格科技完成了 Windows Qt 上位机的设备协议集成、界面与数据链路开发、Release 构建和安装包交付。1.0.3 是已交付软件版本;独立 v2 验证线用于后续架构测试和持续演进。
为什么不通过远程 SSH 直接启动新版本?
程序启动后会连接设备并可能发送控制命令。没有现场人员确认安全状态时启动,会占用相机或串口并带来设备动作风险,因此只完成构建、封装和静态检查。
如何理解研发测试中的 8.006 FPS 与 3.919 FPS?
两组数据来自同一计算机上的历史研发记录,用于比较相机 ACK 调度和存储链路,不作为已交付版本的最终现场帧率。最终性能应按固定曝光、分辨率、磁盘目录和连续运行时长进行现场测量。
软件交付是否包含测试?
包含。交付线完成 Release 构建、安装包依赖检查、静态断言和历史数据回归分析;v2 测试程序通过 CTest 1/1,并覆盖 11 类无硬件协议、状态、脚本和存储检查。真实设备联调和长时间运行按现场验收计划另行记录。
交付如何保护现场数据和配置?
修改前保留源码备份和补丁归档,安装器保留数据目录、脚本和已有设备配置,v2 使用独立 AppId 和安装目录。是否切换版本由现场验收结果决定。
在线咨询
电话咨询
微信咨询
回到顶部