S7块填充指令

FILL_BLK:填充块


说明

可以使用“填充存储区”指令,用 IN 输入的值填充一个存储区域(目标范围)。从输出 OUT 指定的地址开始填充目标范围。可以使用参数 COUNT 指定复制操作的重复次数。执行该指令时,输入 IN 中的值将移动到目标范围,重复次数由参数 COUNT 的值指定。

仅当源范围和目标范围的数据类型相同时,才能执行该指令。

如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”:

当复制 ARRAY of BOOL 时,溢出的使能输出 ENO 将设置为“1”,直至超出 ARRAY 结构的字节限制。如果 COUNT 输入的值超出了 ARRAY 结构的字节限制,则使能输出 ENO 将复位为“0”。

说明

ARRAY 的使用

该指令读取源范围中所选元素的内容,并从指定索引开始将该内容向目标范围复制 n 次(n = 取决于参数 COUNT 的值)。

填充结构

与 ARRAY 中的元素相同,也可为结构(STRUCT、PLC 数据类型)中多个元素填充相同的值。待填充元素的结构中包含元素的元素数据类型必须相同。而且,该结构也可嵌入到其它结构中。

参数

下表列出了“填充块”指令的参数:

参数

声明

数据类型

存储区

说明

S7-1200

S7-1500

EN

Input

BOOL

BOOL

I、Q、M、D、L 或常量

使能输入

ENO

Output

BOOL

BOOL

I、Q、M、D、L

使能输出

IN

Input

二进制数、整数、浮点数、定时器、DATE、TOD、CHAR、WCHAR

二进制数、整数、浮点数、定时器、DATE、CHAR、WCHAR、TOD、LTOD

I、Q、M、D、L、P 或常量

用于填充目标范围的元素

COUNT

Input

USINT、UINT、UDINT

USINT、UINT、UDINT、ULINT

I、Q、M、D、L、P 或常量

移动操作的重复次数

OUT

Output

二进制数、整数、浮点数、定时器、DATE、TOD、CHAR、WCHAR

二进制数、整数、浮点数、定时器、DATE、CHAR、WCHAR、TOD、LTOD

D、L

目标范围中填充的起始地址

有关有效数据类型的更多信息,请参见“另请参见”。

ARRAY 的使用示例

以下示例说明了填充 ARRAY 时该指令的工作原理:

下表将通过具体的操作数值对该指令的工作原理进行说明:

参数

操作数

IN

FillValue

该操作数的数据类型为 INT。

COUNT

Tag_Count

3

OUT

TargetArea

操作数 TargetArea 的数据类型为 ARRAY[1..5] of INT。它包含 5 个 INT 数据类型的元素。

如果操作数“TagIn_1”和“TagIn_2”的信号状态为“1”,则执行该指令。该指令从操作数从第一个元素开始,将 #FillValue 的值复制到 #TargetArea 输出变量中三次。如果成功执行该指令,则将 TagOut 和“ENO”使能输出的信号状态置位为“1”。

该结构的使用示例

以下示例说明了填充结构时该指令的工作原理:

可使用以下元素创建一个全局数据块:

Data_block_1

数据类型

MyStruct1

STRUCT


Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct2

STRUCT


SubArray

ARRAY[1..2] of STRUCT


SubArray[1]

STRUCT


NestedStruct

STRUCT


Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

SubArray[2]

STRUCT


NestedStruct


STRUCT


Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

生成以下程序代码,寻址 MyStruct1 变量:

生成以下程序代码,寻址 MyStruct2 变量:

在这两个示例中,参数 IN 的值 10 将从 Member_2 开始复制 OUT 参数中两次。即,值 10 将复制到元素 Member_2 和 Member_3 中两次。另外两个元素 Member_1 和 Member_4 保持不变。如果该指令成功执行,则 TagOut 操作数的信号状态将置位为“1”。

UFILL_BLK:不可中断的存储区填充


说明

可以使用“不可中断的存储区填充”(Fill block uninterruptible) 指令,用 IN 输入的值填充一个存储区域(目标范围)。该指令不可中断。从输出 OUT 指定的地址开始填充目标范围。可以使用参数 COUNT 指定复制操作的重复次数。执行该指令时,输入 IN 中的值将移动到目标范围,重复次数由参数 COUNT 的值指定。

仅当源范围和目标范围的数据类型相同时,才能执行该指令。

说明

此移动操作不会被操作系统的其它任务打断。这也解释了在执行“不可中断的存储区填充”指令期间,CPU 报警响应次数增加的原因。

如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”:

当复制 ARRAY of BOOL 时,溢出的使能输出 ENO 将设置为“1”,直至超出 ARRAY 结构的字节限制。如果 COUNT 输入的值超出了 ARRAY 结构的字节限制,则使能输出 ENO 将复位为“0”。

说明

ARRAY 的使用

该指令读取源范围中所选元素的内容,并从指定索引开始将该内容向目标范围复制 n 次(n = 取决于参数 COUNT 的值)。

可以使用“不可中断的存储区填充”指令移动最多 16 KB 大小的数据。注意:CPU 对此有特定限制。

填充结构

与 ARRAY 中的元素相同,也可为结构(STRUCT、PLC 数据类型)中多个元素填充相同的值。待填充元素的结构中包含元素的元素数据类型必须相同。而且,该结构也可嵌入到其它结构中。

参数

下表列出了“不可中断的存储区填充”指令的参数:

参数

声明

数据类型

存储区

说明

S7-1200

S7-1500

EN

Input

BOOL

BOOL

I、Q、M、D、L 或常量

使能输入

ENO

Output

BOOL

BOOL

I、Q、M、D、L

使能输出

IN

Input

二进制数、整数、浮点数、定时器、DATE、CHAR、WCHAR、TOD

二进制数、整数、浮点数、定时器、DATE、CHAR、WCHAR、TOD、LTOD

I、Q、M、D、L、P 或常量

用于填充目标范围的元素。

COUNT

Input

USINT、UINT、UDINT

USINT、UINT、UDINT、ULINT

I、Q、M、D、L、P 或常量

移动操作的重复次数

OUT

Output

二进制数、整数、浮点数、定时器、DATE、CHAR、WCHAR、TOD

二进制数、整数、浮点数、定时器、DATE、CHAR、WCHAR、TOD、LTOD

D、L

目标范围中填充的起始地址。

有关有效数据类型的更多信息,请参见“另请参见”。

ARRAY 的使用示例

以下示例说明了填充 ARRAY 时该指令的工作原理:

下表将通过具体的操作数值对该指令的工作原理进行说明:

参数

操作数

IN

FillValue

该操作数的数据类型为 INT。

COUNT

Tag_Count

3

OUT

TargetArea

操作数 TargetArea 的数据类型为 ARRAY[1..5] of INT。它包含 5 个 INT 数据类型的元素。

如果操作数“TagIn_1”和“TagIn_2”的信号状态为“1”,则执行该指令。该指令从操作数从第一个元素开始,将 #FillValue 的值复制到 #TargetArea 输出变量中三次。此移动操作不会被操作系统的其它任务打断。如果成功执行该指令,则将 TagOut 和“ENO”使能输出的信号状态置位为“1”。

该结构的使用示例

以下示例说明了填充结构时该指令的工作原理:

可使用以下元素创建一个全局数据块:

Data_block_1

数据类型

MyStruct1

STRUCT


Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

MyStruct2

STRUCT


SubArray

ARRAY[1..2] of STRUCT


SubArray[1]

STRUCT


NestedStruct

STRUCT


Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

SubArray[2]

STRUCT


NestedStruct


STRUCT


Member_1

INT

Member_2

INT

Member_3

INT

Member_4

INT

生成以下程序代码,寻址 MyStruct1 变量:

生成以下程序代码,寻址 MyStruct2 变量:

在这两个示例中,参数 IN 的值 10 将从 Member_2 开始复制 OUT 参数中两次。即,值 10 将复制到元素 Member_2 和 Member_3 中两次。另外两个元素 Member_1 和 Member_4 保持不变。如果该指令成功执行,则 TagOut 操作数的信号状态将置位为“1”。

展开阅读全文

页面更新:2024-05-01

标签:指令   定时器   整数   示例   数据类型   元素   参数   目标   结构   操作

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top