在上一篇文章中,我们讨论了 PUT 命令以及如何使用它在同一项目或两个不同项目中的两个 PLC 之间进行通信。 在本文中,我们将讨论用于西门子 PLC 到 PLC 通信项目中用于数据交换的 GET 命令。
GET 命令是什么?
就像 put 命令一样,GET 命令是 TIA Portal 内置功能块 FB,专门用于 S7 系列 CPU,用于将数据从远程伙伴 PLC 获取到本地 PLC。 与 PUT 命令相反,GET 命令不是将数据从 PLC_1 放入 PLC_2,而是将数据从 PLC_2 获取到 PLC_1。
当使用 GET 命令时,我有两个 PLC,我需要从一个称为“伙伴”的 PLC 到另一个称为“本地”的 PLC 获取数据。 本地 PLC 是对 GET 命令进行编程的地方。
除了两个 PLC 之间的 Profinet 连接之外。 必须对伙伴 PLC 进行一些配置,以使其能够被其他 PLC 访问。
我们将创建一个示例项目来展示如何使用 GET 命令。
西门子 PLC 到 PLC 通信项目
我们将假设一个示例项目,其中同一项目中有两个 PLC,PLC_1 将充当本地 PLC,PLC_2 将充当合作伙伴 PLC。
为了创建需要使用 GET 命令的情况,我们假设我们想要从伙伴 PLC_2 读取/获取整数到本地 PLC_1。
首先,我们创建一个新项目并添加两个 PLC。 见图1。
图1.新建一个工程,添加两台PLC。
现在,我们需要配置伙伴 PLC_2 以启用来自 PLC_1 的 GET 访问。 我们还需要准备将从 PLC_2 移至 PLC_1 的数据。
首先,我们需要允许 GET 命令访问将提供数据的 PLC_2。 见图2。
图 2. 允许 GET 命令访问。
从图中可以看到,我们允许GET命令从PLC_2的属性中访问PLC_2,在保护和安全选项中,单击
“允许远程合作伙伴通过 PUT/GET 通信进行访问”
现在,我可以使用 GET 命令从伙伴 PLC_2 读取/获取数据。
接下来,我们要创建将移动到 PLC_1 的数据,我们假设 PLC_1 要从 PLC_2 获取整数。
我们将定义一个名为 “SendDataToPLC_1” 的整数标签,该整数标签将从 PLC_2 读取到 PLC_1。 见图3。
图3. 定义要移动到 PLC_1 的数据
就是这样; 这是您需要从 PLC_2 侧准备的完整配置,以便能够通过 GET 命令接收数据。
现在,我们转到 PLC_1,在 PLC_1 中,我们要创建使用 GET 命令从 PLC_2 读取数据的逻辑。
正如我们在上一篇文章中所做的那样,我们只需将 GET 命令拖放到主 OB1 中即可。 见图4。
图4.拖放GET命令
需要注意的是,GET命令位于S7通讯文件夹中,因为它是S7系列PLC的专有功能,因为它涉及到安全问题。 请记住,在图 2 中,当我们允许使用 GET 命令时,它位于 PLC 属性的安全和保护属性中,因为它与 PLC 安全和保护相关。
当您将 GET 命令拖放到您的系统中时,您将被要求创建一个数据块实例,因为 GET 命令本质上是一个功能块 FB。 见图5。
图 5. 为 GET 命令创建数据实例。
现在,我们将 GET 命令添加到逻辑中,我们需要开始配置 GET 块,就像之前使用 put 命令所做的那样。 要打开 GET 命令的配置视图,请按块顶部的蓝色小图标。 见图6。
图 6. 打开配置视图。
我们有两个主要参数需要配置,连接参数和块参数。 见图7。
图 7. GET 块配置。
从图中可以看到,Local PLC就是调用GET命令的PLC。 虽然合作伙伴 PLC 是提供数据的 PLC,但它也是我们允许 GET 访问的同一 PLC。 在我们的项目中,合作伙伴 PLC 是 PLC_2。
从图中还可以看到,伙伴是空的,我们必须选择 PLC。 见图8。
图8. 合作伙伴列表中的不同选项
正如您所看到的,我们为合作伙伴 PLC 有两种不同的选项可供选择。
未指定是指当 PLC 属于不同的 TIA Portal 项目时,如果 PLC 属于同一 TIA Portal 项目,则您将在列表中找到其他 PLC。
当您选择PLC_2选项时,因为我们的PLC在同一个项目中,连接配置将自动填写。见图9。
图 9. PLC_2 作为伙伴
因为两个PLC都在同一个项目中,所以当我选择PLC_2选项时,所有连接参数都会自动填写。
另一方面,如果合作伙伴PLC来自不同的项目,那么我将选择“未指定”选项,在这种情况下,我将必须填写一些数据,例如合作伙伴PLC IP地址。 见图10。
图 10. 未指定的合作伙伴 PLC。
如您所见,当伙伴为“Unspecified”时,您将需要手动添加一些信息,例如伙伴PLC IP地址。
还可以看到我们需要给本地PLC_1添加一个子网。 为此,您只需转到 PLC_1 的 Profinet 属性并选择添加新子网。 见图11。
图 11. 为 PLC_1 添加子网
在PLC_1中添加新的子网后,连接参数配置就完成了。 见图12。
图12.连接参数完成。
我们需要处理的下一个配置是块参数。
在块参数中,我们定义将在两个 PLC 之间移动的数据以及允许开始执行 GET 块的触发信号。 见图13。
图 13. 块参数。
如您所见,我们需要定义 GET 块的触发信号,还需要定义将从 PLC_2(读取区域 ADDR_1)移动哪些数据以及这些数据将移至何处(存储区域 RD_1)。
我们已经定义了 ADDR_1,其前面是我们在 PLC_2 中定义的 SendDataToPLC_1 整数标记。
现在,我们将为该整数标签和触发信号定义存储区域。 见图 14。
图 14. 定义触发信号和存储区域
定义触发信号 ADDR_1 和 RD_1 后,我们将这些参数填充到块配置中。 见图15。
图15.填写区块参数
现在,GET 块的配置已完成,您可以看到该块现在已准备好下载和运行。 见图16。
图 16. GET 块
GET 块现已配置完毕,一旦触发信号激活,该块将从 PLC_2 读取 ADDR_1 并将其写入 PLC_1 中的 RD_1。