2. 验收标准体系

在ControlLogix项目里,验收争议很少来自“PLC能不能跑”,而来自“当初到底承诺了什么、用什么证明做到了”。合同、URS(用户需求说明)和功能规格书(FS)是三层不同粒度的需求来源:合同规定商务与交付边界,URS描述用户对产能、质量、安全、合规的期望,FS则把期望翻译成控制系统可实现的功能与接口。验收标准体系的任务,就是把这三层文本转成可测试的验收指标,并用需求追溯矩阵(RTM)保证每条需求都有来源、有实现、有验证、有证据。

一、三层需求文档的提取重点

合同通常不写“AI-101量程0~10 bar”,但会写“批次记录保存不少于5年”“系统可用率不低于99.5%”“满足FDA 21 CFR Part 11电子记录要求”。从合同提取的是约束型指标:交付范围、性能上限、合规条款、验收里程碑和罚则触发条件。URS提取的是用户可感知指标:例如“操作员在3步内完成配方切换”“报警响应时间不超过2 s”“配方下载失败时不得影响正在运行的批次”。FS提取的是可测技术指标:I/O点表、控制回路扫描周期、联锁逻辑真值表、HMI画面跳转关系、报警优先级与死区、通信超时与重试次数。

提取时建议逐条标注四类属性:需求编号、来源文档与条款号、验收方法、证据形式。验收方法只有四种:检查(I)、分析(A)、演示(D)、测试(T)。例如“支持中文报警文本”用检查;“扫描周期≤50 ms”用测试;“故障时安全停车”用演示加测试;“满足21 CFR Part 11”用检查加分析。证据形式对应为:截图/配置导出、计算书、见证记录、测试报告与趋势曲线。

二、把模糊需求改写成可测试指标

URS里常见的“系统应稳定可靠”“操作应简便”无法直接验收。改写方法是补上对象、条件、阈值、判定方式。例如把“报警应及时”改写为:“当DI-205由0变1后,控制器在100 ms内产生报警,HMI在500 ms内显示,报警记录时间戳与控制器时间偏差≤1 s;用信号发生器触发10次,10次均满足。”这样一条指标就同时具备了测试步骤和通过判据。

对于ControlLogix项目,尤其要区分三类指标:逻辑正确性(联锁条件、互锁、许可条件)、时间性能(扫描周期、响应时间、超时重试)、数据完整性(配方版本、批次记录、审计追踪)。逻辑正确性用真值表或测试用例覆盖;时间性能用趋势或示波器测量;数据完整性用导出记录与数据库比对。

建议在FS评审阶段就为每条需求分配唯一编号,格式如“URS-PRC-012”“FS-ALM-007”,后续RTM、测试脚本、SAT记录全部引用同一编号,避免验收时靠记忆对号。

三、需求追溯矩阵的结构与填写

RTM不是一张只写“需求—测试”的两列表,而应至少包含:需求编号、需求描述、来源文档及条款、优先级、实现载体(程序例程/AOI/画面/报警/通信)、验证方法、测试用例编号、证据文件、验证状态、偏差备注。矩阵的价值在于双向追溯:正向从需求找到实现与测试,反向从一条测试失败定位到受影响的需求和合同条款。

下面这张图展示了一条典型需求的追溯链:合同条款→URS需求→FS功能→ControlLogix实现→测试用例→证据与状态。图中同时标出“未覆盖需求”和“无来源测试”两种常见缺口,便于在验收前自查。

需求追溯矩阵(RTM)追溯链示意 合同 → URS → FS → ControlLogix实现 → 测试用例 → 证据与状态 合同 CTR-4.2 批次记录保存≥5年 URS URS-DATA-005 批次数据可导出审计 功能规格书 FS-DATA-012 Logix Historian存储 ControlLogix实现 AOI_BatchLog / FTLinx L81E + Historian SE 测试用例 TC-DATA-012 导出5年数据并比对 证据与验证状态 导出CSV + 审计追踪截图 + SAT记录 · 状态:通过 缺口一:需求未覆盖 URS-SAF-009 要求急停后200 ms内切断输出, 但FS与测试用例中均无对应条目。 处理:补FS功能、补TC、补证据,再进入SAT。 判定:该需求状态为“未验证”,不得签署验收。 缺口二:测试无来源 TC-COM-021 测试了“Modbus TCP重连3次”, 但合同、URS、FS均未提出该要求。 处理:确认是否为额外增强,若是则补需求来源; 若否则从验收范围移除,避免范围蔓延。 双向追溯:正向查“需求是否都有测试”,反向查“测试是否都有需求来源”

四、建立RTM的实际操作过程

第一步,建立统一编号池。把合同条款、URS条目、FS功能分别导入一张Excel或需求管理表,字段包括:编号、原文、来源、优先级、验收方法、责任人。第二步,做“需求—功能”映射:每条URS至少对应一条FS功能,每条FS功能至少对应一个程序例程、AOI、画面或报警配置。第三步,做“功能—测试”映射:每个实现载体至少对应一个测试用例,测试用例必须写明前置条件、操作步骤、期望结果、实测结果和判定。第四步,做双向检查:筛选出“无测试的需求”和“无需求的测试”,前者必须补齐,后者必须确认来源或删除。

以“配方下载失败不得影响运行批次”为例,FS中对应功能是“配方下载采用双缓冲,下载到备用区校验通过后再切换”。实现载体是ControlLogix中的配方管理AOI与用户自定义数据类型(UDT)。测试用例设计为:在批次运行中触发一次配方下载,人为制造校验失败(如修改校验和),观察当前批次继续运行、报警产生、备用区未切换。证据是趋势曲线、报警记录和AOI状态字截图。该用例通过后,RTM中该需求状态置为“已验证”,并关联证据文件编号。

五、验收指标的可测试化检查清单

在SAT之前,建议对每条指标做一次快速检查:是否可观察(有HMI、趋势、日志或测量点)?是否可重复(同样输入得到同样判定)?是否有明确阈值(时间、数量、状态)?是否有边界条件(最小/最大、异常、断电恢复)?是否与合同或法规条款可关联?如果任一答案为否,该指标还不能直接用于验收,需要回到FS补充定义。

RTM不是一次性文档。设计变更、程序修改、报警阈值调整后,必须同步更新受影响的需求、测试用例和证据状态,否则验收时会出现“程序已改、测试未改、证据过期”的典型问题。

最终交付的RTM应能回答三个问题:合同里的每条承诺由哪条URS承接、由哪个ControlLogix功能实现、由哪个测试用例证明;每条测试失败会影响哪些需求和合同条款;当前还有哪些需求处于“未实现、未测试、测试失败、待复测”状态。把这三个问题回答清楚,验收标准体系才算真正建立起来,后续的FAT、SAT和文档交付才有可依赖的基准。