主题
2.4 UDP 被限制时用 TCP 找设备
现象
点「🔍 搜索设备」一台都搜不到,但设备本身是正常的:
- 电源灯、网口灯正常,设备在运行
- 从电脑能
ping通设备 IP - 换一台电脑、或者把电脑和设备接到同一个免配置交换机上就能搜到
这种情况几乎都是网络把 UDP 广播拦掉了。
为什么会这样
上位机默认靠 UDP 广播发现设备:向 255.255.255.255:25388 发一帧,同广播域内的设备收到后应答。广播被拦掉,这一路就完全失效。
常见的拦截来源:
| 场景 | 说明 |
|---|---|
| 无线 AP 开了「客户端隔离」 | AP 禁止无线客户端之间互相通信,广播帧直接被丢掉 |
| 企业网 / 园区网的交换机策略 | 出于防病毒、防广播风暴,交换机或防火墙过滤广播和组播 |
| 电脑和设备不在同一网段 | 广播不跨路由,跨网段本来就收不到 |
| Windows 防火墙 | 拦掉的是上位机自己收包,见 搜索设备的五种方式 里的防火墙提示 |
| 电脑上有虚拟机 / VPN 网卡 | 上位机会跳过虚拟网卡(描述里带 VMware、Hyper-V、VirtualBox、Docker、Virtual 字样的),设备如果挂在这类网卡下面就不会被广播到 |
多张网卡不用担心走错
上位机会枚举本机每一张已启用的物理网卡,各自绑定自己的 IP 各发一次广播,不是只挑一张发。所以"电脑上网卡多、广播走错网卡"这个常见问题在本工具上不存在,搜索日志里能看到每张网卡各一行 UDP 广播扫描 ...。
会被漏掉的只有上面表格里说的虚拟网卡,以及处于"未连接"状态的网卡。
关键点是:广播被拦,不代表设备不能连。设备的 5551 管理端口一直在正常监听,只要电脑能路由到设备 IP,改用 TCP 直连就能把设备找回来,后续配参数、下载程序、在线监视、升级固件全都照常。
三种办法,按顺序试
| 办法 | 要不要知道设备 IP | 需要配置吗 | 什么时候用 |
|---|---|---|---|
| ① 历史 IP 自动兜底 | 不用 | 不用,软件自动 | 这台设备以前在这台电脑上搜到过 |
| ② 手填 TCP 目标 IP | 要 | 设置里填一次 | 知道设备 IP(最推荐) |
| ③ 网段扫描 | 不用 | 设置里打开开关 | 完全不知道 IP,前两种都没用 |
办法① 历史 IP 自动兜底(不用配)
只要某台设备曾经被这台电脑搜到过一次(不管当时是 UDP 还是 TCP 搜到的),上位机就会自动把它的 IP 记下来,以后每次搜索都顺手用 TCP 探一遍这些地址。
- 完全自动,设置里不用动任何东西,也不需要打开「启用 TCP 直连搜索设备」
- 最多记 32 个 IP,最近搜到的优先保留
- 只记局域网设备(UDP / TCP 搜到的)。云服务搜到的设备报的是它自己内网的地址,从您的电脑根本连不上,不会记
- 记在全局注册表
HKEY_CURRENT_USER\Software\LPPLC\tcp的known_ips值(不再存程序目录的lp_config.ini)
所以现场如果是"以前一直好,今天忽然搜不到了",先直接再点一次搜索看看,很可能已经被这一路捞回来了。搜索日志里会看到:
TCP 直连探测(历史搜到过的 3 个 IP):192.168.1.50, 192.168.1.51, 192.168.1.52
TCP 192.168.1.50 发现设备: LP3232-01
TCP 192.168.1.51 无设备响应办法② 手填 TCP 目标 IP(知道 IP 时首选)
点顶部 ⚙ 设置
「搜索设置」里勾上 启用 TCP 直连搜索设备
下面出现 TCP 目标 IP 输入框,把设备 IP 填进去,多个用逗号或空格分隔:
192.168.1.50, 192.168.1.51, 192.168.8.1点 保存,回主窗口点 🔍 搜索设备
搜索日志里会逐个回报结果,成功和失败都报:
TCP 直连探测(设置里手填的 3 个 IP):192.168.1.50, 192.168.1.51, 192.168.8.1
TCP 192.168.1.50 发现设备: LP3232-01
TCP 192.168.1.51 无设备响应看到「无设备响应」,说明这个 IP 上没有设备应答,往下按「怎么查到设备 IP」核对。
4G 模块的 AP 地址
出厂默认就带了 192.168.8.1 和 192.168.8.254,这是 4G 模块开热点时常见的地址。电脑连上设备热点后,勾上开关直接搜就行。
办法③ 网段扫描(完全不知道 IP 时的兜底)
设置里勾上 扫描整个网段(IP 范围),搜索时会从本机每张网卡的 IP 推出所在网段,把 .1 ~ .254 逐个探一遍 5551 端口。
比如电脑是 192.168.1.100,就会探 192.168.1.1 到 192.168.1.254。
这是排障开关,用完请关掉
对整个网段连同一个端口,是典型的端口扫描特征。企业网、园区网里很可能触发防火墙 / IDS / 杀毒软件告警,甚至把您这台电脑的 IP 临时拉黑,反而更麻烦。
所以它出厂是关闭的,只在确实不知道设备 IP 时临时打开,找到设备后(IP 会被自动记住,见办法①)请把开关关掉。
搜索日志会说明扫的是哪个网段、覆盖哪些 IP:
网段扫描 192.168.1.100 (以太网) -> 192.168.1.1 ~ 192.168.1.254 的 5551 端口
网段扫描共 253 个待探测地址,逐个探测 5551 端口(可点停止随时中断):
192.168.1.1, 192.168.1.2, ... 等 253 个
网段扫描:192.168.1.50 的 5551 端口开放,尝试握手...
TCP 192.168.1.50 发现设备: LP3232-01
网段扫描完成,共发现 1 个开放 5551 端口的地址几点说明:
- 只扫本机所在的这一个网段。掩码是
255.255.0.0这种大网段时也只扫本机那一段的 254 个地址,不会去扫 6 万多个地址 - 一个网段大约 1~2 秒扫完(先用 300ms 短超时筛掉端口没开的地址,只有端口真的开着才做完整握手)
- 电脑有多张网卡时,每张网卡的网段都会各扫一遍
- 扫描中随时可以点 停止,会立刻中断,不用等它扫完
- 「5551 端口开放」不等于就是本产品的设备,别的软件也可能占这个端口,握手不通过就不会出现在设备列表里
怎么查到设备 IP
办法②要填 IP,可以从这几个地方拿到:
| 途径 | 做法 |
|---|---|
| 路由器 / AP 管理页 | 看 DHCP 客户端列表,找设备的 MAC 对应的 IP |
| 串口连上读参数 | 用编程口模式接串口,搜到设备后在「网口」标签页看 IP。见 搜索设备的五种方式 |
| 云服务 | 设备已上云的话,云端设备的「网口」参数里能看到它的内网 IP |
| 4G 热点 | 电脑连设备热点,网关地址就是设备地址,一般 192.168.8.1 |
| 设备本来是固定 IP | 问一下现场当初配的是多少 |
注册表里的对应项
这些开关都存在全局注册表 HKEY_CURRENT_USER\Software\LPPLC(不再存程序目录的 lp_config.ini,所以 上位机复制到哪个目录、从哪个目录启动都是同一套参数)。排障时可用 regedit 看:
reg
[HKEY_CURRENT_USER\Software\LPPLC\search]
tcp = DWORD 1 ; 启用 TCP 直连搜索设备
subnet = DWORD 0 ; 扫描整个网段(默认 0,排障时才开)
[HKEY_CURRENT_USER\Software\LPPLC\tcp]
ips = 192.168.1.50,192.168.1.51 ; 手填的目标 IP,逗号分隔写一行
known_ips = 192.168.1.50 ; 软件自动记住的,不用手改用 regedit 手改前先关掉上位机
上位机会在设置界面保存时把当前设置写回注册表,开着的时候用 regedit 改可能在下次保存时被覆盖。正常情况下都在设置界面里改,不用碰注册表。
找到设备之后
TCP 直连搜到的设备,和 UDP 搜到的用起来完全一样:配置参数、在线监视、下载程序、升级固件都正常。
设备 IP 会被自动记住,下次搜索不用再手填,也不用再开网段扫描。
如果设备搜到了但和电脑不在同一网段,编程 / 下载会要求同网段,先改 IP,见 子网不匹配与修改 IP。
还是不行?
按顺序排掉这几项:
- 电脑能 ping 通设备吗 —— ping 不通就是路由 / 网线 / IP 段的问题,跟上位机无关,先把网络打通
5551端口通吗 —— 命令行执行Test-NetConnection 192.168.1.50 -Port 5551(PowerShell),TcpTestSucceeded : True才说明端口可达- 中间有防火墙 ACL 吗 —— 有些企业网只放行特定端口,需要找网管放行 TCP 5551
- 设备是不是在别的网段 —— 跨路由要确认路由可达,纯二层隔离的话 TCP 也过不去
- 走云服务 —— 局域网实在打不通,让设备上云,通过云服务远程配置和编程,见 云服务与远程编程