首页 理论教育 筛选数组中的最大和最小值

筛选数组中的最大和最小值

时间:2023-06-23 理论教育 版权反馈
【摘要】:图6-61 求最大数该图用的是符号地址。如要求最小数,则只要把图6-61梯形图程序中P_GT改为P_LT即可,其它的不变。那样,最大数存的就是最小数。

筛选数组中的最大和最小值

1.用普通指令求

算法是,指定一个存最大(小)数的字,把它的值与数表中所有的数比较,把比较大者(或小者),留在这个字中。

图6-61所示为用普通指令在指定的DM区内,求最大数及其DM地址梯形图程序。

978-7-111-26319-7-Chapter06-77.jpg

图6-61 求最大数

该图用的是符号地址。从图梯级1知,当“查找命令”ON时,第1条执行的指令MOV,先使“最大数”置0(初始化)。接着,把“DM起始地址”赋值给“指针”,并计算结束地址,结果送DM12。注意,以上指令都是微分执行的。再就是执行微分指令,使LR0.02ON一个扫描周期。

LR0.02ON,使图梯级3中“查找开始”ON,并自保持,直到“查找完成”的常闭接点OFF。

在“查找开始”ON期间,梯级4将调子程序1。每个扫描周期都将调一次。

图中从SBN指令开始到RET指令之间的程序为子程序。每调一次,总是把“指针”指向的数与“最大数”进行比较,如前者大,则把前者换为“最大数”,并把这个“指针”值送“最大数DM地址”。接着,修改指针,并判断是否“指针”已达到最后位置。

到了“指针”值大过DM12的值,即最后地址,则“查找完成”ON,其常闭接点OFF。它将使“查找开始”OFF(如图所示梯级3),“查找开始”OFF使“查找完成”复位(如图所示梯级2)。程序复原。

执行这个程序后,“最大数”中存的即为查找出的最大数,“最大数DM地址”中存的即为查找出的最大数的DM地址。

如要求最小数,则只要把图6-61梯形图程序中P_GT改为P_LT即可,其它的不变。那样,最大数存的就是最小数。最大数地址存的就是最小数地址。

提示:这里求最大、最小数须多个扫描周期才能完成。如用循环指令也可在一个扫描周期内完成。但那样也不好,在查找这个周期,扫描时间可能太长。

2.用最大、最小值指令求(www.xing528.com)

CJ1型PLC有MAX(182)指令,可用其查找指定范围内的最大数。指令梯形图格式为

978-7-111-26319-7-Chapter06-78.jpg

这里 C———控制字,指定了查找范围内的字数;C+1的第15位是1,数据是有符号二进制数,是0,数据是无符号二进制数;C+1的第14位是1,将含有最大值的字的PLC内存地址存入IR00,是0,不存;

R1———指定了查找范围的第1个字,搜索最大值是在从R1~R1+(C-1)的范围内的字中进行;

D———用以存放查找范围内的最大值。

例:梯形图程序如图6-62所示,其中C及R1的有关取值如图6-63所示。当00000 ON时,MAX(182)从D00200开始的10字范围内搜索最大值。最大值写入D即D00300中,含有最大值的字的PLC内存地址写入IR00。

图6-63所示的是执行过程数据情况。

从图知,在从D00200到D00209 10个字中,查到最大数是001B(存于D00300中),其在PC内存中的地址为100CA(存于IR00中)。

978-7-111-26319-7-Chapter06-79.jpg

图6-62 示例程序

978-7-111-26319-7-Chapter06-80.jpg

图6-63 执行过程数据情况

CJ1型PLC有MIN(183)指令,可用其查找指定范围内的最小数。情况同上。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈