MainMachine _Out.cs 4.3 KB
using CodeLibrary;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DeviceLibrary
{
    partial class MainMachine
    {
        bool IsOutLiftEmpty
        {
            get {
                return IOValue(IO_Type.OutEntryMaterialTop_Check).Equals(IO_VALUE.LOW) && OutSideLift.isAtTOP;
            }
        }
        void OutProcess()
        {
            if (CheckWait(OutMoveInfo))
                return;
            
            //常规上料扫码流程
            switch (OutMoveInfo.MoveStep)
            {
                case MoveStep.Wait:
                    if (OutSideLift.isAtBOTTOM)
                    {
                        OutMoveInfo.NextMoveStep(MoveStep.WaitErr);
                    }
                    else if (IOValue(IO_Type.OutEntryMaterialTop_Check).Equals(IO_VALUE.HIGH))
                    {
                        Msg.add("检测到出料口有周转箱", MsgLevel.warning);
                        OutMoveInfo.log($"检测到出料口有周转箱,送出");

                        OutMoveInfo.NextMoveStep(MoveStep.OutBoxPutOn);
                    }                    
                    break;
                case MoveStep.WaitErr:
                    OutMoveInfo.NextMoveStep(MoveStep.Wait);
                    OutSideLift.LiftUp(OutMoveInfo);
                    OutMoveInfo.log($"出料口周转箱顶升上升");
                    break;
                case MoveStep.OutBoxPutOn:
                    if (IOValue(IO_Type.OutEntryMaterialTop_Check).Equals(IO_VALUE.LOW))
                    {
                        Msg.add("出口没有检测到周转箱", MsgLevel.warning);
                    }
                    else
                    {
                        OutMoveInfo.NextMoveStep(MoveStep.Out01);
                        OutSideLift.LiftDown(OutMoveInfo);
                        OutMoveInfo.log($"顶升机构下降");
                    }
                    break;
                case MoveStep.Out01:
                    OutMoveInfo.NextMoveStep(MoveStep.Out02);
                    if (IOMonitor.IODebound(IO_Type.OutStopMaterial_Check, Config, IO_VALUE.LOW, 2000) && IOMonitor.IODebound(IO_Type.OutExitMaterial_Check, Config, IO_VALUE.LOW, 2000))
                    {
                        LineOut.LineRun("out", 999);
                        CylinderMove(OutMoveInfo, IO_Type.OutStop_Down, IO_Type.OutStop_Up, IO_VALUE.LOW);
                        OutMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.OutExitMaterial_Check, IO_VALUE.HIGH));
                        OutMoveInfo.log($"线体转动");
                    }
                    else
                    {
                        Msg.add("等待出口清空周转箱", MsgLevel.warning);
                    }
                    break;
                case MoveStep.Out02:
                    OutMoveInfo.NextMoveStep(MoveStep.Out03);
                    LineIn.LineRun("work", 3);
                    OutMoveInfo.log($"料箱抵达出口");
                    OutMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
                    break;
                case MoveStep.Out03:
                    OutMoveInfo.NextMoveStep(MoveStep.Out04);
                    CylinderMove(OutMoveInfo, IO_Type.OutStop_Down, IO_Type.OutStop_Up, IO_VALUE.HIGH);
                    OutSideLift.LiftDown(OutMoveInfo);
                    OutMoveInfo.log($"出料中间阻挡升起");
                    ServerCM.SendStoreState(StoreMoveInfo.MoveParam.PosID, StoreStatus.OutStoreEnd);
                    break;
                case MoveStep.Out04:
                    OutMoveInfo.NextMoveStep(MoveStep.Wait);
                    break;
                default:
                    OutMoveInfo.log($"未找到对应步骤:{OutMoveInfo.MoveStep}");
                    break;
            }
        }
        string OutState() {
            string state = "";
            if (OutMoveInfo.MoveStep >= MoveStep.OutBoxPutOn)
            {
                return "送出周转箱:" + OutMoveInfo.MoveParam.ToStr();
            }
            else
            {
                return "最后的周转箱:" + OutMoveInfo.MoveParam.ToStr();
            }

            return state;
        }
    }
}