你有没有遇到过这种场景:网络不通了,或者给打印机设固定 IP,路由器管理页面要你填一串叫做 MAC 地址的东西;又或者现场做自动化调试,Codesys 上位机连不上 PLC,排查的第一步可能就要确认网口地址。我每次到现场都会被人问到同一个问题:这串地址到底在哪里看?今天就把我平时用到的两种方式完整拆开,顺便把 Codesys 里查 PLC 网口 MAC 地址的路径也摸一遍,不绕圈子,直接落地。
这篇文章适合谁读?如果你是刚开始接触网络管理的同事,或者做 PLC 编程的电气工程师,再或者只是家里想给设备固定 IP 的普通用户,里面的操作都能直接照抄。后面有一段专门讲工控场景的内容会带一点行业背景,但你只要按步骤走,不需要提前懂协议,也能把问题解决掉。
1. 为什么要查看 MAC 地址:先搞清楚这串字符的身份
很多人第一次见到 MAC 地址,是在路由器的“DHCP 静态分配”页面里。那串像 00-1A-2B-3C-4D-5E 的字符,看起来就是由 0~9 和 A~F 组成的 12 位编号,实际上它是设备网卡的全球唯一标识。网卡在生产时,厂商会从 IEEE 申请的地址段里取一个编号烧录进硬件,之后这个设备在局域网里进行二层通信时,就会用这个地址来互相称呼。
用一句大白话说,IP 地址像你公司里挂的工号,换了办公地点可能就换一个;MAC 地址像身份证号,硬件只要不换,它就基本不变。交换机转发数据、路由器做访问控制、软件做授权验证,很多时候都是靠认这串“硬件身份证”来干活的。这也是为什么当你需要给某台电脑固定一个内网 IP、给某台设备做上网白名单,或者排查两台设备抢同一个 IP 这类问题时,绕来绕去最后都会落到查看 MAC 地址这一步。
我在工控现场最常碰到的场景,是在 Codesys 或者其他编程软件里连接 PLC 之前,要先确认上位机网卡和 PLC 在同一个局域网里。有些调试项目里,工程师会希望把 PLC 的 IP 和 MAC 关联起来,方便以后识别是哪一台设备;有些连锁管理软件在注册授权时,也要求填写上位机 MAC 地址作为绑定信息。那时候你如果连 MAC 地址从哪里看都不知道,第一步就卡住了。
需要查 MAC 地址的常见场景至少有三类。第一类是路由器管理,家用路由器里做“固定 IP 分配”“上网控制”或“防蹭网”,需要把设备的 MAC 填进去。第二类是网络故障排查,比如 IP 冲突时,你要通过 MAC 地址找出桌底下那台没有显示器的终端是哪一台。第三类是软件绑定,部分工业软件、远程运维工具、版权管理系统,会把计算机的 MAC 地址作为一个机器标识,换网卡之后软件授权就可能失效。
所以,查看 MAC 地址不是一个纯技术动作,它更像一种非常基础的“设备管理习惯”。平时不需要天天看,但真到要配置网络、注册软件、调试 PLC 的时候,你得在两分钟内把它找出来。
2. 方法一:命令行里直接抽出 MAC 地址,稳定且通用
我要重点讲的第一个方式,是通过命令行查看。它适合任何 Windows 版本,也适合在远程桌面、PE 维护系统、甚至系统出现界面损坏时使用,命令行只要还活着,基本就能拿到地址。
2.1 用 ipconfig /all 在信息堆里找“物理地址”
在 Windows 上,打开命令提示符最快的方式是按下 Win + R,输入 cmd 回车。想省事也可以在开始菜单搜索栏直接敲“命令提示符”,看到搜索结果后回车就能打开。对于查 MAC 地址这件事,不需要额外以管理员身份运行,普通权限完全够用。
进入黑色窗口后,输入这一条命令:
ipconfig /all回车之后,屏幕上会像瀑布一样刷出一大段信息。默认情况下,它会列出你电脑上所有网络适配器的名称、MAC 地址、IP 地址、DNS 等信息。对于不太熟悉这个界面的新手,最容易做错的事情是拉到最后一行看,或者顺手复制最底下的“物理地址”,结果那可能是虚拟网卡的数据,根本不是你当前正在用的网口。
正确的做法是自上而下找跟你的连接方式相对的那个“适配器”。拿笔记本来说,如果你用的是 Wi-Fi,就找“无线局域网适配器 WLAN”这一段;如果你插了网线,就找“以太网适配器 以太网”这一段。在这段信息里面,有一行写着“物理地址”,那后面的 12 位十六进制字符,就是这块网卡的 MAC 地址。
显示效果通常是酱紫的:
以太网适配器 以太网: 连接特定的 DNS 后缀 . . . . . . . : 描述. . . . . . . . . . . . . . . : Realtek PCIe GbE Family Controller 物理地址. . . . . . . . . . . . . : 00-1A-2B-3C-4D-5E DHCP 已启用 . . . . . . . . . . . : 是 自动配置已启用. . . . . . . . . . : 是 本地链接 IPv6 地址. . . . . . . . : fe80::... IPv4 地址 . . . . . . . . . . . . : 192.168.1.100(首选) 子网掩码. . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 192.168.1.1看到“物理地址”那一行后,鼠标选中并复制即可。这个输出里面的名称如果让人迷惑,你可以先在系统托盘把鼠标悬停在网络图标上,看当前是“以太网”还是“WLAN”,再回过来对号入座。如果你工控机上插着多个网口,我建议你按网线插的位置和“描述”里的网卡型号来对应,不要只凭一个名字猜。
2.2 getmac:更简洁的备选命令
除了 ipconfig /all 之外,Windows 还自带一个专门用于查看 MAC 地址的命令:getmac。它的好处是输出更干净,不会把 IP、子网掩码、DNS 一股脑堆出来,适合只想拿 MAC 地址的场景。
直接在命令提示符里输入:
getmac /v屏幕上会显示“连接名”、“网络适配器”和“物理地址”三列信息。使用getmac时有一点要注意,它的输出可能包含多行,比如有些电脑装了虚拟网卡、蓝牙 PAN、虚拟交换机等,每一行对应一个适配器。跟前面一样,你仍要认准当前连接 Ethernet 或 Wi-Fi 的那一项。
如果你想把这串地址复制到脚本或表格里,可以用 CSV 格式输出:
getmac /fo csv /nh加上/nh参数后,输出去掉了表头,只有每行一个适配器名称和物理地址,脚本处理起来非常方便。我在维护台账时,经常用这个命令批量把现场电脑的 MAC 地址导出来,配合一个 Excel 公式把破折号替换成冒号,就能统一格式入库。
2.3 命令行方式的坑和注意点
命令行很好用,但并不是零门槛。第一个坑是输出内容过长,尤其在电脑上装了 VirtualBox、Docker、WSL 这类虚拟化软件之后,网络适配器列表会变得很长,很多人看着看着就眼花。第二个坑是拼写容易看错,MAC 地址里的字母是十六进制,只可能出现 A、B、C、D、E、F,不会出现 G 以后的大写字母。如果你复制时手打了,请务必检查是不是把 0(数字零)打成了 O(字母欧),或者把 1 打成了 I。
另外要提醒一句,命令行里看到的 MAC 地址是操作系统当前读取到的“当前有效地址”。有些高级网卡具备“本地管辖地址”功能,驱动或安防软件可以临时覆盖出厂时的烧录地址;只有在设备管理器里把网卡的“网络地址”属性设为空值,驱动才会恢复使用硬件烧录的原始 MAC。这种情况虽然少见,但在软件授权校验时可能造成“这次看到的 MAC 和上次不一致”的诡异问题。遇到这种问题,先不要怀疑软件坏了,检查一下网卡高级属性里的“Network Address”或者“本地管理的地址”是否被填了东西。
3. 方法二:图形界面入口,适合快速确认和手边办公
第二种方式是不用敲命令,直接在图形界面里翻到 MAC 地址。它的优点是直观,不用记命令,适合运维小白或者你手头正在给用户做电话指导的时候,让对方一步步点开设置就能看到。
3.1 Windows 10/11 设置里的路径
在 Windows 10/11 里,最符合直觉的入口是从“设置”进入。点击系统托盘的网络图标,再点打开的窗口里的“网络和 Internet 设置”,或者直接按 Win + I 打开设置后选“网络和 Internet”,两种方法都能到达。
Windows 11 的界面跟 Windows 10 略有区别,但它通常在“高级网络设置”里有一项“硬件属性”,点进去就能看到当前网卡的 MAC 地址。如果你连的是 Wi-Fi,可以走“Wi-Fi”选项,在“属性”里往下翻;“以太网”也一样,选中正在使用的网络连接,属性列表里就有物理地址(MAC)那一栏。
Windows 10 的路径稍微再绕一点,但也很固定:设置 -> 网络和 Internet -> 状态 -> 查看硬件属性。进去后,屏幕上会列出所有适配器的“物理地址”,同时显示连接状态和 IP 地址。对于一些企业定制电脑,或者精简过的 Windows 版本,界面文字可能略有不同;如果你找不到“硬件属性”,下一小节的备用入口永远更稳。
3.2 备用入口:控制面板和适配器状态
如果“设置”里面找不到硬件属性,那就直接用控制面板的老路径。按 Win + R 输入ncpa.cpl回车,会直接打开“网络连接”窗口,里面是这台电脑所有可见的网络适配器图标。这个方法我在实战里用得最多,因为不管系统版本怎么变,这个老的网络连接窗口基本一直存在。
找到你正在用的那个连接图标,双击打开“状态”窗口,再点“详细信息”按钮。这里弹出的“网络连接详细信息”列表,第一行就是“物理地址”,下面才是 IP 地址、子网掩码、默认网关等。如果你只有一个有线网口,这个方法是所有方式里最快的:不需要记任何命令,点三下鼠标就到。
对于 Windows 7、Windows 8 或者某些单位的精简版系统,这套老入口几乎不会失效。所以我做远程指导时,最稳的话术是:就说按 Win + R,输入 ncpa.cpl,回车,双击正在用的连接,点详细信息。这个流程不需要对方理解什么协议,也不需要对方分辨虚拟网卡,只要他能看出哪个图标是“正在使用”的绿色或有线符号就行。
3.3 两种方式怎么选
命令行和图形界面不是谁取代谁的关系,它们的使用场景不同。为了让你在真实环境中少试错,我把两者做个简单对比。
| 对比项 | 命令行方式 | 图形界面方式 |
|---|---|---|
| 上手难度 | 需要记少量命令 | 不用记命令,点菜单 |
| 输出信息 | 信息量大,适配器列表长 | 显示相对友好,按连接分类 |
| 批量导出 | 配合 getmac /fo csv 很方便 | 只能手抄或用表格复制 |
| 系统依赖 | PE 环境、远程会话也能用 | 依赖完整图形界面 |
| 定位速度 | 熟练后最快 | 点选路径略慢 |
| 适合新人 | 容易迷糊 | 更适合第一次操作 |
我的个人习惯是,现场快速查自己电脑,用命令行;帮别人远程定位,用图形界面;要登记十台以上设备的 MAC 地址,用命令行配合脚本。两种方法各家各有一个,已经足够覆盖绝大多数日常使用。
4. 工控场景延伸:Codesys 的 PLC 网口 MAC 地址怎么查
把 MAC 地址放到工业自动化场景里,情况会比普通家庭网络复杂一点。很多 PLC 本身不带显示器,也没有路由管理界面,你要查它的网口 MAC 地址,就不能在设备上“打开设置”了。这个关键词搜索热度很高,说明确实有很多工程师在调试 Codesys 项目时,遇到过类似需求。
4.1 PLC 网口 MAC 地址为什么值得单独讲
第一,PLC 往往没有屏幕。普通电脑可以直接看界面,PLC 不行,你需要借助编程软件或网段扫描工具去识别对面设备的身份。第二,安全鉴权和设备更换时,MAC 地址是重要的区分手段。比如现场挂了十台同型号 PLC,都接入同一台交换机,它们 IP 可能相似,但 MAC 地址绝对不同;你通过扫描结果把 MAC 和机柜位置对应起来,就能避免改错程序。第三,有些 PLC 是软 PLC,比如在工控机或 PC 上运行 Codesys Control Win,那么它使用的网口 MAC 地址实际上就是这张工控机网卡的 MAC,这件事很多新工程师没想到,导致在 Codesys 配置网关时选错了网卡。
4.2 Codesys 扫描网络时怎么显示 MAC 地址
现在常用的 Codesys V3.5 版本,可以通过“扫描网络”来发现局域网里的 PLC。这个入口通常在编程菜单的“设备”或“通信”工具里,不同语言包显示文字可能略有差异,你可以找带“Scan”或“扫描”字眼的按钮。扫描时,Codesys 会向同一广播域发送组播报文,连接在同一个交换机下的设备一般都会回应。
扫描结果通常以列表形式展示,里面能看到设备名称、IP 地址、是否可连接、以及某些条件下的 MAC 地址。但要注意,不是所有扫描结果都会直接显示 MAC;有些设备型号只暴露 IP 和型号,你需要再双击它进入连接配置,才能在设备信息或诊断页面看到完整的 MAC。还有一种情况,网关扫描器只会识别安装了 Codesys Control Runtime 的设备,如果你手里的 PLC 是内置处理器,但运行的不是标准 Codesys 运行时,显示字段可能不同。
如果扫描列表确实没有 MAC,可以试试直接对特定 IP 用 Windows 的 ARP 命令查询:在命令提示符里先ping 目标IP,然后执行arp -a,在输出里找到该 IP 对应的物理地址。这个方法非常实用,因为它不依赖 Codesys 版本,也不依赖远程桌面,只要你上位机能 ping 通 PLC,ARP 表里基本就能看到跟随这一网口通信的 MAC 地址。我在现场排查时经常把 Codesys 扫描和arp -a结合起来用,互相验证,避免测试结果看错串。
4.3 从设备对象和项目里读取 MAC 地址
在 Codesys 项目中,当你已经把某个远程设备添加到设备树之后,也能在设备对象属性界面里找到 MAC 信息。双击设备树里的 PLC 节点,切换到“常规”或“以太网”相关页面,不同厂家封装的设备描述文件不一样。有的会把 MAC 地址直接列在“设备信息”里;有的藏在“输入/输出映照”或者“诊断”页面里。如果实在找不到,可以参考设备手册,或直接查看 PLC 硬件外壳上的标签,很多 PLC 出厂时会在机身侧边或以太网接口旁边印一个包含 MAC 地址的条形码。
还有一种是运行 Codesys 的嵌入式控制器支持通过功能块或结构体读取 MAC。比如在程序里调用 SysInfo 库里的功能块,把本机网卡的 MAC 读取到某个全局变量中,再通过 HMI 实时显示。这样做的好处是以后不用电脑去看故障设备,直接在触摸屏上就能看到当前 PLC 的 MAC 地址和 IP 信息。不过这个功能块在不同平台的可实现性有差异,最好先确认你用的目标设备型号是否有相关的系统库支持。
对于 Codesys Control Win 这种软 PLC 场景,我一般直接在上位机操作系统里查 MAC,前面说的两种方法就完全够用。反正软 PLC 用的网口就是电脑的物理网卡,不需要再单独找什么特殊地址。
4.4 现场维护时的小习惯
我在项目调试中吃过一次亏,当时现场有两台 PLC 的 IP 恰好配错了,扫描列表里只能看到 IP,不确定哪一台对应哪一桌设备。后来是靠临时把一台 PLC 的网线拔掉,再扫描一次,才通过“剩余列表少了谁”定位出 MAC 和 IP 的对应关系。这种摸排方法虽然原始,但非常有效。后来我养成一个习惯:每次做完项目接线,就把每台 PLC 的 MAC 地址、IP、机柜编号、设备在项目里的名称抄在一张表上,贴在电柜门内侧或写入项目文档的附录里。
Codesys 项目文件本身一般不强制绑定 PLC 的 MAC 地址,项目下载到新硬件后也能运行。但很多品牌的 PLC 在更换网口模块或主板后,出厂 MAC 会变,如果现场设备管理系统里登记的是旧 MAC,后续远程维护、资产管理都会对不上号。所以,把 MAC 地址归档这件事,看起来只是查一下,背后其实是设备全生命周期管理的一部分。这跟查普通电脑 MAC 是一样的道理,只是工业现场的变更影响更大。
5. 常见问题与现场排查经验
最后一部分,把我在实际操作中遇到过的、以及可能让你卡住的问题集中说一遍。这些东西平时文档里不太会写,但遇到一次就够折腾半天。
5.1 多网卡环境下怎么判断哪一个是真实网口
现在一台电脑里出现两三个网卡太常见了。笔记本自带一个有线网口、一个无线网卡,可能还有蓝牙 PAN,再加上虚拟机软件生成的虚拟网卡,ipconfig /all的输出列表能拉到很长。新手最容易犯的错是把第一个出现的“物理地址”复制走了,结果那个可能是 WLAN,你实际检测的目标是 Ethernet。
判断方法很简单:先看网络连接状态。在ipconfig /all输出里找到某一适配器段落,如果里面有“媒体状态 . . . . . . : 媒体已连接”,说明这个网口上有网线连着;如果写着“媒体已断开”,那它大概率不是你当前生效的网口。图形界面也一样,在“网络连接”窗口里,图标下方显示“已连接”的就是正在使用的那块网卡。要是两条连接都显示已连接,比如有线、无线同时通,那就看你实际想查哪条线路,别用“全部适配器”里随便一条充数。
USB 转网口的情况也要留意。很多人以为 USB 网卡显示的 MAC 是某个固定的小盒子自带的,其实它在电脑的设备管理器里可能显示为“ASIX AX88179 USB GbE”或者“Realtek USB GbE Family Controller”,输出名称和普通板载网卡有明显区别。如果你用的扩展坞,建议把扩展坞上的 USB 网卡从设备管理器中记一下名字,这样后续查起来就不会混淆。
5.2 格式和大小写带来的麻烦
MAC 地址的标准写法有很多变体:带破折号 00-1A-2B-3C-4D-5E、带冒号 00:1A:2B:3C:4D:5E、两两分组合并成 001A2B3C4D5E,本质上都是同一个地址。复制粘贴时,不同软件、路由器后台、授权系统默认接受的格式可能不同。手工输入时请统一用一种格式,先留意目标系统需要的是哪种分隔符,避免因为“看起来一样”导致配置无效。
大写字母和小写字母在 MAC 地址里通常不区分,但一些老旧软件或数据库会做严格匹配。如果你在系统里填了小写,在另一个地方填了大写,可能被误判为两张网卡。最好的做法是先把格式统一成大写加冒号,再复制到台账里。复制时还要小心命令行窗口的选中模式:在 CMD 窗口里,鼠标左键选是选中,复制是右键单击,搞错了经常只选中部分内容,导致最后拷贝出来的地址少一位。
5.3 网卡禁用、驱动更换后的地址变化
如果网卡在设备管理器里被禁用了,ipconfig /all一般不会列出它,图形界面网络连接里会显示灰色图标。此时你可以右键把它启用,再重新查看。需要注意,启用后系统有可能再次获取新 IP,如果本来 IP 冲突,别只盯着 MAC 发呆,先检查 DHCP 分配结果。
驱动更新或重装系统后,大多数网卡的 MAC 地址不会变,因为硬件烧录的地址是固定在芯片层级的。只有一个例外:你在网卡高级属性里手动设置了“Network Address”,那个值是优先于硬件烧录值的。出现驱动前后 MAC 地址变化,多半是这个地方被配置过,清空或者改成“不存在”,就能恢复出厂 MAC。
5.4 其他系统看 MAC 地址的对照速查
虽然本篇重点是 Windows 的两种方式,但如果你手里有 Linux 上位机、树莓派、或者 NAS 维护需求,给一个简单的对照表,省得再搜。
| 操作系统 | 常用方法 | 关键位置 |
|---|---|---|
| Windows | ipconfig /all | 物理地址 |
| Windows | getmac | Physical Address |
| Linux | ip addr show | link/ether |
| Linux | cat /sys/class/net/eth0/address | address 文件 |
| macOS | 系统设置-网络-详细信息 | Wi-Fi 或以太网 MAC |
Linux 下ip addr show输出里的link/ether那串就是 MAC 地址。如果你连的是有线网口,看到eth0、enp3s0这类接口名,对应关系非常清晰。macOS 上也可以打开终端输入ifconfig en0 | grep ether,对大多数人的电脑来说 en0 就是 Wi-Fi 或主以太网口。这里的“mac”是苹果电脑的“macOS”,不是“MAC 地址”,但你能理解这层意思,就不会在系统之间找不到方向了。
我在实际工作中查这串地址的次数很多,但从来没有觉得这是什么高深技术。真正的难点不是命令,而是你能不能在看结果之前,先确认“哪块网卡是目标网卡”。把地址抄在纸上、把网线对应关系记在文档里、在系统标签上写好设备标识,这些小习惯比你会背十条命令更值钱。下次再遇到要填 MAC 地址的界面,你只需要打开命令行或者翻一下设置页,两分钟就能解决。