DoubleLineBean_bufShelf.cs 14.7 KB
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace OnlineStore.DeviceLibrary
{
    partial class DoubleLineBean
    {
        #region 缓存线运行

        private Stopwatch leftFullWatch = new Stopwatch();

        private Stopwatch leftNeedWatch = new Stopwatch();
        private Stopwatch leftWatch = new Stopwatch();
        private bool LeftProcess = false;
        private bool RightProcess = false;
        /// <summary>
        /// 检查工作位料架
        /// </summary>
        private void WorkShelfCheck()
        {

            if (IOValue(IO_Type.Left_Tranverse_Down_Sig1).Equals(IO_VALUE.HIGH) && IOValue(IO_Type.Left_Tranverse_Down_Sig2).Equals(IO_VALUE.HIGH) &&
                 IOValue(IO_Type.Left_Tranverse_BackRun).Equals(IO_VALUE.LOW) && IOValue(IO_Type.Left_Tranverse_Run).Equals(IO_VALUE.LOW) &&
                (IOValue(IO_Type.LHigh_StopCheck1).Equals(IO_VALUE.LOW) || IOValue(IO_Type.LHigh_StopCheck2).Equals(IO_VALUE.LOW)) &&
                IOValue(IO_Type.Left_Tranverse_Shelf_Sig).Equals(IO_VALUE.HIGH) && LeftProcess.Equals(false)
                )
            {
                if (LineManager.checkWatch(leftWatch, 3000))
                {
                    leftWatch.Stop();
                    //左侧上层需要放个料架
                    Task.Factory.StartNew(delegate
                    {
                        LeftProcess = true;
                        LogUtil.info("左侧双层线_" + "左上放料架离开横移");
                        IOMove(IO_Type.LHigh_LineRun, IO_VALUE.HIGH, 30000);
                        IOMove(IO_Type.Left_Tranverse_StopDown, IO_VALUE.HIGH, 3000);
                        if (WaitIo(IO_Type.LHigh_StopCheck1, IO_VALUE.HIGH, 30000, "左侧_上层放料架离开横移"))
                        {
                            IOMove(IO_Type.LHigh_LineRun, IO_VALUE.LOW);
                        }
                        LeftProcess = false;
                    });
                }
            }
            else
            {
                leftWatch.Stop();
            }
            //左侧工作位有料架
            if (IOValue(IO_Type.Left_Tranverse_Shelf_Sig).Equals(IO_VALUE.HIGH) && IOValue(IO_Type.LHigh_StopCheck1).Equals(IO_VALUE.HIGH))
            {
                if (IOValue(IO_Type.Left_Buf_Full_Shelf_Sig).Equals(IO_VALUE.LOW))
                {
                    if (MoveInfo.MoveType.Equals(LineMoveType.None) && LineManager.checkWatch(leftFullWatch, 3000, true))
                    {
                        LogUtil.info("左侧双层线_" + "上层有料架,且工作位满 开始料架转移处理");
                        //开始料架转移处理
                        MoveInfo.NewMove(LineMoveType.LTransWork2Buf, MoveStep.SW2B_L1_GetShelf);

                    }
                }
                else
                {
                    leftFullWatch.Stop();
                }
            }
            else
            {
                leftFullWatch.Stop();
            }

            //左侧缓存位有料架,工作位无料架
            if (IOValue(IO_Type.LHigh_StopCheck2).Equals(IO_VALUE.LOW))
            {
                if (IOValue(IO_Type.Left_Buf_Full_Shelf_Sig).Equals(IO_VALUE.HIGH))
                {
                    if (MoveInfo.MoveType.Equals(LineMoveType.None) && LineManager.checkWatch(leftNeedWatch, 3000, true))
                    {
                        LogUtil.info("左侧双层线_" + "上层需要料架,且缓存右料架 开始料架转移处理");
                        //开始料架转移处理
                        MoveInfo.NewMove(LineMoveType.LTransBuf2Work, MoveStep.SB2W_L0_None);

                    }
                }
                else
                {
                    CheckAndMove(IO_Type.Left_Buf_Run, IO_VALUE.LOW);
                    IOMove(IO_Type.Left_Buf_BackRun, IO_VALUE.HIGH, 10000);
                    leftNeedWatch.Stop();
                }
            }
            else
            {
                leftNeedWatch.Stop();
            }


        }

        internal void LTransBuff2WorkProcess()
        {
            if (MoveInfo.IsInWait)
            {
                CheckWait(MoveInfo);
            }
            if (MoveInfo.IsInWait)
            {
                return;
            }

            if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L0_None))
            {
                MoveInfo.NextMoveStep(MoveStep.SB2W_L1_GetShelf);
                IOMove(IO_Type.Left_Buf_Out_StopDown, IO_VALUE.HIGH, 2000);
                CheckAndMove(IO_Type.Left_Buf_Run, IO_VALUE.LOW);
                CheckAndMove(IO_Type.Left_Buf_BackRun, IO_VALUE.HIGH);
                CheckAndMove(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH);
                CheckAndMove(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW);
                IOMove(IO_Type.Left_Buf_Near_StopDown, IO_VALUE.HIGH, 2000);
                MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Shelf_Sig, IO_VALUE.HIGH));
                LogUtil.info(Name + MoveInfo.SLog + "  :左侧缓存料架放到横移上");
            }
            else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L1_GetShelf))
            {
                MoveInfo.NextMoveStep(MoveStep.SB2W_L2_Tranverse_Up);
                CheckAndMove(IO_Type.Left_Tranverse_Down, IO_VALUE.LOW);
                CheckAndMove(IO_Type.Left_Buf_BackRun, IO_VALUE.LOW);
                IOMove(IO_Type.Left_Tranverse_Up, IO_VALUE.HIGH);
                MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down, IO_VALUE.LOW));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up_Sig1, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up_Sig2, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Up_Sig1, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Up_Sig2, IO_VALUE.HIGH));
                LogUtil.info(Name + MoveInfo.SLog + "  :左侧横移上升");
            }
            else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L2_Tranverse_Up))
            {
                MoveInfo.NextMoveStep(MoveStep.SB2W_L3_Tranverse_Run);
                LogUtil.info(Name + MoveInfo.SLog + "  :左侧横移电机反传");
                CheckAndMove(IO_Type.Left_Tranverse_Run, IO_VALUE.LOW);
                IOMove(IO_Type.Left_Tranverse_BackRun, IO_VALUE.HIGH);
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_BackRun, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Run, IO_VALUE.LOW));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_InPosition_Sig, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
            }
            else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L3_Tranverse_Run))
            {
                MoveInfo.NextMoveStep(MoveStep.SB2W_L4_Shelf_To_Buf);
                LogUtil.info(Name + MoveInfo.SLog + ":料架到达工作横移位置");
                IOMove(IO_Type.Left_Tranverse_BackRun, IO_VALUE.LOW);
                IOMove(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW);
                CheckAndMove(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH);
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_BackRun, IO_VALUE.LOW));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down_Sig1, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down_Sig2, IO_VALUE.HIGH));
            }
            else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L4_Shelf_To_Buf))
            {
                MoveInfo.NextMoveStep(MoveStep.SB2W_L5_Tranverse_Down);
                LogUtil.info(Name + MoveInfo.SLog + ":左侧横移下降");
                CheckAndMove(IO_Type.Left_Buf_Far_StopDown, IO_VALUE.LOW);
                IOMove(IO_Type.LHigh_LineRun, IO_VALUE.HIGH);
                IOMove(IO_Type.Left_Tranverse_StopDown, IO_VALUE.HIGH,2000);
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LHigh_StopCheck1, IO_VALUE.HIGH));

            }
            else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L5_Tranverse_Down))
            {
                MoveInfo.NextMoveStep(MoveStep.SB2W_L6_Shelf_Leave_Buf);
                LogUtil.info(Name + MoveInfo.SLog + ":料架离开左侧工作位横移");
                MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
            }
            else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L6_Shelf_Leave_Buf))
            {
                MoveInfo.NextMoveStep(MoveStep.SB2W_L7_Tranverse_Finish);
                CheckAndMove(IO_Type.LHigh_LineRun, IO_VALUE.LOW);
                LogUtil.info(Name + MoveInfo.SLog + ":料架移到左侧工作位完成,停止链条");
                MoveInfo.EndMove();
            }
        }
        /// <summary>
        /// 左侧工作位到缓存位
        /// </summary>
        internal void LTransWork2BuffProcess()
        {
            if (MoveInfo.IsInWait)
            {
                CheckWait(MoveInfo);
            }
            if (MoveInfo.IsInWait)
            {
                return;
            }

            if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L1_GetShelf))
            {
                MoveInfo.NextMoveStep(MoveStep.SW2B_L2_Tranverse_Up);
                CheckAndMove(IO_Type.Left_Tranverse_Down, IO_VALUE.LOW);
                IOMove(IO_Type.Left_Tranverse_Up, IO_VALUE.HIGH);
                MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down, IO_VALUE.LOW));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up_Sig1, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up_Sig2, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Up_Sig1, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Up_Sig2, IO_VALUE.HIGH));
                LogUtil.info(Name + MoveInfo.SLog + "  :左侧横移上升");
            }
            else if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L2_Tranverse_Up))
            {
                MoveInfo.NextMoveStep(MoveStep.SW2B_L3_Tranverse_Run);
                LogUtil.info(Name + MoveInfo.SLog + "  :左侧横移电机正传");
                CheckAndMove(IO_Type.Left_Tranverse_BackRun, IO_VALUE.LOW);
                IOMove(IO_Type.Left_Tranverse_Run, IO_VALUE.HIGH);
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_BackRun, IO_VALUE.LOW));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Run, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_InPosition_Sig, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
            }
            else if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L3_Tranverse_Run))
            {
                MoveInfo.NextMoveStep(MoveStep.SW2B_L4_Shelf_To_Buf);
                LogUtil.info(Name + MoveInfo.SLog + ":料架到达缓存横移位置");
                IOMove(IO_Type.Left_Tranverse_Run, IO_VALUE.LOW);
                IOMove(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW);
                CheckAndMove(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH);
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Run, IO_VALUE.LOW));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Down_Sig1, IO_VALUE.HIGH));
                MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Down_Sig2, IO_VALUE.HIGH));
            }
            else if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L4_Shelf_To_Buf))
            {
                MoveInfo.NextMoveStep(MoveStep.SW2B_L5_Tranverse_Down);
                if (IOValue(IO_Type.Left_Buf_Full_Shelf_Sig).Equals(IO_VALUE.LOW))
                {
                    LogUtil.info(Name + MoveInfo.SLog + ":左侧横移下降");
                    CheckAndMove(IO_Type.Left_Buf_Far_StopDown, IO_VALUE.LOW);
                    CheckAndMove(IO_Type.Left_Buf_BackRun, IO_VALUE.LOW);
                    IOMove(IO_Type.Left_Buf_Run, IO_VALUE.HIGH);
                    MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Full_Shelf_Sig, IO_VALUE.HIGH));
                }
                else
                {
                    LogUtil.error(Name + MoveInfo.SLog + "  :左侧缓存已满,无法将料架运离横移,结束处理 ");
                    MoveInfo.EndMove();
                }
            }
            else if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L5_Tranverse_Down))
            {
                MoveInfo.NextMoveStep(MoveStep.SW2B_L6_Shelf_Leave_Buf);
                LogUtil.info(Name + MoveInfo.SLog + ":料架离开左侧缓存横移");
                IOMove(IO_Type.Left_Buf_Far_StopDown, IO_VALUE.HIGH, 5000);
                MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
            }
            else if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L6_Shelf_Leave_Buf))
            {
                MoveInfo.NextMoveStep(MoveStep.SW2B_L7_Tranverse_Finish);
                CheckAndMove(IO_Type.Left_Buf_BackRun, IO_VALUE.LOW);
                CheckAndMove(IO_Type.Left_Buf_Run, IO_VALUE.LOW);
                LogUtil.info(Name + MoveInfo.SLog + ":料架移到左侧缓存完成,停止链条");
                MoveInfo.EndMove();
            }
        }

        #endregion

    }
}