OTDR链路衰减与事件分析器|制造业通用工具
这个工具解决什么问题
先用示例数据验证口径,再换成真实数据,是这类工具的正确用法。
一份 OTDR 曲线拿到手,最费时间的是把事件一个一个抠出来、算损耗、算每段衰减系数,再判断哪个熔接点超标、哪一段受潮或弯曲。人工读数既慢又容易漏掉台阶只有 0.1 dB 的小事件。而台阶与菲涅尔反射常常共位,处理不当还会互相串扰。
输入数据格式
数据文件 otdr_trace_sample.csv,列顺序为:distance_km、loss_dB。
示例首行:0.0,-0.00387
示例输出(真实运行结果节选)
========================================================================================================
OTDR 链路衰减与事件分析报告
========================================================================================================
链路长度 25.00 km,采样间隔 0.020 km(共 1251 点),分析波长 1550 nm
事件判定:双段外推法,窗口 25 点(0.50 km),阈值 0.05 dB
一、事件表(共检出 6 个)
--------------------------------------------------------------------------------------------------------
序号 距离(km) 损耗(dB) 类型 反射 判定
1 3.200 0.059 熔接 无 ✅ 合格(熔接限值 0.10 dB)
2 6.040 0.267 连接器 有 ✅ 合格(连接器限值 0.50 dB,带菲涅尔反射特征)
3 9.500 0.093 熔接 无 ✅ 合格(熔接限值 0.10 dB)
4 13.800 0.554 疑似弯曲/污染 无 ❌ 超标:超过连接器限值 0.50 dB,疑似宏弯/接头盒受潮/端面污染
5 18.000 0.119 熔接(损耗偏大) 无 ❌ 超熔接限值 0.10 dB,建议重熔(无反射特征,非连接器)
6 24.620 0.316 连接器 有 ✅ 合格(连接器限值 0.50 dB,带菲涅尔反射特征)
菲涅尔反射点(共 2 处;深度 = 右侧外推参照 - 实测值,保守口径):
5.980 km,凹坑深度 0.366 dB
24.580 km,凹坑深度 0.436 d
一句话
自动从 OTDR 曲线里抠出事件、算段衰减、识别菲涅尔反射,并做真值自检。
运行环境与快速开始
纯 Python 标准库,零第三方依赖,Python 3.8+ 开箱即跑。
python otdr_analysis.py # 首次运行会用同目录的示例数据跑出报告 python otdr_analysis.py 你的数据.csv # 需要时可在脚本内改成读取自己的文件
运行后在控制台打印完整中文报告,并写出 示例输出报告.txt。
输入数据格式
CSV 列为:distance_km(距离)、loss_dB(累计损耗)。采样间隔越小越准(示例为 0.02 km)
同目录的 otdr_trace_sample.csv 即为可直接运行的示例数据。
输出说明
① 事件表(距离、损耗、类型、是否有反射、逐条判定);② 菲涅尔反射点清单;③ 段衰减表(相邻事件之间的 dB/km 与超限提示);④ 链路总览(事件损耗 vs 光纤本征衰减占比);⑤ 自检:检出事件与注入真值逐条对照
算法口径(关键公式)
事件定位用双段外推法:在候选点两侧各取一段窗口做最小二乘直线,外推到该点,两值之差即事件台阶;同一窗内只保留最大者(非极大值抑制)。反射检测用「局部极小 + 右侧外推参照」双条件,可自动免疫台阶串扰。段衰减用剔除事件邻域后的最小二乘斜率。
参数与调整点
· WIN:双段外推窗口(采样点数),加大更稳但会降低对小事件的灵敏度。 · STEP_TH:事件判定阈值(默认 0.05 dB),噪底大的仪表要适当调高。 · SPLICE_MAX / CONN_MAX:熔接与连接器的单点损耗限值,按验收规范改。 · 事件类型由「损耗大小 + 是否伴随菲涅尔反射」共同判定,比单纯看损耗更可靠。
常见误判与注意事项
1. 双段外推法对「渐变型」劣化不敏感(如整段受潮),必须结合段衰减系数一起看。 2. 菲涅尔反射不是异常,反而是连接器位置的有效标记;缺反射往往意味着端面污染或接头进水。 3. 熔接现场验收通常按 ≤0.10 dB、平均 ≤0.05 dB 控制;超过 0.10 dB 建议重熔。 4. 每公里衰减超标时,优先查接头盒受潮、盘纤半径过小与光缆受压,而不是先怀疑光纤本体。 5. 示例数据带算法真值自检;换成自己的数据后该节会自动跳过。
附赠
· 附赠提示词.txt:3 条同主题 AI 提示词,可直接投喂给任意大模型继续扩展分析。
可调参数与计算口径
脚本顶部集中了主要阈值与常量:CSV_NAME="otdr_trace_sample.csv"、TRUTH_NAME="_otdr_truth.json"、REPORT_NAME="示例输出报告.txt"、SPEC_ATTEN={1310: 0.35, 1550: 0.25}、TRUTH=[、LENGTH_KM=25.0。改完直接重跑即可,不必改动计算逻辑。
会生成哪些文件
运行后除控制台输出外,还会生成:otdr_trace_sample.csv、_otdr_truth.json、示例输出报告.txt。
工具中出现的字段与提示
- 疑似弯曲/污染
- 熔接(损耗偏大)
- OTDR 链路衰减与事件分析报告
- 链路长度 %.2f km,采样间隔 %.3f km(共 %d 点),分析波长 %d nm
- 事件判定:双段外推法,窗口 %d 点(%.2f km),阈值 %.2f dB
- 一、事件表(共检出 %d 个)
- 距离(km)
- 损耗(dB)
- ✅ 合格(熔接限值 %.2f dB)
- ❌ 超熔接限值 %.2f dB,建议重熔(无反射特征,非连接器)
- ✅ 合格(连接器限值 %.2f dB,带菲涅尔反射特征)
- ❌ 超标:超过连接器限值 %.2f dB,疑似宏弯/接头盒受潮/端面污染
- 菲涅尔反射点(共 %d 处;深度 = 右侧外推参照 - 实测值,保守口径):
- %.3f km,凹坑深度 %.3f dB
- 未检出明显反射点(可能端面污染、接头进水或仪表脉宽设置过大)
- 二、段衰减(相邻事件之间,剔除事件邻域 0.15 km)
- 起点(km)
- 终点(km)
其余字段以界面与示例报告为准。
下载与文件清单
压缩包内包含:主程序脚本、示例数据文件、示例输出报告、中文说明文档,以及同主题 AI 提示词一套。解压后按说明运行即可,示例数据可直接试跑。
主程序文件:otdr_analysis.py。
本站工具免费下载,无需注册。工具为 Python 脚本,Python 3.8 及以上环境可直接运行,核心功能尽量不依赖第三方库。
常见问题
输入数据要准备成什么样?
按 示例首行中的列顺序准备即可,共 2 列:distance_km、loss_dB。列为空或格式不符时结果会失真,建议先用示例数据试跑一遍。
阈值可以改成我们自己的标准吗?
可以,脚本顶部已把主要阈值与常量集中声明,按自己产线的标准修改后重跑即可,不需要改计算逻辑。
附赠的提示词怎么用?
把提示词与自己的数据一起交给大模型,可以让它按同一套口径帮你改写分析流程或扩展报告字段。
示例数据能直接跑吗?
可以。示例数据与主程序在同一压缩包内,解压后直接运行即可看到完整输出,确认无误再替换成自己的台账。





