结构化文本:功能和功能块(优点和缺点)

时间:2015-09-18 09:12:50

标签: plc st

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

系统:Codesys

2 个答案:

答案 0 :(得分:1)

我也来自PC编程世界,在Codesys中编程时我会遗漏一些对象技巧。但是,功能块在很大程度上取决于对象思维。它们太容易从外部窥视,因此需要用户的一些纪律来封装功能或对象。

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

我通常使用POU将项目分成更大的部分,例如Machine1(prg),Machine2(prg)和Machine3(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)等。

我通常使用函数进行查找和转换功能。并且可以从程序周围调用它们。

答案 1 :(得分:0)

清晰,稳健和可维护性是PLC世界的一切。如果结构保持相对平坦,功能块可以帮助你实现这一目标(因此,应该避免功能块内部功能块中的功能块,比较真实对象及其遗产)。

另外,图形语言是有理由以易于消化的形式可视化复杂系统,使得未来的维护人员能够更轻松地追踪PLC程序和工厂部分的错误。

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