UMOVE_BLK:不可中断的存储区移动 (S7-1500) 说明 可以使用“不可中断的存储区移动”(Moveblock uninterruptible) 指令将一个存储区(源范围)的数据移动到另一个存储区(目标范围)中。该指令不可中断。使用参数 COUNT 可以 指定将移动到目标范围中的元素个数。可通过 IN参数处的元素宽度来指定待移动元素的宽度。局部操作数 #DestField 使用了一 个在编程块时仍然未 知的 PLC 数据类型。(ARRAY[10..20] of "MOVE_UDT") 将两个元素从源范围(从 MOVE_UDT 的 ARRAY [0..10]的第 4 个元素开始)移动到目标范围。 复制的元素将从第 4 个元素开始粘贴到 ARRAY [10..20] of MOVE_UDT中。 说明 有关 MOVE_BLK_VARIANT 指令的更多信息,请参见西门子工业在线支持网站中的以下文 章: 在 STEP 7(TIA Portal)中,如何将存储区和结构化数据从一个数据块复制到另一个数据块中仅当源范围和目标范围的数据类型相同时,才能执行该指令。 说明不可中断的移动 此移动操作不会被操作系统的其它任务打断。这也解释了在执行“不可中断的存储区移动” 指令期间,CPU中断响应次数增加的原因。 如果复制的数据量超出输入 IN 或输出 OUT 可容纳的量,输出 OUT 的值将无效。可以使用“不可中断的存储区移动”指令移动Zui多 16 KB 大小的数据。注意:CPU 对此有特 定限制。 参数 下表列出了该指令的参数:参数 声明 数据类型 存储区 说明 IN 1) Input 二进制数、整 数、浮点数、定 时器、TOD、 LTOD、DATE、CHAR、WCHAR D、L 待复制源区域中的首个元 素 COUNT Input USINT、UINT、 UDINT、ULINTI、Q、M、D、 L、P 或常数 要从源范围复制到目标范 围的元素个数 OUT 1) Output 二进制数、整 数、浮点数、定时器、TOD、 LTOD、DATE、 CHAR、WCHAR D、L 源范围内容要复制到的目 标范围中的首个元素 1) ARRAY结构中的元素只能使用指定的数据类型。 可以从“???”下拉列表中选择该指令的数据类型。有关有效数据类型的更多信息,请参见“另请参见”。
FILL_BLK:填充块(S7-1500) 说明 可以使用“填充存储区”指令,用 IN 输入的值填充一个存储区域(目标范围)。从输出 OUT指定的地址开始填充目标范围。可以使用参数 COUNT 指定复制操作的重复次数。执行该指 令时,输入 IN中的值将移动到目标范围,重复次数由参数 COUNT 的值指定。 仅当源范围和目标范围的数据类型相同时,才能执行该指令。变更元素的Zui大值为 ARRAY 或结构中的元素个数。如果复制的数据超过 OUT 输出中的元素, 则将返回一个意外结果。 说明ARRAY 的使用 该指令读取源范围中所选元素的内容,并从指定索引开始将该内容向目标范围复制 n 次(n = 取决于参数 COUNT的值)。 填充结构 与 ARRAY 中的元素相同,也可为结构(STRUCT、PLC 数据类型)中多个元素填充相同的值。待填充元素的结构中包含元素的元素数据类型必须相同。而且,该结构也可嵌入到其它结构 中。下表列出了该指令的参数: 参数 声明 数据类型存储区 说明 IN Input 二进制数、整 数、浮点数、定 时器、TOD、 LTOD、DATE、 CHAR、WCHARI、Q、M、D、 L、P 或常量 用于填充目标范围的元素 COUNT Input USINT、UINT、 UDINT、ULINTI、Q、M、D、 L、P 或常量 移动操作的重复次数 OUT Output 二进制数、整 数、浮点数、定 时器、TOD、LTOD、DATE、 CHAR、WCHAR D、L 目标范围中填充的起始地 址 可以从“???”下拉列表中选择该指令的数据类型。有关有效数据类型的更多信息,请参见“另请参见”。 ARRAY 的使用示例 以下示例说明了填充 ARRAY时该指令的工作原理:下表将通过具体的操作数值对该指令的工作原理进行说明: 参数 操作数 值 IN FillValue该操作数的数据类型为 INT。 COUNT Tag_Count 3 OUT TargetArea 操作数 TargetArea的数据类 型为 ARRAY[1..5] of INT。它 包含 5 个 INT 数据类型的元 素。 该指令从操作数从第一个元素开始,将#FillValue 的值复制到 #TargetArea 输出变量中三次。 该结构的使用示例以下示例说明了填充结构时该指令的工作原理: 可使用以下元素创建一个全局数据块:UFILL_BLK:不可中断的存储区填充(S7-1500) 说明 可以使用“不可中断的存储区填充”(Fill block uninterruptible) 指令,用 IN输入的值填充一 个存储区域(目标范围)。该指令不可中断。从输出 OUT 指定的地址开始填充目标范围。可 以使用参数 COUNT指定复制操作的重复次数。执行该指令时,输入 IN 中的值将移动到目标 范围,重复次数由参数 COUNT 的值指定。仅当源范围和目标范围的数据类型相同时,才能执行该指令。 说明此移动操作不会被操作系统的其它任务打断。这也解释了在执行“不可中断的存储区填充” 指令期间,CPU 报警响应次数增加的原因。变更元素的Zui大值为 ARRAY 或结构中的元素个数。如果复制的数据超过 OUT 输出中的元素, 则将返回一个意外结果。 说明ARRAY 的使用 该指令读取源范围中所选元素的内容,并从指定索引开始将该内容向目标范围复制 n 次(n = 取决于参数 COUNT的值)。 可以使用“不可中断的存储区填充”指令移动Zui多 16 KB 大小的数据。注意:CPU 对此有特 定限制。 填充结构 与ARRAY 中的元素相同,也可为结构(STRUCT、PLC 数据类型)中多个元素填充相同的值。待填充元素的结构中包含元素的元素数据类型必须相同。而且,该结构也可嵌入到其它结构 中。下表列出了该指令的参数: 参数 声明 数据类型存储区 说明 IN Input 二进制数、整 数、浮点数、定 时器、TOD、 LTOD、DATE、 CHAR、WCHARI、Q、M、D、 L、P 或常量 用于填充目标范围的元素 COUNT Input USINT、UINT、 UDINT、ULINTI、Q、M、D、 L、P 或常量 移动操作的重复次数 OUT Output 二进制数、整 数、浮点数、定 时器、TOD、LTOD、DATE、 CHAR、WCHAR D、L 目标范围中填充的起始地 址 可以从“???”下拉列表中选择该指令的数据类型。有关有效数据类型的更多信息,请参见“另请参见”。 ARRAY 的使用示例 以下示例说明了填充 ARRAY时该指令的工作原理:该指令从操作数从第一个元素开始,将 #FillValue 的值复制到 #TargetArea 输出变量中三次。此移动操作不会被操作系统的其它任务打断。 该结构的使用示例 以下示例说明了填充结构时该指令的工作原理:可使用以下元素创建一个全局数据块:SCATTER:将位序列解析为单个位 (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)。 说明 该指令的可用性 该指令可用于 S7-1500 系列 CPU 固件版本V2.1 及以上版本。 例如,通过这种方式您可以解析状态字,并使用索引读取和改变单个位的状态。使用GATHER,可再次将各个位组合为位序列。 如果 ARRAY 中包含的 BOOL 元素数目不足,则使能输出 ENO将返回信号状态“0”。下表列出了该指令的参数: 参数 声明 数据类型 存储区 说明 IN Input BYTE、WORD、DWORD、 LWORD I、Q、M、D、L 所解析的位序列 这些值不得位于 的 I/O 区域或工 艺对象的 DB 内。 OUTOutput ARRAY[*] of BOOL、STRUCT 或 PLC 数据类型 *:8、16、32 或 64 个元素I、Q、M、D、L 保存 ARRAY、 STRUCT 或 PLC 数据类型中的各 个位有关有效数据类型的更多信息,请参见“另请参见”。下表将通过具体的操作数值对该指令的工作原理进行说明: 参数 操作数 数据类型 INSourceWord WORD(16 位) OUT DestinationArray 操作数“DestinationArray”的数据类型为 ARRAY[0..15] of BOOL。其中包含 16 个元 素,因此与待解析 WORD 的 长度相同。 将 WORD数据类型的操作数 #SourceWord 解析为单个位 (16),并将其分配给操作数 #DestinationArray的各个元素。下表将通过具体的操作数值对该指令的工作原理进行说明: 参数 操作数 数据类型 IN SourceWord WORD(16位) OUT DestinationUDT 操作数“DestinationUDT”为 PLC 数据类型 (UDT),其中包 含 16个元素,因此与待解析 WORD 的长度相同。 将 WORD 数据类型的操作数 #SourceWord 解析为单个位(16),并将其分配给操作数 #DestinationUDT 的各个元素。