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