ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

博图V17与WinCC 7.5 SP2跨虚拟机连接PLCSIM Advanced

博图V17与WinCC 7.5 SP2跨虚拟机连接PLCSIM Advanced 主机上跑着博图 Portal V17虚拟机里装着 WINCC 7.5 SP2两者之间靠 PLCSIM Advance 造出来的仿真实例对话——这套架构在我们这行算不上新玩法但第一次配的人十个里有七八个会卡在虚拟机 ping 不通仿真实例这一步。原因往往不在 WinCC也不在博图而是 VMware 的虚拟网络和 PLCSIM 那块虚拟网卡之间没有建立起二层通路。这篇把整条链路从原理到参数捋一遍包含我自己在工程笔记本上踩过的具体坑目标是把一个能接客户画面、能做调试培训、能离线验证程序的仿真环境跑起来。适合谁看手上有博图 Portal V17 和 PLCSIM Advance 授权、又需要在本机同时维护博图工程环境和经典版 WinCC 环境的工程师做上位机画面开发、需要脱离真实 PLC 做离线调试的朋友以及需要复刻现场环境做验证的项目负责人。这篇不是 VMware 安装教程但关于虚拟网络和网卡选择的部分同样适用于其他需要主机与虚拟机互通的场景。1. 为什么要把博图和 WinCC 拆到两台机器上1.1 装在同一台电脑上的现实尴尬西门子的软件有个特点单装一个都挺顺凑在一起就开始互相别扭。博图 Portal V17 要装 SIMATIC NET 的通信组件、SQL Server 的一个实例、Automation License ManagerWinCC 7.5 SP2 同样要装自己的 SQL、自己的通信栈和授权管理器。两者对 SIMATIC NET 的版本要求经常不一致对 .NET Framework 和 VC 运行库的版本要求也各不相同。真装到一台机器上运气好能用运气不好就是博图打不开、WinCC 起不来、或者两个都能打开但变量管理里驱动列表缺一半。更现实的问题是环境对不上。客户现场跑的是 WinCC 7.5 SP2 的经典版项目你自己电脑上装的是博图自带的那套上位机画面、变量、报警结构都不一样你没法拿它去复现客户的故障。而一旦要在本地装一套和客户一模一样的 WinCC 7.5 SP2最省事的做法就是把它扔进虚拟机装崩了拍个快照回滚试版本直接换一个虚拟机文件两台客户项目互不干扰工程主机也不会被搞乱。还有一个很实用的理由Windows 版本。博图 V17 在 Win10、Win11 上都能装而 WinCC 7.5 SP2 官方明确支持的还是 Win10 64 位那一档。用虚拟机做版本隔离等于给操作系统也做了一次快照。1.2 PLCSIM Advanced 到底比传统 PLCSIM 强在哪很多人对 S7-PLCSIM 的印象还停留在TIA 里点一下仿真按钮弹出一个窗口就能在线看程序。那个是老版 PLCSIM它走的是 Softbus 软总线本质上只是一个本机进程内的虚拟通信管道只有同一台机器上的博图和 PLCSIM 能看到它。你把 WinCC 装进虚拟机无论网络怎么调都不可能通过以太网访问到 Softbus 上的实例——因为它压根没有以太网接口。PLCSIM Advanced 完全是另一回事。它把仿真的 CPU 变成一个真正的以太网节点要么在操作系统里虚拟出一块网卡要么直接借用一块真实网卡让仿真实例拿到一个 IP 地址对网络上的其他设备而言它和一台真实的 S7-1500 没有区别。WinCC 用标准的 S7-1500 通道连它、组态软件用 OPC UA 连它、甚至第三方的 Modbus TCP 网关都能找到它。对比项传统 S7-PLCSIMPLCSIM Advanced通信机制Softbus 软总线虚拟以太网卡或真实网卡外部程序可见性仅同机 TIA/PLCSIM网络上的节点均可访问WinCC 连接方式只能用本机通道标准 S7-1500 通道多实例受限每个实例独立 IP、独立名称授权随博图附带需要单独授权初次安装为限时试用需要提前说清楚的一点PLCSIM Advanced 是要授权的不是随博图白送。试用期一过实例还能建但下载会失败这一点在方案评审阶段就要确认好别等到现场演示当天才发现。1.3 整套方案成立的前提只有一条二层可达这句话听起来很学术但它是后面所有配置的根。PLC 和上位机之间的 S7 通信走的是以太网 TCP/IP端口 102。TCP 要通先得 ARP 通ARP 通要求两边在同一段二层网络里或者中间有三层路由设备帮着转发。主机上的仿真 PLC 挂在 PLCSIM 虚拟网卡所在的二层上虚拟机里的 WinCC 挂在 VMware 虚拟网络所在的二层上。这两个二层各管各的默认谁也不认识谁。所以问题的核心不是IP 是不是同一个网段——很多人把两边 IP 都设成 192.168.0.x结果还是不通就是因为它们在不同二层的同名网段里。真正的解法是让虚拟机物理上接入 PLCSIM 虚拟网卡所在的那段网络。接下来 VMware 网络模式的选择全部围绕这一条展开。2. 主机侧TIA Portal V17 项目和 PLCSIM Advanced 实例怎么配2.1 项目里这几处不改后面一定要返工先看博图项目。CPU 的 IP 地址先定下来比如 192.168.100.1掩码 255.255.255.0。这个地址要和后面 PLCSIM Advanced 实例里填的地址一致不一致的话下载时会提示覆盖新手容易在这里懵。第二步看 CPU 属性里的防护与安全。V17 在这个页面上比早年的版本多了与证书、安全通信相关的选项如果你启用了只允许安全连接这一类限制WinCC 7.5 SP2 这种不带证书协商机制的老客户端就可能连不上现象是通道诊断里一直建不起连接但网络明明通。项目里如果只是做仿真验证把这层限制放开最省事。同一页下面的允许从远程伙伴使用 PUT/GET 通信访问这个勾只在你要用 GET/PUT 读写的时候才必须纯 HMI 连接不需要但勾上没坏处很多工程师习惯留着。第三步也是最容易忘的一步数据块的优化的块访问。博图新建的 DB 默认是优化访问变量没有固定绝对地址只能按符号名访问。WinCC 7.5 SP2 的 S7-1500 通道是按绝对地址建的变量DB 开着优化访问你建的 DB1.DBW0 读出来永远是 0 或者报地址无效。做仿真的时候把要跟 WinCC 交换数据的 DB 的优化的块访问取消勾选然后重新编译下载这个坑我见过太多次。第四步看连接资源。S7-1500 默认预留了一部分 HMI 连接资源数量一般够用但如果你的项目里已经挂了好几个 HMI、又接了 OPC UA 服务器再加上博图自己的在线监控占连接就可能出现仿真 CPU 的可用连接数已用尽这类报错。仿真场景下把不用的 HMI 连接删掉保持干净。最后提一句仿真不支持的东西故障安全程序F-CPU 的安全程序不能仿真运动控制类的工艺对象在 PLCSIM 里基本跑不起来部分高速计数功能也受限。项目里如果用了这些仿真阶段就要绕开别在下载失败上耗时间。2.2 PLCSIM Advanced 的三种通信模式别选错打开 PLCSIM Advanced 的控制面板建立一个新实例时会让你选通信方式。不同小版本里选项的叫法略有差别但本质就三种。通信模式通信范围适用场景注意点PLCSIM仅同一进程内的软总线纯逻辑验证不需要任何外部通信虚拟机里的 WinCC 绝对看不到它PLCSIM Virtual Ethernet Adapter主机 与该虚拟网卡同二层的设备本方案首选需要把 VMware 的桥接目标指向这块网卡TCP/IP communication所绑定真实网卡所在的网络需要局域网内其他设备也能看到仿真依赖抓包驱动会占用真实网卡第二种模式是我们这套方案的主角。选择它之后主机的网络连接里会多出一块名为 Siemens PLCSIM Virtual Ethernet Adapter 的网卡名字在不同版本里略有出入认准 Siemens 和 PLCSIM 两个关键词就行。实例启动后你填的 IP 就会落在这一块虚拟网卡上。这也解释了为什么前面强调二层这块虚拟网卡自带一个独立的二层环境只有接入到这个环境里的设备才能和仿真实例说话。第三种模式我也用过它要求先装抓包驱动早期版本是 WinPcap较新的版本用 Npcap安装 PLCSIM Advanced 的过程中一般会提示你装。装了之后仿真实例的 IP 会挂在你选的那块真实网卡上局域网内的其他电脑都能 ping 到它。这种做法适合整个办公室都要连这台仿真 PLC的场景缺点是会占掉一块真实网卡而且这个 IP 千万不能和局域网里已有的设备撞车否则会出现地址冲突这种很难查的故障。2.3 实例的地址规划与启动验证IP 规划上我给个建议单独开一个网段专门给仿真用比如 192.168.100.0/24主机虚拟网卡用 192.168.100.1虚拟机里的 WinCC 用 192.168.100.10。别用 192.168.0.x 和 192.168.1.x这两个网段是路由器出厂的默认网段家里的网络设备、公司的办公网、VMware 自己的 VMnet 网段都爱用撞上就是一堆解释不清的怪现象。也顺手确认一下 VMnet1 和 VMnet8 的网段避开。新建实例时填好实例名、IP 地址和子网掩码点 Start。实例启动后主机上开个命令行验证一下ipconfig ping 192.168.100.1 -tipconfig里应该能同时看到你的物理网卡地址和那个 192.168.100.1。ping 通说明实例已经在网络上活着了。注意有些机器上主机 ping 自己的虚拟网卡地址会走回环这个结果参考价值有限真正有意义的验证是虚拟机 ping 它以及后面 WinCC 的通道诊断。接下来把程序下载进去。博图里点下载到设备接口那一栏一定要从下拉框里选 Siemens PLCSIM Virtual Ethernet Adapter 对应的那个接口然后显示所有可访问设备正常情况下能看到仿真实例。选中它下载弹出全部覆盖的时候勾上让项目里的 IP 覆盖到实例上。如果这里搜不到设备先确认实例是不是已经 Start 且没有报错再确认接口有没有选错最后才怀疑防火墙。3. 虚拟机侧VMware 网络怎么接才通3.1 桥接、仅主机、NAT 三种模式的实测结论虚拟机网络适配器的三个模式我把它们对这套方案的适用性列出来免得你一个个试。模式虚拟机能否访问仿真实例原因NAT不能虚拟机挂在 VMnet8 上通过主机做地址转换出站主机的 PLCSIM 虚拟网卡不属于 VMnet8 这个网段入站更没戏仅主机默认不能虚拟机挂在 VMnet1 上能和主机的 VMnet1 地址互通但 VMnet1 和 PLCSIM 虚拟网卡是两块不同的接口Windows 默认不跨接口做转发桥接能前提是桥接目标选对桥接是把虚拟机的虚拟网卡接到目标适配器所在的二层目标选成 PLCSIM 虚拟网卡时虚拟机就和仿真实例在同一段NAT 模式可以彻底排除它的设计目标就是单向出站。仅主机模式是最容易被误用的一个很多人看到主机和虚拟机互相能 ping 通就以为成了但那个 ping 通的是 VMnet1 的地址不是仿真 PLC 的地址两者完全不是一回事。要硬啃仅主机模式也不是不行需要在主机上开 IP 转发或者配 Internet 连接共享把两块网卡桥起来配置复杂且容易在系统更新后失效我不推荐。我用的方案是第三种把 VMnet0 的桥接目标手动指定为 PLCSIM 虚拟网卡。3.2 把 VMnet0 桥接到 PLCSIM 虚拟网卡的具体操作先把虚拟机关机。在 VMware 里打开虚拟机的设置网络适配器选桥接模式并且把下面的复制物理网络连接状态之类的勾先放开不管。这里有个关键点桥接模式默认是自动桥接由 VMware 自己挑一块物理网卡它通常不会挑中 PLCSIM 的那块虚拟网卡所以必须手动指定。打开编辑菜单里的虚拟网络编辑器。在较新的 VMware 版本里这个窗口需要点右下角的更改设置按钮获取管理员权限才能修改点不动就是这个原因。选中 VMnet0在下面桥接到的下拉框里从自动改成Siemens PLCSIM Virtual Ethernet Adapter。如果下拉列表里看不到它检查一下实例是不是已经启动过虚拟网卡是 PLCSIM Advanced 装上后才出现的以及你是不是没拿到管理员权限。改完之后再确认一遍虚拟机设置里的网络适配器状态是已连接和启动时连接这两个勾不勾上表现出的现象都是网卡找不到很容易让人白折腾半小时。3.3 虚拟机里的 IP、防火墙和网卡型号进虚拟机把 WinCC 那台机器的 IP 固定下来地址填 192.168.100.10掩码 255.255.255.0网关留空。网关留空是因为这个网络里没有路由器填了反而可能让系统把部分流量发到一个不存在的下一跳上去。DNS 也不用填。防火墙方面虚拟机里的 Windows 防火墙默认不拦出站连接出站去连 192.168.100.1 的 102 端口一般没问题但 ping 的 ICMP 回显请求会被拦导致你 ping 不通却以为网络没配好。我习惯在虚拟机的防火墙里放行文件和打印机共享回显请求这一组规则或者干脆在仿真环境里把专用网络的防火墙关掉反正是隔离环境。网卡型号也值得说一句。VMware 默认给的通常是 VMXNET3性能好、CPU 占用低但它依赖 VMware Tools 里的驱动个别版本的通信栈和它配合得一般。如果你确定 IP、桥接、防火墙都没问题ping 就是不通可以关机把网卡型号换成 E1000e 再试一次——这个换法我自己碰到过两次管用后来做这类环境我一律先用 E1000e 把链路跑通稳定之后再考虑要不要换回去。VMware Tools 顺手装上主机和虚拟机之间的剪贴板互通、分辨率自适应都靠它做工程配置的时候复制一段参数不用手敲省下的是实打实的时间。3.4 另一种可行组合走真实网卡的 TCP/IP 通信如果你手上那台 VMware 的桥接列表里死活找不着 PLCSIM 虚拟网卡还有一条路PLCSIM Advanced 切到 TCP/IP communication 模式绑定到主机的物理网卡以太网或 Wi-Fi 都行给实例设一个和物理网卡同网段的空闲 IP虚拟机的网络适配器改成桥接模式并桥接到同一块物理网卡。这样虚拟机、仿真实例、你的笔记本就都在同一个局域网段里。缺点是仿真实例对外暴露同一个办公室的人只要扫到那个 IP 就能连上来而且 IP 必须确保没人占用。做演示环境的时候我一般会把这个 IP 记在便签上演示完立刻切换回虚拟网卡模式免得下次忘了这回事在办公网里留一个幽灵 PLC。4. WINCC 7.5 SP2 侧从驱动到变量跑通4.1 驱动和 PG/PC 接口设置打开 WinCC 项目管理器右键变量管理看添加新的驱动程序里有没有 SIMATIC S7-1500 Channel。这个驱动不是所有安装组合里都默认带上它依赖于 SIMATIC NET 的通信组件。如果列表里找不到说明安装的时候通信组件没装全需要补装匹配版本的 SIMATIC NET PC Software注意版本要和 WinCC 7.5 SP2 对得上装高了装低了都可能出问题。驱动有了再去控制面板里找设置 PG/PC 接口。这一步的作用是告诉系统从这台机器发出去的 S7 通信走哪块网卡。应用程序访问点选 S7ONLINE (STEP 7)接口参数分配里选 TCP/IP然后在后面挂的网卡列表里选中虚拟机那块以太网卡。这里有个必须注意的点虚拟机里的网络连接列表往往不止一块网卡装了 VMware 相关组件之后可能还有虚拟回环之类的东西名字看起来都差不多。如果是双网卡或者多网卡环境选错了就是网络通但连不上的经典症状。多网卡情况下可以试试把接口参数分配选成带 Auto 字样的那一项让它自动挑但前提是你机器上没有第二块处在同一网段的网卡。4.2 新建连接时的参数怎么填在 S7-1500 通道下新建一个连接命名随意比如 PLC_Sim。连接属性里填 IP 地址 192.168.100.1。S7-1500 的通信接口位置是固定的机架号 0、插槽号 1不同版本的界面里这两项可能不显示、也可能让你手动填填错的表现是连接建立超时或者直接报错遇到连不上先回头核对这两个数。连接的读取周期保持默认就行仿真环境追求的是功能验证不是性能压测。真要做性能验证可以在 WinCC 的通道诊断里看通信负载仿真器和真实 PLC 的表现差异很大这部分数据没有参考价值。连接建好之后新建变量。变量名建议和博图里保持一致地址按绝对地址填比如 DB1,DBW0 之类的格式数据类型要和博图里定义的一致——DBW 是字DBD 是双字你在博图里定义的是 RealWinCC 里选了 Word读出来的就是一堆看不懂的数字。4.3 用一个最小闭环验证整条链路不要一上来就把整个项目的变量都建完先做一个最小闭环在博图里建一个 DB里面放一个整型变量和一个实数变量取消优化块访问编译下载到仿真。WinCC 里对应建两个变量画面上放一个 I/O 域绑上去再放一个按钮写值。激活 WinCC 运行I/O 域应该能显示博图里的当前值。然后在博图的监控表里改这个变量的值WinCC 画面上的数字应该跟着变。反过来在 WinCC 里通过输入域写值博图的监控表也能看到。这两个方向都通说明整条链路是活的。如果画面上的值不动先别急着怀疑网络。打开 WinCC 自带的通道诊断工具它能看到连接的建立状态、在线状态和报错的错误码比在画面上一脸茫然强得多。另外博图的监控表在线监控本身也占一个连接如果它和 WinCC 抢资源可以分开时间段做验证。5. 连不上时的分级排查链路5.1 三段式定位从下往上查遇到连不上我固定按这个顺序查能省掉大量来回试的时间。第一段主机侧。PLCSIM 实例是不是 Start 状态、有没有黄色警告实例的 IP 是不是你期望的那个主机ipconfig里那个地址在不在。这一步是确认仿真 PLC 本身活着。ipconfig /all ping 192.168.100.1第二段虚拟机侧。虚拟机的网卡是不是已连接桥接目标是不是 PLCSIM 虚拟网卡虚拟机里ipconfig看到的地址是不是 192.168.100.x。在虚拟机里 ping 仿真实例的地址这一步是确认二层通不通。ping 通了网络层的工作就结束了后面所有问题都跟网络无关。第三段应用层。用通道诊断看连接状态检查 PG/PC 接口的网卡选择、机架插槽、CPU 的保护设置、DB 是不是优化访问。到这一步还查不出来再回头看博图项目里的参数。5.2 看着像网络问题其实不是的几种情况现象最常见的真实原因处理方式虚拟机 ping 不通实例但别的都正常ICMP 被虚拟机防火墙拦了放行回显请求或用通道诊断代替 ping 做判断ping 通了但 WinCC 连不上PG/PC 接口选错网卡或机架插槽填错重设访问点核对 0/1主机自己 ping 不通实例地址走了回环结果不可信以虚拟机侧和通道诊断为准博图搜不到仿真设备下载接口没选对或实例没启动下拉框里改选 PLCSIM 虚拟网卡对应的接口下载时提示不支持仿真项目里用了 F 程序或工艺对象仿真环境里把这类程序块禁用或排除通讯偶尔断过一会又自己好了杀毒软件拦截 102 端口或虚拟机被挂起过添加端口白名单避免挂起虚拟机变量全是 0 或读不出来DB 还开着优化的块访问取消优化访问重新编译下载5.3 看着像 WinCC 的问题根子在博图侧有几个坑我在帮别人远程的时候反复遇到都是 WinCC 那边一切正常、博图那边一个勾的事。第一个是前面反复提到的优化块访问。第二个是 CPU 的保护设置里那些和安全通信、证书相关的选项V17 之后的版本把这块做得更细了老版本上位机连不上八成是这里卡着。第三个是连接资源仿真 CPU 的可用 HMI 连接数被占满时新的连接请求会被直接拒绝通道诊断里能看到资源相关的错误。第四个是仿真器不支持的程序项目里只要有一个不支持的块参与了编译和下载整个下载就会失败报错信息还不一定直白。判断方法很简单在博图里把项目瘦身只留最基本的 OB1 和一个数据块先跑通链路再一点点往上加。加的过程中哪一步断了问题就在那一步加的东西上比对着报错码猜要快得多。6. 跑通之后容易忽略的几个细节6.1 授权这件事虚拟机里比主机麻烦主机上的博图和 PLCSIM Advance 授权一般好办。麻烦的在虚拟机里WinCC 7.5 SP2 的授权如果是 USB 加密狗你得把它直通给虚拟机VMware 的 USB 控制器要打开主机上还要把这个设备从宿主机断开连接再连接到虚拟机顺序错了就会出现两个系统抢设备的情况表现是授权时有时无。如果项目里用的是授权服务器或者网络授权那就没有这个问题虚拟机只要网络通就行。Automation License Manager 在两台机器上都装一份查授权状态很方便。6.2 快照、挂起带来的玄学故障虚拟机最爽的功能是快照最坑人的也是快照。回滚到早期快照之后虚拟网卡的 MAC 地址可能变了某些软件里的网卡绑定信息就对不上了回滚之前如果改过 IP、装过驱动回滚之后就全丢了。我的习惯是链路彻底跑通、授权装好、项目文件放到位之后拍一个黄金快照命名里写清楚日期和配置要点。以后每次做破坏性试验之前都从它开始克隆一份新的虚拟机不动原始的那份。另外别用挂起代替关机。挂起状态下虚拟机的网络连接会断开恢复之后偶尔出现虚拟网卡状态异常、需要手动重新连一下的情况。做长时间仿真的时候宁愿让它开着不动也别挂起。6.3 剪贴板、时间同步和两边同时在线主机和虚拟机之间的剪贴板互通靠 VMware Tools配置 IP、复制变量名、传一段脚本的时候特别有用。时间同步也值得顺手处理一下虚拟机默认可能和主机同步时间也可能不同步WinCC 的归档和报警时间戳如果和博图监控表对不上做故障分析的时候会很别扭。让两边都自动同步到同一个时间源做归档验证的时候就不会被时间戳误导。最后一点主机上的博图在线监控、虚拟机里的 WinCC、PLCSIM Advanced 的控制面板这三者会同时占用仿真实例的连接资源。做多方位验证的时候把不用的监控窗口关掉连不上的概率会明显下降。我现在的工程笔记本上就是主机跑博图加仿真、虚拟机跑经典 WinCC这套组合从最初的验证环境一直用到给客户做培训演示中间换过两台机器、升过两次 VMware 大版本每次重装都要在虚拟网络编辑器里把桥接目标重新指一遍——这一步是整个流程里最容易忘、也最容易让人怀疑人生的地方配完之后我会立刻拍快照下次直接克隆。
返回列表