
前阵子帮一个做自动化教学的同行调一套分拣线的课程案例他那边学员反映最常见的问题就是程序写完了没设备练。后来我们把博图 V18 和 Factory IO 这套组合重新捋了一遍从虚拟网卡配置到变量映射把整个链路打通学员在自己笔记本上就能跑一条完整的传送带分拣流程。这篇文章就把这套连接方案从头到尾拆开讲清楚包括版本搭配、通信原理、IP 规划、变量对照以及那一堆让人头疼的许可证、仿真起不来、HMI 按钮没反应的坑。适合刚接触博图 V18 的在校学生、想练手但没硬件的中初级工程师以及需要给学员搭仿真环境的培训讲师。整套方案不需要任何实体 PLC一台内存 16G 以上的 Windows 电脑就能跑起来。1. 为什么仿真练习要选博图加 Factory IO 这套组合1.1 Factory IO 解决的到底是哪个痛点做 PLC 这行的人都懂学编程最难的不是指令本身而是没有对象可以控制。你背得下启保停电路写得出定时器级联但面前没有电机、没有气缸、没有传送带程序写完只能干瞪眼看着梯形图发呆。实体设备贵是一方面更麻烦的是接线、气路、安全防护这一整套配套个人根本搭不起来。Factory IO 就是冲着这个来的。它本质是一个三维的工厂场景模拟器里面有传送带、机械臂、料仓、传感器、分拣机构、液位罐这些常见工业元件而且每个元件都能被外部 PLC 信号驱动。你在博图里写一段程序输出 Q0.0Factory IO 里对应的传送带就转起来你把光电开关的地址绑到 I0.1料块经过的时候就会触发信号。整个闭环跟真机几乎一样但成本只是一台电脑。关键在于它便宜、可复制、不怕烧。学员接错线最多是场景里料块撞飞不会炸电容也不会伤手。对于教学和自学场景这是我目前见到的性价比最高的方案。1.2 为什么必须用 PLCSIM Advanced 而不是普通 PLCSIM这是新手最容易翻车的地方也是博图v18仿真无法启动factory io 连不上这类问题的高频根源。博图自带两种仿真器。一种是普通的 S7-PLCSIM它跟博图绑定下载程序后能在电脑里模拟一个 PLC 运行程序但它有个致命限制它不支持标准以太网通信外部程序没法通过网络跟它通信。换句话说Factory IO 根本看不到它连不上。另一种是 S7-PLCSIM Advanced这是一个独立安装的组件它会在 Windows 里创建一块虚拟网卡模拟出一台真正挂在网络上的 PLC。它有 IP 地址、有网口、支持 S7 通信协议。Factory IO 正是通过网络协议去读写这台虚拟 PLC 的 I/O所以必须用 Advanced 版本。我见过太多人装完博图就开始配 Factory IO结果怎么都连不上折腾一晚上最后发现用的是普通 PLCSIM。记住一句话只要涉及与第三方软件通信一律用 PLCSIM Advanced。普通 PLCSIM 只适合纯博图内部的 HMI 仿真调试。1.3 版本对应关系一定要提前核对PLCSIM Advanced 的版本必须和博图主版本对齐这是硬性约束装错了要么装不上要么运行时报版本不兼容。博图主版本匹配的 PLCSIM AdvancedFactory IO 建议版本V16PLCSIM Advanced V3.02.4 及以上V17PLCSIM Advanced V4.02.4 及以上V18PLCSIM Advanced V5.02.5 及以上V19PLCSIM Advanced V6.02.5 及以上我这次用的是博图 V18 搭配 PLCSIM Advanced V5.0Factory IO 用 2.5.2。注意 PLCSIM Advanced V5.0 是独立安装包不在博图安装盘里需要单独获取。很多教程只讲装博图没提这一条结果学员装到一半发现缺组件又要回头补。另外Factory IO 的仿真驱动对 PLC 型号也有要求。它支持的西门子驱动包括 S7-1200、S7-1500、S7-300/400 以及 PLCSIM Advanced。从 V18 开始建议组态 S7-1500 系列因为 1500 对 PLCSIM Advanced 的支持最完整通信机制也更省心。2. 环境搭建的完整流程与安装顺序2.1 软件清单与安装前后顺序很多人安装失败不是因为软件有问题而是顺序错了。正确顺序是这样的先关掉所有杀毒软件和系统自带的实时防护这一条后面会详细讲原因。安装博图 V18 主体安装时勾选 STEP 7 Professional 和 WinCC如果要做 HMI 仿真。安装 PLCSIM Advanced V5.0 独立包。安装 Factory IO装完后重启一次。打开 Automation License Manager 检查授权状态。为什么要把 PLCSIM Advanced 放在博图之后装因为它安装时会向系统注册虚拟网卡驱动和通信组件如果博图还没装注册过程可能找不到依赖项导致网卡装不上。我实测过先装 Advanced 再装博图结果虚拟网卡在设备管理器里带黄色感叹号怎么都调不出来最后重装系统才解决。这种低级错误一次就够记一辈子。安装过程中系统会提示重启多次别嫌烦每次都老老实实重启。特别是 PLCSIM Advanced 装完那次重启是虚拟网卡生效的关键节点。2.2 虚拟网卡到底是个什么东西这是整套方案里最抽象、也最容易被忽略的一环。我用一个类比来解释。想象你家有一台电脑本来只有一张真实的网卡插着网线连路由器。PLCSIM Advanced 装完之后系统里凭空多出来一张假网卡就像在你家客厅里又接了一个独立的小路由器专门给虚拟 PLC 用。这块虚拟网卡的名字叫Siemens PLCSIM Virtual Ethernet Adapter你可以在控制面板 → 网络连接里看到它。博图下载程序时走的是这块虚拟网卡Factory IO 通信时走的也是这块虚拟网卡。它们俩就像两个人在同一个局域网里聊天互相看得见。所以这块网卡的 IP 必须和虚拟 PLC 的 IP 在同一个网段否则谁也找不到谁。这里有个细节虚拟网卡默认可能是自动获取 IP你要手动改成静态地址。我的习惯是把它设成 192.168.0.1子网掩码 255.255.255.0。改完之后虚拟 PLC 实例的 IP 我会设成 192.168.0.10跟网卡同网段但地址不同。这样规划有个好处以后要接真实的仿真设备或者做多实例切换地址段是干净的不会互相打架。2.3 授权与许可证的处理思路博图v18找不到许可证是搜索量常年很高的问题。博图的授权机制是软件和授权分离软件本身免费装但运行时需要 Automation License Manager 里有一份有效的授权文件。装完博图后打开 Automation License Manager你会看到授权树。如果对应模块显示的是无授权或者试用那就要把授权文件传上去。授权文件一般随安装盘附带或者通过正规渠道获取。操作方法是在 License Manager 里选中目标盘符右键传送找到授权文件所在的目录传过去就行。注意授权传送前一定要完全退出博图和 PLCSIM Advanced否则文件被占用会传送失败报许可证被占用。这个问题我踩过反复传了五六次都不成功后来发现是博图后台进程没关干净任务管理器里手动结束掉才搞定。还有一类许可证问题是授权过期或授权信息损坏。表现是博图能打开但一编译就报错或者 PLCSIM Advanced 起动时报未找到有效许可证。这种时候先检查 License Manager 里授权是否还在如果确实丢了重新传一次通常能恢复。如果还是不行可能是授权盘被其他软件误删需要用授权管理工具重新写入。我个人的建议是教学或长期使用场景老老实实准备正规授权别在这上面省事。因为一旦授权出问题整个调试流程都要停摆比省下的那点成本麻烦多了。3. 通信链路的搭建从虚拟网卡到 IP 规划3.1 PLCSIM Advanced 实例的创建与配置装好之后桌面会有一个S7-PLCSIM Advanced V5.0的图标双击打开控制面板。这个面板就是管理虚拟 PLC 的地方。配置步骤是这样的在 Online Access 下拉框里选择PLCSIM Virtual Eth. Adapter也就是那块虚拟网卡。在 IP Address 栏填入 192.168.0.10子网掩码 255.255.255.0。如果组态的是 1500 系列Instance 类型保持默认即可。点击Start按钮实例开始运行状态灯变成绿色。这里有个细节很多人不知道PLCSIM Advanced 一次可以起多个实例每个实例相当于一台独立的虚拟 PLC。但每个实例必须用不同的 IP 地址否则会冲突。教学场景里如果你想同时演示两条产线可以起两个实例IP 分别设成 192.168.0.10 和 192.168.0.11然后在博图里组态两台 PLC 分别下载。虚拟网卡本身的 IP 也别忘了设。方法是控制面板 → 网络和共享中心 → 更改适配器设置 → 找到 Siemens PLCSIM Virtual Ethernet Adapter → 右键属性 → IPv4 → 手动填入 192.168.0.1。提示如果虚拟网卡的 IP 段和你家路由器的网段撞了比如路由器也是 192.168.0.x会出现地址冲突表现为通信时断时续。这种情况改用 192.168.10.x 这类冷门网段更稳妥。3.2 博图侧 PLC 的组态要点打开博图 V18新建项目添加一个 S7-1500 的 CPU。我这里以 CPU 1511-1 PN 为例因为它是入门常用型号资源占用低仿真起来流畅。组态时重点看两个地方第一是 PLC 的 PROFINET 接口地址。在设备视图里点击 CPU 的网口属性栏里找到以太网地址把 IP 设成 192.168.0.10和虚拟 PLC 实例保持一致。这不是随便填的博图下载时会把组态的 IP 写进虚拟 PLC两者对不上Factory IO 就连不到正确地址。第二是连接机制里的 PUT/GET 通信。这一步是新手最容易漏掉的也是 Factory IO 连不上的头号原因。在 CPU 属性里找到保护与安全 → 连接机制勾选允许来自远程对象的 PUT/GET 通信访问。为什么必须勾这个因为 Factory IO 读写 PLC 数据用的是 S7 通信协议而这个协议在 S7-1200/1500 里默认是关闭的出于安全考虑。不勾选的话Factory IO 的驱动会一直显示连接失败或者连接成功但读不到任何数据。我见过有人卡在这一步整整两天反复检查 IP 和网线就是没想到是通信权限的问题。如果项目里还有 HMI就在同一项目下添加一个 WinCC 精智面板或者用 WinCC Runtime Advanced。这步后面讲 HMI 仿真时再说。3.3 Factory IO 驱动配置与地址对齐打开 Factory IO先别急着放场景元件先把驱动配好。在右侧面板找到Drivers区域点击添加驱动下拉列表里选择 Siemens S7-1200/1500。选中后点旁边的齿轮图标进入详细配置配置项填写值说明Local IP192.168.0.1本机虚拟网卡地址Remote IP192.168.0.10虚拟 PLC 地址Rack0机架号S7-1500 固定为 0Slot1槽位号S7-1500 通常为 1Port102S7 通信标准端口这四个参数里Rack 和 Slot 是很多人搞错的地方。S7-300 的 CPU 通常在槽位 2S7-1200/1500 在槽位 1。填错了驱动会报无法建立连接但不会告诉你具体哪错了非常误导人。配好驱动后回到场景里每个元件都要绑定地址。比如传送带这个元件右键选择编辑在输入地址栏填 Q0.0那就表示 PLC 的 Q0.0 输出会驱动这条传送带。光电传感器填 I0.1表示传感器信号会写到 PLC 的 I0.1。注意Factory IO 里的地址是直接对应物理 I/O 地址的所以它用的是绝对地址概念。如果你打算用优化块访问的 DB 变量那是行不通的必须用非优化的绝对地址或者直接用 I/Q 区。这一点在写程序前就要想清楚。4. 变量映射与程序编写实操4.1 先把 Factory IO 场景的 I/O 点表整理出来我习惯的做法是先在 Factory IO 里把场景搭好然后把每个需要联动的元件地址列成一张表再回博图里建对应的变量。这样顺序反过来容易乱一边搭场景一边写程序改到后面自己都不知道哪个地址对应哪个元件。以一条典型的传送带分拣场景为例点表长这样Factory IO 元件地址类型说明启动按钮I0.0输入绿色按钮按下启动停止按钮I0.1输入红色按钮按下停止光电传感器I0.2输入检测料块到位传送带电机Q0.0输出驱动主传送带分拣推杆Q0.1输出推出料块到分拣口运行指示灯Q0.2输出运行状态指示整理这张表的时候要注意一个细节Factory IO 里按钮的类型分常开和常闭两种还有瞬时和保持两种。同一个绿色按钮如果类型选的是瞬时常开那按下给 1松开回 0如果是保持按下保持 1再按一次回 0。这个设置直接影响你程序里要不要写自锁所以搭场景的时候一定要点开元件属性看清楚。我踩过一次坑场景里的按钮设成了保持型程序里又写了自锁结果按一下启动再按一下停止但程序里自锁没解除传送带停不下来。查了半天以为是程序逻辑问题最后发现是元件属性设错了。所以点表里最好把元件类型也标注上省得回头翻。4.2 博图里的变量表与程序骨架回到博图先建立 PLC 变量表。打开PLC 变量 → 默认变量表把上面那张表里的地址和名称一一对应录进去启动按钮 %I0.0 Bool 停止按钮 %I0.1 Bool 光电传感器 %I0.2 Bool 传送带电机 %Q0.0 Bool 分拣推杆 %Q0.1 Bool 运行指示灯 %Q0.2 Bool这里可以顺带说一个实用技巧。如果你手头的点表很长几十上百个点一个个手敲太慢可以用 AT 覆盖或者直接从 Excel 导入。方法是把变量表导出成 Excel在表格里批量编辑好符号名和地址再导入回博图。博图 V18 的变量表支持这种导入导出格式是 .xlsx。这个技巧在工程现场特别省时间我在一个两百多个点的项目里用过比手敲快了不止十倍而且不容易出错。另外热词里提到的 MOVE_BLK 指令在变量映射场景里也常用。它的作用是把一个数据块里的连续数据批量搬运到另一个地址区。比如你有一批传感器状态要打包上传给上位机用 MOVE_BLK 一条指令就能搬完不用写十几条 MOVE。注意它的源和目标必须是非优化块否则运行会报错。程序本身用 SCL 写会比梯形图更紧凑。下面是一段启保停加延时推料的骨架// 传送带启保停 IF 启动按钮 AND NOT 停止按钮 THEN 传送带电机 : TRUE; END_IF; IF 停止按钮 THEN 传送带电机 : FALSE; END_IF; // 光电检测延时推料 TON_推料(IN : 光电传感器, PT : T#1S); IF TON_推料.Q THEN 分拣推杆 : TRUE; ELSE 分拣推杆 : FALSE; END_IF; // 运行指示灯 运行指示灯 : 传送带电机;这段只是骨架实际项目里还要处理推杆动作的保持时间、防重复触发、料块计数这些。但用来做第一次联调足够了。4.3 下载与联调第一次让传送带动起来这一步是最有成就感的也是最容易出问题的。先确认 PLCSIM Advanced 实例已经启动状态是绿色。然后回博图点击下载到设备。下载对话框里PG/PC 接口选择PLCSIM Virtual Ethernet Adapter接口类型选 TCP/IP然后点击开始搜索。正常情况下会搜到 192.168.0.10 这台设备。如果搜不到别急着重装按顺序排查虚拟网卡 IP 是不是设对了、PLCSIM 实例是不是在运行、防火墙有没有拦。这三个占九成。我一般会先把防火墙临时关掉测一次确认是防火墙问题再回去加例外规则。搜到设备后下载博图会提示是否覆盖设备中的程序确认即可。下载完成后PLCSIM Advanced 的实例状态会变成运行态博图左上角也会显示绿色的运行标志。这时候切到 Factory IO点一下驱动面板上的连接按钮。如果一切正常连接状态会变成绿色然后点 Factory IO 的播放按钮场景开始运行。你按下场景里的启动按钮传送带就应该转起来。第一次看到自己写的程序驱动三维场景动起来那种感觉跟玩游戏的成就感完全不一样。如果传送带不动先看 Factory IO 里的信号灯有没有变化。如果按钮按下去信号灯没反应说明通信没通如果信号灯变了但传送带不转说明地址绑错了或者程序逻辑有问题。这样分段排查比盲目重装软件高效得多。5. 常见问题与排查技巧实录5.1 连接类问题速查表这部分是我这几年被问得最多的问题整理成表方便对着查。现象可能原因排查方法Factory IO 驱动连不上PUT/GET 未勾选检查 CPU 保护与安全设置搜不到虚拟 PLC虚拟网卡 IP 不对控制面板确认网卡地址连接成功但读不到数据Rack/Slot 填错S7-1500 改 0/1通信时断时续网段冲突改用 192.168.10.x下载时报设备不兼容固件版本不匹配组态里改 CPU 固件为 V2.9 以下仿真无法启动实例未 Start 或授权缺失检查 PLCSIM Advanced 面板这里面固件版本不匹配是个隐藏坑。博图 V18 默认建的 CPU 固件版本可能是最新的但 PLCSIM Advanced V5.0 支持的固件版本有上限。如果下载报错说设备不兼容回设备视图把 CPU 的固件版本调低一档比如从 V3.0 改成 V2.9通常就好了。这个改动不影响功能仿真场景用不上新固件的特性。5.2 许可证与仿真启动类问题博图v18找不到许可证和博图v18仿真无法启动这两个问题经常一起出现因为它们的根源往往是同一个授权盘出了问题。排查顺序是这样的先打开 Automation License Manager看授权树里的模块状态。如果是试用说明授权没传上去如果是无授权说明授权文件根本不存在如果显示正常但仿真还是起不来那可能是授权信息损坏。还有一种情况是端口占用。PLCSIM Advanced 运行时会监听 5111 端口热词里提到的博图v19安装时端口号5111就是这个。如果这台机器上之前装过其他版本的 PLCSIM Advanced旧进程可能还占着 5111 端口没释放。表现是新实例怎么都起不来提示端口被占用。解决办法是任务管理器里结束所有 PLCSIM 相关进程或者重启电脑。提示如果你同时装了 V18 和 V19 两个版本的博图它们的 PLCSIM Advanced 版本不同可能互相干扰。建议一台机器只留一个主版本需要切换版本时用虚拟机更干净。5.3 HMI 仿真按钮无反应的处理思路这个是热词里博图hmi仿真按钮无反应对应的场景也是实际教学里出现频率极高的问题。现象是博图里组态了一个 HMI 界面放了个启动按钮点仿真后界面出来了但按钮按下去没有任何反应PLC 程序也没变化。这个问题有几个层次的原因排查要一层层来。第一层看按钮绑定的变量对不对。HMI 按钮的事件里要绑定一个 PLC 变量比如启动按钮。如果这个变量没绑或者绑成了另一个没在程序里用到的变量按下去当然没反应。这个错误最常见尤其是复制粘贴按钮的时候容易忘改。第二层看 HMI 和 PLC 的连接有没有建立。HMI 项目里要配置一个到 PLC 的连接指定 PLC 的 IP 和机架槽位。如果连接配置里的 IP 跟实际不符或者连接根本没有建立按钮事件就发不出去。第三层看用的是哪种仿真器。这是关键。如果你用普通 PLCSIM 跑 PLC用 WinCC Runtime Advanced 跑 HMI 仿真两者之间可以通信但这套组合下 Factory IO 是连不上的。反过来如果你用 PLCSIM Advanced 跑 PLC那 HMI 仿真和 Factory IO 可以同时连到这台虚拟 PLC 上三方一起跑。所以如果你的需求是HMI 按钮控制场景里的传送带那必须用 PLCSIM Advanced而且 HMI 仿真连接、Factory IO 驱动连接都指向同一个虚拟 PLC 的 IP。这一点搞清楚了问题基本就解决一半。第四层看按钮的组态类型。如果按钮设的是置位型按一下是给变量写 1再按一下还是写 1不会自动回 0。程序里如果写的是瞬时信号触发的逻辑那按钮按下去就没效果。这种情况改成取反型或者瞬时型就好了。我处理过一个案例学员按钮按了没反应查变量、查连接都没问题最后发现是他在 HMI 仿真里点的按钮位置跟实际组态的按钮位置错开了几个像素点偏了。这种低级问题在早期组态时特别常见放大界面再点就好了。5.4 一套可以复用的排查流程折腾多了之后我形成了一套固定流程遇到连不上就按这个顺序走通常十分钟内能定位问题。第一步确认 PLCSIM Advanced 实例在运行状态灯绿色。不在运行的先解决启动问题。第二步在 Windows 命令行里 ping 一下虚拟 PLC 的 IP。能 ping 通说明网络层没问题ping 不通就是虚拟网卡或者 IP 段的问题。第三步检查 PUT/GET 通信权限有没有勾选。这一步只能进博图看别偷懒。第四步检查 Factory IO 驱动的 Rack、Slot、IP 三个参数。第五步把防火墙临时关掉试一次。这五步走完还不行那八成是软件版本不匹配需要回头核对博图和 PLCSIM Advanced 的版本对应关系。我个人的经验是版本问题在所有故障里占比不到一成但一旦碰上就很耗时间所以一开始就该按对应表装。6. 几个提高调试效率的实操心得第一个心得是善用博图的监视表。程序下载后在博图里打开监视表把关键的 I/Q 和中间变量都加进去实时看它们的值。Factory IO 那边按钮按下去这边监视表立即能看到 I0.0 变 TRUE比在代码里打一堆断点效率高得多。我调试复杂逻辑时监视表基本是不离手的。第二个心得是场景文件要另存为模板。Factory IO 搭一个场景不容易调好之后把 .factoryio 文件单独存一份标注好版本和对应的博图项目名。下次做类似项目直接改改地址就能用不用从零搭。第三个心得是程序结构别堆在一个 FC 里。哪怕是小练习也建议按功能分成几个 FC比如手动模式自动模式报警处理每个 FC 里再调 FB 做细节。这样以后扩展场景比如加一条支线直接加个 FC 就行不用动主逻辑。我见过太多学员把所有逻辑写在一个块里改一个小地方要翻几百行非常痛苦。第四个心得是记录每次成功的配置参数。虚拟网卡 IP、实例 IP、驱动 IP、Rack/Slot这些参数每套电脑环境都可能不一样。养成记笔记的习惯换电脑或者重装系统的时候直接照抄省得重新试错。我自己维护了一个表格记录了五套不同硬件环境下跑通的配置组合每次新机器出问题就翻出来对比基本一眼就能看出哪里不对。最后一个心得是别一上来就搞复杂场景。很多新手第一次连接就想复刻整条分拣线二十几个 I/O 点结果一个地方配错所有点都乱。我从教学的角度建议第一次连接就用最简单的场景一条传送带加一个按钮。按钮按下传送带转松开停。把这个最小闭环跑通把通信、地址、下载这套流程走熟再往上叠复杂度。这样每一步出错都容易定位成就感也来得快。等最小场景稳了再逐步加入传感器、推杆、计数、HMI一层层加遇到问题就回到上一步验证整个学习曲线会平缓很多。