BoxEquip_OutExecute_Partial.cs 4.9 KB
using CodeLibrary;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms.VisualStyles;

namespace OnlineStore.DeviceLibrary
{
    partial class BoxEquip
    {
        #region 出库
        private void OutstoreExecute_BothSide()
        {
            switch (MoveInfo.MoveStep)
            {
                case StepEnum.SOB_14_GetReels_Ready:
                    //两侧已有同尺寸的料
                    MoveInfo.NextMoveStep(StepEnum.SOB_15_ToBufferArea);
                    break;
                case StepEnum.SOB_15_ToBufferArea:
                    if (!BothOutDoorCheck(MoveInfo.MoveParam))
                    {
                        SetWarnMsg($"出库 {MoveInfo.SLog}:出料口有其他料盘,无法放置料盘[barcode={MoveInfo.MoveParam.PosInfo.barcode}][barcode={MoveInfo.MoveParam.PosInfoBack.barcode}]");
                    }
                    else
                    {
                        MoveInfo.NextMoveStep(StepEnum.SOB_16_VerifyBufferState);
                        BuffAreaOutstoreDoor(true);
                        LogInfo($"出库 {MoveInfo.SLog}:出料口无料盘确认,打开出料防护门,准备放料[barcode={MoveInfo.MoveParam.PosInfo.barcode}][barcode={MoveInfo.MoveParam.PosInfoBack.barcode}]");
                    }
                    break;
                case StepEnum.SOB_16_VerifyBufferState:
                    if (!CheckInputMiddleAxisInBuff())
                    {
                        MoveInfo.NextMoveStep(StepEnum.SOB_17_InOutToBuff);
                        SetBoxStatus(DeviceStatus.OutStoreBoxEnd, RunStatus.Busy, MoveInfo.MoveParam.PosInfo.PosId, MoveInfo.MoveParam.PosInfo.barcode);
                        LogInfo($"出库 {MoveInfo.SLog}:移栽X轴到进出料暂存区取放点P2,行走机构到进出料机构取放点P2");
                        BothXAxis_To_P2();
                        MoveAxisToP2();
                    }
                    else if (MoveInfo.IsTimeOut())
                    {
                        SetWarnMsg($"等待上料机构旋转轴离开{MoveInfo.MoveParam.PosInfo.GetPosSide()}面暂存区超时");
                    }
                    break;
                case StepEnum.SOB_17_InOutToBuff:
                    MoveInfo.NextMoveStep(StepEnum.SOB_18_ReleaseReel);
                    LogInfo($"出库 {MoveInfo.SLog}:松开料盘,移栽压紧轴到压紧前点P2");
                    BothComAxis_To_P2();
                    break;
                case StepEnum.SOB_18_ReleaseReel:
                    MoveInfo.NextMoveStep(StepEnum.SOB_18_PutReel);
                    LogInfo($"出库 {MoveInfo.SLog}:放料盘,移栽升降轴到下暂存区放料低点P5/P11");
                    executeTime = (DateTime.Now - startTime).TotalSeconds.ToString("f2");
                    SetBoxStatus(DeviceStatus.OutStoreBoxEnd, RunStatus.Busy, MoveInfo.MoveParam.PosInfoBack.PosId, MoveInfo.MoveParam.PosInfoBack.barcode);
                    UpdownAxisTo_P5_P11();
                    break;
                case StepEnum.SOB_18_PutReel:
                    MoveInfo.NextMoveStep(StepEnum.SOB_19_InOutBackFromBuff);
                    LogInfo($"出库 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.ToStr()}]出库完成[耗时:{(DateTime.Now - startTime).TotalSeconds.ToString("f2")}秒],移栽X轴到待机点P1,行走机构到待机点P1");
                    BothXAxis_To_P1();
                    MoveAxisToP1();
                    break;
                case StepEnum.SOB_19_InOutBackFromBuff:
                    //出库料盘放置成功,将料盘信息写入对应出料口
                    if (CheckASide())
                    {
                        BufferDataManager.AOutStoreInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
                        BufferDataManager.BOutStoreInfo = MoveInfo.MoveParam.PosInfoBack.ToCopy();
                    }
                    else
                    {
                        BufferDataManager.BOutStoreInfo = MoveInfo.MoveParam.PosInfo.ToCopy();
                        BufferDataManager.AOutStoreInfo = MoveInfo.MoveParam.PosInfoBack.ToCopy();
                    }
                    MoveInfo.NextMoveStep(StepEnum.SOB_20_Finish);
                    BuffAreaOutstoreDoor(false);
                    LogInfo($"出库 {MoveInfo.SLog}:关闭出料防护门,出库结束");

                    break;
                case StepEnum.SOB_20_Finish:
                    SetBoxStatus(DeviceStatus.StoreOnline, RunStatus.Runing);
                    MoveInfo.EndMove();
                    //停止记录  
                    StopRecord();
                    AutoInout.InOutEndProcess(this, MoveType.OutStore);
                    break;
            }
        }
        #endregion

    }
}