2. 通道扫描基础

在进入大规模通道扫描的工程实现之前,必须先建立一套统一的术语坐标系。很多现场问题并非算法错误,而是团队对“通道”“扫描”“并发”“吞吐量”“延迟”这几个词的理解不一致:有人把“扫描周期”当成“单通道采样时间”,有人把“并发数”直接等同于“吞吐量”,最终导致容量评估偏差数倍。本节从物理对象、时间行为、资源约束三个层面,把这些核心术语讲清楚,并给出它们之间的定量关系。

一、核心术语的物理含义

通道(Channel)是扫描系统中最小的可寻址测量单元。它通常对应一个物理接线端子、一路传感器输入、一个继电器输出或一个寄存器地址。通道具有三个关键属性:地址(如何选中它)、量程与类型(电压、电流、电阻、热电偶等)、以及建立时间(从选中到读数稳定所需的时间)。在大规模系统中,通道数量可能从几十路扩展到数万路,通道的组织方式(扁平列表、分组、矩阵)直接决定扫描效率。

扫描(Scan)是指按预定顺序遍历一组通道并完成测量或激励的过程。一次完整遍历称为一个扫描周期(Scan Cycle)。扫描的本质是“时间上的串行化”:无论通道有多少,同一时刻通常只有一个通道被接入测量前端。扫描顺序、扫描列表的划分、以及是否支持跳过无效通道,都会影响实际周期长度。

并发(Concurrency)在通道扫描语境下有两层含义。第一层是设备级并发:多个扫描设备或采集卡同时工作,各自独立扫描自己的通道子集。第二层是流水线级并发:在单个设备内部,将“通道切换”“信号建立”“ADC 转换”“数据搬运”拆成流水线阶段,使不同通道的不同阶段重叠执行。真正的并发不是让多个通道同时占用同一个 ADC,而是让等待时间被其他工作填满。

吞吐量(Throughput)是单位时间内完成的测量次数或扫描周期数,常用单位是 samples/s 或 cycles/s。它衡量的是“系统整体交付能力”。延迟(Latency)则是从发出扫描指令到获得该通道有效数据之间的时间,衡量的是“单个结果的响应速度”。两者并不等价:高吞吐量系统可能单次延迟很大(批量缓冲),低延迟系统也可能吞吐量有限(逐点实时返回)。

二、基本工作原理:从选中到入库的信号链

一次通道扫描的完整链路可以拆成六个阶段:寻址 → 切换 → 建立 → 转换 → 搬运 → 入库。寻址阶段由扫描引擎决定下一个通道号;切换阶段由多路复用器或继电器矩阵完成物理连接;建立阶段等待信号在寄生电容和线缆上稳定;转换阶段由 ADC 完成量化;搬运阶段把结果写入缓冲区或 DMA;入库阶段由上位机或边缘节点写入时序数据库。任何一个阶段成为瓶颈,都会拉低整体吞吐量。

通道扫描信号链:寻址 → 切换 → 建立 → 转换 → 搬运 → 入库 ① 寻址 扫描列表 / 通道号 ② 切换 MUX / 继电器矩阵 ③ 建立 RC 稳定 / 滤波 ④ 转换 ADC 量化 ⑤ 搬运 DMA / 缓冲区 ⑥ 入库 时序数据库 单通道时间构成(延迟来源) 寻址 t_addr 切换 t_switch 建立 t_settle 转换 t_conv 搬运与入库 t_transfer 单通道延迟 ≈ t_addr + t_switch + t_settle + t_conv + t_transfer 吞吐量与并发的关系 吞吐量 ≈ 并发通道数 ÷ 单通道占用时间 (流水线重叠后接近此上限) 延迟 ≈ 单通道链路时间 + 排队等待 (批量越大,排队延迟越高) 瓶颈 = max(切换、建立、转换、搬运) (最慢阶段决定系统上限)

三、定量关系与容量估算

假设单通道从选中到数据可用需要 T_ch 时间,系统采用 N 路并发流水线,则理论吞吐量上限为 N / T_ch。但实际吞吐量还要乘以效率因子 η(通常 0.6~0.9),因为存在扫描列表切换、总线仲裁、缓冲区满等开销。延迟方面,若采用批量返回模式,第 k 个通道的延迟约为 k × T_ch / N + T_queue。这解释了一个常见现象:把并发数从 8 提高到 16,吞吐量可能只提升 40%,因为建立时间和切换时间并未被压缩。

术语 符号 典型单位 决定因素 常见误区
通道 CH 路 / 点 接线、量程、地址 把逻辑通道数当成物理端子数
扫描周期 T_scan ms / s 通道数 × 单通道时间 忽略建立时间,只算 ADC 时间
并发 N 路 前端资源、DMA 通道 认为并发数可无限线性扩展
吞吐量 Q samples/s 瓶颈阶段与效率因子 把标称采样率当成实际吞吐量
延迟 L ms 链路时间 + 排队 认为高吞吐一定低延迟

四、案例场景:64 路热电偶扫描

某现场使用 64 路热电偶,要求 1 秒内完成一轮扫描。单通道建立时间 8 ms,切换时间 1 ms,ADC 转换 0.2 ms,搬运 0.1 ms。若完全串行,单通道约 9.3 ms,64 路需要约 595 ms,看似满足。但实际还要加上冷端补偿通道、断线检测和两次重复测量,实际周期接近 900 ms,余量很小。若把并发流水线设为 4 级,让第 2 路在建立时第 1 路已进入转换,则周期可压缩到约 300 ms,余量充足。这个案例说明:扫描周期不是简单相加,而是由最慢阶段和流水线深度共同决定。

# 扫描配置示例(伪代码)
scan_list:
  - {ch: 0..63, type: TC_K, settle_ms: 8, repeat: 2}
  - {ch: 64, type: CJC, settle_ms: 2}
pipeline:
  stages: 4          # 寻址/切换/建立/转换 重叠
  dma_buffer: 256
  batch_return: true
timing_budget:
  target_cycle_ms: 1000
  measured_cycle_ms: 300
  efficiency: 0.82

实用估算口诀:先找最慢阶段,再算串行总时间,最后用流水线深度去除以效率因子。不要用 ADC 标称速率直接推算整机吞吐量。

五、常见误区与复盘

  • 误区一:并发数等于吞吐量。并发只是提供了重叠机会,若建立时间远大于转换时间,增加并发收益有限。
  • 误区二:忽略建立时间。高阻传感器、长线缆、多路复用器寄生电容都会显著拉长建立时间,这是现场最常见的“扫描变慢”原因。
  • 误区三:把延迟和吞吐量混为一谈。批量采集适合高吞吐,实时控制需要低延迟,两者需要不同的缓冲策略。
  • 误区四:扫描列表顺序随意。把建立时间长的通道集中排列,可以减少切换次数,提升整体效率。

当扫描周期突然变长时,优先检查三件事:是否有通道断线导致建立时间异常、DMA 缓冲区是否溢出、以及扫描列表是否被意外扩展。多数“性能下降”并非硬件故障,而是配置与物理层变化。

理解这些术语和信号链之后,后续的扫描引擎设计、并发调度和数据管理才有共同的度量基础。通道是对象,扫描是行为,并发是手段,吞吐量和延迟是结果指标;四者之间的关系可以用一句话概括:在瓶颈阶段约束下,用并发把等待时间填满,从而在吞吐量和延迟之间取得符合场景的平衡。