BoxEquip_LineA.cs 9.0 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 StartLineARun(InOutParam param)
        {
            MoveInfoLineA.NewMove(MoveType.Working, param);
            MoveInfoLineA.NextMoveStep(StepEnum.Line_01_HighSpeedRun);
            LineAStopDown();
            LineAHighSpeedRun();
            LogInfo($"出库 {MoveInfoLineA.SLog}:皮带线高速运行流转料盘[{MoveInfoLineA.MoveParam.PosInfo.GetPosSide()}面]");
        }
        void LineAHighSpeedRun()
        {
            IOMove(IO_Type.LineA_Long_LowSpeedRun, IO_VALUE.LOW);
            IOMove(IO_Type.LineA_Long_HighSpeedRun, IO_VALUE.HIGH);
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_Long_LowSpeedRun, IO_VALUE.LOW));
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_Long_HighSpeedRun, IO_VALUE.HIGH));
        }
        void waitLineAReduceSig()
        {
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_SlowReelDownCheck, IO_VALUE.HIGH));
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_StopReelCheck, IO_VALUE.HIGH));
            MoveInfoLineA.OneWaitCanEndStep = true;
        }
        void LineAStopUp()
        {
            IOMove(IO_Type.LineA_StopDown, IO_VALUE.LOW);
            IOMove(IO_Type.LineA_StopUp, IO_VALUE.HIGH);
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_StopDown, IO_VALUE.LOW));
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_StopUp, IO_VALUE.HIGH));
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_StopUpCheck, IO_VALUE.HIGH));
        }
        void LineAStopDown()
        {
            IOMove(IO_Type.LineA_StopUp, IO_VALUE.LOW);
            IOMove(IO_Type.LineA_StopDown, IO_VALUE.HIGH);
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_StopUp, IO_VALUE.LOW));
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_StopDown, IO_VALUE.HIGH));
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_StopDownCheck, IO_VALUE.HIGH));
        }
        void LineALowRun()
        {
            IOMove(IO_Type.LineA_Long_HighSpeedRun, IO_VALUE.HIGH);
            IOMove(IO_Type.LineA_Long_LowSpeedRun, IO_VALUE.HIGH);
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_Long_HighSpeedRun, IO_VALUE.HIGH));
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_Long_LowSpeedRun, IO_VALUE.HIGH));
        }
        void LineAStopReelCheck()
        {
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_StopReelCheck, IO_VALUE.HIGH));
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitTime(2000));
        }
        void LineALongStop()
        {
            IOMove(IO_Type.LineA_Long_HighSpeedRun, IO_VALUE.LOW);
            IOMove(IO_Type.LineA_Long_LowSpeedRun, IO_VALUE.LOW);
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_Long_HighSpeedRun, IO_VALUE.LOW));
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_Long_LowSpeedRun, IO_VALUE.LOW));
        }
        void LineAShortRun()
        {
            IOMove(IO_Type.LineA_RollerRun, IO_VALUE.HIGH);
            IOMove(IO_Type.LineA_Short_Run, IO_VALUE.HIGH);
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_RollerRun, IO_VALUE.HIGH));
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_Short_Run, IO_VALUE.HIGH));
        }
        void LineAShortStop()
        {
            IOMove(IO_Type.LineA_RollerRun, IO_VALUE.LOW);
            IOMove(IO_Type.LineA_Short_Run, IO_VALUE.LOW);
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_RollerRun, IO_VALUE.LOW));
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_Short_Run, IO_VALUE.LOW));
        }
        void LineAEndReelCheck()
        {
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LineA_ReelInPlaceCheck, IO_VALUE.HIGH));
            MoveInfoLineA.WaitList.Add(WaitResultInfo.WaitTime(2000));
        }
        #region 皮带线A
        private void LineAProcess()
        {
            if (MoveInfoLineA.IsInWait)
            {
                PrintAxisSts(MoveInfoLineA);
                CheckWait(MoveInfoLineA);
            }
            if (MoveInfoLineA.IsInWait)
            {
                return;
            }
            switch (MoveInfoLineA.MoveStep)
            {
                case StepEnum.Line_01_HighSpeedRun:
                    MoveInfoLineA.NextMoveStep(StepEnum.Line_02_WaitReduceSig);
                    waitLineAReduceSig();
                    LogInfo($"出库 {MoveInfoLineA.SLog}:等待料盘到达减速区域[{MoveInfoLineA.MoveParam.PosInfo.GetPosSide()}面]");
                    break;
                case StepEnum.Line_02_WaitReduceSig:
                    MoveInfoLineA.NextMoveStep(StepEnum.Line_02_ReduceSpeed);
                    LineALowRun();
                    LogInfo($"出库 {MoveInfoLineA.SLog}:料盘到达皮带线减速区域,皮带减速[{MoveInfoLineA.MoveParam.PosInfo.GetPosSide()}面]");
                    break;
                case StepEnum.Line_02_ReduceSpeed:
                    MoveInfoLineA.NextMoveStep(StepEnum.Line_03_ReelArriveStop);
                    LineAStopReelCheck();
                    LogInfo($"出库 {MoveInfoLineA.SLog}:等待料盘到达阻挡[{MoveInfoLineA.MoveParam.PosInfo.GetPosSide()}面]");
                    break;

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

                case StepEnum.Line_04_CheckLineEnd:
                    if (BufferDataManager.AOutStoreInfo == null && IOValue(IO_Type.LineA_ReelInPlaceCheck).Equals(IO_VALUE.LOW))
                    {
                        MoveInfoLineA.NextMoveStep(StepEnum.Line_05_ReelOut);
                        LineAStopUp();
                        LineAShortRun();
                        LineALowRun();
                        LogInfo($"出库 {MoveInfoLineA.SLog}:皮带线末端无料盘,放行[{MoveInfoLineA.MoveParam.PosInfo.GetPosSide()}面]");
                    }
                    break;
                case StepEnum.Line_05_ReelOut:
                    MoveInfoLineA.NextMoveStep(StepEnum.Line_06_ReelInPosition);
                    LineAEndReelCheck();
                    //清除A内线体料盘缓存
                    BufferDataManager.ALineStoreInfo = null;
                    LogInfo($"出库 {MoveInfoLineA.SLog}:等待料盘到达短线体末端[{MoveInfoLineA.MoveParam.PosInfo.GetPosSide()}面]");
                    break;
                case StepEnum.Line_06_ReelInPosition:
                    MoveInfoLineA.NextMoveStep(StepEnum.Line_07_ScanCode);
                    LineAStopDown();
                    LineAShortStop();
                    LineALongStop();
                    LogInfo($"出库 {MoveInfoLineA.SLog}:料盘到达线体末端,停止皮带[{MoveInfoLineA.MoveParam.PosInfo.GetPosSide()}面]");
                    break;
                case StepEnum.Line_07_ScanCode:
                    MoveInfoLineA.NextMoveStep(StepEnum.Line_08_Finish);
                    // scancodeA();
                    //出库料盘放置成功,将料盘信息写入对应出料口
                    SetReelAInfoToBuff();
                    //料盘已送入仓外皮带线
                    SServerManager.UploadLocInfo(MoveInfoLineA.MoveParam.PosInfo.barcode, LocStatus.ON_OUT_LINE);
                    LogInfo($"出库 {MoveInfoLineA.SLog}:料盘到达线体末端,出库完成[{MoveInfoLineA.MoveParam.PosInfo.GetPosSide()}面]");
                    break;
                case StepEnum.Line_08_Finish:
                    MoveInfoLineA.EndMove();
                    break;
                default:
                    LogUtil.error($"MoveInfoLineA 未找到处理:{MoveInfoLineA.SLog}");
                    MoveInfoLineA.EndMove();
                    break;
            }
        }
        #endregion
        //void scancodeA()
        //{
        //    //Task.Factory.StartNew(delegate {
        //        (List<CodeInfo> codeinfos, string filename) tmp = CodeManager.CameraScan(new List<string> { Config.CameraNameList_FeedA });
        //        MoveInfo.MoveParam.PosInfo.LabelParam.LabelContent = new LabelContent();
        //        MoveInfo.MoveParam.PosInfo.LabelParam.LabelContent.codeInfos = tmp.codeinfos;
        //        MoveInfo.MoveParam.PosInfo.LabelParam.BitmapFilename = tmp.filename;
        //    //});
        //}
    }
}