PLC 块是怎么调用的?_plc程序块有哪些
PLC(可编程逻辑控制器)的程序采用模块化或者结构化编程设计时。通过 “块”使用的方式来组织不同功能的代码。块调用是 PLC 程序执行的使用场景比较多。
块的调用指的是一个块在执行过程中触发另一个块的执行,执行完成后返回原块继续运行。理解块调用原理需要从块的类型、调用机制、数据传递和执行流程四个方面展开。
PLC执行顺序是从上到下,从左到右。所以块的执行对于程序结构会有显著的变化。
块调用的顺序和嵌套称为调用层级。
下图所示为在一个执行周期内的块调用顺序和嵌套深度示例:
块调用深度,引用博途帮助文件
OB 的调用完全由 PLC 操作系统控制,根据不同的 OB 类型和触发条件自动执行。例如,OB1 作为最常用的组织块,在 PLC 上电后,操作系统会按照设定的固定周期不断调用 OB1,用户在 OB1 中编写的逻辑(如调用 FC、FB 等)会随着 OB1 的循环调用而反复执行。
功能(FC)的调用:无状态复用
FC 由用户程序主动调用,其调用流程如下:
1.假设 OB1 中调用 FC1:
2.OB1 执行到 “CALL FC1” 指令时,暂停当前的执行过程。
4.系统将 FC1 的输入参数(如 I0.0 的状态)从 OB1 传递到 FC1 的接口。
5.执行 FC1 内部的逻辑(如根据输入参数进行计算、逻辑判断等操作)。
6.FC1 将处理结果通过输出参数(如 Q0.0)返回给 OB1。
7.释放 FC1 的临时变量,程序回到 OB1 的断点处继续执行后续的指令。
由于 FC 无状态的特性,每次调用时都需要重新传递输入参数,其执行结果仅取决于当前的输入参数,不会受到之前调用的影响。
功能块(FB)的调用:带状态复用
FB 由用户程序调用:
FB 的带状态特性使其非常适合用于需要保留历史状态的控制场景,如计数器功能块,通过背景 DB 可以保存累计的计数值,每次调用时在原有计数值的基础上进行增减。
块调用是 PLC 模块化设计编程结构化编程的核心,其优势包括:
同一 FC/FB 可被多个调用者重复使用(如多个工位共用一个 “计数” FC);
整个程序结构更加清楚,核心封装复用,复杂功能拆分为块(如 “检测”“计算”“执行”,气缸,电机的运行检测)便于调试和维护,程序调试测试的工作量将大大降低。
FB 通过背景 DB 保存状态,适合需要 “记忆” 的场景(如累计计数、历史数据追溯,一些动作的执行记录等)。
个人观点,欢迎讨论指出不足。