BoxEquip_MoveAxisDebug.cs 3.7 KB
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OnlineStore.DeviceLibrary
{
    public partial class BoxEquip
    {
        int moveAxisRunCnt = 0;
        public bool MoveAxisDebug = true;
        public delegate void MoveAxisRunCntEventHandler(int cnt);
        public event MoveAxisRunCntEventHandler MoveAxisDebugEvent;
        public void StartMoveAixsDebug(string posId)
        {
            if (isInSuddenDown || isNoAirpressure_Check ||
                (!runStatus.Equals(RunStatus.Runing))
                   || (!MoveInfo.MoveType.Equals(MoveType.None)))
            {
                LogUtil.error(Name + " 启动行走机构调试出错,忙碌或报警中 ,storeStatus=" + runStatus + ",MoveType=" + MoveInfo.MoveType + ",isInSuddenDown=" + isInSuddenDown + ",isNoAirpressure_Check=" + isNoAirpressure_Check);
                return;
            }
            moveAxisRunCnt = 0;
            MoveAxisDebug=true;
            InOutParam param = new InOutParam(new InOutPosInfo("moveaxisdebug", posId));
            LogInfo(" 启动行走机构调试【" + param.PosInfo.ToStr() + "】 ");
            param.MoveP = new LineMoveP(Config, param.PosInfo.PosId);
            MoveInfo.NewMove(MoveType.Working, param);
            SetBoxStatus(DeviceStatus.Debugging, RunStatus.Busy);
            MoveInfo.NextMoveStep(StepEnum.Store_0_Start);
            PullAxis_Inout_To_P1();
        }
        public void StopMoveAxisDebug()
        {
            MoveAxisDebug = false;
        }
        public void MoveAxisDebugProcess()
        {
            if (MoveInfo.IsInWait)
            {
                CheckWait(MoveInfo);
            }
            if (MoveInfo.IsInWait)
            {
                return;
            }
            switch (MoveInfo.MoveStep)
            {
                case StepEnum.Store_0_Start:
                    MoveInfo.NextMoveStep(StepEnum.Store_1_ToTarget);
                    LogInfo($"行走机构调试{MoveInfo.SLog}: 开始调试,去目标位置");
                    MoveAxis.AbsMove(MoveInfo, MoveInfo.MoveParam.MoveP.MoveAxis_P3, Config.MoveAxis_P3_Speed);
                    break;
                case StepEnum.Store_1_ToTarget:
                    MoveInfo.NextMoveStep(StepEnum.Store_2_BackSource);
                    LogInfo($"行走机构调试 {MoveInfo.SLog}:到达目标位置,开始返回起始点");
                    MoveAxis.AbsMove(MoveInfo, MoveInfo.MoveParam.MoveP.MoveAxis_P1, Config.MoveAxis_P1_Speed);
                    break;
                case StepEnum.Store_2_BackSource:
                    moveAxisRunCnt++;
                    if(MoveAxisDebug)
                    {
                        MoveInfo.NextMoveStep(StepEnum.Store_1_ToTarget);
                        LogInfo($"行走机构调试 {MoveInfo.SLog}:到达起始点,去目标位置。当前来回次数:{moveAxisRunCnt}");
                        MoveAxisDebugEvent(moveAxisRunCnt);
                        MoveAxis.AbsMove(MoveInfo, MoveInfo.MoveParam.MoveP.MoveAxis_P3, Config.MoveAxis_P3_Speed);
                    }
                    else
                    {
                        MoveInfo.NextMoveStep(StepEnum.Store_3_Finish);
                        LogInfo($"行走机构调试 {MoveInfo.SLog}:运行结束,当前来回次数:{moveAxisRunCnt}");
                        MoveAxisDebugEvent(moveAxisRunCnt);
                    }
                    break;
                case StepEnum.Store_3_Finish:
                    SetBoxStatus(DeviceStatus.Debugging, RunStatus.Runing);
                    MoveInfo.EndMove();
                    break;
            }
        }
    }
}