西门子 PLC 通讯(二):博图 V16 与 PLCSIM Advanced 仿真
2022 年 6 月 22 日 · 3 分钟读完
目录
研究西门子 1500 和上位机通讯时手上没有真 PLC。博图自带的 PLCSIM 只能和博图自己通讯,外部程序连不上;PLCSIM Advanced 会虚拟出一块网卡,仿真出来的 PLC 有自己的 IP,上位机可以像连真 PLC 一样连它。配置过程中遇到一些坑,记录一下。
官方说明:WinCC V7.4SP1 与 PLCSIM Advanced 仿真的 S7-1500 通信。安装和配置部分参考了 基于 S7-PLCSIM Advanced 搭建 S7 通信仿真环境,并做了补充。
如果只是想快速测通讯,NetToPLCsim 更轻量,用普通 PLCSIM 就行。
一、先看看电脑的 CPU
我遇到的最大的坑:在 AMD 锐龙的笔记本上,重装了几次都无法正常工作,换成 Intel 的电脑就一切正常。

不过后来有读者反馈,Win11 + AMD 7000 系列、Win10 专业版 + Ryzen 5900HS 都能正常仿真 1500。所以这更可能是某些版本组合的问题,我没有做更多测试,也没找到官方说明,仅供参考。
二、安装和环境配置
1. 安装
需要的软件:

- 先装 WinPcap 4.1.3。不先装的话,PLCSIM Advanced 装好后切换通讯模式时没有任何反应:

- 安装 PLCSIM Advanced(我用的是 V3.0,对应博图 V16)。
- 授权:PLCSIM Advanced 需要授权才能启动实例,用 Automation License Manager 导入正版授权,或者用安装包自带的试用授权。授权没装好时,点 Start 会加载超时。

- 装好后系统里会多出一块虚拟网卡 Siemens PLCSIM Virtual Ethernet Adapter:

2. 环境配置
- 让 PLCSIM Advanced 以管理员身份运行:右键程序 → 属性 → 兼容性 → 勾选「以管理员身份运行此程序」。
- 控制面板(小图标显示)→ 设置 PG/PC 接口,确认能看到虚拟网卡对应的接口:

三、博图项目的准备
这几项不设,仿真能跑,但上位机连不上或读不到数据。
- 新建项目时选 S7-1500 的 CPU,PLCSIM Advanced 只支持 1500 系列。
- 允许 PUT/GET:右键 PLC → 属性 → 防护与安全 → 连接机制 → 勾选「允许来自远程对象的 PUT/GET 通信访问」。S7.Net 等第三方库都是靠 PUT/GET 读写的。

- 项目支持仿真:右键项目 → 属性 → 保护 → 勾选「块编译时支持仿真」。

- DB 块取消优化访问:右键 DB 块 → 属性 → 取消「优化的块访问」,原因见 上一篇。

- 设置 PLC 的 IP:双击设备组态 → 双击 PLC 上的网口 → 以太网地址:

四、启动仿真实例并下载
1. 配置虚拟网卡
在 Windows 的网络连接里给 Siemens PLCSIM Virtual Ethernet Adapter 配一个和 PLC 同网段的 IP:

2. 启动 PLC 实例
这是最容易出问题的一步。正常流程:
- Online Access 选
PLCSIM Virtual Eth. Adapter; - TCP/IP communication with 选虚拟网卡对应的网口(这里显示为
<Local>); - 填实例名、IP(和博图里 PLC 的 IP 相同)、子网掩码,点 Start;
- 指示灯变成黄色就是启动成功了(STOP 状态)。

可能遇到的问题:
- 第 1 步切换不了模式:没装 WinPcap,见上文。
- 点 Start 后加载超时:一是授权没装好;二是 AMD 电脑的兼容问题,可以换台 Intel 的电脑试试。
3. 从博图下载
- 博图里点下载,弹出连接窗口;
- PG/PC 接口选虚拟网卡;
- 连接到的插槽选和实例 IP 相同的那个;
- 开始搜索,成功会列出设备,失败就回头检查上面的配置;
- 下载。

下载完成后启动 PLC,PLCSIM Advanced 里的实例指示灯变成绿色(RUN):

4. 上位机测试
写个简单的 C# 程序,用 S7 协议连接实例的 IP,连接成功:

代码见 用 S7.Net 读写 1500。
步骤并不复杂,可 AMD 不兼容的问题让我卡了一天多,记下来给后来人避坑。
延伸
- 版本要对应:PLCSIM Advanced 和博图的版本要匹配,比如博图 V16 配 V3.0,V17 配 V4.0,V18 配 V5.0。版本不匹配时,博图里找不到仿真实例,或者下载报错。
- 局域网里别的电脑访问:TCP/IP communication with 选一块真实网卡(而不是
<Local>),实例的 IP 和这块网卡同网段,别的电脑就能连。同时检查 Windows 防火墙是否放行了 102 端口(S7 协议的端口)。 - 实例会保留:关掉 PLCSIM Advanced 后,同名实例的程序一般还在,下次启动不用重新下载;程序改乱了想重来,删掉实例重建即可。
- 只能仿真 1500 系列:1200 要用普通 PLCSIM 加 NetToPLCsim。
- 更省事的选择:只是测上位机通讯的话,S7 协议的模拟服务器也可以(比如 Snap7 的 Server 示例、HslCommunication 的西门子虚拟服务器),不用装博图。但它们只模拟存储区,不跑 PLC 程序。
原文首发于 blog.csdn.net