在西门子S7-1200 系列 PLC 中,OB、FB、FC 和 DB 是不同类型的程序块和数据块,各自承担着不同的功能和角色。下面是它们的定义、关系和相互联系:
1. OB(组织块,Organization Block)
定义
组织块(OB)是 PLC 程序的主程序结构,负责管理和控制程序的执行流程。在每个 PLC 项目中,至少有一个 OB,通常是 OB1。
特点
·执行周期:OB 块可以根据特定事件触发执行,比如周期性调用(如OB1每100ms)或按需调用(如错误发生时调用 OB35)。
·优先级和调度:不同类型的 OB 可以影响程序的执行顺序,例如,OB35 处理异常时具有较高优先级。
·可设置触发条件:可以通过设置时钟(如 OB10 每秒调用)或在特定条件时调用。
示例
·OB1:循环执行的主程序块。
·OB35:为处理异常情况而设计,系统发布故障时会触发。
关系
OB 作为程序的启动点,实际运行的逻辑通常是在内部调用 FC 和 FB 来实现。其目的是控制程序的执行周期和逻辑流程。
2. FC(功能,Function)
定义
功能(FC)是一种无状态的程序块,用于实现某个特定功能的逻辑。相同的 FC 可以在多个地方被调用。
特点
·无状态:FC 不保留任何内部状态,每次调用都是干净的新实例。
·参数输入:通过输入参数(IN)接收数据,通过输出参数(OUT)返回结果。
·适用性:适合执行简单、重复和通用的逻辑,比如数学运算、数据处理等。
示例
·简单的运算FC:如用于计算加法、比较的函数。
·状态检查FC:基于输入参数判断系统状态,例如输入信号的有效性。
关系
FC 块可以被 OB 调用,实现特定功能。由于无状态性,跨调用的结果不会影响其他调用。
3. FB(功能块,Function Block)
定义
功能块(FB)是一种有状态的程序块,可以保存和管理其状态。FB 有自己的变量和内存结构,支持实例化。
特点
·状态保存:每次调用 FB 块时使用相同的实例,存储状态信息。可以保存运行过程中的数据。
·输入输出参数:不仅可以接受输入参数(IN),还可以有输出参数(OUT)和输入输出参数(IN_OUT)。
·再利用性:可以创建多个 FB 的实例,每个实例都可以独立保存状态,适合具有复杂逻辑控制的场合。
示例
·电机控制FB:一个 FB 包含电机的运转状态(如启动、停止、故障),可通过不同实例控制多个电机。
·计数器FB:每个实例都能独立计数,允许多个计数器在同一程序中运行。
关系
FB 常常通过 DB 来存储实例数据。OB 调用 FB 时,可以使用它们的功能,同时通过 DB 保存状态信息,保持调用间的数据一致性。
4. DB(数据块,Data Block)
定义
数据块(DB)用于存储数据,提供数据管理的手段,包括全局数据块和实例数据块。
特点
·存储机制:DB 可以用于存储程序运行状态、设置值和任何其他需要持久保存的数据。
·访问性:全局 DB 可以被 FC 和 FB 共享,实例 DB 只能被相应的 FB 实例访问。
·结构化数据:DB 可以包含多种数据类型,包括布尔值、整数、浮点数、结构体等。
示例
·全局数据块DB1:可以存储系统配置参数。
·实例化数据块DB:每个 FB 实例都有自己的数据块来存储该实例特有的数据。
关系
DB 常常与 FB 结合,在 FB 中定义数据块的使用,以实现状态的保持和数据的共享,FC 则可以访问全局 DB
组件 | 定义 | 特点 | 关系 |
OB | 组织块,控制程序流的执行点 | 周期性或事件驱动执行 | 启动程序的入口,调用 FC 和 FB |
FC | 无状态功能块 | 无状态性,参数化 | 被 OB 调用,执行单一功能 |
FB | 有状态功能块 | 对象化,状态保持 | 被 OB 调用,通过 DB 管理状态 |
DB | 数据块,用于存储数据 | 保存多类型数据 | FB 使用 DB 保存状态,FC 访问全局 DB |