4. 通信故障排查(下):以太网/TCP-IP通信故障、IP冲突排查、交换机/路由器配置检查、抓包工具Wireshark基础使用
好,咱们接着聊通信故障。上一章我们把物理层和串口通信的坑填了不少,这一章重点落在以太网和TCP/IP协议栈上。说实话,光伏储能系统里,以太网通信的故障率比很多人想象的要高。我见过不少项目,现场调试人员折腾了一整天,最后发现就是一根网线没插紧,或者IP地址写错了。
嗯,咱们直接进入正题。
4.1 以太网/TCP-IP通信故障的常见表现
先说说故障现象。你在EMS后台看到什么?
- 设备离线:PCS、BMS、电表等设备在监控列表里显示灰色,状态为“通信中断”。
- 数据跳变:电压、电流、SOC等数值偶尔更新,但大部分时间卡住不动。
- 响应超时:下发控制指令(比如“启动充电”),设备没有回应,后台报“超时错误”。
- 周期性断连:设备每隔几分钟掉线一次,然后又自动恢复。
为什么会这样?说白了,就是数据包没能在正确的时间到达正确的地方。我个人的排查习惯是:先看物理层,再看网络层,最后看应用层。别一上来就抓包,那是最后的手段。
4.2 IP冲突排查:最容易被忽略的“隐形杀手”
IP冲突,我愿称之为现场调试的“头号刺客”。
你在一个光伏电站里,可能有几十台设备:PCS、BMS、汇流箱、气象站、摄像头……如果网络规划没做好,或者有人手贱改了IP,两台设备用了同一个IP地址,那结果就是——两台设备轮流掉线,或者干脆都上不了线。
核心判断方法:
- 在EMS后台ping目标IP,如果有时通有时不通,大概率是IP冲突。
- 用ARP命令查看MAC地址:
arp -a。如果同一个IP对应了两个不同的MAC地址,那就是冲突了。 - 更直接的办法:拔掉疑似冲突设备的网线,再ping一次。如果通了,说明就是它在捣乱。
我的经验:有一次在西北某光伏电站,PCS总是每隔3分钟掉线一次。我排查了交换机、网线、光纤收发器,折腾了2小时。最后用arp -a一看,PCS的IP和现场一台笔记本电脑的IP一模一样。原来运维人员临时用笔记本调试,随手设了个静态IP,正好撞上了。嗯,从那以后,我要求所有现场设备必须使用DHCP静态分配,或者统一规划IP段,严禁随意设置。
4.3 交换机/路由器配置检查
很多工程师觉得交换机配置是网络工程师的事,自己不懂。其实不用怕,你只需要掌握几个关键点。
4.3.1 VLAN配置
光伏电站里,为了安全隔离,经常会把PCS、BMS、监控系统划分到不同的VLAN。如果VLAN没配好,设备之间就ping不通。检查方法:
- 登录交换机,查看端口所属VLAN:
show vlan brief(思科)或display vlan(华为/H3C)。 - 确认EMS所在的端口和PCS所在的端口是否在同一个VLAN里。
- 如果跨VLAN通信,检查是否有三层接口或路由配置。
4.3.2 端口速率与双工模式
这个坑我踩过。有些老旧设备(比如某些电表)只支持10M半双工,而交换机默认是100M全双工。结果就是:能通,但丢包率极高。
- 检查端口状态:
show interface status。 - 如果发现大量CRC错误或碰撞,强制设置端口速率为10M半双工试试。
4.3.3 STP(生成树协议)
如果网络中有环路,STP会阻塞端口。但有时候STP收敛太慢,导致设备启动时无法及时通信。我建议:
- 在连接终端设备的端口上开启portfast(思科)或边缘端口(华为),让端口立即进入转发状态。
- 命令示例(思科):
interface GigabitEthernet0/1→spanning-tree portfast。
注意:千万不要在连接其他交换机的端口上开portfast,否则会造成广播风暴。我曾经见过一个新手把核心交换机的上联口开了portfast,结果整个电站网络瘫痪了10分钟。
4.4 抓包工具Wireshark基础使用
当ping通、IP没冲突、交换机配置也没问题,但数据就是不对时,就该请出Wireshark了。说实话,Wireshark是排查通信故障的“终极武器”,但很多人觉得它太复杂。其实你只需要掌握几个核心功能。
4.4.1 安装与启动
Wireshark是免费的,官网下载即可。安装时注意勾选“WinPcap”或“Npcap”,否则抓不到包。
4.4.2 抓包过滤器
别一上来就点“开始”,那样会抓到海量数据,你根本看不过来。先设置过滤器:
- 按IP过滤:
ip.addr == 192.168.1.100—— 只看这个IP的流量。 - 按协议过滤:
modbus—— 只看Modbus TCP报文(光伏系统里很常用)。 - 按端口过滤:
tcp.port == 502—— Modbus TCP默认端口是502。
4.4.3 分析关键信息
抓到包之后,看什么?
- 三次握手:SYN → SYN-ACK → ACK。如果只有SYN没有ACK,说明对方没响应。
- 重传包:Wireshark里标记为“TCP Retransmission”的包。如果重传率超过5%,说明网络质量很差。
- 应用层数据:比如Modbus报文,看功能码和寄存器地址是否正确。
实战案例:有一次,EMS下发“启动PCS”指令,PCS没反应。我抓包一看,EMS发出的Modbus报文功能码是0x10(写多个寄存器),但PCS只支持0x06(写单个寄存器)。问题不在网络,在协议不匹配。嗯,这就是抓包的价值——让你看到“数据到底长什么样”。
4.4.4 常用技巧
- 追踪流:右键点击一个TCP包 → Follow → TCP Stream,可以看整个会话的原始数据。
- 统计:Statistics → IO Graph,可以看流量趋势,判断是否有周期性丢包。
- 着色规则:Wireshark默认用颜色标记不同协议,比如HTTP是绿色,TCP重传是红色。熟悉这些颜色能帮你快速定位问题。
4.5 本章知识体系
下面这张图,是我自己总结的以太网通信故障排查流程。你照着这个顺序走,90%的问题都能解决。
4.6 避坑指南
最后,分享几个我踩过的坑,希望能帮你省点时间。
- 别信“灯亮就是好的”:交换机端口指示灯亮,只代表物理层有信号,不代表数据能正常传输。我遇到过网线内部断了两根线,灯照样亮,但丢包率50%。
- 防火墙和杀毒软件:在Windows上跑EMS时,Windows防火墙或第三方杀毒软件可能会拦截Modbus TCP报文。我建议先把防火墙关了测试,如果问题消失,再配置例外规则。
- MTU设置:有些光伏设备(尤其是老款电表)不支持巨型帧。如果交换机开启了Jumbo Frame(MTU>1500),设备可能收不到大包。解决办法:把交换机端口MTU设为1500。
- 抓包别在EMS上抓:如果条件允许,用一台独立的笔记本电脑,接到交换机的镜像端口上抓包。这样不会影响EMS本身的性能。
我的习惯:每次去现场,我都会带一台预装好Wireshark的笔记本,网线、串口线、USB转网口都备齐。到了现场,先不急着动配置,先抓5分钟的包看看背景流量。有时候你会发现,网络里有很多莫名其妙的广播包,那可能就是问题的根源。
好了,以太网通信故障排查就讲到这里。记住:从物理层开始,一步步往上走,别跳步。抓包是最后的手段,但也是最有力的手段。下一章我们会聊更高级的协议分析,但今天的内容,足够你应对现场80%的通信问题了。