1. 项目缘起与整体设计思路搞工控的同行大概都有过这种体验手头没有实体PLC也没有实体触摸屏但项目又需要验证HMI画面逻辑和PLC程序的联动效果。尤其是刚接触西门子TIA博图生态的朋友买了本教材照着书上的步骤做结果卡在“PLCSIM Advanced怎么跟MCGS连上”这一步网上搜到的教程要么语焉不详要么版本对不上折腾半天连不上最后只能放弃仿真这条路。这个项目要解决的核心问题就一个在没有实体PLC硬件的情况下让MCGS触摸屏通过仿真方式与PLCSIM Advanced中运行的虚拟PLC建立通信完成画面组态与逻辑联调。说白了就是用纯软件的方式把“触摸屏PLC”这套硬件组合在电脑里跑起来。为什么选MCGS而不是WinCC原因很实际。MCGS在国内中小型工控项目里装机量极大很多设备配套的触摸屏就是昆仑通态的TPC系列而MCGS组态软件的学习曲线比WinCC平缓得多对于刚入门的工程师或者职业院校的学生来说用MCGS做上位画面是更现实的选择。但MCGS原生并不直接支持PLCSIM Advanced的仿真通信这就需要一个“桥接”的思路。整体方案的设计逻辑是这样的PLCSIM Advanced在电脑里虚拟出一张网卡虚拟PLC就挂在这张网卡上拥有独立的IP地址。MCGS本身支持以太网通信只要让MCGS的通信目标指向这张虚拟网卡的IP理论上就能建立S7通信。但实际操作中会遇到几个坎PLCSIM Advanced的虚拟网卡配置、TIA博图中PLC的通信使能设置、MCGS中S7驱动参数的匹配。这三个环节任何一个出问题通信都建不起来。我试过用NetToPLCSim做中转也试过直接走S7 TCP协议最终验证下来最稳定的方案是PLCSIM Advanced配合TIA博图的S7-1200/1500虚拟PLCMCGS侧使用“西门子S7-1200/1500”驱动通过TCP/IP直连虚拟网卡IP。这个方案的好处是不需要额外安装第三方中转软件通信链路短延迟低适合做画面逻辑验证和中小型项目的仿真调试。适合谁来参考这篇内容如果你是以下三类人之一这篇东西应该能帮你省下不少时间第一工控入门者正在学TIA博图和MCGS手头没有硬件第二职业院校教师或学生需要做PLC与触摸屏联调的实训项目第三在职工程师想快速验证HMI画面逻辑而不想反复下载到实体设备。需要说明的是整个流程涉及TIA博图V15及以上版本、PLCSIM Advanced V3.0及以上版本、MCGS嵌入版7.7及以上版本版本差异会导致菜单位置和参数名称略有不同我会在关键步骤标注版本注意事项。2. 环境准备与软件版本选型2.1 软件清单与版本匹配原则工控软件最让人头疼的就是版本兼容性。TIA博图、PLCSIM Advanced、MCGS这三者之间的版本搭配直接决定了你能不能走通整个流程。我踩过的坑是用TIA V16配PLCSIM Advanced V2.0结果PLCSIM Advanced根本识别不到TIA里的虚拟PLC实例后来查资料才知道V2.0不支持S7-1500的仿真通信必须上V3.0。下面这张表是我实测通过的版本组合供你参考软件名称推荐版本最低版本要求备注TIA博图V16或V17V15 SP1需包含STEP7 Professional和WinCC BasicPLCSIM AdvancedV3.0或V4.0V3.0V2.0不支持S7-1500通信仿真MCGS嵌入版7.7.1.77.7.0.0需安装S7-1200/1500驱动操作系统Win10 64位专业版Win10 64位家庭版可能缺少虚拟网卡组件注意PLCSIM Advanced和TIA博图必须安装在同一台电脑上且安装顺序建议先装TIA博图再装PLCSIM Advanced。如果顺序反了PLCSIM Advanced的虚拟网卡驱动可能注册不成功。2.2 PLCSIM Advanced虚拟网卡的配置要点PLCSIM Advanced安装完成后会在系统中虚拟出一张网卡名字通常叫“Siemens PLCSIM Virtual Ethernet Adapter”。这张网卡是虚拟PLC与外部通信的唯一通道MCGS要连的就是这张网卡的IP。打开“控制面板→网络和共享中心→更改适配器设置”找到这张虚拟网卡右键属性双击“Internet协议版本4”给它设一个静态IP。我一般习惯用192.168.0.1子网掩码255.255.255.0。这个IP就是你后面在MCGS里要填的目标IP。这里有个细节很多人会忽略虚拟网卡的IP不能和你电脑上其他物理网卡在同一网段。比如你电脑的WiFi网段是192.168.1.x那虚拟网卡就用192.168.0.x避免路由冲突。我遇到过因为网段冲突导致MCGS能ping通虚拟网卡但连不上PLC的情况排查了半天才发现是路由表的问题。2.3 TIA博图项目的创建与PLC组态打开TIA博图新建项目添加一个S7-1200或S7-1500的CPU。以S7-1200 CPU 1214C DC/DC/DC为例在设备视图里双击CPU的以太网口设置IP地址为192.168.0.10子网掩码255.255.255.0。这个IP要和虚拟网卡在同一网段但不能和虚拟网卡IP重复。关键一步在CPU属性的“保护”选项卡里勾选“允许从远程伙伴使用PUT/GET通信访问”。这个选项默认是不勾的如果不勾MCGS的S7驱动发过来的读写请求会被PLC拒绝表现就是MCGS画面上所有数据都是0或者显示“通信失败”。然后在“系统和时钟存储器”选项卡里勾选“启用系统存储器字节”和“启用时钟存储器字节”记下系统存储器字节的地址通常是MB0后面在MCGS里会用到。这个字节里的M0.0是“首次扫描”位M0.1是“始终为1”位可以用来做通信状态的指示。组态完成后编译项目确认没有错误。然后点击“开始仿真”按钮TIA博图会自动调用PLCSIM Advanced把虚拟PLC下载到仿真环境中运行。这时候PLCSIM Advanced的界面里应该能看到一个绿色的“RUN”状态说明虚拟PLC已经跑起来了。3. MCGS侧的核心配置与通信建立3.1 MCGS工程创建与设备驱动添加打开MCGS嵌入版组态软件新建一个工程选择你实际使用的触摸屏型号。如果你只是做仿真验证随便选一个TPC7062Ti之类的型号就行仿真运行不依赖具体硬件。进入“设备窗口”双击“设备工具箱”在“通用设备”里找到“西门子S7-1200/1500”驱动双击添加到设备窗口中。如果找不到这个驱动说明你的MCGS版本太老需要升级到7.7以上或者单独安装西门子S7驱动包。添加驱动后双击设备图标进入属性设置。这里有几个关键参数设备名称随便起比如“PLC1”通信方式选“TCP/IP”目标IP地址填192.168.0.10就是TIA里PLC的IP目标端口默认102不要改本地端口默认0表示自动分配机架号S7-1200填0S7-1500也填0槽号S7-1200填1S7-1500填1提示机架号和槽号填错是通信失败最常见的原因之一。S7-1200的CPU在博图里默认是机架0槽1如果你在博图里改过硬件组态以博图里的实际值为准。3.2 数据变量的映射与地址对应MCGS里的数据变量需要和PLC里的变量地址一一对应。在设备属性设置的“通道连接”选项卡里可以添加通道。比如你要读取PLC的MB0字节就在通道里添加一个“M”区地址填0数据类型选“字节”对应MCGS里的一个数值型变量。这里有个容易搞混的地方MCGS的地址格式和博图的地址格式不完全一样。博图里写%M0.0在MCGS里要写成M0.0或者M0取决于驱动版本。我建议在MCGS里用“M”区地址从0开始数据类型根据实际需要选“位”、“字节”、“字”或“双字”。如果你要读写DB块的数据比如DB1.DBD0在MCGS里选“DB”区地址填1.0数据类型选“双字”。注意DB块的编号和偏移量之间用点号分隔不是逗号。我见过有人写成DB1,0结果死活读不到数据。3.3 通信测试与状态诊断配置完成后不要急着做画面先做通信测试。在MCGS的“运行策略”里添加一个“启动策略”在里面放一个“设备操作”构件选择“通信测试”。运行工程后如果通信正常会弹出“通信成功”的提示。如果通信失败按以下顺序排查在电脑上ping一下192.168.0.10看能不能通。如果ping不通说明虚拟网卡或PLCSIM Advanced的配置有问题。检查TIA博图里PLC的“允许PUT/GET通信访问”是否勾选。检查MCGS里的IP地址、机架号、槽号是否和TIA里一致。检查Windows防火墙是否拦截了MCGS的通信端口。可以临时关闭防火墙测试。我实测下来90%的通信失败都是前两条原因导致的。尤其是PUT/GET那个选项很多人不知道要勾结果卡在这一步。4. 画面组态与联调实操全流程4.1 基础画面搭建与变量绑定通信通了之后就可以做画面了。MCGS的画面组态很直观左边是工具箱右边是工作区。拖一个“标准按钮”到画面上双击进入属性在“操作属性”里选“按下功能”然后选“数据对象值操作”把按钮和一个变量绑定。比如你建了一个“启动按钮”变量类型选“开关型”那么在按钮的按下功能里选“置1”松开功能里选“置0”。再拖一个“指示灯”到画面上双击属性在“数据对象”里选一个“开关型”变量比如“运行状态”。然后在“填充颜色”里设置值为0时显示灰色值为1时显示绿色。这样当PLC里的对应位为1时指示灯就会变绿。这里有个小技巧MCGS的变量刷新周期默认是200ms如果你觉得画面响应慢可以在设备属性里把“采集周期”改成100ms甚至50ms。但改太小会增加通信负载一般100ms足够用了。4.2 PLC程序与HMI的联动逻辑设计在TIA博图里写一段简单的测试程序用一个按钮控制一个电机的启停。比如I0.0是启动按钮I0.1是停止按钮Q0.0是电机输出。程序用起保停逻辑// 起保停逻辑 A I0.0 O Q0.0 AN I0.1 Q0.0然后在MCGS里把“启动按钮”变量映射到I0.0“停止按钮”变量映射到I0.1“运行状态”变量映射到Q0.0。运行MCGS工程点击启动按钮PLCSIM Advanced里的Q0.0应该变为1MCGS画面上的指示灯变绿。点击停止按钮Q0.0变为0指示灯变灰。这个测试虽然简单但涵盖了“HMI输入→PLC逻辑→HMI输出”的完整链路。如果这一步能跑通说明整个仿真通信链路是通的后面做复杂的画面和逻辑就只是工作量问题了。4.3 仿真运行中的实时监控与调试PLCSIM Advanced的一个好处是可以在TIA博图里实时监控PLC程序的运行状态。在博图里打开程序块点击“监控”按钮可以看到所有变量的实时值。如果MCGS画面上某个按钮按下去没反应可以在博图里看对应的输入位有没有变化。如果博图里变了但MCGS画面上没反应那就是MCGS的变量映射或刷新周期有问题。我常用的调试方法是在PLC程序里加一个计数器每次MCGS写入一个变量就加1。然后在博图里监控这个计数器的值如果按一次按钮计数器加1说明通信是通的问题出在画面显示上如果计数器不动说明通信根本没建立。注意PLCSIM Advanced的仿真PLC在运行过程中如果你修改了TIA博图的程序并重新下载MCGS的通信会短暂中断需要等PLC重新进入RUN状态后才能恢复。建议在调试阶段不要频繁下载先把逻辑改好再统一下载。5. 常见问题排查与避坑经验实录5.1 通信类问题速查表现象可能原因排查方法解决方案MCGS提示“通信失败”虚拟网卡IP未设置在电脑上ping PLC的IP给虚拟网卡设静态IPping通但连不上PLCPUT/GET未勾选检查TIA里CPU的保护设置勾选“允许PUT/GET通信访问”部分变量读不到地址格式错误对比博图和MCGS的地址统一用M区或DB区注意点号分隔通信时断时续网段冲突检查电脑路由表虚拟网卡用独立网段画面数据不刷新采集周期太长检查设备属性的采集周期改为100ms5.2 我踩过的三个典型坑第一个坑PLCSIM Advanced的实例名和TIA项目名不一致。PLCSIM Advanced启动时会创建一个虚拟PLC实例实例名默认和TIA项目名相同。如果你在TIA里改了项目名但PLCSIM Advanced里还是旧实例就会导致通信目标错乱。解决方法是在PLCSIM Advanced界面里手动删除旧实例重新从TIA启动仿真。第二个坑MCGS的驱动版本和PLC固件版本不匹配。我用TIA V17组态的S7-1200固件版本是V4.5但MCGS的S7驱动只支持到V4.2结果通信建立后读写数据全是0。后来换了MCGS 7.7.1.7版本驱动更新到支持V4.5问题解决。所以MCGS的版本一定要跟上PLC固件的版本不能差太多。第三个坑Windows防火墙拦截了PLCSIM Advanced的通信。这个坑最隐蔽因为ping是通的但TCP 102端口被防火墙挡了。表现是MCGS提示“连接超时”但ping虚拟网卡IP正常。解决方法是在防火墙里给PLCSIM Advanced和MCGS都加白名单或者临时关闭防火墙测试。5.3 提升仿真稳定性的几个实操技巧第一给虚拟网卡设一个固定的MAC地址。PLCSIM Advanced每次启动时虚拟网卡的MAC地址可能会变导致MCGS的ARP缓存失效。在虚拟网卡的属性里手动设一个MAC地址可以避免这个问题。第二MCGS工程运行时不要同时开太多其他网络软件。我试过一边跑仿真一边开视频会议结果MCGS的通信延迟从10ms飙升到500ms画面卡顿严重。仿真对网络实时性有一定要求建议在干净的网环境下调试。第三定期保存MCGS工程和TIA项目。仿真过程中如果PLCSIM Advanced崩溃未保存的TIA项目可能会丢失。我养成的习惯是每改完一个画面或一段程序就CtrlS避免重复劳动。第四用系统存储器位做通信心跳。在PLC里把M0.1始终为1位映射到MCGS的一个变量如果这个变量在MCGS画面上显示为1说明通信正常如果变成0或闪烁说明通信有问题。这个方法比看通信测试弹窗更直观。6. 仿真方案的扩展应用与个人体会这套仿真方案跑通之后能做的事情其实很多。比如你可以用它来验证复杂的HMI画面逻辑像报警记录、趋势曲线、配方管理这些功能在仿真环境下都能完整测试。我最近做的一个项目是煤矿排水系统的控制逻辑用MCGS做了三台水泵的轮换控制画面在PLCSIM Advanced里跑了完整的逻辑测试包括液位模拟、故障切换、手动自动切换全部验证通过后才下载到现场设备省去了大量现场调试时间。另一个扩展方向是多屏仿真。如果你需要验证多个触摸屏之间的数据交互可以在MCGS里建多个工程分别连接同一个PLCSIM Advanced实例的不同DB块模拟多屏协同的场景。这个在产线控制项目里很实用。我个人在实际操作中的体会是仿真终究是仿真它不能完全替代实体硬件的调试。比如通信的实时性、触摸屏的触摸响应、断电恢复后的数据保持这些在仿真环境里和实际设备上还是有差异的。但作为逻辑验证和画面预调试的手段这套方案能帮你把80%的问题在电脑上解决掉剩下的20%再到现场去调效率提升非常明显。最后分享一个小技巧如果你觉得每次启动TIA和PLCSIM Advanced太麻烦可以把它们做成一个批处理脚本一键启动。TIA博图支持命令行启动仿真PLCSIM Advanced也有API可以调用。我写了一个简单的bat脚本双击后自动打开TIA项目并启动仿真省去了手动点击的步骤。这个脚本的写法网上有现成的模板稍微改一下路径就能用。