SIEMENS西门子 S120伺服电机 1FK7022-5AK71-1HB5
FILL_BLK:填充块 (S7-1200, S7-1500) 说明 可以使用“填充存储区”指令,用 IN 输入的值填充一个存储区域(目标范围)。从输出 OUT 指定的地址开始填充目标范围。可以使用参数 COUNT 指定复制操作的重复次数。执行该指 令时,输入 IN 中的值将移动到目标范围,重复次数由参数 COUNT 的值指定。 仅当源范围和目标范围的数据类型相同时,才能执行该指令。下表列出了该指令的参数: 参数 声明 数据类型 存储区 说明 S7-1200 S7-1500 IN 1) Input 二进制数、整 数、浮点数、 定时器、 DATE、 CHAR、 WCHAR、 TOD 二进制数、 整数、浮点 数、定时 器、 DATE、 CHAR、 WCHAR、 TOD、 LTOD D、L 待复制源区域 中的首个元素 COUNT Input USINT、 UINT、UDINT USINT、 UINT、 UDINT、 ULINT I、Q、M、 D、L、P 要从源范围复 制到目标范围 的元素个数 OUT 1) Output 二进制数、整 数、浮点数、 定时器、 DATE、 CHAR、 WCHAR、 TOD 二进制数、 整数、浮点 数、定时 器、 DATE、 CHAR、 WCHAR、 TOD、 LTOD D、L 源范围内容要 复制到的目标 范围中的首个 元素 1) ARRAY 结构中的元素只能使用指定的数据类型。下表将通过具体的操作数值对该指令的工作原理进行说明: 参数 操作数 值 IN a_array[2] 操作数 a_array 的数据类型为 ARRAY[0..5] of INT。它包含 6 个 INT 数据类型的元素。 COUNT Tag_Count 3 OUT b_array[1] 操作数 ARRAY[0..6] of INT 的 数据类型为 b_array。它包含 7 个 INT 数据类型的元素。 从第三个元素开始,该指令选择 #a_array 变量中的三个 INT 元素,并将其内容复制到 #b_array 输出变量中,从第二个元素开始。此移动操作不会被操作系统的其它任务打断。 说明 有关 UMOVE_BLK 指令的更多信息,请参见西门子工业在线支持网站中的以下文章: 在 STEP 7 中 (TIA Portal) 中,如何将一个数据块中的存储区和结构化数据复制到另一个数据 块中?变更元素的Zui大值为 ARRAY 或结构中的元素个数。如果复制的数据超过 OUT 输出中的元素, 则将返回一个意外结果。 说明 ARRAY 的使用 该指令读取源范围中所选元素的内容,并从指定索引开始将该内容向目标范围复制 n 次(n = 取决于参数 COUNT 的值)。 填充结构 与 ARRAY 中的元素相同,也可为结构(STRUCT、PLC 数据类型)中多个元素填充相同的值。 待填充元素的结构中包含元素的元素数据类型必须相同。而且,该结构也可嵌入到其它结构 中。
下表列出了该指令的参数: 参数 声明 数据类型 存储区 说明 S7-1200 S7-1500 IN Input 二进制数、整 数、浮点数、 定时器、 TOD、DATE、 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 二进制数、整 数、浮点数、 定时器、 TOD、DATE、 CHAR、 WCHAR 二进制数、整 数、浮点数、定 时器、DATE、 CHAR、 WCHAR、 TOD、LTOD D、L 目标范围中填 充的起始地址 有关有效数据类型的更多信息,请参见“另请参见”。UFILL_BLK:不可中断的存储区填充 (S7-1200, 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 数据类型)中多个元素填充相同的值。 待填充元素的结构中包含元素的元素数据类型必须相同。而且,该结构也可嵌入到其它结构 中。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 元素数目不足。SCATTER_BLK:将 ARRAY of <位序列> 中的元素解析为单个位 (S7-1200, S7-1500) 说明 “将位序列 ARRAY 的元素解析为单个位”指令用于将 BYTE、WORD、DWORD 或 LWORD 数 据类型的 ARRAY 分解为单个位,并保存在元素类型仅为布尔型的 ARRAY of BOOL、匿名 STRUCT 或 PLC 数据类型中。在 COUNT_IN 参数中,可指定待解析源 ARRAY 中的元素数目。 IN 参数中源 ARRAY 的元素数量可能多于 COUNT_IN 参数中的指定数量。要保存所解析位序 列的各个位,ARRAY of BOOL、匿名 STRUCT 或 PLC 数据类型中必须包含足够的元素数量。但 这可能会增加目标存储区空间。 说明 多维 ARRAY of BOOL 如果 ARRAY 是一个多维 ARRAY of BOOL,即使维度的填充位未明确声明且不可访问,但仍 会进行计数。 示例 1:ARRAY[1..10,0..4,1..2] of BOOL 的处理方式与 ARRAY[1..10,0..4,1..8] of BOOL 或 ARRAY[0..399] of BOOL 类似。 示例 2:在 IN 参数处,将互连一个 ARRAY[0..5] of WORD (sourceArrayWord[2])。参数 COUNT_IN 的值为“3”。在 OUT 参数处,将互连一个 ARRAY[0..1,0..5,0..7] of BOOL (destinationArrayBool[0,0,0])。参数 IN 和参数 OUT 中两个数组的大小均为 96 位。ARRAY of WORD 将解析为 48 个单个位。 说明 如果目标 ARRAY 的 ARRAY 下限不是“0”,请注意以下几点: 出于性能方面的原因,索引必须始终以 BYTE、WORD、DWORD 或 LWORD 限制开始。这就 意味着索引必须从 ARRAY 的下限处开始计算。通过以下公式进行相应计算: 有效下标 = ARRAY 下限 + n(位序列数量)× 所需位序列位数 对于 ARRAY[-2..45] of BOOL 和位序列 WORD,计算如下所示: • 有效索引 (-2) = -2 + 0 × 16 • 有效索引 (14) = -2 + 1 × 16 • 有效索引 (30) = -2 + 2 × 16 相关示例,请参见如下内容。 说明 该指令的可用性 该指令可用于固件版本为 V4.2 及以上版本的 S7-1200 系列 CPU 和固件版本为 V2.1 及以上 版本的 S7-1500 系列 CPU。例如,通过这种方式您可以解析状态字,并使用索引读取和改变单个位的状态。使用 GATHER,可再次将各个位组合为位序列。 如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”: • 使能输入 EN 的信号状态为“0”。 • 源 ARRAY 中的元素数量少于 COUNT_IN 参数中的指定数量。 • 目标 ARRAY 的索引不以 BYTE、WORD、DWORD 或 LWORD 限制开始。在这种情况中,将 不向 ARRAY of BOOL 中写入任何结果。 • ARRAY[*] of BOOL、STRUCT 或 PLC 数据类型未提供所需的元素数量。 – S7-1500-CPU:此时,将尽可能多地解析位序列并写入 ARRAY of BOOL、匿名 STRUCT 或 PLC 数据类型中。其余位序列将不考虑在内。 – S7-1200-CPU:不含复制过程。 说明 S7-1200-CPU:使能输出 ENO = 0 使能输出 ENO 的信号状态为“0”时,不会将任何数据写入输出参数 OUT 中。