BoxEquip_LineB.cs 8.2 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
    {

        private void StartLineBRun(InOutParam param)
        {
            MoveInfoLineB.NewMove(MoveType.Working, param);
            MoveInfoLineB.NextMoveStep(StepEnum.Line_01_HighSpeedRun);
            LineBStopDown();
            LineBHighSpeedRun();          
            LogInfo($"出库 {MoveInfoLineB.SLog}:皮带线高速运行流转料盘[{MoveInfoLineB.MoveParam.PosInfo.GetPosSide()}面]");
        }
        void LineBHighSpeedRun()
        {
            IOMove(IO_Type.LineB_Long_LowSpeedRun, IO_VALUE.LOW);
            IOMove(IO_Type.LineB_Long_HighSpeedRun, IO_VALUE.HIGH);
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_Long_LowSpeedRun, IO_VALUE.LOW));
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_Long_HighSpeedRun, IO_VALUE.HIGH));
        }
        void waitLineBReduceSig()
        {
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_SlowReelDownCheck, IO_VALUE.HIGH));
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_StopReelCheck, IO_VALUE.HIGH));
            MoveInfoLineB.OneWaitCanEndStep = true;
        }
        void LineBStopUp()
        {
            IOMove(IO_Type.LineB_StopDown, IO_VALUE.LOW);
            IOMove(IO_Type.LineB_StopUp, IO_VALUE.HIGH);
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_StopDown, IO_VALUE.LOW));
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_StopUp, IO_VALUE.HIGH));
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_StopUpCheck, IO_VALUE.HIGH));
        }
        void LineBStopDown()
        {
            IOMove(IO_Type.LineB_StopUp, IO_VALUE.LOW);
            IOMove(IO_Type.LineB_StopDown, IO_VALUE.HIGH);
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_StopUp, IO_VALUE.LOW));
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_StopDown, IO_VALUE.HIGH));
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_StopDownCheck, IO_VALUE.HIGH));
        }
        void LineBLowRun()
        {
            IOMove(IO_Type.LineB_Long_HighSpeedRun, IO_VALUE.HIGH);
            IOMove(IO_Type.LineB_Long_LowSpeedRun, IO_VALUE.HIGH);
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_Long_HighSpeedRun, IO_VALUE.HIGH));
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_Long_LowSpeedRun, IO_VALUE.HIGH));
        }
        void LineBStopReelCheck()
        {
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_StopReelCheck, IO_VALUE.HIGH));
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitTime(2000));
        }
        void LineBLongStop()
        {
            IOMove(IO_Type.LineB_Long_HighSpeedRun, IO_VALUE.LOW);
            IOMove(IO_Type.LineB_Long_LowSpeedRun, IO_VALUE.LOW);
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_Long_HighSpeedRun, IO_VALUE.LOW));
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_Long_LowSpeedRun, IO_VALUE.LOW));
        }
        void LineBShortRun()
        {
            IOMove(IO_Type.LineB_RollerRun, IO_VALUE.HIGH);
            IOMove(IO_Type.LineB_Short_Run, IO_VALUE.HIGH);
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_RollerRun, IO_VALUE.HIGH));
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_Short_Run, IO_VALUE.HIGH));
        }
        void LineBShortStop()
        {
            IOMove(IO_Type.LineB_RollerRun, IO_VALUE.LOW);
            IOMove(IO_Type.LineB_Short_Run, IO_VALUE.LOW);
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_RollerRun, IO_VALUE.LOW));
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_Short_Run, IO_VALUE.LOW));
        }
        void LineBEndReelCheck()
        {
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineB_ReelInPlaceCheck, IO_VALUE.HIGH));
            MoveInfoLineB.WaitList.Add(WaitResultInfo.WaitTime(2000));
        }
        #region 皮带线B
        private void LineBProcess()
        {
            if (MoveInfoLineB.IsInWait)
            {
                PrintAxisSts(MoveInfoLineB);
                CheckWait(MoveInfoLineB);
            }
            if (MoveInfoLineB.IsInWait)
            {
                return;
            }
            switch (MoveInfoLineB.MoveStep)
            {
                case StepEnum.Line_01_HighSpeedRun:
                    MoveInfoLineB.NextMoveStep(StepEnum.Line_02_WaitReduceSig);
                    waitLineBReduceSig();
                    LogInfo($"出库 {MoveInfoLineB.SLog}:等待料盘到达减速区域[{MoveInfoLineB.MoveParam.PosInfo.GetPosSide()}面]");
                    break;
                case StepEnum.Line_02_WaitReduceSig:
                    MoveInfoLineB.NextMoveStep(StepEnum.Line_02_ReduceSpeed);
                    LineBLowRun();
                    LogInfo($"出库 {MoveInfoLineB.SLog}:料盘到达皮带线减速区域,皮带减速[{MoveInfoLineB.MoveParam.PosInfo.GetPosSide()}面]");
                    break;
                case StepEnum.Line_02_ReduceSpeed:
                    MoveInfoLineB.NextMoveStep(StepEnum.Line_03_ReelArriveStop);
                    LineBStopReelCheck();
                    LogInfo($"出库 {MoveInfoLineB.SLog}:等待料盘到达阻挡[{MoveInfoLineB.MoveParam.PosInfo.GetPosSide()}面]");
                    break;

                case StepEnum.Line_03_ReelArriveStop:
                    MoveInfoLineB.NextMoveStep(StepEnum.Line_04_CheckLineEnd);
                    LineBLongStop();
                    LogInfo($"出库 {MoveInfoLineB.SLog}:料盘到达阻挡处,检查短皮带线状态[{MoveInfoLineB.MoveParam.PosInfo.GetPosSide()}面]");
                    break;

                case StepEnum.Line_04_CheckLineEnd:
                    if(BufferDataManager.BOutStoreInfo==null && IOValue(IO_Type.LineB_ReelInPlaceCheck).Equals(IO_VALUE.LOW))
                    {
                        MoveInfoLineB.NextMoveStep(StepEnum.Line_05_ReelOut);
                        LineBStopUp();
                        LineBShortRun();
                        LineBLowRun();
                        LogInfo($"出库 {MoveInfoLineB.SLog}:皮带线末端无料盘,放行[{MoveInfoLineB.MoveParam.PosInfo.GetPosSide()}面]");
                    }
                    break;
                case StepEnum.Line_05_ReelOut:
                    MoveInfoLineB.NextMoveStep(StepEnum.Line_06_ReelInPosition);
                    LineBEndReelCheck();
                    //清除B内线体料盘缓存
                    BufferDataManager.BLineStoreInfo = null;
                    LogInfo($"出库 {MoveInfoLineB.SLog}:等待料盘到达短线体末端[{MoveInfoLineB.MoveParam.PosInfo.GetPosSide()}面]");
                    break;
                case StepEnum.Line_06_ReelInPosition:
                    MoveInfoLineB.NextMoveStep(StepEnum.Line_08_Finish);
                    LineBStopDown();
                    LineBShortStop();
                    LineBLongStop();
                    //出库料盘放置成功,将料盘信息写入对应出料口
                    SetReelBInfoToBuff();
                    //料盘已送入仓外皮带线
                    SServerManager.UploadLocInfo(MoveInfoLineB.MoveParam.PosInfo.barcode, LocStatus.ON_OUT_LINE);
                    LogInfo($"出库 {MoveInfoLineB.SLog}:料盘到达线体末端,出库完成[{MoveInfoLineB.MoveParam.PosInfo.GetPosSide()}面]");
                    break;
                case StepEnum.Line_08_Finish:
                    MoveInfoLineB.EndMove();
                    break;
                default:
                    LogUtil.error($"MoveInfoLineB 未找到处理:{MoveInfoLineB.SLog}");
                    MoveInfoLineB.EndMove();
                    break;
            }
        }
        #endregion

    }
}