0

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

系统:Codesys

4

2 回答 2

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) 等。

我通常将函数用于查找和转换函数。并且可以从程序周围的所有地方调用它们。

于 2015-09-18T19:29:35.533 回答
0

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

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

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

于 2016-05-06T02:11:51.693 回答