在对 PLC 进行编程时,可以使用不同的块结构,这些块包括功能 FC、功能块 FB 和数据块 DB。这些块是非常方便的工具,您可以使用它们更好地设计 PLC 逻辑,并使您的代码更具可读性并且易于遵循和调试
在之前的文章中,我们讨论了 FC 和 FB。在本文中,我们将讨论数据块 DB,更具体地说是全局数据块。
内容:
- 什么是数据块 DB?
- 数据块的类型。
- 什么是全局数据块?
- 创建全局数据块?
- 使用全局数据块。
- 示例模拟。
什么是数据块?
数据块 DB 是用于保存 PLC 程序执行期间写入的参数值的存储区域。
与代码块相反,数据块 DB 仅包含变量声明。它没有像 FC 或 FB 那样的任何网络或指令。DB 的结构由您在数据块内声明的变量数量定义。
PLC 中数据块的类型
数据块有两种类型:
- 全局数据块
- 实例数据块
- ARRAY 数据块
全局数据块
顾名思义,全局数据块是为整个 PLC 逻辑进行全局声明的。它没有分配给特定的代码块。您可以从 PLC 逻辑中任何位置的任何代码块访问全局数据块的值。全局数据块仅包含静态标签。
全局数据块的结构可以自由定义。在数据块的声明表中,声明要包含在全局数据块中的数据元素。
实例数据块
背景数据块直接分配给功能块 FB,无论该功能块是在 PLC 中内部定义的(如定时器和计数器)还是用户定义的功能块 FB。
背景数据块的结构不能自由定义,而是由功能块的接口确定。背景数据块恰好包含在功能块接口中声明的那些块参数和标记。
但是,您可以在实例数据块中定义特定于实例的值;例如,声明的标签的起始值。
数组数据块
ARRAY 数据块仅适用于 S7-1500 CPU,是由 ARRAY 组成的全局数据块。该数组可以基于任何数据类型。
例如,PLC 数据类型 (UDT) 的 ARRAY 是可能的。除了 ARRAY 之外,DB 不包含其他元素。由于其扁平结构,ARRAY 数据块便于访问 ARRAY 元素并将其传输到被调用的块。
“指令”任务卡的“移动操作”部分提供了用于寻址 ARRAY DB 的选项。
在本文中,我们将讨论全局数据块,我们将在单独的文章中讨论其他两种类型。
什么是全局数据块?
数据块用于存储 PLC 程序数据。这意味着它们包含用户程序使用的变量数据。全局数据块存储可供所有其他块使用的数据。
数据块的最大大小根据 CPU 的不同而变化。您可以用任何您喜欢的方式定义全局数据块的结构。
您还可以选择使用 PLC 数据类型 (UDT) 作为创建全局数据块的模板。
每个功能块 FB、功能 FC 或组织块 OB 都可以从全局数据块读取数据,或者本身可以将数据写入全局数据块。即使退出数据块后,该数据仍保留在数据块中。见图1。
图 1 – 访问全局数据块
从上图可以看出,全局数据块可以从 PLC 程序内的任何代码块访问,而背景数据块只能由关联的功能块访问。
创建全局数据块
创建全局数据块的方式与创建功能 FC 或功能块 FB 的方式相同。从将新块添加到项目树中。见图2。
图 2 – 创建全局数据块
让我们在全局数据块中声明一些变量。
您可以通过单击名称下的“添加新”部分,写入所需的变量名称,然后选择变量数据类型来完成此操作。见图3。
图 3 – 全局数据块中的变量声明
使用全局数据块
- 声明一个标签。
我们已经在图 3 中展示了如何声明标签/变量。
- 定义起始值
标记的起始值是您定义的值,标记在 CPU 启动后采用该值。该值必须与标签的数据类型匹配,并且不应超出数据类型的范围。见图4。
标签在启动时采用定义的值,前提是它没有声明为保持性。
图 4 – 定义标签的起始值
因此,如果我将 Tank1Level 起始值设置为零以外的任何值,则下次重新启动 PLC 时将应用该值。见图5。
图 5 – 定义变量的起始值
- 保留全局数据块中的变量
为了防止断电时数据丢失,您可以将数据标记为保持性。该数据存储在保持性存储区域中。
设置保留的选项取决于数据块的类型和设置的块访问的类型。见图6。
图 6 -. 全局数据块中保留选项
如图 6 所示,Tank2Level 变量设置为保留值,这意味着即使 PLC 停止或断电,当 PLC 再次启动时,Tank2Level 也会存储相同的数据。它不会重置为起始值。
- 与 HMI 的可访问性
在全局数据块中,您可以定义变量在 HMI 变量表中是否可见。您还可以定义是否可以从 HMI 读取或写入该变量。见图7。
图 7 – HMI 的可访问性
全局数据块中任何声明的变量的默认设置是可以从 HMI 访问、读取和写入。如果您想对某个变量禁用此功能,则必须取消选中该变量的辅助功能选项。
模拟示例
到目前为止我们创建了一个全局数据块并在里面声明了一些变量。
现在我们将尝试运行该程序的模拟,看看我们是否可以更好地理解全局数据块是什么。
下面提供了两个 PLC 仿真。
测试变量的起始值
检查以下动画,解释全局数据块内变量的起始值。
动画1
动画1说明:
- 储罐液位参数的起始值为零,您可以在视频中看到它们正在通过模拟屏幕进行更改。
- 当 PLC 重新启动、断电然后再次上电时,您会看到这些值将重置为起始值为零。
- 之后,起始值分别更改为500、32654和-356,并且当PLC重新启动时,这些值更改为新的起始值。
- 请注意,当我们更改起始值时,我们必须再次将逻辑下载到 PLC;每次更改逻辑时都需要这样做。
测试全局 DB 中变量的保留选项
检查以下动画,解释全局数据块内变量的保留选项。
动画2
动画2说明:
- 首先,您会注意到 Tank2Level 的 Retain 属性现在处于活动状态。
- 您在视频中看到 3 个水箱的值正在改变。
- 当 PLC 停止然后再次启动时,Tank1Level 和 Tank3Level 重置回起始值 0,但 Tank2Level 保留其值 -22938
结论
全局数据块可以由 PLC 程序中存在的任何块从任何地方访问。您可以在全局数据库中声明任意数量的变量。
最佳实践技术是为逻辑的不同部分创建单独的数据块,以便非常容易地遵循您的逻辑。例如,需要由 HMI 读取或写入的所有变量的单独数据块。
Recommended Comments
There are no comments to display.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now