MainMachine _MiddleProcess.cs 6.1 KB
using CodeLibrary;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DeviceLibrary
{
    partial class MainMachine
    {
        
        void MiddleProcess()
        {
            if (CheckWait(MiddleMoveInfo))
                return;

            switch (MiddleMoveInfo.MoveStep)
            {
                case MoveStep.M01:
                    if (RightMoveInfo.MoveStep == MoveStep.R10_WaitReelLeave)
                    {
                        MiddleMoveInfo.NextMoveStep(MoveStep.M02);
                        Take_Middle_Axis.AbsMove(MiddleMoveInfo, Config.Take_Middle_P2, Config.Take_Middle_P2_speed);
                        Take_UpDown_Axis.AbsMove(MiddleMoveInfo, Config.Take_UpDown_P2, Config.Take_UpDown_P2_speed);
                        electricClamp.Release();
                        MiddleMoveInfo.log("右侧可以取料,旋转轴/上下轴转到P2点");
                    }
                    else if (MiddleMoveInfo.IsTimeOut(60)) {
                        MiddleMoveInfo.log("等待右侧可以取料");
                    }
                    break;
                case MoveStep.M02:
                    MiddleMoveInfo.NextMoveStep(MoveStep.M03);
                    Take_UpDown_Axis.AbsMove(MiddleMoveInfo, Config.Take_UpDown_P3, Config.Take_UpDown_P3_speed);
                    MiddleMoveInfo.log("右侧可以取料,上下轴转到P3点,开始取料");
                    break;
                case MoveStep.M03:
                    if (electricClamp.Clamp())
                    {
                        MiddleMoveInfo.NextMoveStep(MoveStep.M04);
                        MiddleMoveInfo.log("取料气缸夹紧");
                    }
                    break;
                case MoveStep.M04:
                    Take_UpDown_Axis.AbsMove(MiddleMoveInfo, Config.Take_UpDown_P2, Config.Take_UpDown_P2_speed);
                    MiddleMoveInfo.NextMoveStep(MoveStep.M05);
                    MiddleMoveInfo.log("上下轴返回P2点");
                    break;
                case MoveStep.M05:
                    MiddleMoveInfo.NextMoveStep(MoveStep.M06);
                    RightMoveInfo.NextMoveStep(MoveStep.R11_NextReel);
                    MiddleMoveInfo.log("通知右侧料串,料已取走");
                    break;
                case MoveStep.M06:
                    if (MiddleMoveInfo.MoveParam.IsNg)
                    {                        
                        MiddleMoveInfo.NextMoveStep(MoveStep.M20_ToNgBox);
                        MiddleMoveInfo.log("判断为NG料");
                    }
                    //等待计算盘高
                    else if (RightMoveInfo.MoveStep >= MoveStep.R06 && RightMoveInfo.MoveStep <= MoveStep.R10_WaitReelLeave)
                    {
                        MiddleMoveInfo.NextMoveStep(MoveStep.M07);
                        MiddleMoveInfo.MoveParam.IsNg = RightMoveInfo.MoveParam.IsNg;
                        MiddleMoveInfo.MoveParam.WareCode = RightMoveInfo.MoveParam.WareCode;
                        MiddleMoveInfo.MoveParam.codeInfos = RightMoveInfo.MoveParam.codeInfos;
                        MiddleMoveInfo.MoveParam.PlateW = MiddleMoveInfo.MoveParam.PlateW;
                        MiddleMoveInfo.MoveParam.PlateH = LastHeight;

                        MiddleMoveInfo.NextMoveStep(MoveStep.M07);
                        MiddleMoveInfo.log($"已获取盘高,开始往左侧料窜移栽,{MiddleMoveInfo.MoveParam.ToStr()}");

                    }
                    else if (MiddleMoveInfo.IsTimeOut(60))
                    {
                        MiddleMoveInfo.log("等待计算盘高");
                    }
                     break;
                case MoveStep.M07:
                    if (LeftMoveInfo.MoveStep == MoveStep.L10_WaitReelPut)
                    {
                        MiddleMoveInfo.NextMoveStep(MoveStep.M08);
                        Take_Middle_Axis.AbsMove(MiddleMoveInfo, Config.Take_Middle_P3, Config.Take_Middle_P3_speed);
                        Take_UpDown_Axis.AbsMove(MiddleMoveInfo, Config.Take_UpDown_P4, Config.Take_UpDown_P4_speed);
                        MiddleMoveInfo.log("左侧允许放料,旋转轴/上下周到P3/P4");
                    }
                    else if (MiddleMoveInfo.IsTimeOut(60))
                    {
                        MiddleMoveInfo.log("等待左侧允许放料");
                    }
                    break;
                case MoveStep.M08:
                    MiddleMoveInfo.NextMoveStep(MoveStep.M_ReturnToP1);
                    electricClamp.Release();
                    LeftMoveInfo.NextMoveStep(MoveStep.L11_ReelPutted);
                    MiddleMoveInfo.log("取料夹爪放松,通知左侧料窜已放入,左侧等待3秒");
                    LeftMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
                    break;
                case MoveStep.M_ReturnToP1:
                    MiddleMoveInfo.NextMoveStep(MoveStep.M01);
                    Take_Middle_Axis.AbsMove(MiddleMoveInfo, Config.Take_Middle_P1, Config.Take_Middle_P1_speed);
                    Take_UpDown_Axis.AbsMove(MiddleMoveInfo, Config.Take_UpDown_P1, Config.Take_UpDown_P1_speed);
                    MiddleMoveInfo.log("放料完成,旋转轴/上下轴返回待机点");
                    break;
                case MoveStep.M20_ToNgBox:
                    MiddleMoveInfo.NextMoveStep(MoveStep.M21);
                    Take_Middle_Axis.AbsMove(MiddleMoveInfo, Config.Take_Middle_P5, Config.Take_Middle_P5_speed);
                    Take_UpDown_Axis.AbsMove(MiddleMoveInfo, Config.Take_UpDown_P5, Config.Take_UpDown_P5_speed);
                    MiddleMoveInfo.log("旋转轴/上下轴转到P5 NG位置");
                    break;
                case MoveStep.M21:
                    MiddleMoveInfo.NextMoveStep(MoveStep.M_ReturnToP1);
                    electricClamp.Release();
                    MiddleMoveInfo.log("取料夹爪放松,放料入NG位置.");
                    break;

            }
        }



    }
}