2. Basler设备发现与枚举
在批量配置场景中,第一步永远不是“改参数”,而是“把设备找全、认准、记录清楚”。如果设备发现环节遗漏了某台相机,后续无论版本升级还是参数下发都会出现“漏网之鱼”;如果同一台设备在不同工具中显示为不同标识,批量脚本就可能把配置写到错误的机器上。因此,理解 Basler 相机的发现与枚举机制,是整条批量管理链路的地基。
一、两种接口,两套发现机制
Basler 相机主要分为 GigE Vision 和 USB3 Vision 两大类,它们的发现机制在底层完全不同。
GigE Vision 设备发现基于 UDP 广播。主机侧(pylon 或 IP Configurator)向本地子网广播地址发送 GVCP Discovery 命令,所有处于同一广播域的 GigE 相机会回应自身的 MAC 地址、IP 地址、子网掩码、网关、厂商名称、型号、序列号、设备版本、用户自定义名称等信息。这意味着:只要相机与主机在同一二层网络内,即使相机 IP 与主机不在同一网段,也能被发现——这正是 IP Configurator 能够“跨网段看到设备并修改 IP”的原因。反之,如果相机与主机之间隔着路由器且未配置广播转发,发现就会失败。
USB3 Vision 设备发现则依赖操作系统的 USB 枚举。相机插入后,系统识别其 USB 描述符,pylon 通过底层驱动读取设备信息。USB3 Vision 没有 IP 概念,因此不存在“改 IP”这一步,但同样存在设备标识(序列号、用户自定义名称)和带宽、供电等约束。USB 设备发现通常更“即时”,但受限于 USB 控制器、线缆质量和供电能力,批量场景下更容易出现枚举不稳定。
二、pylon IP Configurator 的定位与操作
pylon IP Configurator 是 Basler 官方提供的 GigE 相机网络配置工具,它的核心价值在于:在相机 IP 与主机不在同一网段时,仍能发现并修改相机网络参数。典型操作流程如下:
- 打开 IP Configurator,工具自动广播扫描当前广播域内的所有 GigE 相机。
- 设备列表显示每台相机的 MAC 地址、当前 IP、子网掩码、网关、型号、序列号、用户自定义名称。
- 选中目标相机,修改 IP 地址、子网掩码、网关,点击“Write Configuration”。
- 修改后相机可能短暂离线,重新扫描确认新 IP 生效。
在批量场景中,建议先通过 MAC 地址建立“物理设备—目标 IP”的映射表,再逐台写入。因为 MAC 地址是唯一且不变的,而 IP 可能被重复分配或冲突。例如,某产线有 12 台 acA1920-40gm 相机,可规划为 192.168.10.101~112,子网掩码 255.255.255.0,网关 192.168.10.1。写入前务必确认没有 IP 冲突,否则会出现“两台相机抢同一地址”的异常。
三、批量扫描与设备列表导出
当设备数量达到几十台甚至上百台时,逐台点击查看效率极低。pylon 提供了批量扫描与列表导出能力,常见做法有两种:
方式一:pylon Viewer 设备列表导出。在 pylon Viewer 中打开“Device”面板,扫描后可将设备列表导出为 CSV 或文本文件。导出字段通常包括:接口类型、厂商、型号、序列号、用户自定义名称、IP 地址、MAC 地址、设备版本。这份列表可直接作为批量配置的输入清单。
方式二:pylon API 编程枚举。使用 pylon C++ 或 C# API 中的 TlFactory::EnumerateDevices 或 DeviceEnumerator,可遍历所有已发现设备并读取其属性。以下为 C# 示例片段:
using PylonC.NET;
var devices = DeviceEnumerator.EnumerateDevices();
foreach (var dev in devices)
{
Console.WriteLine($"Model: {dev.ModelName}");
Console.WriteLine($"Serial: {dev.SerialNumber}");
Console.WriteLine($"UserDefinedName: {dev.UserDefinedName}");
Console.WriteLine($"DeviceClass: {dev.DeviceClass}");
Console.WriteLine($"Interface: {dev.Interface}");
}
导出后的设备列表建议至少包含以下字段,便于后续批量配置与版本管理:
| 字段 | 说明 | 示例值 |
|---|---|---|
| 序列号 | 设备唯一标识,不可更改 | 12345678 |
| 型号 | 相机型号 | acA1920-40gm |
| 接口类型 | GigE 或 USB3 | GigE |
| MAC 地址 | GigE 设备物理地址 | 00:30:53:AA:BB:CC |
| IP 地址 | 当前网络地址 | 192.168.10.101 |
| 用户自定义名称 | 便于人工识别 | Line1_Cam01 |
| 设备版本 | 固件/设备描述版本 | 1.2.3 |
四、发现环节的常见问题与判断
批量扫描时,如果发现设备数量少于预期,可按以下顺序排查:
- GigE 相机未出现:检查相机与主机是否在同一广播域;检查网卡是否启用;检查防火墙是否拦截 UDP 广播;检查相机是否已上电且网口指示灯正常。
- USB3 相机未出现:检查 USB 线缆是否支持 USB3 速率;检查是否使用了带供电的集线器;检查驱动是否安装正确;尝试更换 USB 控制器端口。
- 设备出现但信息异常:如 IP 显示为 169.254.x.x,说明相机未获取到有效 DHCP 地址,处于链路本地地址状态,需要通过 IP Configurator 手动分配。
- 同一设备重复出现:可能同时存在 GigE 和 USB 接口,或同一相机被多个网卡发现,需根据接口类型和 MAC 地址去重。
完成设备发现与列表导出后,你就拥有了一份“设备台账”。这份台账是后续批量参数配置、固件版本核对、设备替换追踪的基础。下一阶段的工作,将围绕这份台账展开参数下发与版本一致性校验。