BoxEquip_OutExecute_Partial.cs 6.9 KB
using CodeLibrary;
using OnlineStore.Common;
using OnlineStore.DeviceLibrary.deviceLibrary;
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_14_GetReels_Ready1);
                    LogInfo($"出库 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.barcode}]取料完成,准备送往出料口,料屉升降轴到P1点,移栽升降轴到下暂存区出库放料高点P4/P10");
                    //MoveAxisToP1();
                    PullAxis_UpdownToP1();
                    UpdownAxisTo_P4_P10();
                    // BuffAreaOutstoreDoor(true);
                    break;

                case StepEnum.SOB_14_GetReels_Ready1:
                    if (!CheckBothReel(true))
                    {
                        if (isAlarmForkCheck())
                            SetCriticalMsg($"两面料叉上存在未检测到料盘【{MoveInfo.MoveParam?.PosInfo?.barcode}】【{MoveInfo.MoveParam?.PosInfoBack?.barcode}】,请检查");
                        return;
                    }
                    SetWarnMsg("");
                    //两侧已有同尺寸的料
                    MoveInfo.NextMoveStep(StepEnum.SOB_15_ToBufferArea);
                    ignoreCurFork = false;
                    checkForkCnt = 0;
                    LogInfo($"出库 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.barcode}]取料完成,准备送往出料口。行走机构到待机点P1");
                    MoveAxisToP1();
                    //PullAxis_UpdownToP1();
                    // UpdownAxisTo_P4_P10();
                    BuffAreaOutstoreDoor(true);
                    ForkCheckWhenRunning();
                    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);
                        StopForkCheck();
                        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 (!CheckBothReel(false))
                    {
                        if (isAlarmForkCheck())
                            SetCriticalMsg($"两面料叉上还能检测到料盘【{MoveInfo.MoveParam?.PosInfo?.barcode}】【{MoveInfo.MoveParam?.PosInfoBack?.barcode}】,请检查");
                        return;
                    }
                    SetWarnMsg("");
                    //出库料盘放置成功,将料盘信息写入对应出料口
                    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);
                    checkForkCnt = 0;
                    ignoreCurFork = false;
                    LogInfo($"出库 {MoveInfo.SLog}:关闭出料防护门,出库结束");

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

    }
}