理论教育 如何求解一个数列中的最大值和最小值?

如何求解一个数列中的最大值和最小值?

时间:2023-07-01 理论教育 版权反馈
【摘要】:图5-61 求最大数到了“指针”值等于“结束地址”的值,即最后地址,则“完成”ON,其常闭触点OFF。以下为它使用变量的声明:图5-61d中节1、2为启动求最大(小)数计算。上述程序为求最大数的,如果求的为最小数,则只要把该梯形图程序中大、小判断做适当修改即可,其他的不变。

如何求解一个数列中的最大值和最小值?

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

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

图5-61a是欧姆龙PLC程序。该图用的是符号地址。从图知,当“启动”ON时,第1条执行的指令MOV,先使“最大数”置0(初始化)。接着,把“开始地址”赋值给“指针”,并计算结束地址。注意,以上指令都是微分执行的。再就是执行微分指令,使LB0.02 ON一个扫描周期。

接着,LB0.02 ON,将使“开始”ON,并自保持。在“开始”ON的期间,将调子程序1。每个扫描周期都将调一次。

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

978-7-111-39745-8-Chapter06-83.jpg

图5-61 求最大数

到了“指针”值等于“结束地址”的值,即最后地址,则“完成”ON,其常闭触点OFF。它将使“开始”OFF。“开始”OFF使“完成”复位,程序复原。

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

图5-61b是西门子PLC程序。该图用的也是符号地址。从图知,当“启动”ON时,第1条执行的指令MOV,先使“最大数”置0(初始化)。接着把VB0的地址赋值给“基准地址”,并根据“开始地址”、“求数范围”计算“指针”及“结束地址”。之后,还产生M0.0输出。注意,以上指令都是在“P”指令后执行的,所以只在“启动”从OFF到ON一个扫描周期中执行。M0.0也仅ON一个扫描周期。

再接着,M0 ON,将使“开始”ON,并自保持。在“开始”ON的期间,将调子程序0(SBR-0)。每个扫描周期都将调一次。

图中SBR-0之后为子程序。每调一次,总是把“指针”指向的数与“最大数”进行比较,如前者大,则把前者传给“最大数”,并把这个“指针”赋值给“最大地址”。接着修改指针,并判断是否“指针”已达到最后位置。

到了“指针”值等于“结束地址”的值,即最后地址,则“完成”ON,其常闭触点OFF。它将使“开始”OFF。“开始”OFF使“完成”复位,程序复原。(www.daowen.com)

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

图5-61c是三菱PLC程序。该图用的也是符号地址。从图知,当“启动”ON时,第1条执行的指令MOV,先使“最大数”置0(初始化)。接着,把“开始地址”赋值给变址器V0,并根据“开始地址”、“求数范围”计算“结束地址”。注意,以上指令都是微分执行的。再就是执行微分指令,使M0 ON一个扫描周期。

再接着,M0.0 ON,将使“开始”ON,并自保持。在“开始”ON的期间,将调子程序P1。每个扫描周期都将调一次。

图中P1之后到SRET指令之间的程序,为子程序1。每调一次,总是把D0V0地址的数与“最大数”进行比较,如前者大,则把前者传给“最大数”,并把这个V0赋值给“地址指针”。接着,修改指针,并判断是否V0值已达到最后位置。

到了V0值等于“结束地址”,即最后地址,则“完成”ON,其常闭触点OFF。它将使“开始”OFF。“开始”OFF使“完成”复位,程序复原。

执行这个程序后,“最大数”中存的即为查找出的最大数,“地址指针”中存的即为查找出的最大数的D的(编号)地址。

图5-61d为和利时LM机程序。以下为它使用变量的声明:

978-7-111-39745-8-Chapter06-84.jpg

图5-61d中节1、2为启动求最大(小)数计算。节3为修改与控制数组(所处理的对象)的下标。节4为进行比较。节5、6为比较结果处理。存最大(小)数及其下标。节7,处理完成后,完成信号“jiSw”复位,并使下标变量“indx”回原始值。可知,执行了上述程序,只要启动求最大(小)数计算,每隔一个扫描周期,将先修改数组下标值,再进行指定数组单元与预存的最大(小)数比较。接着根据比较结果,把最大(小)数分别存于“MX”及“MN”中。这个过程一直持续到数组下标达到上限,即完成所有数的比较,“jiSw”ON。之后,停止计算,并在节7进行“jiSw”与数组下标回原值。

上述程序为求最大数的,如果求的为最小数,则只要把该梯形图程序中大、小判断做适当修改即可,其他的不变。那样,最大数存的就是最小数。最大数地址存的就是最小数地址。

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

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

我要反馈