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”。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved