在S7-1200PLC中,可以使用“填充存储区”FILL_BLK指令进行数据的批量填充,用 IN 输入的值填充一个存储区域(目标范围)。从输出 OUT 指定的地址开始填充目标范围(也就是填充的起始地址)。可以使用参数 COUNT 指定复制操作的重复次数(就是准备填充的地址个数)。执行该指令时,输入 IN 中的值将移动到目标范围,重复次数由参数 COUNT 的值指定。仅当源范围和目标范围的数据类型相同时,才能执行该指令。
如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”:
条件1:使能输入 EN 的信号状态为“0”;
条件2:变更元素的最大值为 ARRAY 或结构中的元素个数。如果复制的数据超过 OUT 输出中的元素,则将返回一个意外结果;
当复制 ARRAY of BOOL 时,溢出的使能输出 ENO 将设置为“1”,直至超出 ARRAY 结构的字节限制。如果 COUNT 输入的值超出了 ARRAY 结构的字节限制,则使能输出 ENO 将复位为“0”。
注意:1.FILL_BLK指令与MOVE_BLK指令类似,只可以对数组中的连续元素进行数值的填充,若需要对位存储器或是输出过程映像区等进行数值的填入的话,是没有 办法实现的。关于FILL_BLK在LAD编程中的具体操作实例,见下图所示;
2.如果需要对MB20开始的连续5个字节的数据进行填写,那么是无法利用FILL_BLK指令开实现;但是可以利用SCL自行编写程序和FC参数化来实现;关于POKE指令的提取路径,具体方法如下:
在“基本指令”,“移动指令”,“读写存储器”中选择POKE指令即可实现;具体实现方式见下图所示;