
做自动化这行只要你想在没硬件的情况下把一条产线逻辑跑通就绕不开博图加仿真这套组合。这两年我身边不少做电气设计和程序调试的朋友都在琢磨同一个问题博图 V18 和 Factory IO 到底怎么连。表面上看这就是两个软件之间拉一根网线的事儿但真正动手过的人都知道从版本对不上、虚拟网卡没设好到下载之后 Factory IO 死活读不到点中间的坑一个接一个。这篇就把我自己反复折腾之后总结出来的一套完整链路摊开讲——从环境搭建、虚拟 PLC 建立到 TIA 侧的关键属性、Factory IO 的驱动配置、IO 点表映射再到各种报错怎么反推原因。内容偏实操适合刚开始接触 1500 仿真、或者连上过一次但没搞明白原理的朋友。哪怕你是纯小白只要跟着思路走也能把这套链路自己跑起来。1. 先纠正一个认知内置 PLCSIM 连不上 Factory IO很多人第一次尝试都是在博图里点那个启动仿真然后打开 Factory IO怎么配都连不上最后一头雾水。问题的根子在于博图自带的那套仿真和 Factory IO 需要的仿真压根不是同一种东西。1.1 两种仿真器的本质差异博图里那个一键启动的仿真S7-PLCSIM本质上是把 PLC 的运行时塞进博图的进程里。它跟外部的通信走的是内部接口只有同一台电脑上的博图、监控表、HMI 仿真这些西门子自家组件能访问。它并不对外暴露一个标准的、可被第三方软件通过以太网协议访问的通信端点所以 Factory IO 根本看不到它。而S7-PLCSIM Advanced是另一套东西。它把虚拟 CPU 做成一个独立的实例并且会给电脑装一张虚拟网卡让这个虚拟 CPU 像一台真正的 PLC 一样挂在网络上拥有自己的 IP 地址。这样任何支持 S7 通信协议的上位软件——包括 Factory IO——都能像连真机一样连到它。这才是能让博图和 Factory IO 打通的关键组件。我见过太多人卡在这一步反复重装博图、反复换 Factory IO 版本其实方向就错了连接 Factory IO 必须用 PLCSIM Advanced内置 PLCSIM 不行。1.2 什么时候该用这套组合说清楚适用场景也很重要。这套组合最适合三类人一是手上没有 1500 实体 PLC又想练习编程和调试的初学者二是要做逻辑验证、算法验证但不想占用产线上真机的工程师三是做教学演示需要一套可以随时启停、成本又低的仿真环境。它不适合的场景也得提前说清楚涉及真实运动轴、高动态伺服、对通信周期要求极高的控制仿真环境给不了你真实的物理响应只能验证逻辑层面对不对。把它当成逻辑沙盘用心态就对了。2. 动手前先把版本这条生死线卡准这套链路最常见的莫名失败八成出在版本上。三个软件TIA Portal、PLCSIM Advanced、Factory IO之间的版本关系不是随便配的配错了可能连控制面板都打不开。2.1 版本对应关系不能拍脑袋博图 V18 对应的虚拟仿真组件是S7-PLCSIM Advanced V5.0。这个对应关系不是差不多就行因为 PLCSIM Advanced 的驱动和虚拟网卡是跟着博图版本走的版本低了可能识别不了 V18 生成的 CPU 组态版本高了又可能不兼容。下面这张表是我自己整理核对过的对应关系可以直接参考。博图版本建议搭配的 PLCSIM Advanced说明V16 / V17V4.0老项目还在维护的可以继续用V17 / V18V5.0本次标题对应的组合V19V6.0想上 V19 的话建议整套升级Factory IO 这一侧就宽松很多主流的 2.5.x、2.6.x 版本都内置了 S7-1200/1500 驱动对博图版本不敏感。但要注意一点Factory IO 的 S7 驱动依赖系统里的通信库这个库通常是随 TIA 或 PLCSIM Advanced 安装的所以安装顺序上建议先装博图再装 PLCSIM Advanced最后装 Factory IO避免通信库文件缺失。2.2 许可证问题是绕不开的门槛热词里频繁出现的博图 V18 找不到许可证仿真无法启动大多指向同一件事PLCSIM Advanced 是需要独立授权的。它不像内置 PLCSIM 那样装了就白用没有有效授权控制面板能打开但点击启动实例的时候会直接报错或者实例状态卡在停止。排查思路很简单打开 Automation License Manager看有没有 PLCSIM Advanced 对应的授权条目。博图本身的授权和 PLCSIM Advanced 的授权是分开的两样东西别以为装好博图有授权了仿真就能用。这一步没搞定后面所有配置都是白忙活。提示授权问题建议在环境搭建阶段一次性确认不要在下载程序失败之后才回头查那样会把版本问题、组态问题和授权问题混在一起排查起来非常痛苦。3. 建立虚拟 PLC从虚拟网卡到实例上电环境和版本确认之后下一步是把这个虚拟的 PLC真正造出来。这一块的操作看着不多但每一步都有关键动作漏一个就连不上。3.1 虚拟网卡必须先设好静态地址装上 PLCSIM Advanced 之后Windows 的网络适配器列表里会多出一样东西名字里带 PLCSIM Virtual Ethernet Adapter。这张虚拟网卡是你后面所有通信的物理基础必须给它设置一个静态 IP。我的习惯是把它设成192.168.0.1子网掩码255.255.255.0。为什么强调静态因为如果让它自动获取地址一旦地址变化虚拟 PLC 的 IP 和你电脑其他网卡就可能冲突或不在同一网段通信直接断掉。设成固定值之后以后每次开机都是这个地址省心。这里有个特别容易忽略的坑如果你的电脑有多张网卡无线网卡、有线网卡、虚拟网卡它们的网段不能重叠。比如你的无线上网网段也是 192.168.0.x那就会和虚拟网卡打架导致路由混乱。这种情况建议把虚拟网卡换到别的网段比如 192.168.1.x然后在 PLCSIM Advanced 里把虚拟 PLC 的 IP 也设成同网段。3.2 控制面板里的实例配置细节打开 PLCSIM Advanced 的控制面板界面其实很简洁但几个选项的取舍直接决定能不能连通。首先是Online Access在线访问这里要选到那张 PLCSIM 虚拟网卡并且勾选 TCP/IP communication with ... 相关的选项。很多人不勾这个虚拟 PLC 就只在本地内部通信Factory IO 当然连不上——这就是仿真启动了但连不上的典型原因之一。然后是实例的 IP 配置要和虚拟网卡同网段比如192.168.0.10。网段一致才能互相访问。配置完之后点击 Start实例状态变成绿色或者显示运行就说明虚拟 PLC 已经在网络里活着了。到这一步你可以先用最简单的 ping 命令从命令行去 ping 一下这个 IP能通就证明网络层没问题可以进入下一步组态了。3.3 时间同步与高级参数PLCSIM Advanced 还有几个高级选项日常调试不一定用得上但了解一下没坏处。比如时间同步相关的设置可以让虚拟 CPU 的时间和主机时间保持接近对于做时间戳、日志记录的场景有意义。还有通信接口的选择如果你有多个虚拟网卡要明确指定用哪一张避免它自己选错。我的经验是第一次搭建时尽量用默认参数只改动 IP 和在线访问这两项把变量控制到最少。等整条链路跑通了再回头研究这些高级参数。一上来就大改特改出了问题根本不知道是哪个选项导致的。4. TIA 侧组态几个不点就白干的属性虚拟 PLC 活了接着要在博图里把项目和程序准备好下载进这个虚拟 CPU。硬件组态本身不难难的是几个默认没开、但必须开的属性。4.1 CPU 选型与地址规划先在博图里新建项目添加设备时选择S7-1500系列的 CPU。PLCSIM Advanced 对 1511、1516 这些主流型号支持都很好我一般直接用 1516-3 PN/DP资源足够做复杂逻辑也不会捉襟见肘。添加完 CPU 之后第一件事是进设备视图给 CPU 的 PROFINET 接口设置 IP 地址这个 IP 必须和前面虚拟 PLC 的 IP 完全一致比如192.168.0.10。这一点特别关键因为下载的时候博图是认 IP 去找目标设备的IP 不一致就找不到虚拟 PLC会出现无法到达设备之类的提示。地址规划上我习惯把传感器类信号排在 I 区执行器排在 Q 区从 I0.0、Q0.0 往后顺序排。具体怎么排后面在 IO 点表那节展开。4.2 防护与安全里的连接机制这是最重要的一步也是踩坑最多的地方。在设备视图里选中 CPU右键进入属性找到防护与安全下面的连接机制页面勾选允许来自远程对象的 PUT/GET 通信访问。不勾这一项Factory IO 就没办法通过 S7 通信去读写虚拟 CPU 的输入输出数据。表现出来就是虚拟 PLC 能 ping 通Factory IO 那边也显示已连接但场景里的传感器和执行器一动不动或者干脆连接就失败。这个选项是博图为了保护 CPU 安全默认关闭的仿真场景下必须手动打开。注意这个选项在真机上也常常需要开如果你连真机做过 S7 通信应该对这个设置不陌生。忘记它几乎是所有通信连不上问题的头号嫌疑。4.3 下载到虚拟 CPU 与真机下载的区别配置好之后就是下载程序。下载前在博图的可访问的设备里应该能看到那个虚拟 CPU 的 IP选中它下载即可。这里有个和真机下载的差异要注意。真机下载要先设置 PG/PC 接口并选择实际的物理网卡而下载到虚拟 PLC 时你的 PG/PC 接口要选到 PLCSIM 虚拟网卡上或者选择 PLCSIM 相关的接口。如果你电脑上有线网卡正连着公司网络博图可能会默认走有线网卡去找设备自然找不到。切到虚拟网卡下载就顺了。下载完成后把 CPU 切到 RUN 状态。这一步成功说明博图和虚拟 PLC 之间先打通了接下来才轮到 Factory IO 上场。5. Factory IO 一侧驱动选型与点表映射到这一步大部分人会觉得最难的已经过去了其实 Factory IO 这边的配置才是真正考验细节的地方尤其是信号方向映射。5.1 驱动选择与连接参数打开 Factory IO在场景里随便搭一条简单的输送线。然后点右上角的驱动配置Drivers从列表里选择S7-1200/1500驱动。这个驱动就是专门用来连西门子这两代 PLC 的。连接参数里要填 IP 地址填的就是虚拟 PLC 那个192.168.0.10。有些版本还会让你填机架和槽号S7-1500 一般是一个 CPU 放在机架 0 槽 1。填完点连接如果前面几节都配对这时候状态栏应该会显示已连接。连接成功的判断标准不是它显示绿字就万事大吉而是要看后面 IO 点映射页能不能正常读取到地址空间。如果连接状态是亮的但映射页报错多半还是通信机制或者 IP 的问题回到上一节检查 PUT/GET 那个选项。5.2 信号方向最容易搞反的一环这是我想重点强调的经验。Factory IO 和 PLC 之间的信号是有方向性的而且方向跟很多人的直觉相反。场景里的传感器光电开关、行程开关、按钮这些是产生信号的一方它们对应的是 PLC 的输入 I 区场景里的执行器电机、气缸、传送带、指示灯这些是接受命令的一方对应 PLC 的输出 Q 区。我见过太多人把这两者接反结果传感器收不到、执行器不动然后怀疑人生。判断方法很简单问自己一句这个元件是告诉 PLC 还是听 PLC 的——告诉的是输入听的是输出。把这个原则刻在脑子里映射就不会错。5.3 构建一份清晰的 IO 点表真正做项目时别在 Factory IO 和博图之间来回点着看太乱。我的做法是先做一份点表用表格把 Factory IO 的每个 Tag 名称、方向、对应的 PLC 地址、功能说明全部列清楚然后两边照着这份表配。下面给一个示意。Factory IO 元件方向PLC 地址说明Start Button输入I0.0启动按钮Stop Button输入I0.1停止按钮Photo Sensor 1输入I0.2入口光电检测Conveyor Motor输出Q0.0传送带电机Indicator Green输出Q0.1运行指示灯这份表看着简单但它能帮你避免 90% 的映射混乱。尤其是场景复杂、元件几十个的时候没有点表根本理不清。映射完成后在博图里写一段最简单的起保停逻辑点一下 Factory IO 里的启动按钮看传送带动不动这一来一回验证通了整条链路就算彻底打通了。6. 连不上别慌从报错反推排查链路链路搭通了用得爽但一旦出问题很多人就懵了。这里把我遇到过的高频故障整理成一条排查链按顺序往下走基本能定位。6.1 找不到许可证 / 实例起不来如果点击启动实例时提示许可证相关错误那不用往下查了直接去 Automation License Manager 确认 PLCSIM Advanced 的授权。还有一种情况是实例能创建但起不来或者卡在停止状态这往往是因为虚拟网卡没启用或者在线访问选项没勾 TCP/IP communication。排查顺序先看授权再看虚拟网卡是否启用且设了静态地址最后看在线访问选项。这三项排完实例基本就能起来。6.2 能 ping 通但连不上这是最迷惑人的状态命令行 ping 虚拟 PLC 的 IP 能通但 Factory IO 一连接就失败。这种情况下网络层是好的问题出在通信协议层重点关注两个地方。第一个是博图里的 PUT/GET 那个选项有没有勾没勾直接导致连接被拒。第二个是 PG/PC 接口或虚拟网卡的网卡选择问题Factory IO 需要明确走虚拟网卡对应的那个网络路径如果系统里路由优先级把流量导到了别的网卡也会连不上。必要时可以临时把其他网卡禁用排除干扰。6.3 连上了但 IO 完全不动连接显示正常但场景里的东西不动这种故障要分两半看。一半看映射一半看程序。映射方向上回到上一节确认输入输出没搞反、地址没填错。程序上确认博图里的逻辑确实在驱动对应的输出点如果程序里 Q0.0 从来没被置位Factory IO 场景里的电机当然不动。我的排查习惯是先在博图里手动强置一个输出点看 Factory IO 有没有反应有反应说明映射没问题是逻辑的事没反应那就是映射或通信的事。6.4 运动控制相关的仿真MC_MoveAbs 这类热词里提到的real_move_blk、MC_MoveAbsolute这些其实关联的是运动控制仿真。PLCSIM Advanced 是支持 S7-1500 工艺对象仿真的但默认不一定开启。如果你要在仿真里跑定位轴、走MC_MoveAbsolute这类运动控制指令块需要确认 CPU 属性里跟仿真相关的选项是否允许运动控制并且工艺对象的参数要配置完整。要提醒的是仿真里的运动控制只验证逻辑和指令调用顺序不会给你真实的机械响应。轴的速度、加减速曲线在仿真里是一套理想化的模型跟真机接伺服驱动器完全不是一回事。用它来验证我的程序调指令块的顺序对不对、状态机跳转顺不顺是有价值的用它来调真实伺服参数就南辕北辙了。7. 用顺手之后我养成的一些习惯这套链路我自己反复搭过很多次慢慢也总结出一些让效率更高的小习惯分享出来给同样在折腾的朋友。把环境做成模板。建一个已经配好 IP、勾好 PUT/GET、CPU 型号固定的博图空项目另存一份当模板。以后做新练手项目直接从这个模板复制省掉每次都要重新配组态、重新设 IP 的重复劳动。Factory IO 那边也一样常用场景另存一份Tag 映射都保留好。网段规划要提前想好。前面说过虚拟网卡和其他网卡不能同网段这个原则建议在装软件之前就规划好别等出问题了再改改一次要动好几个地方。先窄后宽地排查。任何通信问题都用先验证最底层的思路物理网络通不通ping→ 虚拟 CPU 活没活实例状态→ 通信权限开没开PUT/GET→ 映射对不对IO 点表→ 逻辑对不对程序。按这个顺序从底往上查永远不会乱。别怕重来。这套东西刚上手时有时候一个地方配乱了与其一点点找不如把实例删掉、网卡地址重设、项目重建从头走一遍。过程虽然长一点但每次重走都能加深对每个环节作用的理解比死磕一个错点效率更高。这套博图 V18 加 Factory IO 的仿真链路说穿了就是用一个虚拟网卡把两个软件拉到同一个网段里再打开必要的通信权限。道理不复杂坑都在细节里。把版本对应、PUT/GET、信号方向这三点守住剩下的就是熟练度问题了。等你能在没有任何硬件的情况下让一条仿真产线自己跑起来那种把逻辑从脑子里落到屏幕上的感觉确实挺过瘾的。