ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

以太网从入门到实战:MAC地址、帧结构、2.5G速度与工业EtherNet/IP排查

以太网从入门到实战:MAC地址、帧结构、2.5G速度与工业EtherNet/IP排查 干这行十几年被问得最多的问题之一就是“以太网到底是个啥”。不是那种教科书定义而是你打开电脑网卡显示“Intel(R) Ethernet Connection (16) I219-V”或者PLC那边报个“EtherNet/IP通讯超时”又或者新买的2.5G网卡插上去怎么都跑不满速——这些东西背后全是同一个家伙Ethernet。这篇我不打算给你背一遍OSI七层模型而是换一种方式把以太网从里到外拆开从网卡上的MAC地址到线上的电信号再到工业现场机器人和焊机怎么通过它对话最后落到你电脑上的VLAN配置和“Apple Mobile Device Ethernet”那个莫名奇妙出现的虚拟网卡。整个过程用实际干活的角度讲顺便把我这些年踩过的坑、总结的排查套路都交代出来。不管你是个刚入门的小白还是被设备通讯折腾到头秃的工程师应该都能从这里拿走点有用的东西。1. 以太网到底是什么从数据链路层看起1.1 先搞明白以太网不负责“传到全世界”很多人会把“以太网”和“互联网”画等号这是最大的误区。以太网干的活说白了就是把数据从一个设备搬到同一个局域网里的另一个设备它天生不关心你外面连的是什么。打个比方以太网是小区里的快递柜负责把包裹从A栋送到B栋而互联网是全国的物流网络快递柜只是整个物流链路最末端那一截。你用微信发一条消息消息先经Wi-Fi或网线到达路由器路由器再往上走。其中从你的电脑到路由器这一段几乎永远是以太网在干活。那以太网靠什么确认“谁是A栋、谁是B栋”靠的是MAC地址也叫物理地址。每一块以太网网卡出厂时都被烧录了一个全球唯一的48位标识符长成“00:1A:2B:3C:4D:5E”这样。前24位是厂商代号后24位是设备序列。你在Windows命令行里敲ipconfig /all看到的“物理地址”就是它。这个地址是数据链路层的身份证以太网帧能不能被正确接收全靠它。1.2 以太网帧搬运数据的最小集装箱以太网传数据不是裸传字节而是把数据装进一个固定格式的“集装箱”里这个集装箱叫以太网帧Ethernet Frame。经典结构长这样字段长度作用前导码Preamble7字节让接收方同步时钟全1序列帧起始符SFD1字节标记帧正式开始目的MAC地址6字节发给谁源MAC地址6字节谁发的类型/长度EtherType2字节指示上层协议如IPv4是0x0800IPv6是0x86DD数据负载46~1500字节真正要传的上层数据FCS校验4字节循环冗余校验防止数据在传输中出错这里有个新手很容易忽略的点帧最小长度是64字节不含前导码和SFD如果数据负载不够46字节就要填充。为什么定64字节这跟经典的CSMA/CD冲突检测机制有关——一个站点在发送完整个帧前必须能检测到自己有没有和别的站点“撞车”。在10Mbps时代这个时间对应了最大电缆长度的两倍传播时延。现在虽然交换机组网全双工模式下基本不会冲突了但这个帧格式被完整保留了下来你抓包时如果看到 64 bytes的短帧带填充不要以为出错了它合法。1.3 MAC地址的“单播/广播/组播”语义MAC地址不只是个编号它最后一位的二进制值决定了帧的投递方式。最后一位是0代表单播帧只发给指定设备最后一位是1代表组播Multicast发给某个组里的设备。全FFF:FF:FF:FF:FF:FF则是广播发给网段里所有设备。这个细节在工业以太网里特别重要因为像EtherNet/IP这种协议会大量用到组播地址去做IO数据分发一旦你配置错子网掩码或者交换机的组播过滤策略不对设备就会抽风时通时断看监控全都正常但现场就是切不到自动。2. 从10M到2.5G速度家族与物理层的那点事2.1 以太网的速度演进为什么千兆之后冒出个2.5G早期以太网是10Mbps后来是100Mbps快速以太网再后来千兆1000BASE-T成为绝对主流一颗芯片千兆网口烂大街。但近几年你去买新电脑会发现一个现象板载网卡开始标2.5G了。热搜词里“1g/2.5g ethernet pcs/pma or sgmii”指的就是这一族设备在驱动层面会遇到的PCs/PMA/SGMII接口类型。为什么跳过万兆直接上2.5G因为万兆10GBASE-T需要六类以上网线、传输距离短、发热大、芯片成本高对绝大多数家庭和办公场景完全不划算。而2.5G的PARA架构也就是2.5GBASE-T可以跑在普通超五类网线上距离还是100米芯片成本比千兆没贵多少。于是Intel的I225/I226、Realtek的8125B系列出来了笔记本基本都配了2.5G口。换句话说2.5G是在现有布线基础设施上榨出性能的最优解不需要换线不需要换交换机前提是交换机也得有2.5G口比如传大文件从110MB/s左右提升到280MB/s左右体感非常明显。2.2 PCS/PMA/SGMII到底是什么物理层接口名词一次讲清驱动安装时你会看到“Intel(R) Ethernet Connection (16) I219-V”、“1g/2.5g ethernet pcs/pma or sgmii”这类字样这其实是网卡内部物理层的几个子模块。这几层架构里有个很关键的分工。靠近MAC媒体访问控制子层的那层叫PCS物理编码子层负责把MAC层交下来的数据编解码比如8B/10B编码1G时代或者64B/65B编码10G、2.5G/5G时代目的是保证线路上有足够的跳变沿方便接收端恢复时钟。再往下是PMA物理介质附加子层负责串行化、解串行化以及时钟恢复。再往下是PMD物理介质相关子层直接跟网线打交道负责发送电平、接收均衡这些模拟的事。SGMII则是MAC和PHY之间一种常用的串行接口全称Serial Gigabit Media Independent Interface只有4根线发送差分对、接收差分对比老的MII/GMII那种并行总线省脚位所以几乎成了板级设计的默认选择。这些概念什么时候能用上当你检查驱动属性找“高级”选项卡时在“Interconnect Type”或“Link Speed”里看到“1Gb/2.5Gb Auto Negotiation”或者“SGMII”之类的参数。一般不需要改动但你要是把速率协商模式改错了比如强制到100Mbps那2.5G口就白白浪费了。我有一次装机忘了调网卡的高级选项结果win10自认千兆驱动没吃满2.5G后来去Intel官网下了新驱动、进高级设置确认“Speed Duplex”是“Auto Negotiation”速度瞬间就对上了。2.3 网线与网口的物理选择别看不上超五类很多人在2.5G网卡上开了“2.5 Gbps Full Duplex”结果还是跑千兆。先排除线的问题。2.5GBASE-T设计上就是按超五类线Cat5e100米来预设的理论上Cat5e够用。但劣质Cat5e、水晶头压接工艺差、中途有损伤高频信号串扰指标就过不了自动协商会退回1G甚至100M。检查方法很简单看网卡属性的“连接速度”如果稳定在“1000 Mbps”基本可以判断是链路问题而不是电脑问题。换一根六类线Cat6往往当场解决。至于屏蔽线我个人的建议是家里走线短、没有强干扰源的话非屏蔽就够别花冤枉钱工业现场有变频器、动力电缆的那种环境必须上STP屏蔽线而且屏蔽层要单端可靠接地否则屏蔽比不屏蔽还糟。3. 工业现场的以太网EtherNet/IP与设备通讯实战3.1 热搜里的“安川与焊机Ethernet通讯”是怎么回事工业圈里“Ethernet”不是泛指那个传统以太网而是指跑在以太网之上的工业应用协议。热搜词里“安川与焊机Ethernet通讯”所指的大概率是安川机器人控制器通过EtherNet/IP和焊机比如Fronius、OTC、松下的焊接电源控制器交换数据。因为EtherNet/IP在国际工业自动化里一直是通用性很好的一档存在。EtherNet/IP的底层就是标准TCP/IP上层却是CIPCommon Industrial Protocol这就相当于一切物理层为基础、上面跑专用语法。具体场景是机器人要告诉焊机“现在开始送丝、给定电压电流、关闭高压”焊机要回传“实际焊接电流、故障报警、送丝速度”。如果你用模拟量/硬接线得拉几十根电缆抗干扰、排查故障都是噩梦。换成EtherNet/IP一根网线全搞定而且数据能在PLC、机器人、焊机、MES系统之间共享这是传统硬接点没法比的。3.2 EtherNet/IP核心概念隐式报文和显式报文EtherNet/IP把数据分成两类隐式报文I/O走UDP 2222端口周期性小包实时性好常用于运行时的控制数据比如焊接电流给定、实际反馈。这类数据是固定格式、固定长度不讲究可靠性重传因为控制数据晚到不如丢包丢了你下一周期再发一个就是了。显式报文Explicit走TCP 44818端口非周期用于配置、诊断、参数读写。比如你上位机读取焊机当前的型号、修改设备IP地址走的就是这个通道。正因为两条通道分开EtherNet/IP才能做到“实时控制归实时控制配置管理归配置管理互不干扰”。3.3 实测配置步骤安川机器人 焊机的EtherNet/IP通讯这里我以安川YRC1000或YRC1000micro控制柜为例讲一下完整的通讯配置步骤。不同型号菜单名称有轻微差异但思路通用。确认硬件机器人控制柜的以太网口通常有内置EtherNet/IP功能焊机侧需要配套的EtherNet/IP通讯板卡比如Fronius的Remote Control Ethernet接口板。先在焊机面板里设置焊机IP常见是192.168.1.x子网掩码255.255.255.0。设置机器人侧IP进入安川的“外部通讯设定”或“以太网设定”把控制柜IP设为同一网段的静态地址比如192.168.1.10。不要开DHCP工业现场一旦IP漂移你就等着全线停机吧。配置EtherNet/IP Scanner/Adapter安川机器人通常作为Scanner主站焊机作为Adapter从站。在机器人侧的EtherNet/IP配置里添加从站填入焊机的IP再配置Assembly对象实例号。标准CIP里Output Assembly从站接收的数据一般是实例64或100Input Assembly从站发送回来的数据是实例65或101但焊机厂家可能会有自定义这个必须查焊机侧手册别自己猜。映射数据长度根据焊机通讯手册定义32位或64位输入输出数据。例如Output数据里可能第0字节是启动指令、第1字节是电流选择的16位整数Input数据里第2字节是实际电流高八位。把机器人侧的寄存器变量和这些字节一一对应。联机调试先在线看通讯状态EtherNet/IP模块一般有“Link OK”、“Scanner Connecting”之类的状态位。然后在机器人示教器里手动给一个启动信号看焊机是否响应。别一上来就全自动跑先手动单步确认每个字节映射对。3.4 工业以太网布线的额外功夫工业环境和家庭不一样网线要过拖链、要耐油、要抗电磁。我见过太多现场问题是“通讯测试正常一开机就断”十有八九是布线问题。几个硬性原则使用工业级屏蔽网线Cat5e/Cat6 SFTP不要用办公网线代替。办公线的外皮扛不住焊机飞溅、冷却液、紫外线。线缆远离动力线至少保持20厘米间距。焊机电缆和动力电缆必须分开桥架走线交叉时尽量垂直。控制柜接地必须可靠。我记得有一次老出“周期性丢包”查来查去发现控制柜门没接地机架悬空成了天线屏蔽层接了机架等于接了个噪音放大器。把柜门和机架之间加编织接地线后问题消失。尽量使用工业交换机普通家用交换机虽然也能用但在恶劣环境和EMC性能上差太多。尤其是设备震动环境普通商用交换机的网口是金属弹片拖线拉久了会松动。4. 电脑上的以太网驱动、VLAN与那个“Apple Mobile Device Ethernet”4.1 Intel I219-V网卡和VLAN配置为什么有线和无线要分开配热搜里的“Intel(R) Ethernet Connection (16) I219-V 配置VLAN”这个I219-V是Intel千兆网卡中非常常见的一颗在大量台式机主板上都可以看到。它的驱动和配置在Windows上的细节比不少人想的复杂一些。先明确为什么要配VLAN。VLAN虚拟局域网的核心是把一个物理交换机划分成多个逻辑广播域。如果你公司有办公网和生产网两个网段但只有一根网线拉到你工位就需要在同一个物理端口上打两个VLAN Tag从这台电脑发往办公网的数据打上VLAN 10的标签发往生产网的打上VLAN 20的标签。这样交换机才能区分并把数据转发到对应的VLAN里。配置步骤在Windows 10/11专业版上打开“设备管理器”找到“网络适配器”下的Intel I219-V右键属性。切到“高级”选项卡找到“VLAN ID”默认值是0表示不打标签。改为你要用的VLAN号比如10确认。然后在“常规”里把网卡IP设成VLAN 10对应网段的地址比如192.168.10.5/24。但这里有个很坑的地方Windows里一个物理网卡只能设置一个VLAN ID。如果你同时需要连两个不同VLAN就得装Intel的驱动工具“Intel PROSet”在网卡属性里新增多个VLAN接口每个VLAN对应一个虚拟网卡之后分别配IP。很多工程同事不知道这个以为网卡“高级”里只能填一个值就只配一个VLAN然后跑来问我为什么另一个网段不通——你根本没创建对应的虚拟接口当然不通。另一个更隐蔽的问题是Windows的VLAN配置是基于网络连接名称的你重装系统或者驱动升级后这块配置还在注册表里但网络连接名变了导致配置对不上。所以做系统镜像前先把VLAN配置导出PowerShellGet-NetAdapter -Name * | Select Name, InterfaceDescription, VlanID重装后照着导出的清单重新配置。4.2 无线网卡的VLAN和有线完全不是一回事无线网卡在Windows下默认不支持VLAN Tag。因为Wi-Fi协议本身是802.11帧格式和以太网不同客户端网卡驱动通常不对普通用户暴露VLAN接口。你要在无线网络上跑VLAN一般靠上层方式解决连上某个WLAN之后用Windows的“高级”或第三方客户端指定VLAN ID或者干脆走隧道方案。这个如果你不是网管不用深究记住结论即可有线网卡配VLAN简单无线网卡配VLAN麻烦。4.3 Apple Mobile Device Ethernet突然多出来的网卡是啥很多人装完iTunes或者连过一次iPhone之后打开ipconfig /all会发现多了一个叫“Apple Mobile Device Ethernet”的虚拟网卡IP地址是192.168.x.x设备描述里还带一个“Apple Mobile Device Ethernet”或“Apple Mobile Device”。第一反应是中毒了其实不是——这是苹果的USB联机网络共享驱动。当你的iPhone用USB线连接电脑时电脑并非只在做充电。iPhone会向电脑虚拟出一个以太网适配器让电脑通过USB共享iPhone的蜂窝网络这就是苹果的“USB个人热点”功能。所以你在网络连接里看到它说明电脑已经识别到了iPhone的NDIS网络驱动接口规范设备并且把USB连接模拟成了标准的以太网网卡。这个网卡会有自己的IP地址通常是169.254.x.xAPIPA自动分配或者由iPhone通过链路本地地址下发。这玩意正常使用不用管但有两个实际问题如果它抢占了路由表默认网关你的电脑可能所有流量都走了USB网络上不了网。排查方法是禁用掉这个适配器或者拔掉USB重新连接。如果你在做网络抓包分析这个虚拟网卡会出现在Wireshark的接口列表里抓包时一定要选对接口不然抓到的全是USB共享网络的包跟你的业务流量毫无关系。4.4 从驱动到固件网卡问题排除的“三板斧”Windows下网卡出现的怪问题直接连着几个小原则走能解决大部分先看链路协商结果ipconfig /all里看连接速度、DHCP获取、IPGet-NetAdapter | Format-List里看MediaType、LinkSpeed、DriverVersion。再升级驱动Intel网卡一定去Intel官网用“Intel® Driver Support Assistant”自动检测不要迷信Windows更新里的驱动。Windows Update推送的驱动经常是旧版而Intel后来修过一些断流问题。最后检查电源管理控制面板 - 网络适配器属性 - “电源管理”把“允许计算机关闭此设备以节约电源”取消勾选。这个问题真的能磨死人——笔记本上最容易遇到表现为休眠醒来后网卡掉线重新禁用再启用又好了。原因就是网卡进了低功耗状态后没能正常唤醒。5. 常见问题排查实录用真实案例说话5.1 “网卡显示未识别网络连不上网”的排查路径这是最经典的问题处理顺序按照从物理层到应用层层级排查项目工具/方法物理层网线是否插好、接口灯是否亮观察网口指示灯看是否在闪烁或常亮数据链路层网卡是否协商成功、链路速度是否正常Get-NetAdapter查看LinkSpeed网络层IP地址是否配置正确、DHCP是否获取到地址ipconfig /all查看IPv4地址和网关传输层/应用层网关是否通、DNS是否正常解析ping 网关地址、nslookup www.example.com有个小技巧Windows显示“未识别网络”或者“无Internet访问”并不等于是网卡坏了。先ping一下网关。如果网关能通但显示无Internet十有八九是网络位置类型设置成“公用网络”导致的防火墙策略问题或者DNS没配好和网卡真没关系。5.2 安川与焊机连不上的三个经典原因给自动化现场解决过太多次这种问题了EtherNet/IP连不上优先级最高的是下面三件事IP冲突与子网掩码不一致是头号原因。机器人设了192.168.1.10焊机设了192.168.1.20OK。但这俩设备中有一个可能开了“自动获取IP”从某个DHCP服务器拿了个完全不同的地址就断开了。解决方案把两边全部设为静态IP然后登进交换机看ARP表确认没有重复ARP冲突。命令是arp -a或者直接在交换机的管理界面上看。电子数据表EDS文件没装对是第二号原因。EtherNet/IP的设备要相互识别靠的是EDS文件描述设备对象你必须在机器人配置软件里正确安装焊机的EDS文件。EDS文件其实就是个文本描述了设备支持哪些对象、实例、属性以及数据排列格式。如果用通用EDS代替厂家专用EDS输入输出数据长度就极易对不上包全是乱的。输入输出Assembly实例ID配错是第三号原因。有时候通讯状态显示“Connected”但数据全是0多半是实例号配错。比如Output Assembly配成了100但从站实际监听的是101数据根本没进到正确的缓冲区。这种问题靠示教器上的“I/O Monitor”逐位检查或抓一个UDP 2222端口的包看数据内容一眼就明白。5.3 一个“网络时断时续”的排查案例之前给一个冲压车间做网络改造设备总是隔十几分钟断一次断几秒又自己恢复。到现场我先看了交换机的日志发现一个端口不断up/down而且不断报CRC错误。初步判断是物理层质量问题于是拆开线缆检查发现线走了一段和380V动力电缆平行共槽间距不到5厘米。重新布管走线后CRC错误消失了问题解决。这件事给我的教训是**“不稳定”的问题一半以上其实是“物理层差”的问题。**不要一上来就怀疑协议、驱动、设备先看物理层。5.4 时间同步工业以太网里最容易忽视的暗礁很多人在现场只看IP通不通忽略NTP时间同步。但对EtherNet/IP这种带实时性要求的工业协议设备间时间差过大会导致数据时间戳错乱、日志对不上。特别是多机器人协同的场景A机器人的“1秒前”和B机器人的“1秒前”差了好几百毫秒分析故障时根本没法对照。建议现场给PLC、机器人、焊机、上位机统一配置一个NTP时间服务器工业交换机一般都有这功能。6. 我自己的实操经验谈这些年经手过太多以太网相关的项目从家用NAS组2.5G内网到工厂里一条流水线上几十台设备做EtherNet/IP组网踩过的坑比写出来的还多。挑几个最想跟你说的话收尾吧。第一个是遇到网络问题永远先看物理层再看链路层再看网络层。90%的现场问题都出在“线没弄好”或者“IP没配好”而不是“协议有问题”。第二个是别迷信“千兆”“2.5G”的标称速度链路协商成功不代表稳定性合格拿Iperf跑至少30分钟双向流量才能验证这跟线、这颗芯、这版驱动真的没问题。第三个是工业现场配置任何以太网设备就算再着急也要把IP地址、子网掩码、网关、DNS、VLAN ID、设备型号、固件版本一条一条记下来存档。吃喝玩乐忘一次没什么这些信息忘一次故障的时候就是两眼一抹黑。你把每个网口都当人一样建档后面会感恩自己。
返回列表