其算法是,要查找的数,依次与数表中所有的数比较,发现比较相等者,就把它的地址记住,并留在指定地址字中。图5-65所示为在指定的数据区内,查找指定数地址的PLC梯形图程序。
图5-65a为欧姆龙PLC程序。该图用的是符号地址。从图知,当“开始”ON时,第1条执行的指令MOV,先使“起始地址”传给“指针”。接着,计算“结束地址”。再接着把#FFFF送“目标地址”。注意,以上指令都是微分执行的。最后就是执行微分指令,使LR0.02 ON一个扫描周期。
LB0.02 ON,使图中“查找开始”ON,并自保持。在“查找开始”ON期间,将调子程序1。每个扫描周期都将调一次。
图中从SBN指令开始到RET指令之间的程序,为子程序1。每调一次,总是把“指针”指向的数与“查找数”进行比较,如两者不等,则修改指针,并判断是否指针已达到最后位置。如相等,则使LR0.03 ON。而LR0.03 ON,则把这个“指针”值传送给“目标地址”,并置“查找完成”ON,表示查找完成。如到了指针值等于“结束地址”,还没有相等的。也将置“查找完成”ON。
“查找完成”ON。将使“查找开始”OFF。而“查找开始”OFF又使“查找完成”复位,程序复原。
图5-65b为西门子PLC程序。该图用的也是符号地址。从图知,当“开始”ON时,第1条执行的指令MOV,先使VB0的绝对地址传送给“基准地址”。接着,计算“指针”及“结束地址”。再接着把#FFFF送“目标地址”。之后,还产生M0.2输出。注意,以上指令都是在“P”指令后执行的,所以只在“启动”从OFF到ON一个扫描周期中执行。M0.2也仅ON一个扫描周期。
M0.2 ON,使图中“查找开始”ON,并自保持。在“查找开始”ON期间,将调子程序0(SBR_0)。每个扫描周期都将调一次。
图中在SBR_0之后为子程序0。每调一次,总是把“指针”指向的数与“查找数”进行比较,如两者不等,则修改指针,并判断是否指针已达到最后位置。如相等,则把这个“指针”值传送给“基准地址”,并计算“目标地址”,同时。置“查找完成”ON,表示查找完成。如到了指针值等于“结束地址”,还没有相等的。也将置“查找完成”ON。
“查找完成”ON。将使“查找开始”OFF。而“查找开始”OFF又使“查找完成”复位,程序复原。
图5-65c为三菱PLC程序。该图用的也是符号地址。从图知,当“开始”ON时,第1条执行的ADD指令,计算“结束地址”,接着把“起始地址”传给变址器V0,再接着,把HFFFF常数传送给“目标地址”。注意,以上指令都是微分执行的。最后就是执行微分指令,使M2 ON一个扫描周期。
(www.daowen.com)
图5-65 查找指定数
M2 ON,使图中“查找开始”ON,并自保持。在“查找开始”ON期间,将调子程序P1。每个扫描周期都将调一次。
图中从P1标号开始到SRET指令之间的程序,为子程序P1。每调一次,总是把D0V0地址的数与“查找数”进行比较,如两者不等,则修改V0,并判断V0是否已达到最后位置。如相等,则使M14 ON。而M14 ON,则把这个V0的值传送给“目标地址”,并置“查找完成”ON,表示查找完成。如到了V0值等于“结束地址”,而还没有相等的,也将置“查找完成”ON。
“查找完成”ON。将使“查找开始”OFF。而“查找开始”OFF又使“查找完成”复位,程序复原。
图5-65d为和利时LM机程序。其所用变量声明如下:
图5-65d中节1、2为启动查询计算。节3为修改与控制数组(所处理的对象)的下标。节4为进行比较。节5为比较结果处理。如果查到备查数,则存查到数的目标地址,即数组的下标,并置位“jiSw”。节6,处理完成后,完成信号“jiSw”复位,并使下标变量“indx”回原始值。
执行上述程序后,如找到该数,其地址存于“目标地址”中。如没找到,则“目标地址”值将是FFFF。
提示:这里查找也须多个扫描周期才能完成。用“目标地址”是否为FFFF,可知是否找到该数。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。