恭喜,你发布的帖子
发布于 2015-10-20 07:53:45
1楼
电机运行时间冒泡排序,需要将运行时间和电机编号绑定在一起,运行时间排序的时候带着电机编号一起走。可以建立一个STRUCT,里面 含有Runtime ,和Number两个或者更多的电机信息,如电机允许启动(如在远程模式,没有故障,已经启动的电机已到达上限等),电机允许停止等信息
Struct:
Number:INT; //程序分配1~4
Runtime:DINT;//数值来自RunTimeMeter功能块
StartEn:BOOL;//启动允许
StopEn:BOOL;//停止允许
End_Struct;
//外循环次数ExtCyc,Num = 参与排序电机的个数,如Num=4,
//内循环次数IntCyc
//嵌套循环后会把电机运行时间从小到大全部排出来
//冒泡排序,相邻的运行时间进行比较,大于则交换位置,DataCopy存的就是你的电机信息
//比较时只需要比较运行时间,但是交换时交换总个STRUCT
//DataSwip缓冲交换的Struct信息
//排序的是总个Struct的电机信息。绑定了电机编号后,下次要启动哪个电机还不明了么?
FOR ExtCyc:=1 TO (Num - 1) BY 1 DO
FOR IntCyc:=1 TO (Num - ExtCyc) BY 1 DO
IF DataCopy[IntCyc].Runtime > DataCopy[IntCyc + 1].Runtime THEN
DataSwip:=DataCopy[IntCyc];
DataCopy[IntCyc]:=DataCopy[IntCyc + 1];
DataCopy[IntCyc + 1]:=DataSwip;
END_IF;
END_FOR;
END_FOR;
//程序往下要处理排出的电机是否已经启动,有没有故障,是否是PLC控制,是否已经达到电机个数上限
//要根据判定的情况依次找合适的启动电机编号
图 1 电机允许启动允许停止
图2 电机已经运行的数量
图3 启动泵和停止泵的功能
请填写推广理由:
分享
只看
楼主