FILLBLK:填充块 说明 可以使用填充存储区指令,用IN输入的值填充一个存储区域(目标范围)。从输出OUT指定的地址开始填充目标范围。可以使用参数COUNT指定复制操作的重复次数。执行该指令时,输入IN中的值将移动到目标范围,重复次数由参数COUNT的值指定。 仅当源范围和目标范围的数据类型相同时,才能执行该指令。 如果满足下列条件之一,则使能输出ENO的信号状态为0:使能输入EN的信号状态为0。变更元素的最大值为ARRAY或结构中的元素个数。如果复制的数据超过OUT输出中的元素,则将返回一个意外结果。 当复制ARRAYofBOOL时,溢出的使能输出ENO将设置为1,直至超出ARRAY结构的字节限制。如果COUNT输入的值超出了ARRAY结构的字节限制,则使能输出ENO将复位为0。说明 ARRAY的使用 该指令读取源范围中所选元素的内容,并从指定索引开始将该内容向目标范围复制n次(n取决于参数COUNT的值)。 填充结构 与ARRAY中的元素相同,也可为结构(STRUCT、PLC数据类型)中多个元素填充相同的值。待填充元素的结构中包含元素的元素数据类型必须相同。而且,该结构也可嵌入到其它结构中。 参数 下表列出了填充块指令的参数: 参数 声明 数据类型 存储区 说明 S71200 S71500 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 TagCount 3hrOUT TargetArea 操作数TargetArea的数据类型为ARRAY〔1。。5〕ofINT。它包含5个INT数据类型的元素。 如果操作数TagIn1和TagIn2的信号状态为1,则执行该指令。该指令从操作数从第一个元素开始,将FillValue的值复制到TargetArea输出变量中三次。如果成功执行该指令,则将TagOut和ENO使能输出的信号状态置位为1。 该结构的使用示例 以下示例说明了填充结构时该指令的工作原理: 可使用以下元素创建一个全局数据块: Datablock1 数据类型 MyStruct1 STRUCT Member1 INT Member2 INT Member3 INT Member4 INT MyStruct2 STRUCT SubArray ARRAY〔1。。2〕ofSTRUCT SubArray〔1〕 STRUCT NestedStruct STRUCT Member1 INT Member2 INT Member3 INT Member4 INT SubArray〔2〕 STRUCT NestedStruct STRUCT Member1 INT Member2 INT Member3 INT Member4 INT 生成以下程序代码,寻址MyStruct1变量: 生成以下程序代码,寻址MyStruct2变量: 在这两个示例中,参数IN的值10将从Member2开始复制OUT参数中两次。即,值10将复制到元素Member2和Member3中两次。另外两个元素Member1和Member4保持不变。如果该指令成功执行,则TagOut操作数的信号状态将置位为1。 UFILLBLK:不可中断的存储区填充 说明 可以使用不可中断的存储区填充(Fillblockuninterruptible)指令,用IN输入的值填充一个存储区域(目标范围)。该指令不可中断。从输出OUT指定的地址开始填充目标范围。可以使用参数COUNT指定复制操作的重复次数。执行该指令时,输入IN中的值将移动到目标范围,重复次数由参数COUNT的值指定。 仅当源范围和目标范围的数据类型相同时,才能执行该指令。说明 此移动操作不会被操作系统的其它任务打断。这也解释了在执行不可中断的存储区填充指令期间,CPU报警响应次数增加的原因。 如果满足下列条件之一,则使能输出ENO的信号状态为0:使能输入EN的信号状态为0。变更元素的最大值为ARRAY或结构中的元素个数。如果复制的数据超过OUT输出中的元素,则将返回一个意外结果。 当复制ARRAYofBOOL时,溢出的使能输出ENO将设置为1,直至超出ARRAY结构的字节限制。如果COUNT输入的值超出了ARRAY结构的字节限制,则使能输出ENO将复位为0。说明 ARRAY的使用 该指令读取源范围中所选元素的内容,并从指定索引开始将该内容向目标范围复制n次(n取决于参数COUNT的值)。 可以使用不可中断的存储区填充指令移动最多16KB大小的数据。注意:CPU对此有特定限制。 填充结构 与ARRAY中的元素相同,也可为结构(STRUCT、PLC数据类型)中多个元素填充相同的值。待填充元素的结构中包含元素的元素数据类型必须相同。而且,该结构也可嵌入到其它结构中。 参数 下表列出了不可中断的存储区填充指令的参数: 参数 声明 数据类型 存储区 说明 S71200 S71500 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 TagCount 3hrOUT TargetArea 操作数TargetArea的数据类型为ARRAY〔1。。5〕ofINT。它包含5个INT数据类型的元素。 如果操作数TagIn1和TagIn2的信号状态为1,则执行该指令。该指令从操作数从第一个元素开始,将FillValue的值复制到TargetArea输出变量中三次。此移动操作不会被操作系统的其它任务打断。如果成功执行该指令,则将TagOut和ENO使能输出的信号状态置位为1。 该结构的使用示例 以下示例说明了填充结构时该指令的工作原理: 可使用以下元素创建一个全局数据块: Datablock1 数据类型 MyStruct1 STRUCT Member1 INT Member2 INT Member3 INT Member4 INT MyStruct2 STRUCT SubArray ARRAY〔1。。2〕ofSTRUCT SubArray〔1〕 STRUCT NestedStruct STRUCT Member1 INT Member2 INT Member3 INT Member4 INT SubArray〔2〕 STRUCT NestedStruct STRUCT Member1 INT Member2 INT Member3 INT Member4 INT 生成以下程序代码,寻址MyStruct1变量: 生成以下程序代码,寻址MyStruct2变量: 在这两个示例中,参数IN的值10将从Member2开始复制OUT参数中两次。即,值10将复制到元素Member2和Member3中两次。另外两个元素Member1和Member4保持不变。如果该指令成功执行,则TagOut操作数的信号状态将置位为1。