1、简介

功能块是一个包含标准处理功能的基本程序单元。该标准处理功能事先已定义好。一旦功能块已定义好,用户即可将功能块嵌入程序中,设置 I/O 。这样,即可使用功能。
由于是标准处理功能,因此,功能块不包含实际地址,是变量。用户在变量中设置地址或常数。
这些地址或常数称作参数。变量自身所使用的地址则由 CX- Programmer 自动分配于每个程序。
采用CX- Programmer将单个功能块保存为单个文件而且单个功能块还可用于其他 PLC 程序中。因此,标准处理功能可做成库。
image.png

2、功能块结构

A、功能块定义

功能块定义为包含在功能块中的程序。每个功能块定义包含算法和变量定义。算法和变量定义示于下图。
image.png
a、算法
标准化编程采用变量名编写而非实际的 I/O 存储地址。在 CX- Programmer 中,采用梯级编程或结构化文本写算法

b、变量定义
变量表列出了每个变量用法(输入、输出或内部使用)和属性(数据类型等)。

B、功能块实例

要将实际功能块定义用于程序中,则应创建一份功能块图并将其插入程序中。嵌入程序中的每个功能块定义称作 “实例”或 “功能块实例”。每个实例均有一个标识符—称作 “实例名”。要生成实例,则可使用单个功能块定义处理相同功能的不同 I/O 数据。

image.png
每个实例名作为一个文件名注册于全局符号表中。
image.png

3、功能块变量

在功能块中,地址不作为实际的 I/O 存储地址输入 (见注解)。它们作为变量名输入。每当创建实例时,CX- Programmer 自动将变量所用的实际地址分配在指定的 I/O 存储区域内。
image.png

A、变量用法

可以支持以下变量类型 (用法):
内部: 在实例中只能使用内部变量。这些内部变量不能直接用来传输数据
至 I/O 参数或从 I/O 参数中上传数据。
输入: 输入变量可以从实例外的输入参数中输入数据。默认输入变量为传
输输入条件数据的 EN (Enable)变量。
输出: 输出变量可以输出数据至实例外的输出参数。默认输出变量为传输
实例执行状态的 ENO (Enable Out)变量。
外部: 外部变量是事先由 CX-Programmer 寄存的系统定义变量 (例如,
条件标志和一些辅助区域位)或用户定义的全局符号(用于每个实
例数中)。

B、变量属性

变量名: 变量名可用来识别功能块中的变量。 如果其他功能块也使用了相同的名称,这也没有什么问题。
数据类型: 在下面数据类型中,选择其中一个作为变量,BOOL、INT、UINT、DINT、UDINT、LINT、ULINT、WORD、DWORD、LWORD,REAL、 LREAL、 TIMER、 COUNTER

C、AT 设置 (分配实际地址)

将变量设于特殊的 I/O 存储地址中而非系统自动分配地址。在这此属性中,用户可输入所需的 I/O 存储地址以规定特殊地址。该属性仅为内部变量而设。即使设置了具体的地址,变量名还是必须用于算法中。

D、数组设置

变量可作为具有相同属性的单个数据数组来处理。要将变量转换为数组,则需规定数组以及组成数组的最多单元数。该属性仅为内部变量而设。

E、初始值

在首次执行实例之前,这是设置于变量中的初始值。然后,执行实例时修改数值。例如,布尔 (BOOL)变量(位)设为 1 (TRUE)或 0 (FALSE)。 WORD变量设在 0 到 65,535 (0000 到 FFFF 十六进制)值之间。如果未设置初始值,则变量设为 0。例如,布尔变量为 0(FALSE)。WORD 变量为 0000 十六进制。

F、保持

如果 PLC 再次接通开始运行时需要保持变量数据不变,则选择保持选项。设置程序=>选择保持选项。

4、变量地址内部分配

当采用功能块定义创建实例时, CX-Programmer 内部分配变量地址。除了通过AT设置属性而分配了实际地址的变量之外,所有注册于功能块定义的变量均分配地址。
image.png

*设置变量内部分配区域 例区域中。
用户可以在系统内部分配的地址处设置功能块实例。系统自动将变量分配于用户所设置的合适实例区域中。

*设置程序
在 PLC 菜单中选择 Function Block Memory - Function Block Memory Allocation。在功能块存储器分配对话框中设置这些区域。

*功能块实例区域
CS/CJ- 系列 CPU 单元 3.0 版或以后版本和 NSJ 控制器
image.png

FQM1 柔性运动控制器
image.png

*功能块保持区域字 (H512到 H1535)
功能块保持区域字分配在 H512 到 H1535 之间。这些字与程序标准保持区域中的字(H000 到 H511)是不一样的而且这些字只能用于功能块实例区域(内部分配的变量区域)。这些字不能作为指令操作数。如果在创建功能块时输入,则显示红色。虽然创建功能块时可以输入字,但在检查程序时会发现字错误。如果该区域仍保留于功能块存储器分配对话框中,则将电源接通 / 切断或在开始操作时清除区域而不保留数值。

5、使用功能块程序

一旦创建了功能块定义以及算法实例,执行时可以调用实例。此外,创建的功能块定义保存为文件。这样,就可用于其他项目中使用 (PLCs)。

A、创建功能块

在工程区右击“功能块”,点击“插入功能块”,有“梯形图”、“结构文本”、“从文件…”,选择“梯形图”就可以按照梯形图的模式编辑功能块。
image.png
弹出的对话框里填写功能块名称,作者等。按“Enter”键即可新建一个功能块模板。
image.png
在此梯形图编辑区内,就能编辑需要的功能块
image.png
编写了功能块程序,就能在程序里调用
image.png
image.png

B、功能块反复使用

采用以下程序将功能块定义保存为文件并用于另一 PLC 程序中。
a、选择想保存的功能块,将其保存为功能块定义文件 (.cxf)。
b、打开另一 PLC 项目,打开 / 读取已保存的功能块定义文件 (
.cxf)。
c、创建新程序时,将功能块定义嵌入程序中。
image.png