一、项目全景与需求分析

大家好,我是老张。做上位机开发十几年了,经手的电池化成项目少说也有七八个。今天咱们聊聊这个课程的第一章——项目全景与需求分析。

说实话,很多新手一上来就急着写代码,结果做到一半发现需求没搞清楚,推倒重来。我早期也犯过这个错。所以这一章,咱们先把地基打牢。

1.1 电池化成工艺简介

电池化成,说白了就是给新生产的锂电池做「激活」。你想想看,电池从生产线下来,里面的电极材料还没完全活化,直接给客户用肯定不行。

化成工艺一般分三步:

  • 静置:让电池内部温度、电压稳定下来
  • 充放电:按特定曲线进行小电流充放,形成SEI膜
  • 老化:模拟使用环境,筛选不良品

我在项目中遇到过最头疼的事,就是客户突然说「工艺参数要改」。嗯,所以上位机必须支持灵活的配方配置,不能写死。

核心要点:化成工艺的核心是「精确控制」和「数据采集」。电压精度要到mV级,电流精度到mA级,采样频率至少1Hz。

1.2 上位机系统架构

咱们做上位机,不能只盯着界面好看。架构设计才是灵魂。我个人习惯用分层架构,大概分四层:

层级 职责 技术选型(我常用的)
UI层 数据显示、操作交互 WPF / WinForms
业务逻辑层 工艺控制、数据校验 C# 类库
通信层 与PLC/下位机交互 Modbus TCP / OPC UA
数据层 存储、查询、报表 SQLite / SQL Server

为什么这么分?因为好维护。有一次客户要求把通信协议从Modbus改成CAN,我只需要改通信层,UI和业务逻辑完全不动。

我的小技巧:通信层一定要做「心跳检测」。我曾经遇到过下位机死机了,上位机还傻傻显示「运行中」,差点出事故。

1.3 功能需求分析

功能需求,就是「系统要干什么」。我习惯先列核心功能,再补充辅助功能。

1.3.1 核心功能

  • 通道控制:每个通道独立控制充放电,支持批量启停
  • 工艺编辑:支持多步骤、多条件跳转的配方编辑
  • 实时监控:电压、电流、温度、容量实时显示
  • 数据记录:每秒钟记录一次数据,支持断点续传
  • 报警管理:过压、欠压、过温等异常报警

1.3.2 辅助功能

  • 用户权限:操作员、工程师、管理员三级权限
  • 报表导出:支持Excel、PDF格式
  • 日志记录:操作日志、系统日志、错误日志
  • 远程监控:通过Web或App查看状态

避坑指南:我曾经遇到一个项目,客户说「先做核心功能,辅助功能后面再加」。结果验收时客户说「没有报表功能不行」。所以,需求文档里一定要把辅助功能也写清楚,哪怕优先级低。

1.4 非功能需求分析

非功能需求,就是「系统要运行得多好」。很多新手只关注功能,忽略了非功能需求,结果系统上线后各种问题。

1.4.1 性能需求

  • 响应时间:界面操作响应小于500ms
  • 并发能力:支持同时监控512个通道
  • 数据吞吐:每秒处理1000条以上数据记录

1.4.2 可靠性需求

  • 系统可用性:7×24小时连续运行
  • 数据完整性:断电后数据不丢失
  • 故障恢复:系统崩溃后30秒内自动重启

1.4.3 安全性需求

  • 通信加密:上位机与下位机通信采用AES加密
  • 数据备份:每天自动备份数据库
  • 防误操作:关键操作需要二次确认

经验之谈:非功能需求最好量化。别写「系统要稳定」,要写「系统连续运行7天不重启」。这样测试时才有标准。

1.5 需求文档怎么写

最后聊聊需求文档。我个人习惯用「用例图+功能列表+验收标准」的组合。

举个例子:

用例名称:启动化成工艺
前置条件:设备已连接,配方已加载
主流程:
  1. 操作员点击「启动」按钮
  2. 系统校验参数是否合法
  3. 系统下发启动指令到下位机
  4. 系统显示「运行中」状态
后置条件:所有通道开始执行工艺
验收标准:点击启动后2秒内,下位机收到指令

这样写的好处是,开发和测试都能看懂,客户也能确认。

我的习惯:需求文档写完后,我会找客户当面过一遍。别发邮件,一定要当面。因为很多问题当面聊才能发现。

小结

这一章咱们聊了电池化成的工艺背景、上位机的分层架构、功能需求和非功能需求。说白了,就是搞清楚「做什么」和「做多好」。下一章咱们开始动手搭开发环境,到时候我会分享一些我常用的工具和配置。

嗯,今天就到这儿。有问题欢迎交流。