← 全部文章 工业通讯

西门子 PLC 通讯(二):博图 V16 与 PLCSIM Advanced 仿真

2022 年 6 月 22 日 · 3 分钟读完

目录
  1. 一、先看看电脑的 CPU
  2. 二、安装和环境配置
  3. 1. 安装
  4. 2. 环境配置
  5. 三、博图项目的准备
  6. 四、启动仿真实例并下载
  7. 1. 配置虚拟网卡
  8. 2. 启动 PLC 实例
  9. 3. 从博图下载
  10. 4. 上位机测试
  11. 延伸

研究西门子 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. 安装

需要的软件:

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

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

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

2. 环境配置

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

三、博图项目的准备

这几项不设,仿真能跑,但上位机连不上或读不到数据。

  1. 新建项目时选 S7-1500 的 CPU,PLCSIM Advanced 只支持 1500 系列。
  2. 允许 PUT/GET:右键 PLC → 属性 → 防护与安全 → 连接机制 → 勾选「允许来自远程对象的 PUT/GET 通信访问」。S7.Net 等第三方库都是靠 PUT/GET 读写的。

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

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

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

四、启动仿真实例并下载

1. 配置虚拟网卡

在 Windows 的网络连接里给 Siemens PLCSIM Virtual Ethernet Adapter 配一个和 PLC 同网段的 IP:

2. 启动 PLC 实例

这是最容易出问题的一步。正常流程:

  1. Online Access 选 PLCSIM Virtual Eth. Adapter;
  2. TCP/IP communication with 选虚拟网卡对应的网口(这里显示为 <Local>);
  3. 填实例名、IP(和博图里 PLC 的 IP 相同)、子网掩码,点 Start;
  4. 指示灯变成黄色就是启动成功了(STOP 状态)。

可能遇到的问题:

  • 第 1 步切换不了模式:没装 WinPcap,见上文。
  • 点 Start 后加载超时:一是授权没装好;二是 AMD 电脑的兼容问题,可以换台 Intel 的电脑试试。

3. 从博图下载

  1. 博图里点下载,弹出连接窗口;
  2. PG/PC 接口选虚拟网卡;
  3. 连接到的插槽选和实例 IP 相同的那个;
  4. 开始搜索,成功会列出设备,失败就回头检查上面的配置;
  5. 下载。

下载完成后启动 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 程序。

# 西门子 # PLC # 仿真

原文首发于 blog.csdn.net