PLC 编程基础知识——程序中的块

在西门子博途编程中系统定义了块类型来执行自动化系统中的任务


块类型

简要描述

组织块 (OB)

组织块定义用户程序的结构。

功能 (FC)

功能包含用于处理重复任务的程序例程。 功能没有“存储器”。

功能块 (FB)

功能块是一种代码块,它将值永久地存储在背景数据块中,从而即使在块执行完后,这些值仍然可用。

背景数据块

调用背景数据块来存储程序数据时,该背景数据块将分配给功能块。

全局数据块

全局数据块是用于存储数据的数据区,任何块都可以使用这些数据。

组织块 (OB)

定义

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

  • 自动化系统的启动特性
  • 循环程序处理
  • 中断驱动的程序执行
  • 错误处理

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

有关组织块的详细信息,请参见“配置硬件与网络”的“其它配置信息”章节中有关 CPU 操作模式的介绍。

组织块的启动信息

启动某些组织块之后,操作系统将提供可以在用户程序中进行评估的信息。

函数 (FC)

定义

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

应用

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

  • 将函数值返回给调用块,例如,数学函数
  • 执行工艺功能,例如,通过位逻辑运算进行单个的控制

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

函数块 (FB)

定义

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

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

应用

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

函数块的实例

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

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

访问模式

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

  • 可优化访问的数据块
  • 可优化访问的数据块无固定定义的存储器结构。 在声明中,数据元素仅包含一个符号名,因此在块中没有固定的地址。
  • 可一般访问的数据块(与 S7-300/400 兼容)
  • 可一般访问的数据块具有固定的存储器结构。 声明元素在声明中包含一个符号名,并且在块中有固定地址。

全局数据块 (DB)

定义

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

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

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

用户程序中的全局数据块

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

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

访问模式

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

  • 可优化访问的数据块
  • 可优化访问的数据块没有固定的定义结构。在声明中,仅为数据元素分配一个符号名称,而不分配在块中的固定地址。
  • 可标准访问的数据块(与 S7-300/400 兼容)
  • 可标准访问的数据块具有固定的结构。数据元素在声明中分配了一个符号名,并且在块中有固定地址。

ARRAY 全局数据块 (DB)

ARRAY 数据块 (S7-1500)

ARRAY 数据块是一种特殊类型的全局数据块。这些数据块包含一个任意数据类型的 ARRAY。例如,可以是 PLC 数据类型 (UDT) 的 ARRAY。但这种数据块不能包含除 ARRAY 之外的其它元素。由于采用平面结构,ARRAY 数据块可访问 ARRAY 元素,并将这些元素传递给被调用块。

ARRAY 数据块中始终启用“优化块访问”(Optimized block access) 属性。ARRAY 数据块不可能进行标准访问。

在“移动 > ARRAY 数据块”(Move > ARRAY DB) 区域的“指令 > 基本指令”(Instructions > Basic instructions) 任务卡中,包含有各种 ARRAY 数据块的寻址方式。例如,使用这些指令间接寻址该数据块的名称。

  • ReadFromArrayDB:读取数组数据块
  • WriteToArrayDB:写入 ARRAY 数据块
  • ReadFromArrayDBL:从装载存储器的 ARRAY 数据块中读取
  • WriteToArrayDBL:写入装载存储器的 ARRAY 数据块中

背景数据块

定义

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

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

访问模式

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

  • 可优化访问的数据块
  • 可优化访问的数据块无固定的定义结构。声明元素仅在声明中包含一个符号名,且块中没有固定地址。
  • 可一般访问的数据块(与 S7-300/400 兼容)
  • 可一般访问的数据块具有固定的结构。声明元素在声明中包含一个符号名,并且在块中有固定地址。

CPU 数据块

定义

CPU 数据块由 CPU 在运行期间生成。为此,在用户程序中插入“CREATE_DB”指令。可以使用在运行期间生成的数据块来保存数据。

CPU 数据块由可用节点“程序块”文件夹中的小 CPU 图标来表示。与监视其它数据块类型的值类似,可以在在线模式中监视 CPU 数据块的变量值。

无法在离线项目中创建 CPU 数据块。

加载 CPU 数据块

用户程序通过“CREATE_DB”指令生成的 CPU 数据块最初仅在在线模式的设备上提供。下次执行从设备到项目的完整下载时,所有 CPU 数据块都将随其它块一起包含在内。在此期间,CPU 数据块标记有一个小 CPU 图标。但是,无法再次将这些 CPU 数据块上传到设备。

项目中 CPU 数据块的限制

将 CPU 数据块加载到离线项目中之后,可以打开并查看这些数据块的内容。但是请注意,项目中的 CPU 数据块受到写保护。因此,项目中的 CPU 数据块受到以下限制:

  • 无法编辑 CPU 数据块,或将这些数据块转换为其它数据块类型。
  • 无法为 CPU 数据块指定专有技术保护。
  • 无法更改 CPU 数据块的编程语言。
  • 无法编译 CPU 数据块或将其下载到设备。

比较 CPU 数据块

将 CPU 数据块加载到离线项目中后,可对所加载的 CPU DB 进行在线/离线比较。比较编辑器提供了相应的差异总结。如果找到不同之处,就可对在线和离线 CPU 数据块进行同步,而无需将离线数据块下载到设备中。

删除 CPU 数据块

可以从项目和 CPU 中删除 CPU 数据块。

相关文章

电工:16个PLC入门基础知识,弄懂这些再谈学PLC吧

从事电力作业的人员都知道,工业生产和科技的发展都离不开PLC的自动化控制,PLC可以广义的理解为:集中的继电器延伸控制柜,实际的生产应用中,PLC大大的节省了工业控制的成本,加强了设备的集中管理和自动...

PLC编程入门基础知识(2025最新版)

PLC编程入门基础知识(2025最新版)一、PLC核心概念定义PLC(可编程逻辑控制器)是专为工业环境设计的数字运算系统,通过编程实现逻辑控制、定时、计数等功能,广泛应用于机械控制和自动化产线。典型组...

赶紧收藏!编程python基础知识,本文给你全部整理好了

想一起学习编程Python的同学,趁我粉丝少,可以留言、私信领编程资料~Python基础入门既然学习 Python,那么至少得了解下这门编程语言,知道 Python 代码执行过程吧。Python 的历...

Linux系统编程之进程基础知识

概述在Linux系统中,进程是指一个正在运行的程序实例。每个进程都有一个唯一的进程标识符,即PID,操作系统通过这个PID来唯一识别和管理各个进程。进程不仅仅是程序代码的运行实例,它还包含了程序运行时...

C#面向对象编程基础知识

面向对象编程技术简称“OOP”技术,是开放应用程序的新方法、新思想。一:面向对象编程中最常见的概念是对象、类、和实例化。下面分别进行介绍:在面向对象中,算法和数据结构可以看成是一个整体成为对象。现实世...

自学数控编程最核心的方法,ug小白入门学习思路总结

作为NX初学者,基础一定要牢固,运用UG方法要正规,在以后UG分方向时,才能顺利进行其他模块操作,作为进阶者,本文也是十分有意义的,每个实例的建模过程都有技巧和做法分析,可以为进阶者丰富建模思路,巩固...