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

    Create an account or sign in to leave a review

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

    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

    There are no reviews to display.


×
×
  • Create New...