PacketLens
用户操作手册
面向现场工程师的工业网络抓包分析指南:先看系统给出的白话结论和排查顺序,需要时再深入 WKC、状态字、周期和证据帧。
01 / BEFORE YOU START开始之前
PacketLens 能做什么
自动读取抓包格式、时间戳、帧数、持续时间、协议和异常数量。
深度分析 EtherCAT、Modbus TCP、EtherNet/IP 和 PROFINET。
先说明通信是否正常、影响在哪一层,再给出按优先级排列的检查动作。
支持打印/PDF、异常帧 CSV 和完整诊断 JSON。
适用人员
自动化工程师、PLC/运动控制工程师、设备维护人员、工业网络工程师,以及需要远程协助现场排障的技术支持人员。
数据安全
抓包解析在当前浏览器中完成。选择文件后,网页读取本机文件并在浏览器内运行诊断规则;分析结果不会自动保存到网站。原始文件、导出报告和浏览器终端仍应按照公司的数据安全制度管理。
02 / CAPTURE PREPARATION如何采集可分析的数据
推荐采集位置
- TAP 工具:优先选择,能够稳定复制链路流量,适合工业实时网络。
- 交换机镜像口:确认镜像方向、VLAN 和端口带宽,避免镜像口过载丢帧。
- 设备本机抓包:适合普通 TCP/IP 协议,但不一定能观察设备外部链路层问题。
采集时间与完整性
- 覆盖故障发生前后各 5~10 秒;间歇故障应延长采集窗口。
- 尽量同时看到通信双方,避免只有请求或只有响应。
- 使用完整帧长,避免 snaplen 过小导致报文被截断。
- 记录 TAP 接入位置、端口方向、设备状态和故障发生时刻。
- 不要在采集后合并、删帧或改变帧号;帧号是后续复核依据。
| 现象 | 可能造成的分析影响 | 处理建议 |
|---|---|---|
| 抓包时间过短 | 未响应事务可能只是响应尚未出现,统计基线不稳定。 | 扩大到故障前后完整过程。 |
| 单方向采集 | 请求配对率降低,无法确认响应状态和响应时间。 | 检查 TAP 双方向输出或镜像配置。 |
| 帧被截断 | 出现“报文不完整”,应用层字段无法解码。 | 增大抓包 snaplen,重新采集。 |
| 镜像口丢包 | 周期超时、Counter 跳变或事务未响应可能是假象。 | 核对镜像口带宽和交换机丢包计数。 |
03 / DATA VOLUME & FILE ROTATION数据量估算与 Wireshark 自动分卷
一小时大约产生多少数据
抓包大小主要由链路的平均实际流量决定,可使用以下公式进行粗略估算:
数据量(GB)≈ 平均流量(Mbps)× 0.45 × 采集小时数
| 平均实际流量 | 连续 1 小时约产生 | 按 300 MB 分卷约需 |
|---|---|---|
| 1 Mbps | 0.45 GB | 2 个文件 |
| 5 Mbps | 2.25 GB | 8 个文件 |
| 10 Mbps | 4.5 GB | 15 个文件 |
| 20 Mbps | 9 GB | 30 个文件 |
| 50 Mbps | 22.5 GB | 75 个文件 |
| 100 Mbps | 45 GB | 150 个文件 |
以上为十进制近似值;PCAP/PCAPNG 的每帧记录头和接口信息还会增加少量空间。TAP 同时输出两个满负载方向时,需要把两个方向的平均流量相加。即使链路标称 100 Mbps,实际文件大小仍取决于现场真实流量,而不是端口标称速率。
推荐分卷参数
低于 PacketLens 的 500 MB 上限,为文件头、浏览器内存和分析开销保留余量。
文件数 ≥ 预计总量 ÷ 300 MB,并额外预留 20%~30%。
不要为了减小文件把 snaplen 设得过小,否则应用层字段可能无法解析。
使用环形缓冲区时,故障发生后应尽快停抓,避免故障前数据被覆盖。
Wireshark 图形界面设置方法
- 打开采集选项在 Wireshark 选择“捕获(Capture)→ 选项(Options)”,并勾选连接 TAP 的正确网卡。
- 进入输出设置打开“输出(Output)”页,选择保存目录并填写基础文件名,例如
line1_fault.pcapng。 - 启用自动新建文件勾选“达到条件后自动创建新文件(Create a new file automatically after…)”,将文件大小设置为 300 MB。
- 设置环形缓冲区勾选“使用环形缓冲区(Use a ring buffer with…)”,填写要保留的文件数。例如 20 个文件约占 6 GB。
- 可选:限制总时长需要只抓取 1 小时时,可在自动停止条件中设置持续时间 3600 秒。
- 确认磁盘空间后开始检查预计总空间、保存路径和文件数,再点击“开始(Start)”。采集过程中观察底部丢包统计。
使用 dumpcap 自动分卷
Wireshark 自带的 dumpcap 更适合长时间、无人值守采集。先运行 dumpcap -D 查看网卡编号,再根据需要选择以下方式。
方式 A:20 个文件循环覆盖,每个约 300 MB
dumpcap -i 1 -s 0 -b filesize:300000 -b files:20 -w packetlens.pcapng
方式 B:最多生成 20 个文件,然后自动停止,不覆盖旧文件
dumpcap -i 1 -s 0 -b filesize:300000 -a files:20 -w packetlens.pcapng
方式 C:循环分卷,并在 1 小时后停止
dumpcap -i 1 -s 0 -b filesize:300000 -b files:20 -a duration:3600 -w packetlens.pcapng
-i 1 表示第 1 个采集接口;-s 0 表示保留完整帧;filesize 的单位是 kB;-b files:20 表示形成 20 文件环形缓冲区;-a files:20 表示写完 20 个文件后停止。
把分卷文件交给 PacketLens
- 根据文件名中的序号和时间戳,先选择覆盖故障时刻的文件。
- 从故障文件开始分析,再补充其前一个和后一个文件,保留上下文。
- 不要合并成超过 500 MB 的单个文件;必要时逐卷分析并对照帧时间。
- 保存原始分卷文件,不要只保留导出的异常 CSV 或 PDF。
04 / OPERATING PROCEDURE五步完成一次分析
- 打开 PacketLens确认页面顶部显示 HAOXING-TECH 品牌和“文件仅在浏览器本地处理”。
- 选择抓包文件把 PCAP、PCAPNG 或 CAP 拖入上传区域,或点击“选择抓包文件”。
- 等待分析完成页面依次读取、解析并执行诊断规则。需要停止时点击“取消分析”。
- 按顺序查看结果先读“一句话结论”和“建议下一步”,再看工业协议专项面板;只有需要复核时才深入专业字段和证据帧。
- 复核并导出在 Wireshark 中按帧号检查前后文,结合现场信息确认后导出报告。
分析状态说明
| 页面状态 | 含义 | 下一步 |
|---|---|---|
| 示例模式 | 显示系统内置演示数据,不是现场抓包结论。 | 上传真实文件替换示例。 |
| 正在分析 | 浏览器正在读取文件并执行规则。 | 等待完成或点击取消。 |
| 分析完成 | 当前结果可筛选、定位和导出。 | 从“诊断总览”开始检查。 |
| 分析未完成 | 格式、文件大小、链路类型或浏览器资源存在问题。 | 根据红色提示调整后重新上传。 |
05 / DIAGNOSIS OVERVIEW先读白话结论,再看专业证据
诊断总览和协议面板顶部首先回答三个问题:通信是否正常、问题更可能在哪一层、应该先检查什么。现场工程师不需要从最下面的报文字段开始阅读。
推荐阅读顺序
- 一句话结论先确认是“通信异常”“通信正常但设备未就绪”,还是“当前未见明显协议异常”。
- 三项状态分别查看通信层、真实周期和设备/伺服状态,快速判断故障边界。
- 建议下一步按 1、2、3 的顺序执行,不要同时修改多项配置。
- 专业证据需要解释结论或提交报告时,再查看 WKC、AL/ESC、事务状态、周期数据及证据帧。
| 页面结论 | 白话含义 | 优先动作 |
|---|---|---|
| 通信正常,但设备/伺服未使能 | 报文能够往返,从站也在线,但应用层还没有进入可运行状态。 | 查使能流程、安全回路、STO、抱闸、控制字和设备模式。 |
| 通信发现异常帧 | 抓包里出现响应计数、状态、异常响应或连接层面的直接证据。 | 先打开第一条证据帧,确认采集完整性,再查链路、设备和主站日志。 |
| 未见明显协议异常 | 当前规则没有发现明显通信证据,不等于整台设备一定正常。 | 继续查机械、电气、工艺、PLC 逻辑、设备报警和抓包时间范围。 |
基础指标
| 指标 | 含义 | 使用方法 |
|---|---|---|
| 数据帧 | 成功读入并参与识别的帧总数。 | 帧数过少时,统计类结论仅供参考。 |
| 捕获时长 | 最后一帧与第一帧之间的相对时间,单位为秒。 | 确认是否覆盖故障发生前后。 |
| 严重异常 | 协议明确失败或高影响事件的帧数。 | 优先打开其第一条证据帧。 |
| 风险提示 | 统计偏离、时序异常或需要现场复核的问题。 | 在处理严重异常后继续检查。 |
综合健康度
健康度为 0~100 的排序指标,综合严重异常、风险提示和异常占比。它帮助工程师比较“当前抓包中问题有多集中”,不等于设备健康证明,也不能单独作为换件依据。
- 存在严重故障证据优先检查协议明确失败、异常响应、错误状态或连接中断。
- 发现需要复核的风险结合拓扑、采集完整性和现场时刻判断。
- 未见明显协议异常仅表示当前规则未发现明显证据,不代表系统一定正常。
文件身份与规则版本
文件信息条显示格式、时间戳精度、链路类型、文件指纹和规则版本。远程协作时应把文件指纹写入报告,确保双方分析的是同一份抓包。
06 / TIMELINE如何使用流量与异常时间曲线
横轴从第一帧的 0.000000 s 开始;蓝色曲线表示每个时间窗口内的流量强度,红色标记表示严重异常出现的位置。
- 蓝线升高只表示该时段流量增加,不自动等于故障。
- 红色标记集中出现时,优先检查该时间窗的证据帧。
- 点击曲线可筛选附近时间范围,下方取证表会同步缩小结果。
- 点击“清除时间筛选”恢复完整抓包。
07 / PROTOCOL MODE协议选择与默认模式
主页面一次只显示一个工业协议专项面板,避免不同总线的指标互相干扰。协议按钮右侧数字是当前抓包中识别出的对应帧数。
| 模式 | 行为 | 适用情况 |
|---|---|---|
| 自动识别 | 显示识别帧数最多的已支持工业协议。 | 第一次打开抓包,不确定主要协议时。 |
| EtherCAT | 固定显示 EtherCAT 专项面板。 | 运动控制、伺服和高速远程 I/O。 |
| Modbus TCP | 固定显示 TCP/502 事务分析。 | PLC、仪表、网关和通用寄存器通信。 |
| EtherNet/IP | 固定显示 EIP 显式消息和 Implicit I/O。 | CIP 对象服务和实时 I/O 连接。 |
| PROFINET | 固定显示 PN 实时流、DCP、PTCP 和 Alarm。 | PROFINET IO 控制器与设备通信。 |
“默认模式”保存在当前浏览器中,下次打开网页或清除结果后继续使用;它不会修改抓包文件。
08 / ETHERCATEtherCAT 专项分析
证据链:Frame → Datagram → Direction → WKC → AL / ESC → DC 0x0910 → PDO Process Image → CiA402
首先看什么
- 先读“一句话结论”,确认问题属于通信层、周期层还是伺服状态层。
- 照着“建议下一步”逐项检查,不需要先理解全部 EtherCAT 专业字段。
- 只有需要复核结论时,才继续查看 WKC、AL/ESC、DC 时钟和 PDO 证据。
- 按证据帧回到 Wireshark,检查异常前后的连续周期。
核心指标
| 指标 | 说明 | 常见判断 |
|---|---|---|
| 真实总线周期 | 从 FRMW 0x0910 回程数据计算硬件时钟周期。 | 它比抓包软件时间更接近总线真实运行情况;丢周期为 0 且波动小,通常说明周期稳定。 |
| 过程数据变化 | 分别统计主站发送与从站回程 LRW 数据的逐字节活动。 | 用来找到控制字、状态字、位置等可能区域;“一直为零”不自动等于故障。 |
| 伺服状态(自动识别) | 按状态字位模式推测伺服轴、控制字、目标位置与实际位置。 | “未使能”时优先检查使能流程、安全回路和 STO;没有 ENI/ESI 时不可把候选字段直接当成确定报警码。 |
| Median / P95 / Max | 采集时间戳的主周期中位数、第 95 百分位和最大间隔。 | 没有 DC 时间时用于参考;有 DC 时间时不用于覆盖硬件时钟结论。 |
| P95 Jitter | P95 与 Median 的差值。 | 差值越大,尾部周期波动越明显。 |
| WKC 基线 | 同类 Datagram 在本次抓包中最常出现的 WKC。 | 实际值低于稳定基线时,可能有预期从站未处理。 |
| WKC 偏离 | 不同于分组基线的样本数量。 | 间歇偏离应结合状态切换、丢帧和前后周期判断。 |
| AL / ESC 事件 | 应用层状态、状态码、看门狗和链路错误计数。 | SAFE-OP + ERROR、SyncManager 或 DC 错误需优先复核。 |
地址与从站定位
“访问了哪些从站寄存器”展示 ADP、ADO、寄存器、访问次数、WKC 范围和证据帧。ADP 是协议寻址字段,不能直接等同为“第几个物理从站”。可靠定位需要 ENI/ESI、主站期望 WKC、从站身份和实际拓扑。
09 / MODBUS TCPModbus TCP 专项分析
证据链:MBAP → Transaction ID → Unit ID → Function → Register Range → Response / Exception → Latency
核心指标
| 指标 | 说明 | 重点检查 |
|---|---|---|
| 请求配对率 | 已找到匹配响应的请求占比。 | 低配对率可能来自设备未响应、单方向采集或抓包结束过早。 |
| 异常响应 | 响应功能码最高位为 1 的 Modbus Exception。 | 查看非法功能、非法地址、设备忙和网关无响应等异常码。 |
| 响应时间 P95 | 95% 已配对事务不超过的响应时间。 | 关注 PLC 扫描、网关负载、串口速率和设备处理延迟。 |
| TID 重用 | 上一个相同 Transaction ID 尚未完成,又出现新请求。 | 核对客户端并发和事务号管理。 |
事务和寄存器
Transaction Evidence 将请求与响应配对,显示 Unit ID、功能码、地址范围、响应时间和证据帧。Register Access Map 区分 Coil、Discrete Input、Input Register 和 Holding Register。页面显示协议零基地址,设备手册中的 3xxxx/4xxxx 地址可能需要换算。
常见问题方向
- Exception:优先核对功能码、地址范围、读写权限和设备状态。
- 未响应:核对设备在线、TCP 会话、Unit ID、抓包方向和结束位置。
- 响应慢:结合网关下游串口、轮询并发和 PLC 周期判断。
- 报文不完整:检查 TCP 分段、snaplen 截断或非标准端口。
10 / ETHERNET/IPEtherNet/IP(EIP)专项分析
证据链:Encapsulation → Session → CPF → CIP Service → Object Path → Explicit / Implicit I/O
两类通信不要混淆
主要使用 TCP/UDP 44818,适合参数、诊断和 CIP 对象服务;可配对请求与响应。
主要使用 UDP/2222,按 Connection ID 汇总周期 I/O 流量;通常没有普通请求/响应关系。
核心指标与证据
- Encapsulation Command:RegisterSession、SendRRData、SendUnitData、ListIdentity 等。
- Session:按 Session Handle 汇总请求、响应和错误。
- CIP Service:识别 Get/Set Attribute、Read/Write Tag、Forward Open 等服务。
- Object Path:显示 Class、Instance、Attribute,如 Identity、Assembly、Connection Manager。
- CIP Status:非零时显示路径未知、服务不支持、属性不支持等原因。
- I/O Connection:按 Connection ID 汇总帧数、字节数和观察窗口。
11 / PROFINETPROFINET(PN)专项分析
证据链:FrameID → Real-Time Flow → APDU Status → CycleCounter → DCP Device → PTCP / Alarm
实时流分析
系统按“FrameID + 源 MAC + 目的 MAC”建立实时流,统计样本数、周期 Median/P95/Max、常见 CycleCounter 增量、计数跳变和状态异常。
| 字段 | 含义 | 异常时的方向 |
|---|---|---|
| Data Valid | 过程数据是否有效。 | 无效时检查设备状态、模块组态和 AR/CR。 |
| Provider OK | 数据提供者是否正常。 | 检查 IO Device 诊断和控制器缓冲区。 |
| Run / Stop | 提供者当前运行状态。 | 确认控制器模式和设备启动过程。 |
| TransferStatus | 实时帧传输状态。 | 非零时该帧不应作为正常过程数据采用。 |
| CycleCounter | 周期计数器。 | 偏离常见增量时检查抓包丢帧、网络瞬断和周期停顿。 |
DCP 设备清单
DCP Device Inventory 从 Identify/Get/Set/Hello 中提取 MAC、NameOfStation、IP、子网掩码和网关,并检测站名重复、IP 重复、IP 冲突和服务不支持。
PTCP 与 Alarm
PTCP 用于识别时间同步相关流量;Alarm High/Low 进入事件证据列表。要定位具体模块、槽位、子槽位和通道原因,应在控制器工程软件或 Wireshark 中读取完整 AlarmData。
12 / FINDINGS & EVIDENCE关键发现与异常帧取证
如何理解一条关键发现
| 内容 | 说明 |
|---|---|
| 严重度 | 严重明确失败或高影响事件;注意统计偏离或需要现场确认。 |
| 置信度 | 确定事实可由协议字段直接确认;需复核来自抓包内部统计基线。 |
| 出现次数 | 同类问题在当前抓包中的总次数,不代表受影响设备数量。 |
| 证据帧 | 点击帧号可跳到取证表;建议在 Wireshark 中查看前后连续帧。 |
| 建议动作 | 提供下一步检查方向,不会自动执行任何现场操作。 |
在 Wireshark 中复核
记录 PacketLens 给出的帧号,在 Wireshark 显示过滤器中输入:
frame.number == 证据帧号
判断周期超时、重传、未响应和状态切换时,不要只看一帧。建议同时观察异常前后至少数十帧,并核对抓包时间与现场事件时间。
取证表筛选
- 搜索框可搜索 IP、MAC、端口、帧号、协议名称和摘要。
- 下拉框可只看严重异常、风险提示或指定协议。
- 点击时间曲线后,取证表只显示选定时间范围。
- 网页表格最多展示前 300 条当前结果;导出文件保留完整异常结果。
13 / REPORT & RESET导出、清除与交付
| 功能 | 包含内容 | 推荐用途 |
|---|---|---|
| 打印 / PDF | 当前页面的总览、专项面板、关键发现和取证表。 | 客户报告、维修记录、内部评审。 |
| 异常帧 CSV | 帧号、时间、源/目的、协议、严重度、问题和摘要。 | Excel 汇总、筛选和工单附件。 |
| 完整 JSON | 文件信息、健康度、发现和异常帧结构化数据。 | 二次开发、系统集成和归档。 |
| 清除分析结果 | 移除当前页面内存中的抓包结果并返回等待上传状态。 | 分析下一份文件或结束演示。 |
建议报告内容
- 项目、设备、产线、采集位置和采集时间。
- 原始抓包文件名、文件指纹和 PacketLens 规则版本。
- 首要故障、证据帧号、协议字段和现场复核结果。
- 处理动作、修复时间及修复后复测对比。
14 / TROUBLESHOOTING WORKFLOW推荐现场排查方法
位置与完整性
首要故障
字段与时序
前后文复核
配置、日志、复测
- 先排除采集问题确认抓包方向、持续时间、链路类型、帧截断和镜像口丢包。
- 先处理确定事实优先检查协议异常响应、错误状态、WKC=0、TCP RST、IP 冲突等。
- 判断故障方向根据源/目的、请求/响应和状态变化,区分控制器、设备、网关或链路。
- 与现场证据交叉验证核对 PLC/主站日志、设备 LED、交换机端口计数、拓扑和配置文件。
- 修复后同条件复测尽量使用相同采集点和相似负载,比较异常数量、周期和响应时延。
15 / CAPABILITY BOUNDARIES当前分析能力与边界
- 深度解析主要面向 Ethernet 链路类型;其他 LinkType 只进行有限识别。
- Modbus TCP 当前主要按 TCP 端口 502 识别;非标准端口可能无法自动判断。
- 跨多个 TCP Segment 的应用报文可能需要在 Wireshark 中启用 TCP Reassembly 后复核。
- EtherCAT WKC、周期和 PROFINET CycleCounter 基线来自本次抓包内部统计,不等于厂家理论值。
- 没有 ENI/ESI、EDS、GSDML、PLC 组态或实际拓扑时,不能保证映射到具体物理设备和模块。
- 加密通信只能分析可见的链路层和传输层行为,不能读取加密后的业务内容。
- 未发现异常仅表示当前规则没有发现明显协议证据,不代表机械、电气、控制逻辑和工艺一定正常。
16 / FAQ常见问题
为什么上传后仍显示示例数据?
确认文件已经分析完成,并查看上传区域是否有红色错误提示。文件格式不支持、文件过大或浏览器资源不足时,真实结果不会替换示例。
为什么没有识别到目标工业协议?
确认抓包点确实经过目标总线、链路类型为 Ethernet、TAP 方向正确。Modbus 使用非 502 端口时可能不会自动识别。
为什么显示请求未响应,但设备实际有回复?
可能只采集到单方向、响应发生在抓包结束后、事务标识不匹配、TCP 被分段,或采集过程中发生丢帧。
为什么周期超时或 Counter 跳变很多?
先检查镜像口/TAP 是否丢帧,再检查网络、控制器周期和设备状态。采集缺口也会造成类似现象。
健康度低是否说明设备已经损坏?
不是。健康度仅用于排序抓包中的协议风险。必须结合证据帧、设备日志和现场测量确认根因。
能否直接定位“第几个从站”?
只凭抓包字段通常不能可靠确认物理顺序。EtherCAT 需要 ENI/ESI 和拓扑;PROFINET 需要 GSDML、控制器组态、AR/CR 与实际拓扑。
网页会上传原始 PCAP 吗?
当前解析逻辑在浏览器本地运行,分析结果不会自动保存到网站。仍应按公司制度管理原始文件和导出报告。
PacketLens 用户操作手册