MainMachine_InMove.cs 11.3 KB
using CodeLibrary;
using OnlineStore;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace DeviceLibrary
{
    partial class MainMachine
    {        
        void SetReelHeight(int height)
        {
            //if (InMoveInfo.MoveStep != MoveStep.In_WaitGaugeHeight)
            //{
            //    InMoveInfo.log($"不再等待测高的步骤们无法设置盘高:{height}");
            //    return; }
            //InMoveInfo.NextMoveStep(MoveStep.In_GetHeight);
            if (InMoveInfo.MoveParam.PlateH == 0)
            {
                InMoveInfo.MoveParam.PlateH = height;
                InMoveInfo.log($"设置盘高:{height}");
            }
            else {
                InMoveInfo.log($"设置盘高失败:{height}");
            }

        }
        InCarReelPostion InFromPos;
        InCarReelPostion InToPos;
        void InMoveProcess()
        {
            if (CheckWait(InMoveInfo))
                return;
            
            switch (InMoveInfo.MoveStep)
            {
                case MoveStep.Wait:
                     if (InCarMoveInfo.MoveStep== MoveStep.InCarReadyGet) {
                        Setting_Init.Runtime_StartMovePosition = Loading_Batch_Axis.GetAclPosition();
                        InMoveInfo.NewMove(MoveStep.In_01);
                        InMoveInfo.MoveParam = InCarMoveInfo.MoveParam.clone();
                        InMoveInfo.MoveParam.UID= databaseProc.Current.GetID();
                        InMoveInfo.log("当前UID:" + InMoveInfo.MoveParam.UID);
                        var frompos = "Loading_T" + InCurrentStringNum;
                        InFromPos = RobotManage.InCarReelPostion[frompos];
                        InToPos= RobotManage.InCarReelPostion["Loading_Counting_T" + InCurrentStringNum];
                        InMoveInfo.log($"料盘已经准备好:{frompos}");
                        InMoveInfo.MoveParam.PlateH = 0;
                        Setting_Init.Temp_Last_InMove_Reel_Height = 0;
                        Setting_Init.Temp_Last_InMove_Reel_Width = 0;
                    }
                    break;
                case MoveStep.In_01:
                    InMoveInfo.NextMoveStep(MoveStep.In_02);
                    Loading_Middle_Axis.AbsMove(InMoveInfo,InFromPos.Middle_P2, Config.Loading_Middle_Axis_P1_speed);
                    Loading_UpDown_Axis.AbsMove(InMoveInfo,InFromPos.UpDown_P2, Config.Loading_UpDown_Axis_P1_speed);
                    InMoveInfo.log($"旋转轴,升降轴到达p2点");
                    break;
                case MoveStep.In_02:
                    InMoveInfo.NextMoveStep(MoveStep.In_03);
                    Loading_InOut_Axis.AbsMove(InMoveInfo, InFromPos.InOut_P2, Config.Loading_InOut_Axis_P1_speed);
                    InMoveInfo.log($"进出轴达p2点");
                    break;
                case MoveStep.In_03:
                    InMoveInfo.NextMoveStep(MoveStep.In_04);
                    Loading_UpDown_Axis.AbsMove(InMoveInfo, InFromPos.UpDown_P3, Config.Loading_UpDown_Axis_P1_speed);
                    InMoveInfo.log($"升降轴到达p3点");
                    break;
                case MoveStep.In_04:
                    InMoveInfo.NextMoveStep(MoveStep.In_05);
                    IOMove(IO_Type.Loading_ReelVacuum_On, IO_VALUE.HIGH);
                    InMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1500));
                    InMoveInfo.log($"打开吸盘");
                    break;
                case MoveStep.In_05:
                    InMoveInfo.NextMoveStep(MoveStep.In_06);
                    Loading_UpDown_Axis.AbsMove(InMoveInfo, InFromPos.UpDown_P2, Config.Loading_UpDown_Axis_P1_speed);
                    InMoveInfo.log($"升降轴到达p2点");
                    break;
                case MoveStep.In_06:                    
                    if (IOValue(IO_Type.Loading_VacuumDegree_Check).Equals(IO_VALUE.HIGH))
                    {
                        InMoveInfo.NextMoveStep(MoveStep.In_07);
                        
                        Loading_InOut_Axis.AbsMove(InMoveInfo, Config.Unloading_InOut_Axis_P1, Config.Loading_InOut_Axis_P1_speed);
                        InMoveInfo.log($"进出轴到达p1点");

                        ReelGetted(true);
                        InMoveInfo.log($"成功取到料盘");
                    }
                    else if (InMoveInfo.IsTimeOut(6))
                    {
                        InMoveInfo.NextMoveStep(MoveStep.Wait);
                        //ReelGetted(false);
                        InMoveInfo.log($"未取到料盘");
                    }
                    break;
                case MoveStep.In_07:
                    InMoveInfo.NextMoveStep(MoveStep.In_GetHeight);
                    Loading_Middle_Axis.AbsMove(null, Config.Loading_Middle_Axis_P1, Config.Loading_Middle_Axis_P1_speed);
                    InMoveInfo.log($"旋转轴到达p1点");
                    break;
                case MoveStep.In_GetHeight:
                    if (InMoveInfo.MoveParam.PlateH > 0)
                    {
                        InMoveInfo.NextMoveStep(MoveStep.In_10);
                        if (InCarType == CarTypeE.Car7)
                            InMoveInfo.MoveParam.PlateW = 7;
                        else
                            InMoveInfo.MoveParam.PlateW = 13;
                        Setting_Init.Temp_Last_InMove_Reel_Height = InMoveInfo.MoveParam.PlateH;
                        Setting_Init.Temp_Last_InMove_Reel_Width = InMoveInfo.MoveParam.PlateW;

                        InMoveInfo.log($"获取到尺寸{InMoveInfo.MoveParam.PlateW}x{InMoveInfo.MoveParam.PlateH}");
                    }
                    else {
                        Msg.add("等待测高结果", MsgLevel.info);
                    }
                    break;
                case MoveStep.In_10:
                    InMoveInfo.NextMoveStep(MoveStep.In_11);
                    Loading_Middle_Axis.AbsMove(InMoveInfo, Config.Loading_Middle_Axis_P1, Config.Loading_Middle_Axis_P1_speed);
                    Loading_UpDown_Axis.AbsMove(InMoveInfo, InToPos.UpDown_P2, Config.Loading_UpDown_Axis_P1_speed);
                    InMoveInfo.log($"旋转轴到达p1点,升降轴到放料P2");
                    break;
                case MoveStep.In_11:
                    if (CountMoveInfo.MoveStep == MoveStep.Wait)
                    {
                        InMoveInfo.NextMoveStep(MoveStep.In_12);
                        InMoveInfo.log($"点料机已空闲");
                    }
                    else {
                        Msg.add("等待点料机空闲", MsgLevel.info);
                    }
                    break;
                case MoveStep.In_12:
                    InMoveInfo.NextMoveStep(MoveStep.In_13);
                    CylinderMove(InMoveInfo, IO_Type.Counting_EnterDoor_Close, IO_Type.Counting_EnterDoor_Open, IO_VALUE.HIGH);
                    InMoveInfo.log($"打开点料机入口大门");
                    break;
                case MoveStep.In_13:
                    InMoveInfo.NextMoveStep(MoveStep.In_14);
                    Loading_Middle_Axis.AbsMove(InMoveInfo, InToPos.Middle_P2, Config.Loading_Middle_Axis_P1_speed);
                    Loading_UpDown_Axis.AbsMove(InMoveInfo, InToPos.UpDown_P2, Config.Loading_UpDown_Axis_P1_speed);
                    InMoveInfo.log($"旋转轴,升降轴到达放料p2点");
                    break;
                case MoveStep.In_14:
                    InMoveInfo.NextMoveStep(MoveStep.In_15);
                    Loading_InOut_Axis.AbsMove(InMoveInfo, InToPos.InOut_P2, Config.Loading_InOut_Axis_P1_speed);
                    InMoveInfo.log($"进出轴达放料p2点");
                    break;
                case MoveStep.In_15:
                    if (IOValue(IO_Type.Counting_Reel_Check).Equals(IO_VALUE.LOW))
                    {
                        InMoveInfo.NextMoveStep(MoveStep.In_16);
                        var pos = InToPos.UpDown_P3 - (InMoveInfo.MoveParam.PlateH-8)*Config.Loading_UpDown_Axis_MMtoPOS;
                        Loading_UpDown_Axis.AbsMove(InMoveInfo, pos, Config.Loading_UpDown_Axis_P1_speed);
                        InMoveInfo.log($"升降轴到达放料p3点,pos:{pos},PlateH:{InMoveInfo.MoveParam.PlateH}");

                        Setting_Init.Temp_Last_Reel_Height = InMoveInfo.MoveParam.PlateH;
                        Setting_Init.Temp_Last_Reel_Width = InMoveInfo.MoveParam.PlateW;
                    }
                    else {
                        Msg.add("点料区有料盘无法继续",MsgLevel.alarm);
                        //RobotManage.UserPause("点料区有料盘无法继续");
                    }
                    break;
                case MoveStep.In_16:
                    InMoveInfo.NextMoveStep(MoveStep.In_17);
                    IOMove(IO_Type.Loading_ReelVacuum_On, IO_VALUE.LOW);
                    InMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
                    InMoveInfo.log($"关闭吸盘");
                    break;
                case MoveStep.In_17:
                    InMoveInfo.NextMoveStep(MoveStep.In_18);
                    Loading_UpDown_Axis.AbsMove(InMoveInfo, InToPos.UpDown_P2, Config.Loading_UpDown_Axis_P1_speed);
                    InMoveInfo.log($"升降轴到达放料p2点");
                    break;
                case MoveStep.In_18:
                    InMoveInfo.NextMoveStep(MoveStep.In_19);
                    Loading_InOut_Axis.AbsMove(InMoveInfo, Config.Loading_InOut_Axis_P1, Config.Loading_InOut_Axis_P1_speed);
                    InMoveInfo.log($"进出轴达p1点");
                    break;
                case MoveStep.In_19:
                    InMoveInfo.NextMoveStep(MoveStep.In_20);
                    Loading_Middle_Axis.AbsMove(InMoveInfo, Config.Loading_Middle_Axis_P1, Config.Loading_Middle_Axis_P1_speed);
                    Loading_UpDown_Axis.AbsMove(InMoveInfo, Config.Loading_UpDown_Axis_P1, Config.Loading_UpDown_Axis_P1_speed);
                    InMoveInfo.log($"旋转轴,升降轴到达p1点");
                    break;
                case MoveStep.In_20:
                    InMoveInfo.NextMoveStep(MoveStep.In_21);
                    CylinderMove(null, IO_Type.Counting_EnterDoor_Close, IO_Type.Counting_EnterDoor_Open, IO_VALUE.LOW);
                    InMoveInfo.log($"关闭点料机入口大门");
                    break;
                case MoveStep.In_21:
                    CountMoveInfo.MoveParam = InMoveInfo.MoveParam.clone();
                    CountMoveInfo.NextMoveStep(MoveStep.Count_01);
                    InMoveInfo.log("点料机开始点料");
                    InMoveInfo.EndMove();
                    break;
                default:
                    InMoveInfo.log($"未找到对应步骤:{InMoveInfo.MoveStep}");
                    break;
            }
        }
        string InMoveState()
        {
            string state = "";
            if (InMoveInfo.MoveStep == MoveStep.Wait)
            {
                return "空闲中";
            }
            else if (InMoveInfo.MoveStep > MoveStep.Wait)
            {
                state = "取料位置"+":"+InCurrentStringNum;
            }
            return state;
        }
    }
}