HY_Coveryor.cs 6.0 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
{
    /// <summary>
    /// 接驳台横移, SMove处理托盘,Move处理料盘移栽
    /// </summary>
    public partial class HY_Coveryor : HYEquipBase
    {
        public HY_Coveryor(string cid, HYEquip_Config config) : base(cid, config)
        {
            Name = (" JHY" + (DeviceID % 100).ToString().PadLeft(2, '0') + " ").ToUpper();
        }

        public override bool StartRun(bool isDebug = false)
        {
            if (CanStartRun().Equals(false))
            {
                return false;
            }
            if (!RunAxis(true, UpdownAxis))
            {
                return false;
            }
            mainTimer.Enabled = false;
            MoveInfo.EndMove();
            SecondMoveInfo.EndMove();
            runStatus = LineRunStatus.HomeMoving;
            MoveInfo.NewMove(LineMoveType.ReturnHome);
            StartReset();
            if (isDebug)
            {
                mainTimer.Enabled = true;
            }
            return true;
        }
        public override bool Reset()
        {
            StopMove();
            if (!RunAxis(true, UpdownAxis))
            {
                return false;
            }
            runStatus = LineRunStatus.Reset;
            SecondMoveInfo.EndMove();
            MoveInfo.NewMove(LineMoveType.Reset);
            StartReset();
            return true;
        }

        private void StartReset()
        {
            ResetClearData();
            MoveInfo.NextMoveStep(LineMoveStep.JHY_R01_UpdownHome);
            LogInfo(MoveInfo.MoveType + " " + MoveInfo.MoveStep + ":  电机停止,升降轴回原点,阻挡上升,定位气缸下降,顶升气缸下降");

            LineStop(MoveInfo);
            IOMove(IO_Type.HY_FrontStopDown, IO_VALUE.LOW);
            CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Up, IO_Type.HY_TopCylinder_Down);
            LocationCylinderDown(MoveInfo);
            UpdownAxis.HomeMove(MoveInfo);

            isInPro = false;
        }

        protected override void ResetProcess()
        {
            if (MoveInfo.IsInWait)
            {
                CheckWait(MoveInfo);
            }
            if (!MoveInfo.IsInWait)
            {

                if (MoveInfo.IsStep(LineMoveStep.JHY_R01_UpdownHome))
                {
                    MoveInfo.NextMoveStep(LineMoveStep.JHY_R02_UpdownUp);
                    LogInfo(MoveInfo.MoveType + " " + MoveInfo.MoveStep + ":  升降轴到P1");
                    UpdownAxis.AbsMove(MoveInfo, Config.UpDownAxisP1, Config.UpdownAxis_P1Speed);
                }
                else if (MoveInfo.IsStep(LineMoveStep.JHY_R02_UpdownUp))
                {
                    MoveInfo.NextMoveStep(LineMoveStep.JHY_R03_LocationDown);
                    LogInfo(MoveInfo.MoveType + " " + MoveInfo.MoveStep + ":  接驳台取料端");
                    CylinderMove(MoveInfo, IO_Type.HY_MoveCylinder_Give, IO_Type.HY_MoveCylinder_Take);
                }
                else if (MoveInfo.IsStep(LineMoveStep.JHY_R03_LocationDown))
                {
                    MoveInfo.NextMoveStep(LineMoveStep.JHY_R04_TopDown);
                    LogInfo(MoveInfo.MoveType + " " + MoveInfo.MoveStep + ":  夹紧气缸放松");
                    CylinderMove(MoveInfo, IO_Type.HY_ClampCylinder_Work, IO_Type.HY_ClampCylinder_Relax);
                }
                else if (MoveInfo.IsStep(LineMoveStep.JHY_R04_TopDown))
                {
                    MoveInfo.NextMoveStep(LineMoveStep.JHY_R05_ClampCheck);
                    LogInfo(MoveInfo.MoveType + " " + MoveInfo.MoveStep + ":  等待夹爪无信号");
                    MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.ClampCylinder_Check, IO_VALUE.LOW));
                }
                else if (MoveInfo.IsStep(LineMoveStep.JHY_R05_ClampCheck))
                {
                    LogInfo(MoveInfo.MoveType + " 完成!");
                    runStatus = LineRunStatus.Runing;
                    MoveInfo.EndMove();
                    SecondMoveInfo.EndMove();
                }
                else
                {
                    LogUtil.error(Name + " ResetProcess 未找到[" + MoveInfo.MoveType + "][" + MoveInfo.MoveStep + "]的处理");
                }
            }
        }
        internal override void StopMove()
        {
            LogInfo("停止运动:电机停止,阻挡上升,定位气缸下降,顶升气缸下降  ");
            MoveInfo.EndMove();
            SecondMoveInfo.EndMove();

            LineStop();
            IOMove(IO_Type.HY_FrontStopDown, IO_VALUE.LOW);
            CylinderMove(null, IO_Type.HY_LocationCylinder_Up, IO_Type.HY_LocationCylinder_Down);
            CylinderMove(null, IO_Type.HY_TopCylinder_Up, IO_Type.HY_TopCylinder_Down);
        }
        public override void StopRun()
        {
            if (mainTimer != null)
            {
                mainTimer.Enabled = false;
            }
            StopMove();
            CheckAndMove(IO_Type.ClampCylinder_Work, IO_VALUE.LOW);
            CheckAndMove(IO_Type.ClampCylinder_Relax, IO_VALUE.LOW);
            runStatus = LineRunStatus.Wait;
        }

        private int GetRobotIndex()
        {
            int robotIndex = 1;
            if (DeviceID.Equals(212))
            {
                robotIndex = 2;
            }
            return robotIndex;
        }
        protected override void BaseTimerProcess()
        {
            if (isInSuddenDown || isNoAirCheck)
            {
                return;
            }
            IOTimeOutProcess();
            BusyMoveProcess();
            if (MoveInfo.MoveType.Equals(LineMoveType.None))
            {
                if (LineManager.Line.CanProcessLine())
                {
                    CheckFixture();
                }
            }
        }
      



    }
}