Jump to content
  • Sign in to follow this  

    在西门子 PLC 之间移动数据

       (0 reviews)

    caixiaofeng

    在上一篇文章中,我们讲了如何使用开放用户通信在两个 PLC 之间建立连接,我们使用 TCP 协议在两个 PLC 之间进行连接。 我们在文章中展示了如何使用 TCON 和 TDISCON 等指令来建立此连接。

    PLC 之间移动数据

    在本文中,我们将展示如何开始在上一篇文章连接的 PLC 之间移动数据。 为此,我们将使用 TSENDTRCV 块

    发送数据至 PLC_2

    我们将在上一篇文章中创建的项目的基础上进行构建,这意味着我们的项目中已经安装了 TCON 和 TDISCON 块。 我们将通过添加 TSEND 和 TRCV 块来继续我们的项目,以开始在两个 PLC 之间移动数据。

    要将数据从 PLC_1 发送到 PLC_2,我们首先创建一个数据块,该数据块将保存我们需要发送到 PLC_2 的所有信息。 见图1。

    91-1.gif

    图 1. 新建一个数据块。

    正如我们之前讨论的,更好的做法是为块提供正确的命名,这样就可以轻松直观地弄清楚每个块的用途。

    其次,让我们在数据块中添加一些要发送到 PLC_2 的数据。

    我们假设我们需要发送三个不同的数据标签。 见图 2。

    91-2.gif

    图 2. 定义一些数据发送到 PLC_2。

    为了能够将刚刚创建的数据块发送到 PLC_2,我们还需要做一件事,即确保未选择数据块的优化块访问

    为此,我们需要转到数据块的属性并取消选择该选项。 见图 3 和 4。

    91-3.gif

    图 3. 进入数据块属性。

    91-4.gif

    图 4. 取消选中 “优化块访问” 选项。

    确保在使用 TSEND 块之前取消选中此选项,否则它将不起作用。

    现在我们已经准备好了要发送到 PLC_2 的数据,让我们实际尝试发送它。 我们将通过使用 TSEND 块来做到这一点。 只需将指令拖放到主 OB1 中即可将其添加到您的逻辑中。 见图 5。

    91-5.gif

    图 5. 添加 TSEND 块。

    添加 TSEND 块时,系统会要求您创建一个实例数据块,因为它本质上是一个功能块,再次给它一个适当的名称。见图 6。

    91-6.gif

    图 6. 为 TSEND 创建数据实例。

    当 TSEND 块添加到您的逻辑中时,您会发现我们需要进行一些重要的配置。 见图 7。

    91-7.gif

    图 7. TSEND 块。

    正如你所看到的,我们需要进行一些配置:

    • REQ 信号允许发送数据。

    对于 REQ 信号,我们将定义一个标签 SendData,用于启用数据发送。

    • 我将用来发送数据的连接的 ID,因为我可以有多个连接,所以我需要指定将使用哪个连接。

    在上一篇文章中,我们为 PLC_1 和 PLC_2 之间的连接定义了 ID 1,因此我们将ID设置为 1。

    • 我需要发送的数据。 我们已经创建了一个数据块,其中包含我需要发送的所有信息,我们只需将数据块拖放到 TSEND 块中即可。 见图 8。

    91-8.gif

    图 8. 配置 TSEND 块。

    从 PLC_1 接收数据

    当我们设置 TSEND 将数据发送到 PLC_2 后,我们需要在 PLC_2 内部接收这些数据。为此,我们将使用 TRCV 块。见图9。

    91-9.gif

    图 9. 添加 TRCV 块。

    如您所见,只需拖放 TRCV 块即可将其添加到您的逻辑中。 您知道接下来我们需要为该块创建一个数据实例。 见图 10。

    91-10.gif

    图 10. 将数据实例添加到 TRCV 块。

    将 TRCV 块调用到您的逻辑中后,我们需要像配置 TSEND 一样配置一些参数。 见图 11。

    91-11.gif

    图 11. TRCV 模块。

    如您所见,EN-R 是一个使能信号,必须为真才能允许 TRCV 模块开始接收数据。 ID 是将要使用的连接,DATA 是将存储接收到的数据的位置。

    因此,我们需要创建一个数据块来接收其中的数据。 请记住给它一个合适的名称。 见图 12。

    91-12.gif

    图 12. 创建数据块接收数据。

    接下来,定义将从 PLC_1 接收的信息标签,最佳实践是确保数据块具有与将接收的数据相同的数据结构。 见图 13。

    91-13.gif

    图 13. 定义数据标签。

    对于 EN-R,我们将定义一个 RecieveData 标签来启用数据接收。 对于连接 ID,它是我们之前设置的 1。 见图 14。

    91-14.gif

    图 14. EN-R 信号。

    接下来,将我们创建的数据块拖放到 TRCV 块中以完成所有配置。 见图 15。

    91-15.gif

    图 15. 将数据块添加到 TRCV 块中。

    当您拖放我们创建的 DB 时,您会注意到 TIA Portal 发出警告,并且它不接受我们刚刚添加的数据块。

    这是因为我们没有像对 TSEND 那样取消选中数据块的“优化块访问”。 见图 16。

    91-16.gif

    图 16. 优化的块访问。

    正如我们之前所说,我们必须取消选中此选项,否则 TSEND 和 TRCV 将无法工作。 见图 17。

    91-17.gif

    图 17. 取消选中优化块访问选项。

    您可以看到,一旦我们取消选中 “优化块访问”,TRCV 指令就会接受数据块。

    现在 TSEND 和 TRCV 块的调用和配置已完成。 让我们模拟一下我们的项目,看看数据将如何发送和接收。

    首先,我们将创建一个简单的逻辑,确保我们定义的标签有数据值。

    自动创建数据值的简单逻辑

    我们将创建一个简单的逻辑来自动创建和更新数据值,以便更容易查看两个 PLC 之间的数据传输。 见图 18。

    91-18.gif

    图 18. 简单的逻辑。

    这个简单的逻辑将使用时钟位 %M50.5 自动更改 SendToPLC_2 数据块内存储的数据值。

    PLC 项目仿真

    让我们编译我们的项目并开始模拟。 我们需要做的第一件事是使用我们上一篇文章配置的 TCON 块在两个 PLC 之间建立连接

    请记住,我们需要启用 PLC_2 的连接功能并建立与 PLC_1 的连接。 见图 19、20 和 21。

    91-19.gif

    图 19. PLC 之间无连接

    91-20.gif

    图 20. 启用连接。

    91-21.gif

    图 21. 建立连接。

    现在,我们在两个 PLC 之间建立了连接,让我们按照设置将数据从 PLC_1 移动到 PLC_2。

    首先,将 SendData 标记设置为 TRUE。 见图 22。

    91-22.gif

    图 22. REQ 信号为真。

    您可以看到,即使 SendData 为 TRUE,PLC_1 也没有向 PLC_2 发送数据。 这是因为 TRCV 模块尚未启用以接收任何数据。 见图 23。

    91-23.gif

    图 23. EN-R 信号错误。

    如您所见,由于 RecieveData 尚未为 TRUE,因此未启用 TRCV 模块来接收任何数据。 一旦 EN-R 为真,数据将从 PLC_1 的数据块发送到 PLC_2 的数据块。 见图 24。

    91-24.gif

    图 24. EN-R 信号为 True。

    一旦 EN-R 为真,您可以看到数据从 PLC_1 移至 PLC_2。

    如果你打开工程自己模拟一下,你会发现 PLC_1 中的数据不断更新,并传输到 PLC_2 中。

    这就是我们如何在两个 PLC 之间建立通信并使用 TSEND、TRCV 块。

    Sign in to follow this  


    User Feedback

    Recommended Comments

    There are no comments to display.



    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

×
×
  • Create New...