【问题标题】:Structured Text : Function and Function block (Pros and Cons)结构化文本:功能和功能块(优点和缺点)
【发布时间】:2016-05-06 10:16:57
【问题描述】:

我来自计算机科学背景,习惯于传统的 IT 编程。我对结构化文本的经验相对较少。在我目前的项目中,我广泛使用了许多功能块。我知道这涉及一些内存问题等等。谁能上来给我一些他们每个人的优点和缺点。我应该避免它们并将所有内容都写在一个程序中吗?在我即将发布我的应用程序时,请提供实用提示。

系统:Codesys

【问题讨论】:

    标签: plc st


    【解决方案1】:

    我也来自 PC 编程世界,在 Codesys 中编程时我会错过某些对象技巧。不过,功能块在对象思维方面大有帮助。它们太容易从外部窥探,因此需要用户的一些纪律来封装功能或对象。

    您不应编写单个程序来处理所有功能,而应尽可能使用 Codesys 工具将程序划分为对象。这也意味着识别哪些对象是相似的并且可以被编程为功能块。下载程序时会在内存中创建功能块的实例,例如它始终对监控可见。

    我通常使用 POU 将项目划分为更大的部分,例如机器 1(prg)、机器 2(prg)和机器 3(prg)。如果每台机器都有一个或多个类似类型的电机,这就是功能块的用武之地,这样我就可以编写一个名为 FB_Motor 的电机对象,并将其重用于 3 个机器程序中的必要电机实例。然后,每个实例都可以保存自己的内部状态、计时器、输入输出或任何电机需要的东西。

    上面例子的结构现在是:

    MAIN, calls
      Machine1(prg), calls
        fbMotor1 (implements FB_Motor, local for Machine1)
        fbMotor2 (implements FB_Motor, local for Machine1)
      Machine2(prg), calls
        fbMotor1 (implements FB_Motor, local for Machine2)
      Machine3(prg), calls
        fbMotor1 (implements FB_Motor, local for Machine3)
        fbMotor2 (implements FB_Motor, local for Machine3)
        fbMotor3 (implements FB_Motor, local for Machine3)
    

    功能是另一回事。当函数被调用时,它们的数据存在于堆栈中,当函数返回其值时,数据被释放。有很多内置功能,例如BOOL_TO_INT()、SQR(n) 等等。

    我通常将函数用于查找和转换函数。并且可以从程序的各个角落调用它们。

    【讨论】:

    • 拥有几乎相似的硬件,具有或多或少相似的功能,我的逻辑是通过编写更多的功能块来减少共享功能的数量。但是有点不情愿,现在有了你的回答,我觉得朝着正确的方向前进更安全。感谢您的发言。
    • 我认为函数,至少在 OpenPCS 中仅限于返回基本数据类型,如 bool、byte、dint 等。函数块可以声明用户定义的数据类型并将其作为输出变量。
    【解决方案2】:

    清晰性、稳健性和可维护性是 PLC 世界的一切。功能块可以帮助您了解结构是否保持相对平坦(因此应避免功能块内的功能块嵌入功能块,比较真实对象及其遗产)。

    此外,图形语言的存在是因为它们以易于消化的形式将复杂的系统可视化,从而使未来的维护人员可以更轻松地了解 PLC 程序和工厂部分的问题。

    对于 ST 而言,首先要记住它是基于强类型的 Wirthian 语言(ADA、Pascal 等)。此外,通常比内存使用更重要的是程序的恒定循环时间(因为实时系统)。另一杯茶是控制系统的电气层,加上物理层和该层上的所有关系,如果不考虑,这些关系可能会在程序中的其他地方反闪。

    【讨论】:

      猜你喜欢
      • 2011-08-24
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多