编个程序供参考:
程序说明:
1、VB0~VB4分别为第1~第5台电机启动的顺序号存储器,其存储器内容=0,表示对应电机为停车,存储器内容=1 表示是第1个启动,=2表示是第2个启动。。。这5个字节存储器可在上位机或触摸屏内设置且时时显示其内容:如:VB0=0、VB1=3、VB2=0、VB3=1、VB4=2,则可以判断此时是第2、第4、第5 三台电机运行,其第4台(VB3)最先启动,第5台(VB4)为第2启动,第2台(VB1)为第3启动.
2、VB0~VB4的启动序号是这样进行的,网络11是当5台电机皆停车时,将计数器MB0=0。如此时第1个启动电机3,(见网络5)I0.2=1的前沿使Q0.2=1(即第3台电机启动),同时使MB0计数器加1(使MB0=1),再将MB0送入VB2,使VB2=1.再按I0.0(见网络1),其I0.0=1的前沿使Q0.0=1(第1台启动),同时使MB0计数器加1(使MB0=2),再将MB0送入VB0,使VB0=2。。。
回楼主:我的思路是这样:当一台电机停车时,将它启动时的顺序号清除,表示停车,再启动它或其它电机时,计数器照样加1计数,不用计数器减1,相反简单的进行MB0减1,会出现重号的,如:VB0=1、VB2=3、VB3=2,此时计数器MB0=3, 如将电机1停车,即使VB0=0,再将MB0减1,其MB0=2, 如此时按第5台电机,使Q0.4=1,MB0加1,其MB0=2+1=3,即MB0将3送入VB4,使VB4=3,你看:VB2=3与VB4=3就重复了。如不进行MB0减1运算,其VB4=4,这样运行的3台电机的顺序号为:VB2=3、VB3=2、VB4=4,显然这3台电机最先启动的是VB2,即序号最小的为最先启动的电机。
计数器的计数值可以大于5,各电机的的启动顺序号按数值大小比较,数值最小的为最先启动电机,数值最大的为最后启动电机。下举一例:
电机启动顺序为,2号启-4号启-1号启-2号停-3号启-2号启。其各电机启动顺序为:
VB0=3、VB1=5、VB2=4、VB3=2 此时最小数=2,即4号(VB3=2)电机最先启动,1号(VB0=3)电机为第2启动,3号(VB2=4)电机为第3启动,而2号(VB1=5)电机为第4启动。