做自动化调试这些年,碰到最多的问题之一,就是同事抱着笔记本跑到现场,打开VMware虚拟机里的博途,在线扫描半天,设备列表空空如也。很多人第一反应是PLC挂了,其实绝大多数情况下,是虚拟机的网络方式没配对。VM虚拟机连PLC这个需求,在工控现场越来越常见——笔记本上装虚拟机跑博途、GX Works、STEP7,一套电脑当好几台工作站用,省事归省事,可一旦网络设置不对,PLC死活扫不到,那才叫急人。
这篇文章不绕弯子,直接把VMware虚拟机通过有线和无线两种方式连接PLC的设置方法摊开讲。有线怎么桥接、无线有哪些坑、IP怎么规划、防火墙放行哪些端口,全部按现场实操顺序来。适合正在学PLC编程的入门者,也适合被虚拟机网络折腾过的调试工程师收藏备用。
1. 先厘清VMware网络模式,选对再动手
1.1 三种网络模式到底差在哪
VMware Workstation里新建虚拟机时,网络适配器那一页会让你选网络模式,常见的就三种:桥接模式、NAT模式、仅主机模式。很多人不细想就直接默认了NAT,结果到了现场发现怎么都连不上PLC,原因就在这一步。
| 网络模式 | 虚拟机与外部设备的关系 | 是否适合连接PLC |
|---|---|---|
| 桥接模式 | 虚拟机像一台真实主机一样使用物理网卡,直接挂在同一局域网里,和PLC平级 | 非常适合 |
| NAT模式 | 虚拟机通过宿主机共享IP上网,外部设备看不到虚拟机,只能看到宿主机 | 不适合,PLC和编程软件难以主动发现虚拟机 |
| 仅主机模式 | 虚拟机只能与宿主机互通,和外部物理网络完全隔离 | 仅用于本地测试,不适合连PLC |
桥接模式下,虚拟机虽然装在宿主机里,但对外表现就是一台插在同一个交换机上的独立电脑。它有自己的IP地址,可以发广播、可以收组播、可以主动向外发起TCP连接,也能被外部设备反过来访问。这个特性对PLC编程软件来说太重要了。
NAT模式的问题恰恰相反。虚拟机躲在宿主机后面,出站连接可以做,但入站连接和二层广播都受限。而博途、GX Works这类软件的在线搜索,靠的是在局域网里广播发现设备,NAT模式下这些广播根本到不了PLC所在网络,你就算把IP填得再准,也扫不出设备。有人会想,那我给NAT做端口映射行不行?理论上能把PLC的102端口映射给虚拟机,但设备发现这一步仍然很难搞定,每换一台PLC就要改一次映射,现场调试根本耗不起。
1.2 PLC连接场景下为什么首选桥接模式
把桥接模式理解成"虚拟机就是另一台插在交换机上的调试电脑",一切就通了。PLC的编程软件通过以太网和PLC通信,底层走的都是标准TCP/IP协议。西门子S7系列用的是ISO-on-TCP,三菱FX5U/Q系列走MC协议,欧姆龙走FINS,Modbus TCP更直接就是502端口。这些协议在上位机和PLC建立连接的时候,都需要双方在同一可路由的网络里,并且上位机能够主动向PLC发起连接。
桥接模式天然满足这个条件。虚拟机分配一个和PLC同网段的IP,它发出的报文直接通过物理网卡转发出去,PLC收到的连接请求和从物理机发出的没有任何区别。反过来,PLC有任何主动上报,虚拟机也能直接收到。整个通信链路中,虚拟机相当于透明接入,不存在中间的地址转换。
这里还有个实操细节:桥接模式必须选择正确的物理网卡。如果你的笔记本既有有线网卡又有无线网卡,VMware的桥接默认可能选的是"自动",自动选择有时候会选错。举个例子,你明明插着网线想走有线链路,VMware却把虚拟机的流量交给了无线网卡,那虚拟机里的网络自然就是不通的。所以到了现场,第一件事就是确认VMnet0到底桥接在哪张网卡上。
1.3 我的选择建议:有线还是无线
我的习惯是,第一次连新PLC、下载固件、恢复出厂设置,一律用有线直连。这时候PLC的IP可能是未知的,甚至可能被前一个人改得面目全非,你用无线链路还要先解决AP和网络发现的问题,太绕。等PLC的IP确认、程序下载过一次之后,日常在线监控和改几个参数,无线就方便很多,尤其你站在设备旁边还要同时看机械动作的时候。
无线最大的问题其实是稳定性。Wi-Fi对延迟和丢包比有线敏感得多,虽然TCP协议有重传机制兜底,但PLC通信的超时时间通常设置得比较短,一旦丢包率上来,博途就会报"连接中断""设备不可访问"之类的大红叉。所以我的原则是:固件升级、大面积程序下载,绝不用无线;日常看状态、改参数,可以用无线。
2. 动手前必须做好的环境准备
2.1 宿主机和虚拟机的网络基础检查
很多人连不上PLC,从头到尾都在虚拟机里折腾,结果最后发现宿主机自己都没和PLC连通。所以动手之前,先把宿主机的网络链路验证一遍。
打开cmd,输入下面两条命令:
ipconfig /all ping PLC的IP -t第一条命令看宿主机当前网络配置,第二条命令验证物理链路。如果宿主机ping不通PLC,先别开虚拟机,把网线、IP地址、防火墙这些在物理机层面解决好。常见的坑包括:宿主机和PLC不在同一网段、Windows防火墙拦截了ICMP回显、现场交换机端口被配置成了access模式导致VLAN不对。
另外检查一下VMware Tools是否安装完整。虚拟机里没有网络适配器这个报错,八成是VMware Tools没装好。在VMware菜单栏点击"虚拟机 -> 安装VMware Tools",装完重启虚拟机,虚拟网卡驱动才会正常工作。
2.2 VMware虚拟网络编辑器的关键配置
把VMware Workstation以管理员身份运行,这一步很重要,否则后面很多按钮都是灰色的。打开"编辑 -> 虚拟网络编辑器",你会看到VMnet0、VMnet1、VMnet8三个默认虚拟网络:
- VMnet0:默认桥接模式
- VMnet1:默认仅主机模式
- VMnet8:默认NAT模式
选中VMnet0,在底部"桥接到"下拉菜单里选择你要用的物理网卡。用有线就选那个带"Ethernet"或者"Realtek PCIe GbE Family Controller"字样的网卡,用无线就选带"Wireless"或"WLAN"字样的无线网卡。选错了,后面全是白忙活。
修改完点击"应用"再"确定"。如果你看到VMnet1或者VMnet8的状态是感叹号,说明VMware的虚拟网卡配置和宿主机网络产生了冲突,可以在虚拟网络编辑器里点击"还原默认设置",让VMware重建一遍虚拟网卡。注意这个操作会把你之前的自定义网络配置也清掉,执行之前确认一下自己有没有存过重要配置。
2.3 现场网络拓扑与IP规划思路
现场最常见的三种网络拓扑:
第一种是直连,笔记本的网口直接用网线插到PLC的网口上,整个链路只有两台设备,最简单也最可靠。第二种是经过交换机,PLC和笔记本都插到同一台工业交换机上,适合柜子里有多台PLC或者还有其他网络设备的情况。第三种就是无线路由器/AP中转,PLC接交换机,交换机接AP,笔记本通过Wi-Fi接入。
不管哪种拓扑,IP规划的核心思路只有一个:所有设备在同一个网段。给一个最常见的配置示例:
| 设备 | IP地址 | 子网掩码 | 网关 |
|---|---|---|---|
| PLC(示例) | 192.168.0.10 | 255.255.255.0 | 视现场网络而定 |
| 宿主机物理网卡/无线网卡 | 192.168.0.100 | 255.255.255.0 | 192.168.0.1 |
| 虚拟机 | 192.168.0.200 | 255.255.255.0 | 192.168.0.1 |
如果PL C和电脑之间只有一个直连网线或者交换机,没有路由器,网关可以不填,填了也无所谓。但如果PLC在192.168.1.x网段、电脑在192.168.0.x网段,中间又有路由器,那网关必须填正确,否则就是跨网段不可达。我的建议很简单:现场调试时尽量把电脑和PLC改成同一个网段,所有跨网段的路由问题全部绕开,减少变量。
3. 有线方式连接PLC:桥接物理网卡的完整操作
3.1 物理链路怎么接才稳
有线连接最稳,但也有讲究。现在的电脑网卡基本都支持自动翻转,直通线和交叉线都能用,但个别老型号PLC的以太网模块对双工模式敏感。如果遇到"能通但丢包"的情况,可以在电脑网卡属性的高级设置里,把"速度和双工"从"自动协商"改成"100 Mbps 全双工"试一试。
工业现场的干扰是个大问题,变频器、伺服驱动器、大功率电机都是强干扰源。网线尽量用成品屏蔽网线,别为了省事随便找一根普通网线凑合。线缆过长或质量差,在干扰大的环境里很容易出现通信时断时续的情况,那种问题排查起来特别耗时。
另外,直连PLC的时候不要经过多级交换机。有些柜子里设备多,从PLC到笔记本可能要经过两三台交换机,每一级交换都会引入一定的转发延迟,级联太多还可能出现广播风暴风险。有条件的话,笔记本直接插在与PLC同一台交换机上,链路最短,问题最少。
3.2 桥接模式与网卡绑定的具体设置
操作顺序很重要,我按实际步骤来:
先关闭虚拟机电源。右键虚拟机 -> 设置 -> 网络适配器,选择"桥接模式"。
打开"编辑 -> 虚拟网络编辑器",选中VMnet0,确认底部"桥接到"选择的是有线网卡。
如果宿主机有无线网卡也有有线网卡,这里务必选有线那块,别选错。
启动虚拟机,进入系统后打开设备管理器,确认虚拟网卡已经正常识别。
在虚拟机里设置静态IP,与PLC处于同一网段。
这里有个"复制物理网络连接状态"的选项,如果勾选,虚拟机的网卡连接状态会跟随物理网卡;不勾选的话,物理网卡断开时虚拟机网卡仍显示已连接。连PLC时这个选项影响不大,勾不勾都行,但如果你希望虚拟机在网线拔掉后依然保持MAC地址不变化,保持默认不勾选也可以。
3.3 虚拟机IP参数规划与连通性测试
虚拟机里的设置和物理机没有区别。进入虚拟机Windows系统,打开"控制面板 -> 网络和共享中心 -> 更改适配器设置",右键以太网 -> 属性 -> Internet协议版本4,填入静态IP。
比如PLC是192.168.0.10,虚拟机就填192.168.0.200,子网掩码255.255.255.0,网关可以不填或者填现场路由器的IP。设置完点击确定,然后回到cmd窗口测试:
ping 192.168.0.10 -t如果ping通了,恭喜,虚拟机到PLC的物理链路和IP配置都没问题,可以直接打开编程软件连接。
如果ping不通,按这个顺序排查:先看虚拟机IP是否真的生效,用ipconfig确认;再看宿主机是否占用了同一个IP导致冲突;然后临时关闭虚拟机里的Windows防火墙,排除系统拦截;最后用ARP命令看看虚拟机的ARP表里有没有PLC的MAC地址,如果ARP请求反复发出但没有响应,说明二层有问题,要么物理链路不通,要么网线插错口。
3.4 编程软件访问PLC时的额外检查
IP通了不代表编程软件就能连上PLC,因为不同品牌的PLC通信端口和防火墙要求不一样。
西门子博途TIA Portal:在线 -> 可访问的设备 -> 选择PN/IE -> 开始搜索。搜不到的时候,先用cmd测试TCP 102端口通不通:
telnet 192.168.0.10 102如果telnet直接提示无法打开连接,说明PLC的端口不可达;如果telnet能连上但博途搜不到,多半是广播被Windows防火墙拦了。把虚拟机里的网络配置文件从"公用网络"改成"专用网络",或者临时关闭Windows防火墙再试一次,问题通常就解决了。
三菱GX Works3:连接目标设置 -> 以太网,直接指定PLC的IP地址。三菱MC协议默认使用UDP/TCP 6000端口,二进制通信是这个端口,ASCII模式下是5001端口。测试方式也是telnet或者用第三方端口扫描工具确认。
老的西门子STEP7/SIMATIC Manager:连PLC的时候要配置S7ONLINE接口,通过普通以太网卡配合TCP/IP接入点,原理和博途一样,重点是接入点的接口要指定到桥接后的虚拟机网卡。
整理一份常用PLC通信端口速查:
| 品牌/协议 | 端口 | 说明 |
|---|---|---|
| 西门子S7(ISO-on-TCP) | TCP 102 | 博途、STEP7在线访问 |
| 三菱MC协议(二进制) | TCP/UDP 6000 | GX Works3在线访问 |
| 三菱MC协议(ASCII) | TCP/UDP 5001 | 具体看模块配置 |
| 欧姆龙FINS | UDP/TCP 9600 | 在线访问常用 |
| Modbus TCP | TCP 502 | 通用协议 |
4. 无线方式连接PLC:踩过坑后的正确姿势
4.1 无线连接PLC的适用场景与典型拓扑
无线连接PLC在哪些场景下必须用?第一种是柜内检修,PLC装在设备深处,网线根本够不着;第二种是调试移动设备,比如AGV、机械臂、行走小车,实体网线根本没法插;第三种是临时调试,现场没有多余的网线插座,只能靠Wi-Fi。
无线方式连PLC,拓扑结构其实和有线差不多:PLC网口接交换机,交换机接无线路由器或AP,笔记本通过Wi-Fi接入。如果PLC本身就带Wi-Fi功能,或者通过SCALANCE W这类工业无线以太网桥接入网络,电脑直接用无线连AP就能访问PLC,原理依然是一样的。
所以无线连接的本质是:宿主机通过Wi-Fi接入PLC所在的局域网,然后虚拟机桥接到无线网卡,让虚拟机也在这个局域网里。剩下的操作,和有线桥接完全一致。
4.2 无线网卡桥接的设置细节
无线桥接的操作流程:
宿主机先连上现场Wi-Fi,确保物理机能ping通PLC。注意,这一步不是可选项,一定要先验证。
打开虚拟网络编辑器,把VMnet0桥接到无线网卡,选带"Wireless"的那块。
虚拟机内把IP设置为和无线网络同一网段。
如果虚拟机ping不通PLC但物理机通,优先怀疑AP隔离。
无线桥接连不上,还有一个容易忽略的细节是无线网卡的省电模式。Windows为了省电,默认允许系统关闭无线网卡,导致虚拟机桥接的链路时不时断一下。在设备管理器里找到无线网卡 -> 属性 -> 电源管理,取消勾选"允许计算机关闭此设备以节约电源",这个坑一定要提前排掉。
VMware版本也有影响。我实测下来,VMware Workstation 17对Intel AX210这类新款无线网卡的桥接支持很稳定,如果还在用12.0甚至更老的版本,无线桥接的兼容性确实一言难尽。真遇到这种情况,升级VMware比折腾驱动省事得多。
4.3 AP隔离、信道干扰与稳定性调优
AP隔离是无线连接PLC最隐蔽的坑。很多无线路由器为了安全,默认开启了"AP隔离"或者"客户端隔离",意思是同一个Wi-Fi网络里的无线客户端之间不能互相访问。这会导致什么现象?宿主机能ping通PLC(因为PLC是有线接入,和无线的隔离策略可能不生效),但虚拟机就算桥接到了无线网卡,也ping不通另一个无线设备,或者在跨有线和无线之间访问时直接失败。
遇到这个问题,登录路由器/AP管理界面,把"AP隔离"、"客户端隔离"、"用户隔离"之类的开关关掉。如果是锐捷、华为这类AC+AP的商用无线架构,要在无线控制器的SSID配置里,把"用户间隔离"或者"组播隔离"关掉。有些现场网络的隔离是安全策略必须保留的,那就要找网络管理员单独给调试设备开一个不受隔离的VLAN。
信道干扰也是无线连接不稳定的重要原因。工厂里变频器、伺服驱动器对2.4GHz的干扰非常严重,表现就是Wi-Fi信号满格,但ping PLC的延时忽高忽低,甚至偶尔直接超时。解决办法:优先用5GHz频段,信道固定不要自动,2.4GHz用1、6、11这三个不重叠信道中的一个,5GHz选36~64或者149~165之间的固定信道。
信号强度建议不低于-70dBm,做程序监控这种对实时性要求高的操作,最好在-60dBm以上。查看信号强度可以直接在Windows命令行输入:
netsh wlan show interfaces输出里的"信号"一栏就是当前信号百分比,看到的数值低于50%就要注意了,链路随时可能断。
4.4 无线连接下的通信参数优化
无线链路就算调试通了,通信参数也得跟着调。PLC编程软件在线访问的超时时间,默认都是按照有线网络设置的,几百毫秒到一两秒不等。无线环境下,一次TCP握手经过Wi-Fi转发,耗时可能多出几十毫秒,丢包重传时更久。如果超时时间设置太短,就会出现"偶尔能连上,连上马上又断开"的诡异现象。
博途TIA Portal里,可以在设备组态的"连接机制"中,把超时时间相应调大。三菱GX Works3里,以太网连接的"响应超时"设置,建议从默认的1000毫秒改成5000毫秒。这些参数在无线调试时适当放宽,通信稳定性会好很多。
另外,无线环境下不要开着在线监视所有PLC变量,变量一多,瞬时数据量大,Wi-Fi带宽和丢包率立刻暴露问题。需要看什么变量就监视什么,或者用监控表按需添加,能明显减少通信压力。
5. 常见问题排查与避坑速查
5.1 高频故障对照表
把这些年在现场踩过的坑整理成一张速查表,排查问题的时候直接对号入座:
| 故障现象 | 可能原因 | 解决办法 |
|---|---|---|
| 虚拟机里没有网络适配器 | VMware Tools未安装或损坏 | 重装VMware Tools并重启虚拟机 |
| vmnet1网卡显示感叹号 | VMware虚拟网卡配置冲突 | 虚拟网络编辑器 -> 还原默认设置 |
| 桥接后虚拟机无法访问PLC | 桥接网卡选错 | 在VMnet0里手动选择正确的物理网卡 |
| 宿主机能ping通PLC,虚拟机ping不通 | AP隔离开启 / 防火墙拦截 | 关闭AP隔离,临时关闭Windows防火墙测试 |
| 物理机和虚拟机都无法ping通PLC | IP不在同一网段 / 网线问题 | 统一IP段,检查网线和交换机端口 |
| 博途在线搜索不到设备 | 广播被防火墙拦截 / 接入点配置错误 | 将网络改为专用网络,放行102端口 |
| telnet 102端口不通 | PLC网络配置异常 / 被交换机策略拦截 | 检查PLC侧IP和端口,检查交换机端口策略 |
| 无线连接时断时续 | 信号弱 / 信道拥挤 / 无线网卡省电 | 换5GHz频段,固定信道,关闭省电模式 |
| 虚拟机IP一直获取不到 | 虚拟网卡DHCP失败 / 模式不对 | 改用静态IP,重新指定桥接网卡 |
5.2 一套标准的排查流程
遇到连不上PLC的情况,我建议按照下面这个顺序排查,不要东一下西一下:
第一步,关掉虚拟机,先在宿主机上ping PLC。如果宿主机都不通,说明问题出在物理链路、IP规划或PLC本身,虚拟机怎么改都没用。这一步能帮你把问题范围缩小一半。
第二步,确认虚拟机网络模式是桥接模式,并且VMnet0绑定到了正确的物理网卡。
第三步,确认虚拟机IP和PLC在同一个网段,且没有IP冲突。用ipconfig查看虚拟机实际生效的IP,用arp -a查看ARP表有没有PLC的MAC。
第四步,在虚拟机上ping PLC。通了,继续下一步;不通,检查防火墙、AP隔离和网卡省电设置。
第五步,ping通了但编程软件还是连不上,用telnet测试对应端口。端口通,软件还报错,大概率是广播发现被防火墙挡了,把Windows防火墙关闭或者调整网络配置文件为专用网络。
第六步,以上手段都用完了还不行,上Wireshark抓包。过滤条件:
icmp tcp.port == 102看虚拟机和PLC之间的报文交互。如果只有ARP请求反复重发但没有应答,说明二层被隔离了;如果有TCP SYN发出但一直收不到SYN-ACK,说明PLC端口没起来或者PLC侧防火墙在拦。抓包能让你从"瞎猜"变成"精准定位"。
5.3 一些实际项目中总结的小技巧
最后分享几个只有踩过坑才总结得出来的小经验。
第一,现场有多台调试电脑的时候,提前规划好各自的固定IP,比如A同事用.200,B同事用.201,谁也别抢谁的。PLC的IP冲突比网络不通还难查,因为RS485? 不是,以太网里IP冲突会导致ARP表反复漂移,现象是时通时不通。
第二,VMware虚拟机里做网络改动之前,先给虚拟机拍个快照。同一台虚拟机可能配多个网络场景,一旦改乱了,恢复快照比重新配置快得多。
第三,现场无线Wi-Fi不稳定的情况下,程序下载和固件升级尽量用有线,在线监控用无线,两条腿走路。这个我前面强调过,这里再强调一次,因为真的有人无线下载固件失败导致PLC模块变砖,返修周期能把项目拖垮。
第四,如果现场PLC的IP是拨码开关或者存储卡设定的,别只靠软件扫描,先看PLC面板和硬件手册确认当前IP。有些老款S7-300带CP343模块,IP是用网线一根一根拨出来的,你在电脑上扫描半天,它在另一个网段根本不鸟你。
第五,虚拟机里建议关闭IPv6。某些老型号PLC或者第三方协议栈在处理IPv6地址时兼容性不好,会出现奇怪的无响应问题,关掉IPv6后反而一切正常。这个原因我没有深挖到底层,但实测解决过不少诡异故障。
最后再说回我自己,现在每次到现场,不管之前配置过多少遍,都会老老实实先做一件事:在宿主机上ping通PLC再开虚拟机。别看这步简单,它能帮你把问题范围一下子缩小一半。虚拟网络编辑器记得用管理员权限打开,改完桥接网卡后重启一次虚拟机,很多莫名其妙的扫不到设备问题,到这一步就能解决。