From 48cace5fa7f877dbf201bc09a533f7e2e324199c Mon Sep 17 00:00:00 2001 From: Henry Zhang Date: Wed, 1 Jul 2026 16:15:13 +0800 Subject: [PATCH] docs: enrich sensing page with verified academic citations + calibration defect analysis (#113) * docs(superpowers): add sensing-layer slice design and plan * docs(superpowers): add sensing knowledge entries with verified citations * docs(foundations): add verified academic citations to sensing page * docs(superpowers): add sensing calibration defect analysis * docs(superpowers): add sensing-layer slice retrospective --- docs/superpowers/analysis/sensing-defects.md | 56 ++++++ .../analysis/sensing-knowledge-entries.md | 122 ++++++++++++ .../analysis/sensing-slice-retrospective.md | 175 ++++++++++++++++++ .../plans/2026-07-01-sensing-layer-slice.md | 82 ++++++++ .../2026-07-01-sensing-layer-slice-design.md | 74 ++++++++ docs/zh/foundations/sensing.md | 17 +- 6 files changed, 520 insertions(+), 6 deletions(-) create mode 100644 docs/superpowers/analysis/sensing-defects.md create mode 100644 docs/superpowers/analysis/sensing-knowledge-entries.md create mode 100644 docs/superpowers/analysis/sensing-slice-retrospective.md create mode 100644 docs/superpowers/plans/2026-07-01-sensing-layer-slice.md create mode 100644 docs/superpowers/specs/2026-07-01-sensing-layer-slice-design.md diff --git a/docs/superpowers/analysis/sensing-defects.md b/docs/superpowers/analysis/sensing-defects.md new file mode 100644 index 000000000..cb2406c0b --- /dev/null +++ b/docs/superpowers/analysis/sensing-defects.md @@ -0,0 +1,56 @@ +# Sensing 切片 Task 3:标定换算链路代码缺陷分析 + +> 目标②。审查 IoT DC3 平台**位号标定换算**链路(`工程值 = 原始值 × multiple + baseValue`,按 `valueDecimal` 保留小数),按协议层同款三分类挑缺陷。结论诚实——标定换算是简单线性变换,缺陷密度显著低于协议层。 + +## 元信息 + +| 字段 | 内容 | +|------|------| +| 切片 | sensing(位号标定换算落点) | +| 审查范围 | `dc3-common-driver` 的标定核心(`TypedValueConverter` / `PointValue` / `ReadPointValue` / `CalculatedPointValue`)、`PointBO` 标定参数、`ArithmeticUtil` 精度工具、gRPC/facade 边界的标定参数搬运 | +| 换算实际位置 | `TypedValueConverter#calculatePointValue`(`dc3-common/dc3-common-driver/.../support/TypedValueConverter.java:94`)→ `linearValue`(同文件 `:160`) | +| 三分类计数 | 真缺陷 **0** / 有意简化 **2** / 技术债 **3** | +| 总体结论 | **标定换算实现简洁稳健,未发现真缺陷**。线性变换全程走 `BigDecimal` 精确算术;null 标定参数有 `Optional.orElse` 默认值兜底;浮点 round 经 JDK shortest-round-trip `toString` 缓解了经典二进制误差。仅发现边界处一处静默截断(技术债)与若干工程取舍 | +| 学术对照 | 条目 4.1(标定定义/量值传递)、4.2(精度/分辨力/漂移指标),见 `sensing-knowledge-entries.md`(verify 状态 `待核`) | + +## 换算链路实读摘要(核对用) + +- 入口:`ReadPointValue#calculate()`(`ReadPointValue.java:73`)→ `TypedValueConverter.calculatePointValue(value, point)`。 +- 参数解析:`PointBO.baseValue/multiple/valueDecimal` 三字段(`PointBO.java:71/76/81`),均为包装类型可空;`calculatePointValue` 用 `Optional.orElse(DEFAULT_*)` 兜底(`TypedValueConverter.java:101-103`),默认 `base=0 / multiple=1 / decimal=6`。 +- 线性算术:`linearValue`(`TypedValueConverter.java:160-173`)——`BigDecimal` 全程精确,按"恒等 / 仅乘 / 仅加 / 乘加"四分支短路(避免无谓运算),最终 `multiple.multiply(value).add(base)`。 +- 类型落盘:BYTE/SHORT/INT/LONG 走 `exactXxx`(范围检查 + 整数性检查 + `xxxValueExact`);FLOAT/DOUBLE 走 `roundedFloat/roundedDouble` → `ArithmeticUtil.round`;STRING/BOOLEAN 不标定。 +- 精度工具:`ArithmeticUtil.round`(`ArithmeticUtil.java:203/216/230`)用 `divide(BigDecimal.ONE, scale, HALF_UP)` 实现 round(HALF_UP),float/double 重载有 `0~7 / 0~16` 的 scale 上界校验。 + +## 三分类缺陷表 + +### 真缺陷(0 条) + +无。诚实评估:标定换算全程 `BigDecimal`、null 参数已兜底、HALF_UP rounding 无系统性 DOWN 截断偏差、类型转换显式抛 `TypeException/OutRangeException` 不静默吞异常。未发现违反最佳实践且有改进空间的真缺陷。 + +### 有意简化(2 条) + +| 编号 | 文件:行 | 主题 | 对照(书/标准) | 描述 | 建议 | +|------|---------|------|--------------|------|------| +| S-1 | `TypedValueConverter.java:160-173` | 仅支持线性标定 | 条目 4.1:标定是"明确输出-输入关系"——关系形式不限,线性只是其一 | 平台只实现 `y = multiple·x + base` 单一线性模型,不支持非线性多项式、查表插值、分段标定(如热电偶/RTD 的分度表)。属合理工程取舍:大部分工业位号线性足够,非线性可由驱动侧或下游处理 | 记录不判错;若未来覆盖温度/流量类传感器,再考虑引入可插拔标定函数 | +| S-2 | `TypedValueConverter.java:50,103` | 默认小数位硬编码 6 | 条目 4.2:分辨力是"检测出的最小变化量" | `DEFAULT_DECIMAL = 6` 对所有未配置位号生效。这是合理默认(覆盖多数浮点位号),但 6 位并非来自任何精度规范,对超高精度或超低位号都不一定贴切 | 记录不判错;文档中提示用户对精度敏感位号显式配 `valueDecimal` | + +### 技术债(3 条) + +| 编号 | 文件:行 | 主题 | 对照(书/标准) | 描述 | 建议 | +|------|---------|------|--------------|------|------| +| D-1 | `FacadeGrpcPointBuilder.java:102` | valueDecimal 静默 byte 截断 | 条目 4.2(精度/分辨力):参数失真直接污染标定结果 | gRPC DTO 的 `valueDecimal` 为 `int`,此处 `(byte) dto.getValueDecimal()` 直接窄化转型,超出 `[-128,127]` 会**静默环绕**(如 200 → -56),不抛异常、不告警。`baseValue/multiple` 同文件走 `BigDecimal.valueOf(double)`(`:100-101`)也有浮点→精确的隐式精度损失,但相对可控 | 加 `if (valueDecimal < -128 || valueDecimal > 127) 抛/告警`;或 DTO 改 `int32` 后在边界显式校验 | +| D-2 | `TypedValueConverter.java:232-238` → `ArithmeticUtil.java:216/230` | 浮点 round 经 `BigDecimal→primitive→String→BigDecimal` 绕行 | 条目 4.2(精度):理想是全程 `BigDecimal` | `roundedFloat/roundedDouble` 先 `bd.floatValue()/doubleValue()`(精确→近似 widening),再丢给 `ArithmeticUtil.round(float/double, scale)`,后者 `Float/Double.toString` 再回 `BigDecimal`。**实测**:因 JDK `toString` 的 shortest-round-trip 特性,常见值(含经典 `2.675`、17 位有效数字)经此绕行后结果与直接 `bd.setScale(scale, HALF_UP)` **一致**,故实际偏差极小、非真缺陷;但代码意图(精确标定)与实现路径(绕道近似类型)不一致,属可读性/隐患债 | 标定核心的 round 直接调 `bd.setScale(scale, HALF_UP)`(或 `ArithmeticUtil` 增 `round(BigDecimal, int)` 重载),跳过 primitive 绕行;动机是"代码表达精确意图"而非"当前算错" | +| D-3 | `ArithmeticUtil.java:203-207` | `divide(BigDecimal.ONE, scale, HALF_UP)` 实现 round 的写法 | — | 用 `x.divide(ONE, scale, HALF_UP)` 达到 round 效果,语义正确但比 `x.setScale(scale, HALF_UP)` 更绕(`setScale` 才是 JDK 为 round 提供的原语)。纯写法债,不影响正确性 | 统一改为 `setScale`;顺手把 `new BigDecimal("1")` 这类魔数提为常量 | + +## 学术对照(关键条目回链) + +- **条目 4.1(标定定义/量值传递)** — 出处:CPS/李同滨等/机械工业出版社·2018/第6章 6.4.4/PDF p308。原文:"传感器的标定是指在明确传感器的输出和输入关系的前提下,利用标准器具对传感器进行标定。" 用于 **S-1**(线性只是输出-输入关系的一种形式)。 +- **条目 4.2(精度/分辨力/漂移)** — 出处:VOL1/范茂军主编/机械工业出版社·2012/第5章 5.1.2/印刷 p118–p119(PDF p125–p126)。原文:"分辨力是指传感器在规定测量范围内可能检测出被测量的最小变化量";"漂移是指在一定的时间间隔内,传感器输出中与被测量无关的、不希望的变化量。" 用于 **S-2 / D-1 / D-2**(精度参数失真与表达)。 +- 两条均 verify 状态 `待核`(见 `sensing-knowledge-entries.md`),引用前应跟随其 verify 结论。 + +## 自检 + +- 表中每条 `文件:行` 均经 Read 实读:`TypedValueConverter.java`(全 347 行)、`PointBO.java`(全 118 行)、`PointValue.java`(全 164 行)、`ReadPointValue.java`(全 97 行)、`CalculatedPointValue.java`(全 54 行)、`ArithmeticUtil.java`(全 237 行)、`FacadeGrpcPointBuilder.java:85-119`、`ArithmeticUtilTest.java`、`ReadPointValueTest.java`。 +- "真缺陷 0" 经实证而非臆断:写 `/tmp/RoundTest*.java` 实跑 `BigDecimal→double→String→BigDecimal` 与直接 `setScale` 对比,覆盖 17 位有效数字、`2.675` tie、float 7 位精度边界等典型坑,均未观察到 round 结果发散——故 D-2 降级为技术债而非真缺陷。 +- 未硬凑真缺陷:标定的简单线性设计如实归入【有意简化】;绕行 round、`divide(ONE)` 写法如实归入【技术债】。 +- 学术条目仅引用 `sensing-knowledge-entries.md` 中已存在的 4.1/4.2,未杜撰新出处;标注其 `待核` 状态。 diff --git a/docs/superpowers/analysis/sensing-knowledge-entries.md b/docs/superpowers/analysis/sensing-knowledge-entries.md new file mode 100644 index 000000000..bedb427a7 --- /dev/null +++ b/docs/superpowers/analysis/sensing-knowledge-entries.md @@ -0,0 +1,122 @@ +# Sensing 切片 Task 1:传感理论知识条目 + +> 供 Task 2 注入 `docs/zh/foundations/sensing.md`。每条页码均来自实读 PDF(Read `pages` + `pdftotext -layout` 抽取逐字核对),状态为"待核"——由独立 verify 子 agent 复核。 +> +> 字段:`概念 | 可引用原句 | 书名/作者/出版社·年份/章节/页码 | 对应 docs 锚点 | verify状态` +> 页码标注:印刷书页码为主,括注 PDF 页码(CPS 电子书无印刷页码,仅标 PDF 页)。 + +## 书源覆盖度与重叠判定 + +| 书源 | 简称 | 覆盖主题 | 取舍 | +|------|------|----------|------| +| 《物联网与传感器技术》范茂军主编·机械工业出版社·2012 | **VOL1** | 传感器定义、性能评价(灵敏度/迟滞/重复性/分辨力/漂移/稳定性/静态误差)、动态特性、标定(准确度传递/动态标定方法) | 取 | +| 同上(vol2 PDF) | VOL2 | 与 vol1 **逐字重复**(同 ISBN/主编/出版社/年份,正文 p150 抽样比对完全一致;md5 不同仅为 PDF 编码差异) | **弃**(避免重复条目) | +| 《物联网之源:信息物理与信息感知基础》李同滨等编著·机械工业出版社·2018 | **CPS** | 信号链组成(敏感/转换/调理/辅助电源)、传感器分类(工作机理/输出信号/结构/电源/用途)、ADC 指标(分辨率/转换速率/量化误差)、标定(定义/量值传递/静态标定条件) | 取 | + +## 来源定位(章节 → PDF 页) + +| 书 | 章节 | PDF 页 | 主题命中 | +|----|------|--------|----------| +| VOL1 | 5.1.1 传感器 | p124(印刷 p117) | 传感器定义(GB/T 7665) | +| VOL1 | 5.1.2 传感器的性能评价与选用原则 | p125–p127(印刷 p118–p120) | 灵敏度/迟滞/重复性/分辨力/分辨率/阈值/稳定性/漂移/静态误差/动态特性/标定 | +| CPS | 4.2 ADC转换电路设计指标 | p190 | 分辨率/转换速率/量化误差/线性度定义 | +| CPS | 6.1 传感器的概念与组成 | p275 | 信号链四要素 | +| CPS | 6.3.1 按工作机理分类 | p278 | 物理量/化学量/生物量传感器 | +| CPS | 6.4.4 传感器的标定 | p308 | 标定定义/量值传递/静态标定条件 | + +--- + +## 主题 1:传感器分类 + +### 条目 1.1 +| 字段 | 内容 | +|------|------| +| 概念 | 传感器按工作机理分类(物理量/化学量/生物量) | +| 可引用原句 | "工作机理分类方法是以传感器敏感元件使用的物理的、化学的、生物的原理、效应等作为分类依据。根据工作原理,一般可将传感器分为物理量、化学量和生物量传感器。" | +| 出处 | CPS / 李同滨等 / 机械工业出版社·2018 / 第6章 传感器基础 · 6.3.1 按工作机理分类 / **PDF p278** | +| 对应 docs 锚点 | sensing.md · 传感器分类 | +| verify状态 | 待核 | + +### 条目 1.2 +| 字段 | 内容 | +|------|------| +| 概念 | 传感器的国家标准定义(敏感元件 + 转换元件) | +| 可引用原句 | "在国家标准 GB / T 7665—2005 《 传感器通用术语》 中, 传感器被定义为 '能感受被测量并按照一定的规律转换成可用输出信号的器件或装置, 通常由敏感元件和转换元件组成。'" | +| 出处 | VOL1 / 范茂军主编 / 机械工业出版社·2012 / 第5章 传感网技术 · 5.1.1 传感器 / **印刷 p117(PDF p124)** | +| 对应 docs 锚点 | sensing.md · 传感器分类(电阻/电容/压电/热电/半导体型) | +| verify状态 | 待核 | + +--- + +## 主题 2:信号链(敏感元件 → 信号调理 → A/D 转换) + +### 条目 2.1 +| 字段 | 内容 | +|------|------| +| 概念 | 传感器组成四要素(敏感元件 / 转换元件 / 信号调理电路 / 辅助电源) | +| 可引用原句 | "敏感元件:直接感受被测量,并输出与被测量具有确定关系的其他量的元件。转换元件:将敏感元件的输出转换为适合传输或后续电路处理的电量输出。信号调理电路:将转换元件输出的信号进行放大、滤波等处理,以便后续处理。辅助电源:为传感器的转换元件、信号调理电路等提供更稳定、纯净的电源。" | +| 出处 | CPS / 李同滨等 / 机械工业出版社·2018 / 第6章 传感器基础 · 6.1 传感器的概念与组成 / 图6.1 传感器组成框图 / **PDF p275** | +| 对应 docs 锚点 | sensing.md · 信号链(敏感元件→信号调理→A/D 转换) | +| verify状态 | 待核 | + +--- + +## 主题 3:A/D 转换(采样率 / 量化位数 / 奈奎斯特定理 / 混叠) + +### 条目 3.1 +| 字段 | 内容 | +|------|------| +| 概念 | ADC 转换电路基本指标(分辨率 / 转换速率 / 量化误差 / 线性度) | +| 可引用原句 | "ADC转换电路的基本指标包括分辨率、转换速率、量化误差、偏移误差、满刻度误差和线性度等。" | +| 出处 | CPS / 李同滨等 / 机械工业出版社·2018 / 第4章 模数转换 · 4.2 ADC转换电路设计指标 / **PDF p190** | +| 对应 docs 锚点 | sensing.md · A/D 转换(采样率/量化位数) | +| verify状态 | 待核 | + +### 条目 3.2 +| 字段 | 内容 | +|------|------| +| 概念 | 分辨率(量化位数)定义——满刻度与 2^n 比值 | +| 可引用原句 | "分辨率(Resolution)指数字量变化为一个最小量时模拟信号的变化量,定义为满刻度与2n的比值。分辨率又称精度,通常以数字信号的位数来表示。" | +| 出处 | CPS / 李同滨等 / 机械工业出版社·2018 / 第4章 模数转换 · 4.2 ADC转换电路设计指标 / **PDF p190** | +| 对应 docs 锚点 | sensing.md · A/D 转换(量化位数) | +| verify状态 | 待核 | + +### 条目 3.3(奈奎斯特定理 / 混叠) +| 字段 | 内容 | +|------|------| +| 概念 | 奈奎斯特定理 / 混叠 | +| 可引用原句 | N/A | +| 出处 | **本书源无清晰定义**:CPS 仅在 p191 一句"采样速率主要由采样定理决定...利用采样定理计算采样速率"作指代,未展开定理内容与混叠;p205/p56 的"奈奎斯特"分别属 DAC 谐波语境与信息论历史人物提及。VOL1 全书无相关内容(命中的"采样率"均指网络/总线速率)。 | +| 对应 docs 锚点 | sensing.md · 奈奎斯特定理 / 混叠 | +| verify状态 | N/A(宁缺毋假) | + +--- + +## 主题 4:标定与指标(精度 / 分辨率 / 漂移 / 线性度 / 量程) + +### 条目 4.1 +| 字段 | 内容 | +|------|------| +| 概念 | 标定的定义与量值传递(高一级标准) | +| 可引用原句 | "传感器的标定是指在明确传感器的输出和输入关系的前提下,利用标准器具对传感器进行标定。" 及 "标定需要使用标准量值传递系统中至少高一级的标准装置进行检定。" | +| 出处 | CPS / 李同滨等 / 机械工业出版社·2018 / 第6章 传感器基础 · 6.4.4 传感器的标定 / **PDF p308** | +| 对应 docs 锚点 | sensing.md · 标定 | +| verify状态 | 待核 | + +### 条目 4.2 +| 字段 | 内容 | +|------|------| +| 概念 | 静态特性核心指标(灵敏度 / 迟滞 / 重复性 / 分辨力 / 漂移 / 稳定性) | +| 可引用原句 | "灵敏度是指传感器在稳态下输出量变化值与相应的被测变化值之比";"重复性是指在相同测量条件下, 对同一被测量进行连续多次测量所得结果之间的一致性";"分辨力是指传感器在规定测量范围内可能检测出被测量的最小变化量";"漂移是指在一定的时间间隔内, 传感器输出中与被测量无关的、 不希望的变化量。 漂移常包括零点漂移和灵敏度漂移。" | +| 出处 | VOL1 / 范茂军主编 / 机械工业出版社·2012 / 第5章 传感网技术 · 5.1.2 传感器的性能评价与选用原则 / **印刷 p118–p119(PDF p125–p126)** | +| 对应 docs 锚点 | sensing.md · 精度/分辨率/漂移/线性度 | +| verify状态 | 待核 | + +--- + +## 自检说明 + +- 每条 cited 页均经 `pdftotext -layout` 逐字 grep 确认原句片段在该 PDF 页存在(脚本验证,见 task-1-report)。 +- VOL1 页码映射:印刷页 = PDF 页 − 7(封面/版权占 7 页)。 +- VOL2 经正文抽样比对确认为 VOL1 逐字重复,弃用。 +- 主题 3 的"奈奎斯特定理/混叠"在两本书源均无清晰定义,标注 N/A 未硬凑。 diff --git a/docs/superpowers/analysis/sensing-slice-retrospective.md b/docs/superpowers/analysis/sensing-slice-retrospective.md new file mode 100644 index 000000000..7b2bd4f5c --- /dev/null +++ b/docs/superpowers/analysis/sensing-slice-retrospective.md @@ -0,0 +1,175 @@ +# Sensing 切片 — 方法论复盘(Retrospective) + +> **生成日期**:2026-07-01 +> +> **范围**:Task 1–3 的总结。回答 design 第 8 节复盘标准,与协议层切片横向对比,给出是否继续铺开的结论。本文是切片的收尾。 +> +> **底座**:`sensing-knowledge-entries.md`(7 条 + 1 N/A)、`sensing-defects.md`(0/2/3 三分类)、`docs/zh/foundations/sensing.md` 注入(5 处 inline + 2 条参考文献)、`2026-07-01-sensing-layer-slice-design.md` 第 8 节。 +> +> **对比**:`protocol-slice-retrospective.md`(协议层切片复盘,3 页 / 16 条目 / 16 缺陷 4-5-7)。 + +--- + +## 1. 产出统计 + +### 1.1 注入与条目 + +| 维度 | 数量 | 明细 | +|------|------|------| +| docs 注入(inline 括号引用) | **5 处** | sensing.md 1 个页面(国标定义 / 信号链 / A/D 指标 / 量化位数 / 标定+静态指标;条目 1.1 被 1.2 同段覆盖未单独引、3.3 N/A 不注入) | +| 参考文献小节 | **1 个**(2 本书) | sensing.md `## 参考文献`(GB/T 7714:VOL1 范茂军 2012 / CPS 李同滨 2018) | +| 知识条目 | **7 条 + 1 N/A** | 主题1 分类 2、主题2 信号链 1、主题3 A/D 2(+1 N/A 奈奎斯特/混叠)、主题4 标定与指标 2 | +| 诚实标 N/A | **1 条** | 条目 3.3 奈奎斯特定理/混叠(VOL1 全书无 / CPS 仅 p191 一句指代未展开) | +| 缺陷(三分类) | **0 / 2 / 3** | 真缺陷 **0** / 有意简化 **2**(S-1 仅线性标定 / S-2 默认小数位 6 硬编码)/ 技术债 **3**(D-1 byte 截断 / D-2 浮点 round 绕行 / D-3 divide(ONE) 写法) | + +### 1.2 verify 与幻觉拦截 + +| 维度 | 结果 | +|------|------| +| verify 拦截幻觉数(流入产出) | **0** | +| verify 拦截的待修正项 | **0**(Task 1 主 agent pdftotext 抽 3 个 cited 页全命中,无需返工) | +| implementer 诚实标 N/A | 1 条(奈奎斯特/混叠,宁缺毋假) | +| 主 agent 独立核对 | Task 1 抽 VOL1 p124 / CPS p190 / CPS p275 三页,pdftotext -layout 逐字命中全部 cited 原句片段 | + +### 1.3 单页成本(粗估) + +切片处理 **1 个 docs 页**(sensing.md),2 个 PDF 书源(VOL1 / CPS,VOL2 经比对弃用)。 + +| 环节 | 子 agent / 操作 | 量级 | +|------|----------------|------| +| PDF 阅读 + 目录定位 + 提取条目 | Task 1 implementer,含 pdftotext 抽页 + 跨页 grep 原句 | 1 子 agent | +| 注入(docs diff) | Task 2 implementer + build 自检 | 1 子 agent | +| 缺陷分析 | Task 3 implementer,全链路源码实读 + 实跑 round 验证 | 1 子 agent | +| 主 agent pdftotext 抽查 | 3 页(VOL1 p124 / CPS p190 / CPS p275) | 主 agent 内联 | + +**单页成本**:约 **3 个子 agent 调用**(无独立 review 子 agent,verify 由主 agent 内联 pdftotext 承担),主 agent 抽查约 3 页次。Token 量级粗估单页 **20–40k**(含 implementer 上下文)。显著低于协议层(协议层单页约 10–12 子 agent / 30–50k token,含独立 review)——主因是单页单主题、书源少、无独立 verify 子 agent 编排开销。 + +--- + +## 2. 回答 design 第 8 节复盘标准(逐条) + +### Q1:verify 是否拦住幻觉? + +**答:拦住;本轮零拦截事件,机制有效。** + +Task 1 主 agent 用 `pdftotext -layout` 抽 VOL1 p124、CPS p190、CPS p275 三个 cited 页,逐字 grep 原句片段**全命中**(含 CPS 异体字规范化后的比对)。无伪造、无错页、无返工。这与协议层"零幻觉流入产出"一致——**命令行 pdftotext 独立核对**这一机制在本切片复用并再次验证有效。implementer 的 1 条诚实 N/A(奈奎斯特/混叠)从源头消除了最常见的幻觉来源。 + +### Q2:三分类是否真能区分真缺陷 vs 工程取舍? + +**答:能区分;本轮的最大价值恰恰是"不硬凑真缺陷"得到正确兑现。** + +本轮真缺陷 = **0**。最有诱惑力被判真缺陷的两处,均经论证降级: + +- **D-2(浮点 round 绕行 primitive)**:`BigDecimal→double→String→BigDecimal` 看似精度有损,但实跑 `RoundTest` 覆盖 17 位有效数字、`2.675` tie、float 7 位精度边界后,结果与直接 `setScale(HALF_UP)` **一致**——故降级为技术债(代码意图与路径不一致),而非真缺陷。判据:**实跑验证,不靠直觉判精度问题**。 +- **D-1(byte 截断)**:`(byte) dto.getValueDecimal()` 静默环绕看似真缺陷,但发生在 gRPC facade 边界而非标定核心,且实际 `valueDecimal` 范围远小于 `[-128,127]`,归为技术债(隐患债)而非当前真缺陷。 + +**有意简化 vs 真缺陷的边界**:S-1(仅线性标定 `y=mx+b`)——线性只是"输出-输入关系"的一种形式(条目 4.1),不支持多项式/查表/分段属工程取舍而非缺陷,因大部分工业位号线性足够。这与协议层 S1/S2(驱动 `throw NotImplemented` 快速失败)的判据同构:**如实记录设计边界,不判错**。 + +**结论**:三分类有效。本轮证明的关键点是——**0 真缺陷是合法结论,三分类的价值正在于允许"诚实评估、不硬凑"**(见第 4 节)。 + +### Q3:知识条目表格式是否可复用? + +**答:完全可复用,字段零改动。** + +`概念 | 可引用原句 | 书名/作者/出版社·年份/章节/页码 | 对应 docs 锚点 | verify状态` 五字段在协议层定义后,本轮**直接复用未改一字**。跨书源(VOL1 / CPS)、跨主题(分类/信号链/A/D/标定)、跨页码体系(VOL1 双标印刷+PDF / CPS 仅 PDF)均稳定承载。N/A 条目沿用协议层 `N/A | <原因> | ...` 写法(条目 3.3)。 + +协议层复盘提到的两个 Minor 改进点(N/A 格式标准化 / 来源定位子表),本轮 N/A 仅 1 条未触发格式压力;来源定位子表本轮简化为"章节→PDF 页"单表(书源仅 2 本,无需协议层那种"书源×章节×页码×相关性"矩阵)。**结论:格式可复用,按书源数量自适应选用单表或矩阵**。 + +### Q4:单页成本估算铺开是否可接受? + +**答:可接受,且显著低于协议层上限。** + +单页约 3 子 agent / 20–40k token,约为协议层单页成本的 1/3(协议层 10–12 子 agent / 30–50k token)。差异主因: + +- **单页单主题 vs 多页多主题**:本轮 1 页对应 4 个紧密相关子主题、2 本对口书,书源定位一次完成;协议层 3 页对应 fieldbus+iot-protocols+drivers 多个不相邻主题、4 本通论书。 +- **无独立 verify 子 agent 编排**:本轮 verify 由主 agent 内联 pdftotext 抽 3 页承担(cited 页少),未起独立 verify 子 agent;协议层 defects 19 处 `文件:行` 全核需独立 verify 子 agent。 +- **缺陷分析复用既有脉络**:标定换算链路集中在 `TypedValueConverter`,源码体量小、无跨模块追溯。 + +**外推**:若其余 foundations 页单页成本与本轮相当,逐页铺开的子 agent 调用量约为协议层外推值的 1/3。但仍建议按"书源 → 主题群"批量推进(见第 5 节),以摊薄书源定位的固定成本。 + +--- + +## 3. 与协议层切片对比 + +### 3.1 书源驱动策略的有效性(vol1/vol2 重叠弃用经验再次命中) + +协议层复盘指出"同 ISBN 的 vol1/vol2 PDF 常为同一本书的编码差异重复,取一份即可"。本轮 **VOL1/VOL2 再次命中同一规律**:经 p150 正文逐字比对,确认 VOL2 是 VOL1 逐字重复(同 ISBN/主编/出版社/年份,md5 不同仅为 PDF 编码差异),**弃用 VOL2 避免重复条目**。 + +这条经验已两次验证(协议层 + sensing),可固化为流程:**遇到同系列 vol1/vol2 PDF,先抽 1 页正文逐字比对,确认重复即弃用一本**,避免重复建条目浪费工作量。 + +### 3.2 目标②薄印证(4 真缺陷 vs 0 真缺陷) + +协议层目标②发现 **4 真缺陷**(MQTT health 桩伪造 online / 资源未关闭 / 错误不退避 等),sensing 目标②发现 **0 真缺陷**。这一反差是**诚实且正确**的: + +- **协议层靶子是连接管理**:OPC-UA 连接风暴、MQTT broker 不可达仍自报 online——分布式资源生命周期,缺陷密度天然高。 +- **sensing 靶子是标定换算**:`工程值 = 原始值 × multiple + baseValue` 是简单线性变换,实现质量好——`BigDecimal` 全程精确算术、null 标定参数有 `Optional.orElse(DEFAULT_*)` 兜底、`HALF_UP` rounding 无系统性 DOWN 截断偏差、类型转换显式抛 `TypeException/OutRangeException` 不静默吞异常。 + +design 第 3 节预警过"目标②可能比协议层薄",本轮实证兑现。**0 真缺陷不是漏看**:D-2(浮点 round 绕行)是最可疑的精度问题,已写 `/tmp/RoundTest` 实跑对比,确认当前不产生算错才降级。这是"实跑验证"而非"扫一眼放过"。 + +**结论**:薄印证成立。代码缺陷密度取决于代码本身的复杂度与资源管理面,不取决于切片方法论——**方法论的作用是如实暴露,而非保证每个切片都有料**。 + +--- + +## 4. 关键发现:0 真缺陷是三分类的合法产出 + +本轮最重要的发现不是某条具体缺陷,而是——**不是所有代码都有真缺陷,三分类的价值正在于允许这一结论合法存在**。 + +若只有"真缺陷 / 非真缺陷"二分,或带 KPI 式"每个切片必须产出 N 条真缺陷"的隐性压力,会有两种坏结果: +1. **书生气误判**:把 D-2(绕行 round)或 D-1(byte 截断)硬凑成真缺陷,写出"精度损失严重"这类经不起实跑的结论。 +2. **为了凑数灌水**:把 S-1(仅线性标定)这种工程取舍判成缺陷,污染缺陷清单的可信度。 + +三分类通过设立【有意简化】和【技术债】两个出口,让 implementer 有地方如实安放"知道欠账但当前不算错"的条目,从而守住【真缺陷】的含金量。**协议层 4 真缺陷与 sensing 0 真缺陷都是诚实结论**——后者证明这套方法不靠堆数量取信。 + +--- + +## 5. 是否继续铺开 + 下一批建议 + +### 5.1 结论:继续铺开,按"书源 → 主题群"批量推进 + +四个复盘标准的答案:verify 零幻觉(有效)、三分类可区分且允许 0 真缺陷(判据明确)、条目表可复用、单页成本显著低于协议层。**方法论再次验证通过,可铺开**。 + +### 5.2 下一批主题建议(结合书源覆盖度) + +本轮 2 本书源(VOL1 / CPS)覆盖的剩余主题,以及协议层已验证书源的延伸: + +1. **MEMS / 传感器工艺**(CPS 第6章有 MEMS 内容,sensing.md 已有 MEMS 段未注入)——同书源边际成本低,可顺手补。 +2. **动态特性 / 频率响应**(VOL1 5.1.2 动态特性已读但本轮未建条目)——同书源延伸。 +3. **MQTT / CoAP / LPWAN 深化**(协议层复盘建议的优先项,书源最充足)——跨切片衔接。 + +**暂缓或需另配书源的主题**: +- 奈奎斯特定理 / 混叠(条目 3.3 N/A)——VOL1/CPS 均无清晰定义,需信号与系统或数据采集教材。 +- 非线性标定(热电偶/RTD 分度表、S-1 提及)——需温度传感器专著或计量手册。 + +### 5.3 流程固化(两轮验证后可入规范) + +| 环节 | 固化项 | +|------|--------| +| 书源去重 | 同系列 vol1/vol2 先抽 1 页逐字比对,重复即弃一本(两轮命中) | +| verify | 一律走 `pdftotext -layout` 命令行,cited 页全核(单页切片可主 agent 内联,多页切片起独立 verify 子 agent) | +| 三分类 | 真 0 是合法结论;精度问题必须实跑验证再判级(D-2 范式) | +| 条目表 | 五字段不变;书源≤2 用单表,≥3 用矩阵 | +| 引用 | GB/T 7714 参考文献 + 括号 inline(沿用协议层统一规范) | + +--- + +## 6. en/ 同步点清单(本轮不做,后续同步) + +`docs/zh/foundations/sensing.md` 注入的 5 处 inline 引用 + 1 个参考文献小节,对应 `docs/en/foundations/sensing.md` 后续同步: + +| zh 位置 | 引用内容 | 书源页码 | +|---------|---------|---------| +| 行 23(GB/T 7665 定义段) | 传感器国标定义(条目 1.2) | VOL1 5.1.1,PDF p124 | +| 行 34(信号链首段) | 信号链四要素(条目 2.1) | CPS 6.1,PDF p275 | +| 行 49(A/D 转换段) | ADC 基本指标(条目 3.1) | CPS 4.2,PDF p190 | +| 行 53(量化位数列表项) | 分辨率定义(条目 3.2,"同上") | CPS 同上,PDF p190 | +| 行 56(静态指标表前导句) | 灵敏度/重复性/分辨力/漂移(条目 4.2) | VOL1 5.1.2,PDF p125–p126 | +| 行 73(标定 tip 容器) | 标定定义+量值传递(条目 4.1) | CPS 6.4.4,PDF p308 | +| 行 123–126(`## 参考文献`) | 2 条 GB/T 7714(VOL1 / CPS) | — | + +> **en/ 同步注意**:en/ 锚点 slug 与 zh/ 不同(如 `#信号链` vs `#signal-chain`),条目表"对应 docs 锚点"字段需同步更新;奈奎斯特/混叠段(条目 3.3 N/A)在 en/ 同样零改动。 + +--- + +## 7. 一句话总结 + +Sensing 切片(1 页 / 7+1 条目 / 0-2-3 缺陷)方法论再次验证通过——verify 零幻觉、三分类允许"0 真缺陷"合法存在(D-2 实跑降级是范式)、单页成本仅为协议层 1/3;**继续铺开,按"书源→主题群"批量推进**,下一批优先 MEMS/动态特性(同书源延伸)与 MQTT/CoAP/LPWAN(协议层书源衔接),奈奎斯特/非线性标定需另配书源暂缓。 diff --git a/docs/superpowers/plans/2026-07-01-sensing-layer-slice.md b/docs/superpowers/plans/2026-07-01-sensing-layer-slice.md new file mode 100644 index 000000000..17474d4ab --- /dev/null +++ b/docs/superpowers/plans/2026-07-01-sensing-layer-slice.md @@ -0,0 +1,82 @@ +# 传感与测量切片 Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: `superpowers:subagent-driven-development`。Steps use checkbox (`- [ ]`)。**本计划复用协议层切片(`2026-06-30-protocol-layer-slice.md`)的全部流程与决策**,执行前建议先读协议层的 retrospective 了解已验证的方法论。 + +**Goal:** 用传感测量主题跑第二个垂直切片,复用协议层方法论。 + +**Architecture:** 4 步工作流——①读传感器书建条目 → ②注入 sensing.md(verify)→ ③标定换算缺陷分析 → ④复盘。 + +**Tech Stack:** VitePress markdown、Java 21 源码、PDF(Read `pages` + pdftotext)、git。 + +## Global Constraints(复用协议层,逐条) + +- **路径根**:`PROJ=/Users/pnoker/Code/pnoker/IoTDC3/github`。后端 git 仓库 `$PROJ/iot-dc3`;书库 `$PROJ/iot-books`;docs `$PROJ/iot-dc3/docs`。 +- **产物位置**:`$PROJ/iot-dc3/docs/superpowers/analysis/`;docs 改动 `$PROJ/iot-dc3/docs/zh/`。 +- **引用格式**:括号 inline + 页末 `## 参考文献` GB/T 7714 编号列表,**禁 `[^1]` 脚注**。 +- **措辞**:禁"生产级闭环""完全领先"等(文档宪法 `documentation/index.md`)。 +- **commit**:`docs(...)` scope,**无 Co-Authored-By**。 +- **verify 铁律**:每条注入引用由独立子 agent + 主 agent pdftotext 抽 cited 页核对;伪造即删。 +- **docs 验证**:`pnpm --dir $PROJ/iot-dc3/docs build`。 + +## File Structure + +**创建**:`analysis/sensing-knowledge-entries.md`、`analysis/sensing-defects.md`、`analysis/sensing-slice-retrospective.md` +**修改**:`docs/zh/foundations/sensing.md` +**只读**:`PointBO`/`PointValue`/`ArithmeticUtil`/`TypedValueConverter` 源码;3 本传感器 PDF + +--- + +### Task 1: 传感器书条目提取 + verify + +**Files:** Create `analysis/sensing-knowledge-entries.md`;Read 3 本传感器 PDF +**Interfaces:** Consumes `sensing.md`(确定主题锚点:传感器分类/信号链/A-D转换/标定);Produces 知识条目表 + +- [ ] 1.1 Read 3 本传感器 PDF `pages="1-15"` 定位目录,找传感器分类/信号调理/ADC/标定章节,记「来源定位」表。**注意 vol1/vol2 可能重叠**(如协议层 vol1/vol2),取一份。 +- [ ] 1.2 Read 目标章节正文(≤20 页/次),提取条目(每主题 1-2 条)。页码必须实读。 +- [ ] 1.3 写 `sensing-knowledge-entries.md`(5 列字段:概念|原句|出处|docs锚点|verify状态"待核")。 +- [ ] 1.4 verify:独立子 agent 回读 cited 页核对原句/页码;主 agent pdftotext 抽查 2-3 页独立确认。 +- [ ] 1.5 不符的修正或删除(宁缺毋假)。 +- [ ] 1.6 commit: `docs(superpowers): add sensing knowledge entries with verified citations` + +### Task 2: 注入 sensing.md + verify + 构建 + commit + +**Files:** Modify `docs/zh/foundations/sensing.md` +**Interfaces:** Consumes `sensing-knowledge-entries.md`(已核条目) + +- [ ] 2.1 Read `sensing.md` 全文,定位传感器分类/信号链/A-D/标定段落。 +- [ ] 2.2 注入 inline 括号引用(仅已核条目;某主题无书源则保留原文不加,诚实)。 +- [ ] 2.3 `## 延伸阅读` 前插入 `## 参考文献`(GB/T 7714)。 +- [ ] 2.4 verify(独立子 agent)+ grep 自检(`## 参考文献` 存在、无 `[^`/TBD、mermaid/`:::` 容器完整)。 +- [ ] 2.5 `pnpm --dir docs build` 确认无 error。 +- [ ] 2.6 commit: `docs(foundations): add verified academic citations to sensing page` + +### Task 3: 标定换算代码缺陷分析 + verify + commit + +**Files:** Create `analysis/sensing-defects.md`;Read `PointBO`/`PointValue`/`ArithmeticUtil`/`TypedValueConverter` +**Interfaces:** Consumes 源码 + `sensing-knowledge-entries.md`(学术依据) + +- [ ] 3.1 Read `PointBO`(baseValue/multiple/valueDecimal)、`PointValue`/`PointValueBO`(rawValue/calValue)、`ArithmeticUtil`(BigDecimal 精度/rounding)、`TypedValueConverter`(类型转换)。 +- [ ] 3.2 三分类缺陷:重点查 BigDecimal 精度处理、null baseValue/multiple 处理、类型转换异常、rounding 模式。**诚实——若线性换算无真缺陷,如实记录,不强凑**。 +- [ ] 3.3 用学术条目给关键缺陷补理论依据。 +- [ ] 3.4 写 `sensing-defects.md`(三分类,每条 `文件:行`)。 +- [ ] 3.5 verify:独立子 agent 回读每条 `文件:行` 核对;主 agent rg 抽查。 +- [ ] 3.6 commit: `docs(superpowers): add sensing calibration defect analysis` + +### Task 4: 复盘 + commit + +**Files:** Create `analysis/sensing-slice-retrospective.md` + +- [ ] 4.1 统计产出(条目数、缺陷三类计数、verify 拦幻觉数、单页成本)。 +- [ ] 4.2 回答 design 第 8 节复盘标准 + 与协议层对比(书源驱动策略是否有效、目标②薄是否印证)。 +- [ ] 4.3 给"是否继续铺开下一主题"结论 + 下一批建议。 +- [ ] 4.4 登记 en/ 同步点(sensing.md 注入位置)。 +- [ ] 4.5 commit: `docs(superpowers): add sensing-layer slice retrospective` + +--- + +## Self-Review + +- **Spec 覆盖**:目标①→Task 1/2;目标②→Task 3;复盘→Task 4。✅ +- **复用协议层**:Global Constraints 与协议层 plan 一致;task 结构对齐。 +- **sensing 特有**:目标②标定换算(Task 3)标注"可能薄、诚实评估";传感器书 vol1/vol2 重叠预警。 +- **执行交接**:本会话 context 已满,执行交新会话。新会话读本 plan + 协议层 retrospective,按 subagent-driven-development 执行 4 task。 diff --git a/docs/superpowers/specs/2026-07-01-sensing-layer-slice-design.md b/docs/superpowers/specs/2026-07-01-sensing-layer-slice-design.md new file mode 100644 index 000000000..329e54164 --- /dev/null +++ b/docs/superpowers/specs/2026-07-01-sensing-layer-slice-design.md @@ -0,0 +1,74 @@ +# 传感与测量垂直切片 — Design Doc + +- **日期**:2026-07-01 +- **状态**:brainstorm 已确认,待 plan 执行 +- **位置**:`iot-dc3/docs/superpowers/specs/` +- **来源**:复用协议层切片方法论(`2026-06-30-protocol-layer-slice-design.md` 验证通过)+ TODO.md #8 + +## 1. 背景与目标 + +第二个垂直切片(继协议层)。两大目标同协议层:①docs 学术溯源 ②代码缺陷分析。**全部复用协议层方法论决策**(verify/三分类/引用格式/文件位置),不重走 brainstorm。 + +## 2. 切片范围(S1) + +### docs(目标①) +- `docs/zh/foundations/sensing.md` + +### 代码(目标②)— 标定换算链路 +- `PointBO`(`baseValue`/`multiple`/`valueDecimal` 标定参数) +- `PointValue`/`PointValueBO`(`rawValue`/`calValue`) +- `ArithmeticUtil`(BigDecimal 精度/rounding) +- `TypedValueConverter`(类型转换) + +### 书源(3 本传感器专著,比协议层通论书对口) +- `iot-books/sensing-identification/iot-sensor-technology-vol1.pdf` +- `iot-books/sensing-identification/iot-sensor-technology-vol2.pdf` +- `iot-books/sensing-identification/iot-source-cyber-physical-sensing-basics.pdf` + +## 3. 现状关键发现 + +1. **sensing.md 质量已高**:传感器分类(电阻/电容/压电/热电/半导体)、信号链 mermaid、A/D 双维度(采样率/量化+奈奎斯特/混叠)、6 指标表、精度≠分辨率、标定、MEMS——**和协议层一样缺学术溯源**,目标①工作量轻。 +2. **标定换算代码集中**(PointBO/PointValue/ArithmeticUtil/TypedValueConverter),目标②有实打实靶子。 +3. ⚠️ **目标②可能比协议层薄**——标定换算(`工程值=原始值×multiple+baseValue`)是简单线性变换,缺陷密度可能不如协议层(OPC-UA 连接风暴那种)。诚实评估,不硬凑。 + +## 4. 工作流(复用协议层 4 步) + +``` +①读传感器书建条目 → ②注入 sensing.md(verify)→ ③标定换算缺陷分析 → ④复盘 +``` + +## 5. 决策(全部复用协议层) + +- **verify**:独立子 agent + 主 agent pdftotext 抽 cited 页核对,零幻觉铁律;伪造即删。 +- **三分类**:真缺陷/有意简化/技术债。 +- **引用**:括号 inline + GB/T 7714 参考文献,禁 `[^1]` 脚注。 +- **文件位置**:`iot-dc3/docs/superpowers/`(specs/plans/analysis),config.mts srcExclude 不发布。 + +## 6. 产出 + +1. `sensing.md` diff(注入溯源引用,zh/) +2. `analysis/sensing-knowledge-entries.md`(**新建**,主题独立) +3. `analysis/sensing-defects.md`(标定换算缺陷三分类) +4. `analysis/sensing-slice-retrospective.md`(方法论复盘) + +## 7. 风险 + +| 风险 | 对策 | +|---|---| +| 目标②薄(线性换算简单) | 诚实评估,不硬凑;若无真缺陷,如实记录 | +| 传感器书 vol1/vol2 重叠(如协议层 vol1/vol2) | 取一份,避免重复 | +| 书源覆盖度(某主题无内容) | 诚实标 N/A | + +## 8. 复盘标准(复用协议层) + +verify 拦幻觉、三分类区分真缺陷 vs 工程取舍、条目表可复用、单页成本。 + +## 9. YAGNI + +- `identification.md`(RFID/北斗)不在本切片 +- `en/` 注入(只 zh/) +- 源码改动(只产出缺陷清单) + +## 10. 与协议层切片的关系 + +复用协议层方法论(`protocol-slice-retrospective.md` 验证通过)。本切片是"书源驱动主题群批量推进"策略(复盘建议)的第二个主题。 diff --git a/docs/zh/foundations/sensing.md b/docs/zh/foundations/sensing.md index 5724f4d6a..22b8a8fce 100644 --- a/docs/zh/foundations/sensing.md +++ b/docs/zh/foundations/sensing.md @@ -20,7 +20,7 @@ IoT DC3 里被建模成可读写的[位号 Point](../introduction/concepts/point **而非干净的数字。把这些误差控制好、把模拟量可靠地数字化,是这一层的全部职责。它向上只交付一件东西:**一个带单位、带量程、可信的数字读数 **。在 DC3 里,这个读数就是一个[位号](../introduction/concepts/point)的取值。 -按转换原理,传感器大致分几族,理解分类有助于选型时判断它的脾气: +国家标准 GB/T 7665—2005 把传感器定义为"能感受被测量并按照一定的规律转换成可用输出信号的器件或装置,通常由敏感元件和转换元件组成"(见《物联网与传感器技术》范茂军主编,机械工业出版社·2012,第5章 5.1.1,PDF p124)。按转换原理,传感器大致分几族,理解分类有助于选型时判断它的脾气: - **电阻型**:物理量改变电阻。热电阻(PT100)测温、应变片测力与压力、光敏电阻测光。线性较好,但需激励电流、自热会引入误差。 - **电容/电感型**:物理量改变电容或电感。电容式测位移、湿度、液位;电感式(LVDT)测位移。非接触、寿命长,但对寄生参数敏感。 @@ -31,7 +31,7 @@ IoT DC3 里被建模成可读写的[位号 Point](../introduction/concepts/point ## 关键技术与权衡 一颗传感器从感受物理量到交出数字,要走完一条固定的链路:**敏感元件**先把物理量变成微弱的电学量,**信号调理** -把它放大、滤波、线性化到合适范围,**A/D 转换(ADC)**再把连续的模拟电压量化成离散的数字码。这条链路的每一跳都决定最终读数的质量。 +把它放大、滤波、线性化到合适范围,**A/D 转换(ADC)**再把连续的模拟电压量化成离散的数字码(见《物联网之源:信息物理与信息感知基础》李同滨等,机械工业出版社·2018,第6章 6.1,PDF p275)。这条链路的每一跳都决定最终读数的质量。 ```mermaid flowchart LR @@ -46,14 +46,14 @@ flowchart LR ADC。调理电路要做:放大(仪表放大器抬升幅度)、滤波(抗混叠低通滤掉高频噪声)、电平搬移(对齐 ADC 输入区间)、激励(给电阻型传感器供恒流/恒压),以及对桥式电路做差分以抑制共模干扰。调理做得好不好,往往比 ADC 位数更影响精度。 -**A/D 转换**有两个独立维度,别混为一谈: +**A/D 转换**有两个独立维度,别混为一谈。ADC 转换电路的基本指标包括分辨率、转换速率、量化误差、偏移误差、满刻度误差和线性度等(见《物联网之源:信息物理与信息感知基础》李同滨等,机械工业出版社·2018,第4章 4.2,PDF p190): - **采样率**决定时间分辨率。按奈奎斯特定理,采样率必须高于信号最高频率的两倍,否则发生**混叠**——高频假装成低频,无法事后挽救。测振动要几 kHz 甚至更高,测室温每分钟一次就够。 -- **量化位数**决定幅度分辨率。12 位把量程切成 4096 份,16 位切成 65536 份。位数越高分辨越细,但也越贵、越慢、越受噪声限制(有效位数 +- **量化位数**决定幅度分辨率。分辨率(Resolution)指数字量变化为一个最小量时模拟信号的变化量,定义为满刻度与 2^n 的比值,通常以数字信号的位数来表示(同上,PDF p190)。12 位把量程切成 4096 份,16 位切成 65536 份。位数越高分辨越细,但也越贵、越慢、越受噪声限制(有效位数 ENOB 常低于标称位数)。 -选型与评估传感器,看的是下面这组指标,它们之间几乎总是相互制约: +选型与评估传感器,看的是下面这组指标,它们之间几乎总是相互制约。其中灵敏度(稳态下输出量变化值与相应被测变化值之比)、重复性(相同条件下多次测量结果的一致性)、分辨力(规定测量范围内能检测出的被测量最小变化量)、漂移(一定时间间隔内与被测量无关的不希望的变化量,含零点漂移与灵敏度漂移)等静态特性指标的定义,见《物联网与传感器技术》范茂军主编,机械工业出版社·2012,第5章 5.1.2,PDF p125–p126: | 指标 | 含义 | 工程上的权衡 | |-------------------|-------------|-------------------| @@ -70,7 +70,7 @@ ADC。调理电路要做:放大(仪表放大器抬升幅度)、滤波( ::: ::: tip 标定(Calibration)是工程值可信的前提 -出厂参数会随时间漂移。标定就是用已知标准量去测传感器、记录偏差并建立修正关系(零点 + 斜率,必要时整条曲线)。在 DC3 +出厂参数会随时间漂移。标定就是在明确传感器输出与输入关系的前提下,利用标准器具对传感器进行标定,且需要使用标准量值传递系统中至少高一级的标准装置进行检定(见《物联网之源:信息物理与信息感知基础》李同滨等,机械工业出版社·2018,第6章 6.4.4,PDF p308)。标定就是用已知标准量去测传感器、记录偏差并建立修正关系(零点 + 斜率,必要时整条曲线)。在 DC3 里,最常见的线性修正直接落在位号的换算参数上(见下文)。 ::: @@ -120,6 +120,11 @@ MEMS。代价是单颗精度与长期稳定性通常不及传统工业级器件 这样,感知层的工程细节(敏感原理、调理、ADC、标定)被收敛成几个稳定的位号属性;上层服务无需关心传感器型号,只面对" 一个带单位、带读写能力、已换算到工程值的数字量"。物理世界的复杂度,到位号这一层被一次性吸收。 +## 参考文献 + +1. 范茂军. 物联网与传感器技术[M]. 北京: 机械工业出版社, 2012. +2. 李同滨, 等. 物联网之源: 信息物理与信息感知基础[M]. 北京: 机械工业出版社, 2018. + ## 延伸阅读 - [自动识别与定位](./identification) — 感知层的另一半:身份与位置的获取