1.用普通指令求:
图6-69 求平均数程序
其算法是,要查找的数,依此与数表中所有的数比较,发现把比较相等者,就把它的地址记住,留在地址字中。图6-70所示为在指定的DM区内,查找指定数的DM地址的梯形图程序。
该图用的是符号地址。从图梯级1知,当“查找命令”ON时,第1条执行的指令MOV,先使“实际指定数”传“形式指定数”(初始化)。接着,把起始地址赋值给“指针”,并计算结束地址,结果送DM12。再接着把#FFFF送“指定数形式地址”。注意,以上指令都是微分执行的。最后就是执行微分指令,使LR0.02 ON一个扫描周期。
LR0.02 ON,使图梯级3中“查找开始”ON,并自保持,直到“查找完成”的常闭接点OFF。
图6-70 查找指定数
在“查找开始”ON期间,梯级4将调子程序1。每个扫描周期都将调一次。
图中从SBN指令开始到RET指令之间的程序为子程序。每调一次,总是把“指针”指向的数与“形式指定数”进行比较,如两者不等,则修改指针,并判断是否,指针已达到最后位置。如相等,则使LR0.03 ON。而LR0.03 ON,则把这个“指针”值送“指定数形式地址”,并置“查找完成”ON,表示查找完成。
如到了指针值大过DM12的值,即最后地址,还没有相等的,也将使“查找开始”OFF(如图所示梯级3),“查找开始”OFF使“查找完成”复位(如图所示梯级2),并把“指定数形式地址”赋值给“指定数实际地址”,程序复原。
执行这个程序后,如找到该数,其地址存于“指定数实际地址”中。如没找到,则“指定数实际地址”值将是FFFF。
提示:这里查找也须多个扫描周期才能完成。用“指定数实际地址”是否为FFFF,可知是否找到该数。(www.xing528.com)
2.用数据搜索指令求:
数据搜索,SRCH(181)指令,用以在指定范围的字中查找某字。梯形图格式为
这里 C———控制字,指定了查找范围内的字数;C+1的第15位为1,向DR00送匹配的数,为0,不送;
R1———指定了查找范围的第1个字,搜索是在从R1~R1+(C-1)的范围内的字中进行;
Cd———比较数据,即要查找的数。
执行本指令,将在R1到R1+(C-1)的内存范围内,搜索含有Cd的字。如找到一个匹配字,则将该字的PLC内存地址写入IR00,并将等于标志置为ON。如果有2个或更多的匹配字,只有第一个含有比较数据的字被写入IR00。
例:程序如图6-71所示,这里控制字的内容为8000000A,即搜索范围为10个字,并要把匹配的数送DR00。
从图知,当0.00 ON时,即执行SRCH指令。在从D100开始的10字范围中,搜索与ABCD相同的字。如仅D103的内容为ABCD,则IR00内容为00010067(D103的内存地址),而DR00的内容为1(仅一个数匹配)。
可见,有了这么强的指令,做数表处理是很简单的。
图6-71 查找数据
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。