Jump to content
  • Sign in to follow this  

    在 PLC 编程中实现 UDT:用户定义的数据类型

       (0 reviews)

    leikang

    在上一篇文章中,我们讨论了什么是 UDT、如何创建用户定义数据类型 (UDT) 以及在项目中使用 UDT 的优势。在本文中,我们将展示在 PLC 编程中使用 UDT 的一种方法。

    内容:

    • 旧储罐模拟器功能块。
    • 带 UDT 的新储罐模拟 FB。
    • 调用新的储罐模拟 FB。
    • 向 UDT 添加新标签。
    • 结论。

    PLC 编程中的 UDT

    在我们的前几篇文章中,我们使用相同的储罐模拟器系统来解释许多概念,例如闭环控制和 PID 控制器。在本文中,我们将使用相同的储罐模拟器来展示如何在编程中使用 UDT 的概念。

    旧储罐模拟器功能块

    在旧的储罐模拟器系统中,我们定义了一些内部参数,以便根据需要多次重用功能块。见图1。

    113-1.gif

    图1. 储罐模拟器 FB。

    从图中可以看出,在功能块接口中我们定义了一些输入和一些 InOut,这些参数应该在调用 FB 时提供。

    例如,如果我们调用FB来模拟储罐1,并再次调用它来代表储罐2,则需要将每个储罐的参数提供给相关的被调用功能块。见图2。

    113-2.gif

    图 2. 储罐1 和储罐 2 的模拟。

    您可以看到,对于每个 FB 调用,我们都必须分配相关标签。对于储罐 1 模拟,我们应该将储罐 1 的标签分配给调用的 FB。储罐 2 模拟也是如此。

    带 UDT 的新储罐模拟 FB:

    现在,我们想要使用我们在上一篇文章中定义的 UDT“Tank”来模拟我们的储罐。我们将创建一个新的模拟功能块。见图3。

    113-3.gif

    图 3. 添加新的储罐模拟 FB。

    新的模拟功能块与旧的 FB 具有相同的逻辑,但是在这个模拟功能中,我们将使用定义的 UDT“Tank”作为 InOut 内部标签,如图所示。

    因此,您不再需要在 FB 接口的不同区域中声明功能块参数,而是只需一个标签即可携带罐体的所有所需信息。

    调用新储罐模拟 FB:

    为了调用新的模拟功能,我们选择在循环中断 OB 内调用它,以确保功能块的执行不受主逻辑 OB1 循环时间的影响,正如我们用 PID 解释的那样。

    所以我们需要首先创建一个新的循环中断 OB。见图4。

    113-4.gif

    图 4. 为调用储罐 3 和 4 添加循环中断。

    您可以选择您认为合适的循环时间,在我们的例子中,我们将其设置为 3000 微秒或 3 毫秒。

    现在,您可以将 “Tank Simulator with UDT” FB 拖放到循环中断中以调用 FB。将出现一个调用选项窗口,为 FB 数据实例提供您喜欢的任何名称。见图5。

    113-5.gif

    图 5. 致电您的 FB。

    调用 FB 后,您知道需要分配与要模拟的储罐相关的参数。见图6。

    113-6.gif

    图 6. 将储罐参数分配给 FB 调用。

    请注意,您只有一个参数需要填充该功能块。这是您创建的 UDT 标签。其中已经包含功能块所需的所有储罐参数。

    我们想要模拟储罐_03,因此我们将标记分配给 FB 调用。见图7。

    113-7.gif

    图 7. 拖放您的标签。

    罐 3 的功能块调用看起来比使用不带 UDT 的旧模拟器 FB 调用罐 1 更简单。见图8。

    113-8.gif

    图 8. 储罐 1 和储罐 3 调用差异。

    你能看出两个储罐调用的区别吗? 如果没有 UDT,则必须提供功能块的所有参数。想象一下,如果您必须使用此模拟器模拟 50 辆储罐。分配所有这些参数将是非常无聊和耗时的,更不用说首先为每个储罐声明它们了。

    但对于带有 UDT 的模拟器来说,您可以调用任意多个,并且不会花费太多时间或精力。见图9。

    113-9.gif

    图 9. 呼叫许多其他储罐。

    现在,假设您必须向模拟中添加一个新变量。例如,您想要添加流出警告信号。对于没有 UDT 的旧模拟器功能块,这意味着您必须为每个储罐声明这个新标签,并且每次调用储罐时都必须将其一一添加。

    但使用 UDT,您只需要更新您创建的 UDT 并添加您想要的新标签。见图10。

    113-10.gif

    图 10. 向 UDT 添加新标签。

    当您对 UDT 进行任何更改时,您甚至不需要更新函数调用。由于调用参数相同,因此更改是在参数本身内部进行的。见图11。

    113-11.gif

    图 11. 无需调用 FB。

    但是,您仍然需要重新编译 PLC 项目或至少重新编译数据块,以便更新对 UDT 的更改。见图12。

    113-12.gif

    图 12.  重新编译以更新 UDT 的更改。

    编译后,对 UDT 的所有更改将自动更新到该 UDT 的所有声明标签。见图13。

    113-13.gif

    图 13. 所有标签现已更新。

    结论

    • 您可以在项目中使用 UDT 来使您的编程更快、更容易理解。
    • 使用 UDT 还可以更轻松地更改功能和功能块。
    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...