UMOVE_BLK:不可中断的存储区移动 (S7-1200, S7-1500) 说明可以使用“不可中断的存储区移动”(Move block uninterruptible) 指令将一个存储区(源范围)的数据移动到另一个存储区(目标范围)中。该指令不可中断。使用参数 COUNT 可以 指定将移动到目标范围中的元素个数。可通过输入IN 中元素的宽度来定义元素待移动的宽度。 仅当源范围和目标范围的数据类型相才能执行该指令。 说明此移动操作不会被操作系统的其它任务打断。这也解释了在执行“不可中断的存储区移动” 指令期间,CPU 中断响应次数增加的原因。参数 声明数据类型 存储区 说明 DEST_INDE X Input DINT I、Q、M、D、L 或常量 定义了目标存储区的起点。 •DEST_INDEX 参数将从 0 开始计算。如果参数 DEST 中指定了 ARRAY,则参数 DEST_INDEX 中的整数将指定待复制目标范围 中的第一个元素。而与 所声明的 ARRAY 限值 无关。 • 如果参数 DEST 中未指 定任何ARRAY,则将参 数 DEST_INDEX 赋值为 “0”。 DEST Output 1) VARIANT L(可在块接口的“Input”、 “InOut”和 “Temp”部分进行 声明。) 源块中内容将复制到的目 标区域。 RET_VAL OutputINT I、Q、M、D、L 错误信息: 如果在该指令执行期间出 错,则在参数 RET_VAL 中 输出一个错误代码。 1) DEST参数声明为 Output,因为数据流入变量。但此变量本身在块接口中必须声明为 InOut。 2) 参数 SRC 的数据类型不能为BOOL 和 BOOL 型 ARRAY。 有关有效数据类型的更多信息,请参见“另请参见”。
如果满足下列条件之一,使能输出 ENO将返回信号状态“0”: • 使能输入 EN 的信号状态为“0”。 • 移动的数据量超出输入 IN 或输出 OUT 所能容纳的数据量。当复制 ARRAY of BOOL 时,溢出的使能输出 ENO 将设置为“1”,直至超出 ARRAY 结构的字 节限制。如果COUNT 输入的值超出了 ARRAY 结构的字节限制,则使能输出 ENO 将复位为 “0”。 说明 ARRAY 的使用该指令用于从指定索引开始,将定义元素中 n 个元素(n 取决于参数 COUNT 的值)的内容 从源范围复制到目标范围。使用“不可中断的块移动”(Move block uninterruptible) 指令,Zui多可移动 16 KB 大小的数据。注意:CPU 对此有特定限制。要从源范围 复制到目标 范围的元素 个数 OUT 1) Output 二进制数、 整数、浮点 数、定时器、 DATE、 CHAR、 WCHAR、 TOD 二进制数、 整数、浮点 数、定时 器、 DATE、 CHAR、 WCHAR、TOD、 LTOD D、L D、L 源范围内容 要复制到的 目标范围中 的首个元素 1)ARRAY•结构中的元素只能使用指定的数据类型。 有关有效数据类型的更多信息,请参见“另请参见”。“a_array”操作数的数据类型为 ARRAY[0..5] of INT。它包 含 6 个 INT 数据类型的元素。 COUNT Tag_Count 3 OUTb_array[1] “b_array”操作数的数据类型 为 ARRAY[0..6] of INT。它包 含 7 个 INT数据类型的元素。 如果操作数“TagIn_1”和“TagIn_2”的信号状态为“1”,则执行该指令。从第三个元素开始,该 指令选择#a_array 变量中的三个 INT 元素,并将其内容复制到 #b_array 输出变量中,从第二个元素开始。此移动操作不会被操作系统的其它任务打断。如果该指令执行成功,则使能 输出 ENO的信号状态为“1”,置位输出“TagOut”。FILL_BLK:填充块 (S7-1200, S7-1500) 说明可以使用“填充存储区”指令,用 IN 输入的值填充一个存储区域(目标范围)。从输出 OUT 指定的地址开始填充目标范围。可以使用参数COUNT 指定复制操作的重复次数。执行该指 令时,输入 IN 中的值将移动到目标范围,重复次数由参数 COUNT 的值指定。仅当源范围和目标范围的数据类型相才能执行该指令。 如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”: • 使能输入EN 的信号状态为“0”。 • 变更元素的Zui大值为 ARRAY 或结构中的元素个数。如果复制的数据超过 OUT 输出中的元素,则将返回一个意外结果。 当复制 ARRAY of BOOL 时,溢出的使能输出 ENO 将设置为“1”,直至超出 ARRAY结构的字 节限制。如果 COUNT 输入的值超出了 ARRAY 结构的字节限制,则使能输出 ENO 将复位为 “0”。 说明ARRAY 的使用 该指令读取源范围中所选元素的内容,并从指定索引开始将该内容向目标范围复制 n 次(n = 取决于参数 COUNT的值)。 填充结构 与 ARRAY 中的元素相同,也可为结构(STRUCT、PLC 数据类型)中多个元素填充相同的值。待填充元素的结构中包含元素的元素数据类型必须相同。该结构也可嵌入到其它结构 中。操作数 TargetArea 的数据类 型为ARRAY[1..5] of INT。它 包含 5 个 INT 数据类型的元 素。如果操作数“TagIn_1”和“TagIn_2”的信号状态为“1”,则执行该指令。该指令从操作数从第一 个元素开始,将#FillValue 的值复制到 #TargetArea 输出变量中三次。如果成功执行该指令, 则将 TagOut和“ENO”使能输出的信号状态置位为“1”。在这两个示例中,参数 IN 的值 10 将从 Member_2 开始复制 OUT参数中两次。即,值 10 将 复制到元素 Member_2 和 Member_3 中两次。两个元素 Member_1 和Member_4 保持 不变。如果该指令成功执行,则 TagOut操作数的信号状态将置位为“1”。UFILL_BLK:不可中断的存储区填充 (S7-1200, S7-1500) 说明可以使用“不可中断的存储区填充”(Fill block uninterruptible) 指令,用 IN 输入的值填充一个存储区域(目标范围)。该指令不可中断。从输出 OUT 指定的地址开始填充目标范围。可 以使用参数 COUNT指定复制操作的重复次数。执行该指令时,输入 IN 中的值将移动到目标 范围,重复次数由参数 COUNT 的值指定。仅当源范围和目标范围的数据类型相才能执行该指令。 说明此移动操作不会被操作系统的其它任务打断。这也解释了在执行“不可中断的存储区填充” 指令期间,CPU 报警响应次数增加的原因。如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”: • 使能输入 EN 的信号状态为“0”。 • 变更元素的Zui大值为ARRAY 或结构中的元素个数。如果复制的数据超过 OUT 输出中的元 素,则将返回一个意外结果。 当复制 ARRAY of BOOL时,溢出的使能输出 ENO 将设置为“1”,直至超出 ARRAY 结构的字 节限制。如果 COUNT 输入的值超出了 ARRAY结构的字节限制,则使能输出 ENO 将复位为 “0”。 说明 ARRAY 的使用该指令读取源范围中所选元素的内容,并从指定索引开始将该内容向目标范围复制 n 次(n = 取决于参数 COUNT 的值)。可以使用“不可中断的存储区填充”指令移动Zui多 16 KB 大小的数据。注意:CPU 对此有特 定限制。填充结构 与 ARRAY中的元素相同,也可为结构(STRUCT、PLC 数据类型)中多个元素填充相同的值。待填充元素的结构中包含元素的元素数据类型必须相同。该结构也可嵌入到其它结构中。如果操作数“TagIn_1”和“TagIn_2”的信号状态为“1”,则执行该指令。该指令从操作数从第一 个元素开始,将#FillValue 的值复制到 #TargetArea 输出变量中三次。此移动操作不会被操作系统的其它任务打断。如果成功执行该指令,则将 TagOut 和“ENO”使能输出的信号状态 置位为“1”。 该结构的使用示例以下示例说明了填充结构时该指令的工作原理:在这两个示例中,参数 IN 的值 10 将从 Member_2 开始复制 OUT参数中两次。即,值 10 将 复制到元素 Member_2 和 Member_3 中两次。两个元素 Member_1 和Member_4 保持 不变。如果该指令成功执行,则 TagOut操作数的信号状态将置位为“1”。SCATTER:将位序列解析为单个位 (S7-1200, S7-1500) 说明指令“将位序列解析为单个位”用于将数据类型为 BYTE、WORD、DWORD 或 LWORD 的变 量解析为单个位,并保存在ARRAY of BOOL、匿名 STRUCT 或仅包含有布尔型元素的 PLC 数 据类型中。 说明 多维 ARRAY of BOOL使用“将位序列解析为单个位”指令时,不支持多维 ARRAY of BOOL。 说明 ARRAY、STRUCT 或 PLC数据类型的长度 ARRAY、匿名 STRUCT 或 PLC 数据类型中包含的元素数目必须恰好等于位序列指定的数量。例如,如果数据类型为 BYTE,则 ARRAY、STRUCT 或 PLC 数据类型中必须恰好包含 8 个元素 (WORD =16、DWORD = 32、LWORD = 64)。该指令的可用性 该指令可用于固件版本为 V4.2 及以上版本的 S7-1200系列 CPU 和固件版本为 V2.1 及以上 版本的 S7-1500 系列 CPU。例如,通过这种方式您可以解析状态字,并使用索引读取和改变单个位的状态。使用 GATHER,可将各个位组合为位序列。如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”: • 使能输入 EN 的信号状态为“0”。 • ARRAY、STRUCT或 PLC 数据类型中包含的 BOOL 元素数目不足。