PLC------功能块接口类型与地址解释

一、接口的四个主要类型
图中左侧树状列表清晰地显示了四种主要接口类型,它们通常用于定义程序块(如函数、函数块)与外部交互的数据方向:
1. IN (输入)
- 方向:外部 → 程序块内部
- 功能:在调用程序块时,由外部(如主程序、其他块)提供的输入值或信号。程序块内部可以读取但不能修改它。这是最常用的参数类型
- 示例:电机的启动命令、目标转速
2. OUT (输出)
- 方向:程序块内部 → 外部
- 功能:程序块内部计算或处理后产生的结果。在调用程序块时,外部提供一个变量来接收这个输出值。程序块执行完成后,此值对调用者有效
- 示例:电机的实际转速、故障状态
3. IN_OUT (输入输出)
- 方向:双向
- 功能:在调用时,它既是输入也是输出。外部提供一个变量,程序块内部可以读取其初始值,也可以修改它并将新值返回给外部同一个变量。常用于需要修改传入数据的场景
- 示例:一个需要被累计的变量、一个需要被填充的缓冲区指针
4. STAT (静态变量)
- 方向:无(内部保持)
- 功能 :这是函数块(FB)特有的内部存储。其值在函数块的同一个实例 的多次调用之间保持,直到被内部程序修改。它类似于高级语言中的"静态变量",用于保存状态信息
- 示例:上次扫描周期的值、设备运行累计时间、顺序控制中的步号
注:图中还显示了"TEMP"(临时变量),它通常指程序块执行期间临时使用、执行结束后即被丢弃的变量,不属于对外接口,而是内部变量。
这里的"地址"栏通常指的是绝对地址,但更准确地说,是用于连接或映射的地址。在高级编程层面:当你在程序块(如FB)的接口区定义变量时,通常只定义名称和数据类型,不直接指定绝对地址。地址是在程序块实例化或变量关联时由系统自动分配或由程序员手动绑定的。
- 在低级配置/HMI连接层面 :当前界面很可能是用于配置一个与硬件或其他系统(如HMI、SCADA)进行数据交换的接口 。在这个上下文中:
-
"地址"栏 很可能需要填入绝对的、全局的地址,以便外部系统能够准确找到这个数据。例如:
%MW100(Modbus 保持寄存器地址)DB1.DBD4(西门子PLC数据块中的地址)40001(Modbus TCP 寄存器地址)
-
绝对地址的意义:这确保了从该"接口"读/写的数据,能明确对应到PLC内存或网络中的某个特定位置,实现与硬件I/O点、其他PLC或上位机软件的通信。
-
三、总结
这张图所示的界面,是一个用于映射或声明外部可访问数据点的配置表 。其中的四个类型(IN, OUT, IN_OUT, STAT)定义了数据在程序边界上的流向和生命周期。而"地址"栏,正是用于为这些接口变量指定一个在更大系统范围内(如整个PLC或网络)可以被唯一寻址的绝对地址,从而使其成为真正意义上的"外部接口"。
PLC模块化编程核心:OB1、FB与背景DB的关系详解
一、 核心组件及其角色
在西门子S7-300/400等PLC的STEP7编程环境中,模块化编程主要围绕三个核心组件构建:OB1 、FB (功能块)和DB(数据块)。它们构成了程序分层和数据管理的骨架。
-
OB1(组织块1) - 调度中心
- 角色 :PLC程序的主循环块,相当于
main()函数。CPU在每个扫描周期自动执行。 - 核心任务:作为程序入口,负责按顺序调用FB、FC等程序块,协调整个控制流程。一个项目中必须有且只有一个OB1。
- 角色 :PLC程序的主循环块,相当于
-
FB(功能块,如FB1) - 功能单元
- 角色:封装了特定工艺或控制功能(如电机控制、PID调节)的程序块。
- 关键特性 :必须与一个专用的背景数据块(DB) 绑定。FB内部定义其接口变量(IN, OUT, IN_OUT, STAT),这些变量的实际存储空间就在其背景DB中。
-
DB(数据块,如DB1) - 数据载体
- 角色 :在此关系中,DB作为FB的背景数据块。
- 功能 :它是FB所有接口变量和静态数据在PLC内存中的物理存储区。当OB1调用
FB1时,指定DB1,意味着FB1此次运行将使用DB1这块内存来读写所有数据。
二、 调用与数据流转关系
它们之间的关系构成一个清晰的执行链条:OB1调度并调用FB,FB执行时读写关联的DB,DB为FB提供持久化的数据空间。
- 调用指令 :在OB1中的关键语句是
CALL FB1, DB1。这条命令含义是:"执行功能块FB1的程序逻辑,并且使用数据块DB1作为你专属的数据工作区"。 - 参数传递 :
- 输入(IN) :OB1在调用时,将外部信号(如
I0.0)或变量赋值给FB1的IN形参。这个值被写入DB1的对应存储位置,FB1执行时从DB1中读取。 - 输出(OUT)与输入输出(IN_OUT) :FB1将计算结果写入DB1中对应的OUT/IN_OUT区域。FB1执行完毕后,OB1再从DB1的这些区域读取最终值,传给外部输出点(如
Q0.0)或其他变量。
- 输入(IN) :OB1在调用时,将外部信号(如
- 状态保持(STAT) :FB1中定义的静态变量(STAT)也存储在DB1中。其值在FB1的单次执行结束后不会被清除,而是保留在DB1中,直到下次执行被修改。这使得FB能够"记住"状态,如累计运行时间、步骤序号等,是实现连续控制的基础。
- 多重实例化 :同一FB(如电机控制FB)可被OB1多次调用,每次指定不同的背景DB(如
CALL FB1, DB1控制电机1;CALL FB1, DB2控制电机2)。这样,一套逻辑可以独立控制多个设备,数据互不干扰,极大地提高了代码复用率。
三、 与功能块接口类型及地址的关联
FB的接口定义了它与外界(OB1或其他块)交换数据的通道,而这些通道的"端口"就映射在背景DB中。
-
接口类型在DB中的体现:
IN,OUT,IN_OUT,STAT这些在FB接口中声明的变量,在关联的背景DB中都有其固定的存储位置。- OB1与FB之间的数据交换,实质是通过读写这块DB的相应区域完成的。
-
"地址"的意义:
- 在编程和调试层面,我们通常通过符号名(如
DB1.Start)访问这些数据。 - 您图中提到的"地址"配置,通常用于硬件组态、通信或HMI连接 等场景。此时,需要将DB中某个关键变量(如
DB1.ActualSpeed)映射到一个绝对地址 (例如DB1.DBD22)或通信寄存器地址(如40840)。 - 这个"绝对地址"使得上位机(HMI)、其他PLC或驱动设备能够绕过FB,直接在系统内存或网络中找到这个数据点进行读写,实现系统级集成。
- 在编程和调试层面,我们通常通过符号名(如
四、 总结:核心优势
这种OB1 - FB - DB的结构,完美体现了程序与数据分离的模块化思想。
- 结构清晰:OB1像主流程图,FB像可复用的子程序,DB像子程序的私有工作表。
- 高度可复用:一个FB配合多个背景DB,即可控制多个同类设备。
- 数据封装:设备的所有参数、状态都封装在其背景DB中,便于监控、调试和归档。
- 便于通信:背景DB提供了与上层系统(SCADA、MES)进行数据交换的天然接口。
简言之,OB1是调用者,FB是逻辑载体,而背景DB是FB专属的数据实例。 理解这三者的关系,是掌握西门子PLC模块化编程的关键。