
1. 为什么我劝你先用仿真跑通逻辑再碰真机干这行时间长了你就知道PLC项目最尴尬的场景不是程序写不出来而是程序写完了设备还没到场或者现场调试窗口只有两三天根本不够你慢慢捋逻辑。这个时候博途仿真PLCSIM就是救命的东西。我见过不少同行尤其是刚接触博途的人装了TIA Portal之后根本不知道那个绿色的开始仿真按钮是干什么用的一直以为必须有实物PLC才能调试程序。其实西门子的软件生态早就把这一步做成了标准能力——只要装好博途和对应的PLCSIM组件你的电脑就是一台虚拟的S7-1200或者S7-1500CPU能运行、程序能下载、变量能监控、甚至HMI画面都能跟着一起仿真。但也别把仿真想得太神。仿真的本质是把你的程序逻辑放到一个虚拟CPU里跑CPU的存储区、定时器、计数器、位运算这些内部资源是真实存在的模拟出来的结果和你将来下载到实物PLC上几乎一致。可是有一点必须摆清楚仿真替代不了真实I/O。那台真实电机到底转不转、传感器信号是常开还是常闭、接线端子是不是压得牢靠这些仿真一概管不了。所以我的建议一向很明确——逻辑层面的验证、工艺流程的预演、甚至操作员培训前的演示全部用仿真搞定到了现场你的精力只需要集中在接线、硬件组态和外围设备联调上程序基本不用动。这篇文章要解决的就是一件事从零开始把博途仿真跑起来并且把我在实际使用中踩过的那些坑一并讲清楚。适合谁看刚接触博途的电气工程师、自动化专业的学生、做设备集成项目但还没到手真机的工程师都适用。全程按我自己的操作习惯来你打开电脑跟着点就行但更重要的是理解我为什么要这么点。2. 环境准备博途、PLCSIM和中间件版本怎么搭才不吵架2.1 版本匹配是第一个大坑很多人仿真跑不起来根本不是操作有问题而是软件版本搭配不合理。博途的TIA Portal从V13一路出到V20每个大版本必须搭配相同大版本的S7-PLCSIM跨版本基本没戏。比如你装的是TIA V16那PLCSIM也必须是V16你装的V18PLCSIM用V16的就算能装上仿真时也大概率提示找不到可仿真的设备。除了PLCSIM还有一个容易忽略的S7-PLCSIM Advanced。我个人的经验是调试S7-1200和S7-1500的一般逻辑用标准的S7-PLCSIM就够了而PLCSIM Advanced是用来做更高级的通讯仿真、以及配合外部软件比如Factory IO、OPC UA客户端做联合仿真的它对系统资源消耗更大安装也更挑剔不建议一上来就用。标准版和Advanced版的区别是很多初学者最先懵的点一句话记住标准版相当于一台虚拟PLCAdvanced版相当于一台带扩展网卡、可以对外通信的虚拟PLC。2.2 安装中的经典报错搜索博途v18安装教程的人相当多我猜大多数是在安装环节卡住了。最典型的报错就是博途安装完毕后提示一些已安装产品需要许可证请启动Automation License Manager。这个不用慌先把所有西门子软件关掉从Windows开始菜单找到Automation License Manager打开后看一下左侧的许可证文件有没有正常识别。正常情况下博途主程序和PLCSIM的许可证文件会在安装时自动拷贝到本地如果没有手动指定许可证文件的路径指向安装包里的License文件夹一般都能解决。还有一个非常隐蔽的问题装完博途之后Windows防火墙弹窗问你要不要允许通信很多人随手点了取消。这个操作对正常编程没影响但当你点开始仿真、博途要跟PLCSIM建立内部通信的时候可能就会莫名其妙地连不上。我第一次遇到这种情况还以为是自己破解不完全来回重装了两遍最后发现就是防火墙把内部端口封了。所以安装完第一次打开博途如果蹦出防火墙提示务必勾选允许或者事后去控制面板里把TIA Portal相关的几个程序全部加到入站规则里省得后面排查半天。2.3 硬件资源别省博途仿真对电脑的配置要求比普通编程高不少尤其是打开仿真之后CPU占用率会明显上升。我自己的主力机器是i7-12700H配32GB内存跑一个S7-1500加一个HMI画面仿真还算流畅。如果你的电脑只有8GB内存建议关掉所有浏览器再开仿真否则下载程序进虚拟PLC的时候可能卡到怀疑人生甚至直接把整个项目崩掉。这个建议很土但是非常实用。软件版本这块还有一个很小的细节如果你同时装了多个版本的博途比如V16和V17共存务必注意PLCSIM的版本也要对应安装两套。博途启动时会自动加载当前项目版本对应的PLCSIM但有时候注册表会串导致明明选的是V16项目却去调V17的PLCSIM报一堆奇怪的错误。遇到这种问题别重装系统先把所有西门子软件退出重新启动对应版本的License Manager再打开项目通常能恢复正常。3. 完整仿真流程从建项目到监控变量别看漏这几步3.1 新建项目和选CPU时的隐性限制打开博途新建项目在添加设备这一步就要留个心眼。不是所有S7-1200 CPU都支持仿真很老的固件版本比如2.2之前的仿真支持度很差建议直接选择固件V4.0及以上的CPU。我自己做练习或预调试时最常用的型号是CPU 1214C DC/DC/DC和CPU 1511-1 PN这两个型号在PLCSIM里的运行表现比较稳定仿真出来的行为跟实物几乎没有区别。选型号的时候同时注意订货号同一个1214C也有不同版本如果你照着现场设备的订货号选仿真的时候却提示设备不支持那就换一个同类型但固件版本更新的程序逻辑完全不影响。3.2 写一个能被仿真的最小程序为了演示完整流程我建议第一次跑仿真的新手别一上来就写几百行SCL先写一个简单的电机启停控制一个启动按钮I0.0、一个停止按钮I0.1、一个接触器输出Q0.0再加上互锁和自锁。这段逻辑放在OB1里用梯形图写完编译通过就行。这里有个细节OB1的属性里有一个循环周期的选项默认是150ms仿真情况下建议保持默认不要去改。有些人为了让仿真跑得更快把周期改成10ms甚至1ms结果定时器逻辑全部乱套因为虚拟CPU的调度精度毕竟不如真实硬件。程序逻辑调试阶段越接近默认配置仿真结果才越有参考价值。3.3 点击开始仿真到下载程序的全过程程序写好后在项目树里选中PLC设备节点然后点工具条上的开始仿真按钮一个绿色的类似播放的图标。第一次点它博途会弹出一个确认窗口问你要不要以仿真模式启动确认后PLCSIM的独立窗口就会弹出来里面有一个虚拟的CPU面板上面有RUN、STOP按钮和运行指示灯。等PLCSIM的窗口变成可操作状态之后回到博途的下载界面。这里要特别看清楚下载对话框里目标那一栏默认可能是你的设备名你要手动选中S7-1200/S7-1500仿真模块而不是那个真实的设备条目。选错了的话下载会一直停留在建立连接的状态最后超时。下载之前博途还会让你确认是否要初始化所有模块这个选项第一次仿真时全选是没问题但如果你需要保留之前的装载存储区数据可以只选硬件配置和软件不要勾复位PLC。不过新手阶段没关系全部勾上反而干净。下载完成之后把PLCSIM里的CPU运行状态切换到RUN虚拟PLC就开始跑你的程序了。3.4 监控变量、强制变量和仿真表的使用程序下载进去之后回到OB1的编辑器界面点上面那个眼镜图标启用监控功能。你会发现程序里的梯形图线条变成彩色触点闭合的时候颜色会变线圈得电也有状态显示整个过程和连接真实PLC一模一样。要改变输入变量的状态有两条路。一条是直接在变量监控表里强制打开监控与强制变量表在I0.0那一行右键选择强制为1I0.0就相当于被外部通了电程序里的常开触点立即闭合Q0.0跟着得电。注意强制变量之后PLCSIM窗口里CPU的面板会显示一个FORCE指示灯这说明当前有强制值在生效记得调试完把强制全部删除不然下次开机还会带着强制去运行。另一条路是用仿真表SIM Table。从PLCSIM的菜单中选择仿真表打开一个类似变量表的界面你可以直接往I区里写数值。这个做模拟量输入测试特别方便比如模拟温度传感器的工程量往IW64写入一个0~27648之间的数程序里的量程转换逻辑立即跟着动。我用仿真实战的经验是仿真表适合模拟连续量强制变量适合模拟开关量两者配合使用效率最高。新手最容易犯的错是在变量监控表里双击I点直接改数值改完之后发现程序没有反应——因为监控表只能监控不能改输入你得用强制或仿真表才行。3.5 保存和复用仿真状态跑了一段时间的仿真你可能会调试出一组比较满意的中间状态比如所有模拟量都处于正常范围、设备运行在自动模式。这个状态是可以保存的。在PLCSIM窗口里选择保存会生成一个仿真快照文件。下次重新打开博途和PLCSIM用加载把这个快照读回来CPU的存储区状态、变量当前值都能恢复到保存时的那一瞬间。这个功能在做一个大型工程项目的演示时非常有用不用每次从头触发一堆条件才能进入演示状态。4. HMI仿真联调WinCC Runtime和面板按钮没反应的问题排查4.1 添加HMI设备与建立连接程序逻辑在虚拟PLC里跑通了下一步通常是HMI的仿真实战。很多人搜博图HMI仿真按钮无反应大概率是卡在这一步没搞明白。在同一个项目里你需要在PLC设备旁边添加一个HMI设备比如KTP700 Basic PN。添加之后HMI会自动生成一个PROFINET连接但如果你的项目里已经有PLC且HMI是在PLC之后添加的博途一般会自动把连接指向那个PLC前提是设备的子网一致。关键动作在HMI设备的连接设置里。右键打开HMI的设备配置找到连接表格确认连接对象选的是你的PLC并且连接类型是PROFINET。如果这里显示未连接点那个方向的箭头手动指定到PLC的以太网接口上编译HMI画面今天就先到这里。4.2 启动HMI仿真和PLCSIM的顺序HMI仿真必须和PLC仿真同时运行才有意义但启动顺序有个讲究。我的习惯是先把PLCSIM启动起来、程序下载完成、CPU切到RUN状态然后再回到HMI画面的编辑器界面点击开始仿真按钮。这样HMI仿真一启动就能顺利连上虚拟PLC画面上绑定的变量会有实时数值反馈。如果你反着来先启动HMI仿真再启动PLCSIMHMI画面起来之后会一直处于连接中断的状态按钮点了毫无反应。这时候虽然在HMI画面上按启动按钮按钮也会有按下的动画效果但变量不会变化程序自然也不会动。很多人遇到这个问题就认为是博途的BUG其实只是启动顺序反了。4.3 按钮没反应的三种真实原因除了启动顺序HMI仿真按钮没反应通常还有三种诱因。第一种是画面上的按钮根本没关联到变量——编辑按钮时属性里事件标签页设置了按下时置位某变量但变量的地址写错了或者没关联到PLC变量表里点起来当然没反应。第二种是HMI里建立的物理连接跟实际子网对不上特别是你修改过PLC的IP地址之后HMI那边的连接还是旧的。第三种是仿真时HMI提示找不到了——因为PLCSIM的窗口被最小化或关闭HMI仿真一直等不到PLC的响应表现也是按钮没反应。排查方法很简单打开HMI的在线诊断视图看连接状态是否绿色。如果不是绿色优先检查PLCSIM的CPU是不是在RUN状态确认在RUN之后再看HMI连接的目标IP和PLCSIM中设置的IP是否一致。仿真的IP并不影响你实际的网络规划但是建立在两台虚拟设备之间的通信地址也要保持一致这是很多人忽略的。4.4 触摸面板和WinCC Runtime的区别博途里的HMI画面仿真有两种出口一种是针对KTP、TP系列面板的Basic仿真另一种是WinCC Runtime Advanced的仿真。前者用在入门级面板界面和运行逻辑跟实物面板高度一致后者用于IPC或PC环境能模拟更多的系统功能和脚本运行。做联调之前先确认你的项目里HMI是哪种类型。如果你用的是WinCC RT Advanced在仿真的时候有个优势——可以直接在本机运行WinCC Runtime不用等模拟面板加载启动速度快很多而且中文输入法不会出问题。Basic面板的仿真在部分系统上会出现中文输入法无法切换的毛病这是一个已知但官方没彻底修干净的小问题别在上面浪费时间。5. 仿真跑不通先按这套链路查一遍5.1 检查清单和具体报错对照博途仿真报错报的种类其实就那么几类但每次都能把人搞得头大。我整理了一张最常遇到的排查对照表都是自己踩过的分辨率比官方文档高报错或现象根本原因解决方式点击开始仿真是灰色的选中的设备不支持PLCSIM或PLCSIM未安装检查CPU固件版本去控制面板确认S7-PLCSIM已装下载时报无法建立连接下载目标选错或PLCSIM未打开目标改为S7-1200/S7-1500仿真模块程序下载后CPU停在STOP程序编译有严重错误或OB块启动条件不满足看PLCSIM面板的诊断缓冲区逐一排查SMC和编程错误仿真运行时间一长就卡死电脑内存不足或程序里有死循环减小仿真运行负载检查SCL里有无WHILE死循环HMI按钮点了无反应启动顺序错、连接断开、变量关联失败按上文4.3节逐项排查其中程序下载后CPU停在STOP这个最隐蔽。明明编译的时候没有报错下载也提示成功但CPU就是停在STOP状态点RUN很快又跳回STOP。这种多半不是程序逻辑的问题而是硬件组态里有些模块在仿真环境里没有对应的虚拟设备CPU在启动自检时发现找不到模块就跑系统错误把CPU拽回STOP了。解决办法是打开设备视图检查所有站的模块是否齐全。如果你组态了一个信号板SB1232但PLCSIM可能并不完全模拟它先移除再下载一般都能解决。5.2 仿真的恢复出厂设置大法排查到最后要是真的找不到原因别急着卸载重装。PLCSIM窗口里有一个MRES按钮相当于真实PLC上那个带小方框的复位按钮。点击它虚拟CPU会执行一次完全复位把已下载的程序全部清空恢复出厂状态。复位完成之后再从博途里重新下载程序很多诡异的问题就这么简单粗暴地解决了。但注意MRES之后你的下载程序、变量值、数据块内容全都没了所以复位前先把项目保存好比如用归档功能备份一个项目副本。这个习惯对真实PLC现场调试同样适用毕竟把设备恢复出厂了重新下载如果程序没保存好就真的欲哭无泪了。5.3 仿真环境下的网络通信不通还有一个常见问题是仿真环境下PROFINET通信连不上。真实PLC之间通过交换机通信很正常仿真环境下想测试两台PLC之间的数据交换最常用的方式是PLCSIM Advanced配合多个实例但标准版PLCSIM同时只能模拟一个PLC设备多PLC仿真需要靠一台PLCSIM Advanced来做。如果你只有标准版PLCSIM又想测网络通信有一个委曲求全的办法把两台PLC的逻辑合并到一个项目里用共享数据块模拟通信数据或者直接用博途的Open User Communication块模拟TCP/UDP报文在仿真里这些块是可以自己跟自己收发数据的。虽然这种做法不完全等价于两台真实PLC通信但至少能把报文状态机调通。6. 仿真还能这么玩SCL调试、Factory IO联动和G120组态验证6.1 在仿真里给SCL程序下断点博途的SCL编程器自带调试功能但在没有实物的前提下很多人不知道PLCSIM也支持断点调试。当你的SCL程序在仿真里运行起来之后在某一行的行号左边右键选择设置断点然后在另一处让变量变化的事件比如仿真表里强制一个条件程序跑到断点处就停住并会在变量观察窗口里显示出当前所有变量的实时值。你可以单步执行每一行看每一条语句执行完之后的数值变化这在排查复杂算法时极其高效。不过有个限制博途的断点调试对S7-1200的支持不如S7-1500完整部分优化访问块或FB内部变量可能无法在断点处查看。这时候你就得在几个关键中间变量上先做数据记录或者干脆把那一段逻辑临时挪到OB1里调试调试完再放回去。这个土办法很多人不知道但极其好用。6.2 和Factory IO联动做产线仿真很多人都搜过Factory IO 西门子博途工程模板想着把博途仿真的PLC和Factory IO的三维仿真场景结合起来在电脑上做一条虚拟产线。这个方向是对的但一定要用PLCSIM Advanced标准版根本提供不了对外通信的TCP端口。PLCSIM Advanced可以从博途里添加一个虚拟的S7-1500 PLC然后通过S7通信协议让你的程序跟Factory IO交换数据。Factory IO里的传感器信号发送到对应的DB块地址博途程序算出的输出又写回DB块去控制气缸动作逻辑闭环完全打通。不过必须说清楚PLCSIM Advanced的安装比标准版麻烦不少而且对Windows版本、杀毒软件非常敏感。我第一次装的时候死活连不上虚拟设备最后发现是Windows防火墙拦截了内部回环通信。如果你也遇到这个情况打开防火墙设置把PLCSIM Advanced相关的进程全部加入允许列表大概率就能解决。6.3 用GSD文件组态G120变频器后仿真能验证什么搜索记录里还有一条博途用GSD组态G120变频器分配设备名称视频这其实连着另一个问题组态完G120之后仿真到底能不能验证通信答案是可以验证一部分但要理解边界。你用GSD文件把G120作为PROFINET IO设备加入博途项目控制字和状态字做成通信数据块然后用PLCSIM让CPU与虚拟的G120进行周期性报文交换——仿真PLC的CPU可以周期地在网络端口上发出报文但G120本身并没有一个虚拟仿真器来回应你所以接收区可能一直是0。你可以验证发送逻辑的正确性但没法看到真实的变频器反馈波形。退一步说即便仿真只能验证单向控制字这件事仍然有意义。很多运动控制逻辑的起始条件是先看变频器是否准备好你再给使能运行。即便反馈没值你也可以在仿真表里手动把准备就绪信号注入到程序里把整个控制状态机的流程跑通。等到了现场变频器的真实反馈自动把你这个临时注入的信号替换掉程序照样能顺滑运行。这种以仿真表补缺失信号的做法是我自己处理仿真和实物差异时最重要的技巧。6.4 SCL和梯形图仿真时怎么选择编程语言的选择仿真里也有讲究。SCL和梯形图在仿真条件下的执行结果没有本质区别但调试体验差异很大。梯形图可视化程度高输入输出看得清楚SCL方便做复杂计算和数组处理能下断点单步调试。我的建议是逻辑控制部分用梯形图方便维护算法和数据处理部分用SCL方便调试。这两个配合着写仿真的价值能最大化。有人会纠结优化访问和标准访问的问题。博途里数据块的默认属性是优化的块访问这种模式下FB的接口变量无法在仿真表里直接写入。如果你用仿真表强制一个DB变量的值总是失败多半就是这个原因。把DB块的属性改成标准访问再编译下载强制就没障碍了。这个细节在实物调试中同样存在提前在仿真阶段摸透能省不少去现场后的时间。从我自己的使用感受说仿真这个功能一旦用熟了你会自然地调整自己的开发习惯先写一小段就仿真一次逻辑复杂度高就先在仿真里把边界情况测透再去现场。这样的节奏下来我最近几个项目的现场调试时间明显缩短了很多每次打开仿真环境的时候也觉得心里很踏实。建议你把上面提到的各种坑过一遍安装的时候注意版本匹配启动的时候注意顺序遇到问题先看诊断缓冲区你的仿真体验应该会顺畅不少。