3. 虚拟PLC硬件组态与程序下载

在上一节完成 PLCSIM Advanced 的安装与虚拟实例概念梳理之后,本节要把“虚拟 PLC”真正变成一个可下载、可运行、可被 HMI 访问的目标设备。核心工作全部在 TIA Portal 中完成:新建项目、添加 CPU 设备、组态 PROFINET 接口与 IP 参数、设置子网、指定下载路径,最后把一段简单逻辑程序下载到 PLCSIM Advanced 实例并验证运行。整个过程的关键在于:TIA Portal 里的“设备组态”必须与 PLCSIM Advanced 实例的网络参数严格一致,否则下载会失败或 HMI 无法连接。

一、创建项目与添加虚拟 CPU

打开 TIA Portal,选择“创建新项目”,项目名称建议使用能体现用途的命名,例如 VirtPLC_HMI_Demo,路径避免中文和空格。进入项目视图后,在“项目树 → 添加新设备”中展开“控制器”,选择与实际虚拟实例匹配的 CPU 型号。以 S7-1500 系列为例,常见选择为 CPU 1516-3 PN/DP 或 CPU 1511-1 PN。这里有一个容易忽略的对应关系:PLCSIM Advanced 实例的“虚拟 CPU 类型”必须与 TIA Portal 中添加的 CPU 型号一致,否则下载时会出现“目标设备类型不匹配”的报错。添加完成后,TIA Portal 会自动生成该 CPU 的设备视图与默认的 PROFINET 接口。

二、组态 PROFINET 接口、IP 地址与子网

双击设备视图中的 CPU,进入“设备概览”,选中 PROFINET 接口(通常标识为 X1),在下方“属性 → 常规 → 以太网地址”中设置参数。这里需要区分两个概念:IP 地址是设备在网络中的唯一标识,子网则决定哪些设备可以直接通信。对于虚拟联调,推荐使用一个独立的网段,避免与物理网卡、办公网络冲突。示例参数如下:

  • IP 地址:192.168.0.10
  • 子网掩码:255.255.255.0
  • 子网:新建 PN/IE_1,网络 ID 为 192.168.0.0

设置完成后,TIA Portal 会在“网络视图”中显示该 CPU 及其 PROFINET 接口。此时还没有任何通信伙伴,但子网已经建立,后续 HMI 或其它虚拟设备只要加入同一子网即可通信。需要特别注意的是:PLCSIM Advanced 实例的 IP 地址必须与这里组态的 IP 完全一致,包括网段和主机号。如果实例使用 192.168.0.20,而 TIA Portal 中组态的是 192.168.0.10,下载时就会提示“无法建立连接”。

虚拟PLC硬件组态与下载路径关系图 TIA Portal 组态参数必须与 PLCSIM Advanced 实例参数一致 TIA Portal 项目视图 CPU 1516-3 PN/DP 设备视图 → PROFINET 接口 X1 IP: 192.168.0.10 / 255.255.255.0 子网 PN/IE_1 网络 ID: 192.168.0.0 OB1 主程序 简单起保停逻辑 / 定时器 ▶ 下载到设备 PLCSIM Advanced 实例 虚拟实例 PLC_1 CPU 类型: 1516-3 PN/DP IP: 192.168.0.10 / 255.255.255.0 运行状态: RUN 虚拟 CPU 已启动,等待程序 在线监控与验证 监视表 / 程序状态 / 变量强制 ✓ 下载成功,程序运行中 下载通道 PLCSIM Virtual Eth. Adapter ⚠ IP 地址与 CPU 型号必须两侧一致 同一子网

三、设置下载路径与 PG/PC 接口

下载路径的设置是虚拟联调中最容易出错的一环。TIA Portal 默认通过物理网卡搜索设备,而 PLCSIM Advanced 创建的是一个虚拟以太网适配器。因此需要在“在线访问”中把 PG/PC 接口指向该虚拟适配器。具体操作是:打开“在线访问”下拉菜单,选择 PLCSIM Virtual Eth. Adapter(不同版本名称可能略有差异,如 Siemens PLCSIM Virtual Ethernet Adapter),然后在其下选择“TCP/IP”协议。此时 TIA Portal 会通过该虚拟网卡扫描同一子网内的设备,正常情况下应能发现 PLCSIM Advanced 实例对应的虚拟 CPU。

如果扫描不到设备,按以下顺序排查:第一,确认 PLCSIM Advanced 实例已经启动且处于 RUN 或 STOP 状态;第二,确认实例的 IP 与 TIA Portal 组态的 IP 完全一致;第三,确认虚拟适配器在 Windows“网络连接”中已启用且未被防火墙拦截;第四,确认 TIA Portal 的 PG/PC 接口确实指向了虚拟适配器而非物理网卡。这四步覆盖了绝大多数下载失败场景。

四、编写并下载简单逻辑程序

为了验证下载链路和运行状态,不需要复杂程序。在 OB1 中编写一段起保停逻辑即可:

// OB1 起保停逻辑示例
// I0.0 启动按钮  I0.1 停止按钮  Q0.0 电机输出
"Q0.0" := ("I0.0" OR "Q0.0") AND NOT "I0.1";

// 定时器示例:启动后延时 3 秒置位 Q0.1
"TON_DB".TON(IN := "Q0.0",
             PT := T#3S);
"Q0.1" := "TON_DB".Q;

这段程序包含两个可观察点:Q0.0 的起保停状态,以及 Q0.1 在启动后延时 3 秒的置位行为。编写完成后点击“下载到设备”,TIA Portal 会依次执行编译、建立连接、下载硬件组态和程序块。下载过程中如果弹出“是否覆盖”或“是否启动模块”的提示,选择“全部覆盖”并“启动模块”。下载完成后,CPU 应进入 RUN 模式。

五、验证运行与结果判读

验证分两个层面。第一层是在线状态验证:在项目树中选中 CPU,点击“在线”,观察设备视图中的 CPU 是否显示绿色运行标识;打开“监视表”,添加 I0.0、I0.1、Q0.0、Q0.1 四个变量,切换到“监视”模式。第二层是逻辑行为验证:在监视表中强制 I0.0 为 TRUE,观察 Q0.0 是否变为 TRUE;再强制 I0.1 为 TRUE,观察 Q0.0 是否复位。对于定时器,可以在 Q0.0 为 TRUE 后观察 Q0.1 是否在约 3 秒后置位。

提示:PLCSIM Advanced 支持“程序状态”功能,可以在 OB1 中直接观察每条指令的能流状态(绿色表示导通,灰色表示断开)。这比监视表更直观,适合验证逻辑分支和定时器当前值。
注意:如果下载后 CPU 无法进入 RUN,或监视表中变量显示为黄色“?”而非实际值,通常说明下载并未真正到达虚拟实例。此时应回到“在线访问”检查 PG/PC 接口是否仍指向虚拟适配器,并确认 PLCSIM Advanced 实例没有被其它项目占用。

六、本节配置参数速查

配置项 示例值 说明
CPU 型号 CPU 1516-3 PN/DP 必须与 PLCSIM Advanced 实例一致
IP 地址 192.168.0.10 两侧必须完全一致
子网掩码 255.255.255.0 决定同网段通信范围
子网名称 PN/IE_1 网络 ID 192.168.0.0
PG/PC 接口 PLCSIM Virtual Eth. Adapter 下载通道的关键设置
验证变量 I0.0 / I0.1 / Q0.0 / Q0.1 起保停与定时器观察点