[西门子] 西门子博图软件用户程序中的块介绍

[复制链接]
查看16559 | 回复0 | 2024-1-16 07:58:46 | 显示全部楼层 |阅读模式


块类型

下表给出了可用的块类型:



组织块 (OB)

定义

组织块 (OB) 构成了操作系统和用户程序之间的接口。组织块由操作系统调用,可以控制(例如)下列操作:

自动化系统的启动特性

循环程序处理

中断驱动的程序执行

错误处理

可以对组织块进行编程并同时确定 CPU 的特性。根据使用的 CPU ,提供有各种不同的组织块。



1.程序循环 OB

程序循环 OB 在 CPU 处于 RUN 模式时循环执行。主程序块是一种程序循环 OB。您可在此处放置控制程序的说明和调用其他用户块。您可以拥有多个程序循环 OB, CPU 将按编号顺序执行这些 OB。主 (OB 1) 是默认程序循环。

2.启动 OB
启动 OB 在 CPU 的操作模式从 STOP 切换到 RUN 时执行一次,包括处于 RUN 模式时和
执行 STOP 到 RUN 切换命令时上电。之后将开始执行主“程序循环”OB。

3.延时中断 OB
延时中断 OB 在组态的时延后执行。

4.循环中断 OB
循环中断 OB 以指定的时间间隔执行。最多可组态四个循环中断事件,每个循环中断事件对应一个 OB 。

5.硬件中断 OB
硬件中断 OB 在发生相关硬件事件时执行。硬件中断 OB 将中断正常的循环程序执行来响应硬件事件信号。

6.时间错误中断 OB

如已组态,那么当扫描周期超过最大周期时间或发生时间错误事件时,将执行时间错误中断OB (OB 80)。如已触发,错误中断将中断正常的循环程序执行或其它任何事件 OB。
发生任何上述事件都将生成一个描述相应事件的诊断缓冲区条目。无论是否存在时间错误中断 OB,都将生成诊断缓冲区条目。

7.诊断错误中断 OB
当 CPU 检测到诊断错误,或者具有诊断功能的模块发现错误且为该模块启用了诊断错误中断时, 将执行诊断错误中断 OB。诊断错误中断 OB 将中断正常的循环程序执行。如果希望CPU 在收到诊断错误后进入 STOP 模式, 可在诊断错误中断 OB 中包含一个 STP 指令,以使 CPU 进入 STOP 模式。
如果未在程序中包含诊断错误中断 OB, CPU 将忽略此类错误并保持 RUN 模式。

8.拔出或插入模块 OB
当已组态和非禁用分布式 I/O 模块或子模块(PROFIBUS、 PROFINET、 AS-i) 生成插入或拔出模块相关事件时,系统将执行“拔出或插入模块”OB。

9.机架或站故障 OB
当 CPU 检测到分布式机架或站出现故障或发生通信丢失时,将执行“机架或站故障”OB。

检测到以下任一情况时, CPU 将生成机架或站故障事件:
● DP 主站系统故障或 PROFINET IO 系统故障(进入或离开事件)
● DP 从站系统故障或 IO 设备故障(进入或离开事件)
● PROFINET I 设备的某些子模块发生故障
如果尚未对该 OB 进行编程,那么发生以上任意情况时, CPU 将保持在 RUN 模式。

10.时钟 OB
时钟 OB 根据所组态的时钟时间条件执行。CPU 支持两个时钟 OB。

11.状态 OB
如果 DPV1 或 PNIO 从站触发状态中断,则执行状态 OB。如果 DPV1 或 PNIO 从站的组件(模块或机架)更改了其工作模式(例如由 RUN 变为 STOP),则可能发生这种情况。

12.更新 OB
如果 DPV1 或 PNIO 从站触发更新中断,则执行更新 OB。

13.配置文件 OB
如果 DPV1 或 PNIO 从站触发配置文件特定的中断,则执行配置文件 OB。

14/15.MC 伺服和 MC 插补器 OB
在创建运动工艺对象并将驱动器接口设置为“模拟驱动器接口”(Analog drive connection) 或“PROFIDrive”时, STEP 7 会自动创建只读 MC 伺服和 MC 插补器 OB。用户无需编辑任何OB 属性, 也无需直接创建此 OB。CPU 将这些 OB 用于闭环控制。有关更多详细信息,请参见 STEP 7 信息系统。

16.MC-PreServo
可以对 MC-PreServo OB 进行编程,使其包含程序逻辑:在 MC-Servo OB 执行前直接执行STEP 7 程序。

17.MC-PostServo
可以对 MC-PreServo OB 进行编程,使其包含程序逻辑:在 MC-Servo OB 执行后直接执行STEP 7 程序。

函数 (FC)

定义

函数 (根据 IEC 1131-3 标准,函数 (FC) 是不含存储区的代码块。通过函数可在用户程序中传送参数。因此,函数特别适合取代频繁出现的复杂结构,如计算等。) (FC) 是不带存储器的代码块。由于没有可以存储块参数值的数据存储器。因此,调用函数时,必须给所有形参分配实参。
函数可以使用全局数据块 (数据块用于存储用户数据。数据块分为可由所有代码块访问的全局数据块,以及分配给特定功能块调用的背景数据块。) 永久性存储数据。

应用

函数包含一个程序,在其它代码块调用该函数时将执行此程序。 例如,可以将函数用于下列目的:

将函数值返回给调用块,例如,数学函数

执行工艺功能,例如,通过位逻辑运算进行单个的控制

可以在程序中的不同位置多次调用同一个函数。 因此,函数块简化了对重复发生的函数的编程。

函数块 (FB)

定义

函数块是一种代码块,它将输入、输出和输入/输出参数永久地存储在背景数据块中,从而在执行块之后,这些值依然有效、。所以函数块也称为“有存储器”的块。

函数块也可以使用临时变量。 临时变量并不存储在背景数据块中,而用于一个循环。

应用

函数块包含总是在其它代码块调用该函数块时执行的子例程。 可以在程序中的不同位置多次调用同一个函数块。 因此,函数块简化了对重复发生的函数的编程。

函数块的实例函数块的调用称为实例。 函数块的每个实例都需要一个背景数据块;其中包含函数块中所声明的形参的实例特定值。

函数块可以将实例特定的数据存储在自己的背景数据块中,也可以存储在调用块的背景数据块中。

访问模式

S7-1200 和 S7-1500 提供两种不同的背景数据块访问选项,可在调用函数块时分配给函数块:

可优化访问的数据块

可优化访问的数据块无固定定义的存储器结构。 在声明中,数据元素仅包含一个符号名,因此在块中没有固定的地址。

可一般访问的数据块(与 S7-300/400 兼容)

可一般访问的数据块具有固定的存储器结构。 声明元素在声明中包含一个符号名,并且在块中有固定地址。

背景数据块

定义

函数块的调用称为实例。实例使用的数据存储在背景数据块中。

背景数据块的最大大小因 CPU 的不同而各异。函数块中声明的变量决定背景数据块的结构。

访问模式

S7-1200 和 S7-1500 提供两种不同的背景数据块访问选项,可在调用函数块时分配给函数块:

可优化访问的数据块

可优化访问的数据块无固定的定义结构。声明元素仅在声明中包含一个符号名,且块中没有固定地址。

可一般访问的数据块(与 S7-300/400 兼容)

可一般访问的数据块具有固定的结构。声明元素在声明中包含一个符号名,并且在块中有固定地址。

全局数据块 (DB)

定义

数据块用于存储程序数据。因此,数据块包含由用户程序使用的变量数据。全局数据块存储所有其它块都可使用的数据。

数据块的最大大小因 CPU 的不同而各异。可以以自己喜欢的方式定义全局数据块的结构。

还可以选择使用 PLC 数据类型 (UDT) 作为创建全局数据块的模板。

用户程序中的全局数据块

每个函数块、函数或组织块都可以从全局数据块中读取数据或向其中写入数据。即使在退出数据块后,这些数据仍然会保存在其中。可以同时打开一个全局数据块和一个背景数据块。

下图所示为不同的数据块访问:



访问模式

S7-1200 和 S7-1500 提供两种不同的全局数据块访问选项:

可优化访问的数据块

可优化访问的数据块没有固定的定义结构。在声明中,仅为数据元素分配一个符号名称,而不分配在块中的固定地址。

可标准访问的数据块(与 S7-300/400 兼容)

可标准访问的数据块具有固定的结构。数据元素在声明中分配了一个符号名,并且在块中有固定地址。

—THE END—

点点在看给小编加个鸡腿

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则