FilterMachine.partial.cs 9.6 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OnlineStore.LoadCSVLibrary;
namespace DeviceLibrary
{
    public partial class FilterMachine
    {
        public bool isWaitReel { get => MoveInfo.MoveStep == MoveStep.Filter_01_WaitReel; }
        public void LineRun(int sec = 0) {
            IOMove(IO_Filter_Type.Line3_Run, IO_VALUE.HIGH, false, sec);
        }
        public IO_VALUE Tray_Check
        {
            get => IOValue(IO_Filter_Type.NG_TaryStop_Check);
        }
        void WorkProcess()
        {
            if (CheckWait(MoveInfo))
                return;

            switch (MoveInfo.MoveStep)
            {
                case MoveStep.Filter_01_WaitReel:
                    //MoveInfo.log("上料区阻挡上升");
                    if (IOValue(IO_Filter_Type.NG_TaryStop_Check).Equals(IO_VALUE.HIGH) && preReelParam != null)
                    {
                        MoveInfo.ReelParam = preReelParam;
                        preReelParam = null;
                        MoveInfo.log("检测到料盘 ReelParam:" + MoveInfo.ReelParam.ToStr());
                        //MoveInfo.ReelParam.ReelDest = ReelDest.String;
                        if (MoveInfo.ReelParam.ReelDest == ReelDest.NG || MoveInfo.ReelParam.ReelDest == ReelDest.Unknow)
                        {
                            MoveInfo.NextMoveStep(MoveStep.Filter_10_NGReel_PushOut);
                            MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
                        }
                        else if (MoveInfo.ReelParam.ReelDest == ReelDest.MSD)
                        {
                            MoveInfo.NextMoveStep(MoveStep.Filter_20_MSDReel_wait);
                        }
                        else if (MoveInfo.ReelParam.ReelDest == ReelDest.Paper)
                        {
                            MoveInfo.NextMoveStep(MoveStep.Filter_30_PaperReel_wait);
                        }
                        else if (MoveInfo.ReelParam.ReelDest == ReelDest.String)
                        {
                            MoveInfo.NextMoveStep(MoveStep.Filter_40_Reel_through_wait);
                        }
                        IOMove(IO_Filter_Type.Line3_Run, IO_VALUE.HIGH);
                    }
                    else if (IOValue(IO_Filter_Type.NG_TaryStop_Check).Equals(IO_VALUE.HIGH) && preReelParam == null)
                    {
                        Msg.add("分盘线等待料盘信息", MsgLevel.warning);
                    }
                    else
                    {
                        Msg.add($"等待进入料盘", MsgLevel.info);
                    }
                    break;
                ///NG料送出
                case MoveStep.Filter_10_NGReel_PushOut:
                    MoveInfo.NextMoveStep(MoveStep.Filter_11_NGReel_End);
                    MoveInfo.log("NG料推出");
                    NGBox_Count++;
                    CylinderMove(MoveInfo, IO_Filter_Type.NG_GetOut_Bck, IO_Filter_Type.NG_GetOut_Fwd, IO_VALUE.HIGH);
                    IOMove(IO_Filter_Type.Line3_Run, IO_VALUE.LOW);
                    break;
                case MoveStep.Filter_11_NGReel_End:
                    MoveInfo.NextMoveStep(MoveStep.Filter_END);
                    MoveInfo.log("NG料推出完毕");
                    CylinderMove(MoveInfo, IO_Filter_Type.NG_GetOut_Bck, IO_Filter_Type.NG_GetOut_Fwd, IO_VALUE.LOW);
                    break;
                ///Paper料送出
                case MoveStep.Filter_30_PaperReel_wait:
                    MoveInfo.NextMoveStep(MoveStep.Filter_31_PaperReel_PushOut);
                    MoveInfo.log("Paper料进入,NG阻挡上升");
                    CylinderMove(MoveInfo, IO_Filter_Type.NG_TaryStop_Down, IO_Filter_Type.NG_TaryStop_Up, IO_VALUE.HIGH);
                    MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Filter_Type.Paper_TaryStop_Check, IO_VALUE.HIGH));
                    break;
                case MoveStep.Filter_31_PaperReel_PushOut:
                    MoveInfo.NextMoveStep(MoveStep.Filter_32_PaperReel_PushOut);
                    MoveInfo.log("Paper料等到到位");
                    MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
                    break;
                case MoveStep.Filter_32_PaperReel_PushOut:
                    MoveInfo.NextMoveStep(MoveStep.Filter_33_PaperReel_End);
                    MoveInfo.log("Paper料推出");
                    PaperBox_Count++;
                    IOMove(IO_Filter_Type.Line3_Run, IO_VALUE.LOW);
                    CylinderMove(MoveInfo, IO_Filter_Type.NG_TaryStop_Down, IO_Filter_Type.NG_TaryStop_Up, IO_VALUE.LOW);
                    CylinderMove(MoveInfo, IO_Filter_Type.Paper_GetOut_Bck, IO_Filter_Type.Paper_GetOut_Fwd, IO_VALUE.HIGH);
                    break;
                case MoveStep.Filter_33_PaperReel_End:
                    MoveInfo.log("Paper料推出完毕");
                    CylinderMove(MoveInfo, IO_Filter_Type.Paper_GetOut_Bck, IO_Filter_Type.Paper_GetOut_Fwd, IO_VALUE.LOW);
                    MoveInfo.NextMoveStep(MoveStep.Filter_END);
                    break;
                ///MSD料送出
                case MoveStep.Filter_20_MSDReel_wait:
                    MoveInfo.NextMoveStep(MoveStep.Filter_21_MSDReel_wait);
                    MoveInfo.log("MSD料推出,NG阻挡上升");
                    CylinderMove(MoveInfo, IO_Filter_Type.NG_TaryStop_Down, IO_Filter_Type.NG_TaryStop_Up, IO_VALUE.HIGH);
                    CylinderMove(MoveInfo, IO_Filter_Type.Paper_TaryStop_Down, IO_Filter_Type.Paper_TaryStop_Up, IO_VALUE.HIGH);
                    MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Filter_Type.MSD_TaryStop_Check, IO_VALUE.HIGH));
                    break;
                case MoveStep.Filter_21_MSDReel_wait:
                    MoveInfo.NextMoveStep(MoveStep.Filter_22_MSDReel_PushOut);
                    MoveInfo.log("MSD料进入,等待");
                    MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
                    break;
                case MoveStep.Filter_22_MSDReel_PushOut:
                    MoveInfo.NextMoveStep(MoveStep.Filter_23_MSDReel_End);
                    MoveInfo.log("MSD料推出");
                    MSDBox_Count++;
                    IOMove(IO_Filter_Type.Line3_Run, IO_VALUE.LOW);
                    CylinderMove(MoveInfo, IO_Filter_Type.NG_TaryStop_Down, IO_Filter_Type.NG_TaryStop_Up, IO_VALUE.LOW);
                    CylinderMove(MoveInfo, IO_Filter_Type.Paper_TaryStop_Down, IO_Filter_Type.Paper_TaryStop_Up, IO_VALUE.LOW);
                    CylinderMove(MoveInfo, IO_Filter_Type.MSD_GetOut_Bck, IO_Filter_Type.MSD_GetOut_Fwd, IO_VALUE.HIGH);
                    break;
                case MoveStep.Filter_23_MSDReel_End:
                    MoveInfo.NextMoveStep(MoveStep.Filter_END);
                    MoveInfo.log("MSD料推出完毕");
                    CylinderMove(MoveInfo, IO_Filter_Type.MSD_GetOut_Bck, IO_Filter_Type.MSD_GetOut_Fwd, IO_VALUE.LOW);
                    break;
                ///料穿过
                case MoveStep.Filter_40_Reel_through_wait:
                    MoveInfo.NextMoveStep(MoveStep.Filter_41_Reel_through);
                    MoveInfo.log("料穿过,NG,Paper阻挡上升");
                    CylinderMove(MoveInfo, IO_Filter_Type.NG_TaryStop_Down, IO_Filter_Type.NG_TaryStop_Up, IO_VALUE.HIGH);
                    CylinderMove(MoveInfo, IO_Filter_Type.Paper_TaryStop_Down, IO_Filter_Type.Paper_TaryStop_Up, IO_VALUE.HIGH);
                    MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Filter_Type.MSD_TaryStop_Check, IO_VALUE.HIGH));
                    break;
                case MoveStep.Filter_41_Reel_through:
                    if (RobotManage.t1Machine.TrayCanIN())
                    {
                        MoveInfo.NextMoveStep(MoveStep.Filter_42_Reel_through_Wait);
                        MoveInfo.log("料穿过,MSD阻挡上升,NG,Paper阻挡下降");
                        CylinderMove(MoveInfo, IO_Filter_Type.NG_TaryStop_Down, IO_Filter_Type.NG_TaryStop_Up, IO_VALUE.LOW);
                        CylinderMove(MoveInfo, IO_Filter_Type.MSD_TaryStop_Down, IO_Filter_Type.MSD_TaryStop_Up, IO_VALUE.HIGH);
                        //CylinderMove(MoveInfo, IO_Filter_Type.Paper_TaryStop_Down, IO_Filter_Type.Paper_TaryStop_Up, IO_VALUE.LOW);
                        RobotManage.t1Machine.preReelParam = MoveInfo.ReelParam;
                        RobotManage.t1Machine.LineRun();
                        MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(15000));
                    }
                    else if (MoveInfo.IsTimeOut(10)) {
                        Msg.add("等待T1机构空闲", MsgLevel.warning);
                    }
                    break;
                case MoveStep.Filter_42_Reel_through_Wait:
                    MoveInfo.NextMoveStep(MoveStep.Filter_END);
                    MoveInfo.log("料穿过完成");
                    IOMove(IO_Filter_Type.Line3_Run, IO_VALUE.LOW);
                    //MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(5000));
                    break;
                case MoveStep.Filter_END:
                    MoveInfo.NewMove(MoveStep.Filter_01_WaitReel);
                    MoveInfo.log("分料完成");
                    IOMove(IO_Filter_Type.Line3_Run, IO_VALUE.LOW);
                    CylinderMove(MoveInfo, IO_Filter_Type.NG_TaryStop_Down, IO_Filter_Type.NG_TaryStop_Up, IO_VALUE.LOW);
                    CylinderMove(MoveInfo, IO_Filter_Type.MSD_TaryStop_Down, IO_Filter_Type.MSD_TaryStop_Up, IO_VALUE.LOW);
                    CylinderMove(MoveInfo, IO_Filter_Type.Paper_TaryStop_Down, IO_Filter_Type.Paper_TaryStop_Up, IO_VALUE.LOW);
                    break;
            }
        }
    }
}