做自动化这行,只要你想在没硬件的情况下把一条产线逻辑跑通,就绕不开博图加仿真这套组合。这两年我身边不少做电气设计和程序调试的朋友都在琢磨同一个问题:博图 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 / V17 | V4.0 | 老项目还在维护的可以继续用 |
| V17 / V18 | V5.0 | 本次标题对应的组合 |
| V19 | V6.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、信号方向这三点守住,剩下的就是熟练度问题了。等你能在没有任何硬件的情况下,让一条仿真产线自己跑起来,那种把逻辑从脑子里落到屏幕上的感觉,确实挺过瘾的。