S7-200就可以实现。
给每台电机配置3个存储器:1个编号存储器(建议依次为1~8)、1个累计运行时间存储器、1个已处理标志存储器;然后再设置8个累计时间存放存储器(这里假设为1-8#累计时间存储器)、8个编号存储器(这里假设为1-8#编号存储器)。
将1#泵的累计运行时间MOV给1#累计运行时间存储器,把1#泵的编号MOV给1#编号存储器。再把2#-8#泵的累计时间依次与1#累计时间存储器比较,如果哪台泵的累计时间比1#累计时间存储器小就把值MOV给1#累计时间存储器,同时把该泵的编号MOV给1#编号存储器。处理完毕后,根据1#编号存储器的值把对应泵的已处理标志置为1。这样,1#累计时间存储器放的就是累计时间最小的泵的时间,1#编号存储器放的就是累计时间最小的泵的编号,运行时间最少的泵的已处理标志就为1。
如果1#泵的已处理标志不等于1,就把1#泵的累计运行时间MOV给2#累计运行时间存储器,把1#泵的编号MOV给2#编号存储器。如果1#泵的已处理标志等于1,就把2#泵的累计运行时间MOV给2#累计运行时间存储器,把2#泵的编号MOV给2#编号存储器。 再把1#-8#泵中已处理标志位为0的泵的累计时间依次与2#累计时间存储器比较,如果哪台泵的累计时间比2#累计时间存储器小就把值MOV给2#累计时间存储器,同时把该泵的编号MOV给2#编号存储器。处理完毕后,根据2#编号存储器的值把对应泵的已处理标志置为1。这样,2#累计时间存储器放的就是累计时间倒数第2的泵的时间,2#编号存储器放的就是累计时间倒数第2的泵的编号,运行时间倒数第2的泵的已处理标志就为1。
如果1#泵的已处理标志不等于1,就把1#泵的累计运行时间MOV给3#累计运行时间存储器,把1#泵的编号MOV给3#编号存储器。如果1#泵的已处理标志等于1而且2#泵的已处理标志不等于1,就把2#泵的累计运行时间MOV给3#累计运行时间存储器,把2#泵的编号MOV给3#编号存储器。如果1#泵和2#泵的已处理标志均等于1,就把3#泵的累计运行时间MOV给3#累计运行时间存储器,把3#泵的编号MOV给3#编号存储器。 再把1#-8#泵中已处理标志位为0的泵的累计时间依次与3#累计时间存储器比较,如果哪台泵的累计时间比3#累计时间存储器小就把值MOV给3#累计时间存储器,同时把该泵的编号MOV给3#编号存储器。处理完毕后,根据3#编号存储器的值把对应泵的已处理标志置为1。这样,3#累计时间存储器放的就是累计时间倒数第3的泵的时间,3#编号存储器放的就是累计时间倒数第3的泵的编号,运行时间倒数第3的泵的已处理标志就为1。
如果1#泵的已处理标志不等于1,就把1#泵的累计运行时间MOV给4#累计运行时间存储器,把1#泵的编号MOV给4#编号存储器。如果1#泵的已处理标志等于1而且2#泵的已处理标志不等于1,就把2#泵的累计运行时间MOV给4#累计运行时间存储器,把2#泵的编号MOV给4#编号存储器。如果1#泵和2#泵的已处理标志等于1而且3#泵的已处理标志不等于1,就把3#泵的累计运行时间MOV给4#累计运行时间存储器,把3#泵的编号MOV给4#编号存储器。如果1#至3#泵的已处理标志均等于1,就把4#泵的累计运行时间MOV给4#累计运行时间存储器,把4#泵的编号MOV给4#编号存储器。 再把1#-8#泵中已处理标志位为0的泵的累计时间依次与4#累计时间存储器比较,如果哪台泵的累计时间比4#累计时间存储器小就把值MOV给4#累计时间存储器,同时把该泵的编号MOV给4#编号存储器。处理完毕后,根据4#编号存储器的值把对应泵的已处理标志置为1。这样,4#累计时间存储器放的就是累计时间倒数第4的泵的时间,4#编号存储器放的就是累计时间倒数第4的泵的编号,运行时间倒数第4的泵的已处理标志就为1。
如果1#泵的已处理标志不等于1,就把1#泵的累计运行时间MOV给5#累计运行时间存储器,把1#泵的编号MOV给5#编号存储器。如果1#泵的已处理标志等于1而且2#泵的已处理标志不等于1,就把2#泵的累计运行时间MOV给5#累计运行时间存储器,把2#泵的编号MOV给5#编号存储器。如果1#泵和2#泵的已处理标志等于1而且3#泵的已处理标志不等于1,就把3#泵的累计运行时间MOV给5#累计运行时间存储器,把3#泵的编号MOV给5#编号存储器。如果1#至3#泵的已处理标志等于1而且4#泵的已处理标志不等于1,就把4#泵的累计运行时间MOV给5#累计运行时间存储器,把4#泵的编号MOV给5#编号存储器。如果1#至4#泵的已处理标志均等于1,就把5#泵的累计运行时间MOV给5#累计运行时间存储器,把5#泵的编号MOV给5#编号存储器。 再把1#-8#泵中已处理标志位为0的泵的累计时间依次与5#累计时间存储器比较,如果哪台泵的累计时间比5#累计时间存储器小就把值MOV给5#累计时间存储器,同时把该泵的编号MOV给5#编号存储器。处理完毕后,根据5#编号存储器的值把对应泵的已处理标志置为1。这样,5#累计时间存储器放的就是累计时间倒数第5的泵的时间,5#编号存储器放的就是累计时间倒数第5的泵的编号,运行时间倒数第5的泵的已处理标志就为1。
。。。。。。这样编程,一直持续到8台。
需要启动几台,就依次触发1-8#编号存储器对应的泵就可以了。
更简单的排序编程我暂时还没想到。
以上编程适合N台泵。
我在想,如果有100个数据需要排序,那真还不好搞,上面的控制方案不适合(程序太长)。
更简单的排序编程方式我还没有想到。
如果采用上位机,用VC的话就简单了。
老菜鸟你只是把时间排序做出来了还远远不够的,因为还有故障判断和启停延时判断等等,时间排序是最简单的字程序,后面的2个子程序才是最困难的。如果你能用C语言把这个程序写出来就应该能用PLC把他实现啦。只是繁简的问题。时间排序的问题我用OMRON使用FOR-NEXT指令程序很短,就是把时间作为一个数组进行排序,学过高级语言的都知道怎么做。只是把他引申到PLC而已,编程思想是一样的。的确要有个编号,我上面说的3个子程序的时候说漏了~~~~~~~
楼主我晚上回去给你编个发给你~~~~~我现在在做项目,16个风机的启停控制,条件跟你一样的。不过我用OMRON的不知道你能不能用???