Jump to content
  • Sign in to follow this  

    跨 PLC 系统传输数据 – TSEND_C 和 TRCV_C

       (0 reviews)

    caixiaofeng

    在上一篇文章中,我们讨论了如何使用 TCON 和 TDISCON 块在两个 PLC 之间建立连接,以及如何使用 TSEND 和 TRCV 块在它们之间移动数据。

    PLC 系统传输数据
    在本文中,我们将学习一条新指令,可用于使用 TSEND_C 和 TRCV_C 块跨 PLC 系统进行通信和传输数据。

    TSEND_C

    TSEND_C 指令是 TIA Portal 指令,用于在两个 PLC 之间建立连接。 连接建立后,PLC 将自动维护和监控。

    TSEND_C 指令是异步执行的,具有以下功能:

    • 与 TCON 块类似,建立通信连接。
    • 通过类似于 TSEND 块的现有通信连接发送数据。
    • 与 TDISCON 类似,终止或重置通信连接。

    因此,TSEND_C 被称为“紧凑”,因为它同时充当 3 个以上的块。

    TRCV_C

    TRCV_C 指令也是一条 TIA Portal 指令,用于在两个 PLC 之间建立连接。 连接建立后,PLC 将自动维护和监控。

    TRCV_C” 指令异步执行,依次实现以下功能:

    • 建立和建立类似于 TCON 的通信连接。
    • 通过类似于 TRCV 的现有通信连接接收数据。
    • 与 TDISCON 类似,终止或重置通信连接。

    因此,TRCV_C 被命名为“紧凑”,因为它同时充当 3 个以上的块。

    在我们的 PLC 项目中使用 TSEND_C 和 TRCV_C

    在上一篇文章中,当我们需要建立并将数据从 PLC_1 发送到 PLC_2 时,我们必须在每个 PLC 中使用三个不同的块。 见图1。

    89-1.gif

    图 1. PLC_1内部逻辑

    如您所见,我们使用 TCON 和 TDISCON 块来建立和重置连接,并使用 TSEND 从 PLC_1 发送数据。 PLC_2 也是如此。 见图 2。

    89-2.gif

    图 2 PLC_2 逻辑

    我们再次使用 TCON 和 TDISCON 块来建立和重置连接,并使用 TRCV 接收来自 PLC_1 的数据。

    现在,我们想要替换所有这些块并尝试使用 TSEND_C 和 TRCV_C 来实现相同的功能。

    首先,在需要发送数据的 PLC_1 中,我们将使用 TSEND_C 块,只需将该块拖放到主 OB1 内即可。 见图 3。

    89-3.gif

    图 3. 添加 TSEND_C 块。

    由于 TSEND_C 本质上是一个功能块,因此系统会要求您创建一个数据实例。 见图 4。

    89-4.gif

    图 4. 为 TSEND_C 创建实例

    TSEND_C 看起来与 TSEND 块类似,因为您需要进行一些配置并添加一些信号。 见图 5。

    89-5.gif

    图 5. TSEND_C 块

    现在,我们需要一个信号来发送 REQ 和数据并配置连接。 对于 REQ 信号,我们创建了一个 SendData 标签。

    另外,我们可以拖放上一篇文章创建的数据块,我们需要将其发送到 PLC_2,我们可以将其拖放到块的 DATA 输入处。 见图 6。

    89-6.gif

    图 6. TSEND_C 块的配置。

    要配置块的连接参数,我们可以按块顶部的小配置图标打开配置视图。

    配置视图看起来与 TCON 块的配置视图非常相似。 见图 7。

    89-7.gif

    图 7. TSEND_C 的连接参数

    我们已经在之前的文章中展示了如何配置连接参数,因此我们可以像使用 TCON 块一样进行操作,见图 8。

    89-8.gif

    图 8 连接参数配置

    通过这个连接配置,我们就完成了 TSEND_C 的所有配置。 请注意,与配置 TCON、TDISCON 和 TSEND 块相比,它快了多少。

    现在,我们需要将 TRCV_C 添加到 PLC_2,以便它可以接收从 PLC_1 发送的数据。 在 PLC_1 的主 OB1 中,只需将 TRCV_C 拖放到您的逻辑中即可。 请参见图 9。请记住为 TRCV_C 块创建一个数据实例。

    89-9.gif

    图 9. 添加 TRCV_C

    将 TRCV_C 添加到您的逻辑后,我们需要对其进行配置。 正如我们对 TSEND_C 所做的那样,我们需要添加一个信号来启用数据接收,并且我们还需要添加将在其中保存数据的数据块。 见图 10。

    89-10.gif

    图 10.TRCV_C

    我们将 RecieveData 标签定义为 EN_R 信号。 见图 11。

    89-11.gif

    图 11.定义 EN_R 标签

    请记住取消选中数据块的 “优化块访问” 选项,否则该块将无法像我们在上一篇文章中展示的那样工作。

    接下来,我们需要配置 TRCV_C 块的连接参数,就像我们对 TSEND_C 所做的那样,请记住,未指定的伙伴 PLC 现在是 PLC_1,见图 12。

    89-12.gif

    图 12 TRCV_C 连接参数

    PLC 项目模拟

    现在我们已经配置了 TSEND_C 和 TRCV_ C 块,我们想要模拟我们的项目并看看它们将如何工作,但首先,我们将创建一个简单的逻辑来自动更新将发送到 PLC_2 的 PLC_1 的数据。 见图 13。

    89-13.gif

    图 13. 自动更新数据的简单逻辑。

    现在让我们编译并开始我们的项目的模拟。 您会注意到的第一件事是 PLC_1 和 PLC_2 将立即尝试建立连接,因为我们设置了 TSEND_C 和 TRCV_C,它们会自动尝试建立连接。 这就是两个 PLC 之间存在连接的原因。 见图 14。

    89-14.gif

    图14. 直接建立连接。

    可以看到,PLC 之间的连接是直接建立的,因为 TSEND_C 和 TRCV_C 中的 CONT 参数设置为 TRUE,这意味着该块将自动尝试与伙伴 PLC 建立连接。 我们可以在这里放置任何控制信号来控制连接的建立。

    您可以看到的另一件事是 TSEND_C 的 REQ 和 TRCV_C 的 EN_R 设置为 FALSE,这就是为什么 PLC 之间不会有任何数据移动。 见图 15。

    89-15.gif

    图 15. PLC 之间无数据传输。

    如果 TSEND_C 的 REQ 信号设置为 true,则 PLC_1 将尝试发送数据,但会等待其他 PLC 允许接收数据,见图 16。

    89-16.gif

    图 16. REQ 为真。

    正如您所看到的,SendData 为 TRUE,但没有发送任何数据,因为 RecieveData 仍然为 false。

    仅当 ReceiveData 设置为 true 时,PLC_2 才会从 PLC_1 接收数据。 见图 17。

    89-17.gif

    图 17. 数据发送至 PLC_2

    正如您所看到的,RecieveData 何时为 true。 数据将从 PLC_1 发送到 PLC_2,但是,您可以看到两个 PLC 内部的数据是不同的,因为 PLC_1 的数据按照我们之前所做的简单逻辑自动变化。 这意味着 EN_R 信号允许传输数据一次,当我需要再次传输数据时,该信号必须变为 false,然后再次变为 true。

    查看随附的 TIA Portal 项目并查看 PLC 之间的数据传输。

    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...