MainMachine _LeftProcess.cs 5.7 KB
using CodeLibrary;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DeviceLibrary
{
    partial class MainMachine
    {
        bool LeftShelfNoTray = false;
        void LeftProcess()
        {
            if (CheckWait(LeftMoveInfo))
                return;

            switch (LeftMoveInfo.MoveStep)
            {
                case MoveStep.L01:
                    LeftMoveInfo.NextMoveStep(MoveStep.L03);
                    LeftBatchAxisToP2(true);
                    LeftMoveInfo.log($"批量轴上升到P2位置,第一次提升,LeftStartMovePosition={LeftStartMovePosition}");
                    break;
                case MoveStep.L02:
                    LeftMoveInfo.NextMoveStep(MoveStep.L03);
                    LeftBatchAxisToP2(false);
                    LeftMoveInfo.log($"批量轴上升到P2位置,二次提升,LeftStartMovePosition={LeftStartMovePosition}");
                    break;
                case MoveStep.L03:
                    if (IOValue(IO_Type.LeftOverHead_Check).Equals(IO_VALUE.HIGH))
                    {
                        LeftMoveInfo.NextMoveStep(MoveStep.L02);
                        Left_Batch_Axis.AbsMove(LeftMoveInfo, LeftStartMovePosition, Config.Left_Batch_P2_speed);
                        LeftMoveInfo.log($"批量轴上升过头,下降到:LeftStartMovePosition={LeftStartMovePosition}");
                    }
                    else {
                        LeftMoveInfo.NextMoveStep(MoveStep.L04);
                    }
                    break;
                case MoveStep.L04:
                    var currpos = Left_Batch_Axis.GetAclPosition()-Config.Left_Batch_ChangeValue*80;
                    if (currpos < Config.Left_Batch_P1)
                    {
                        LeftMoveInfo.NextMoveStep(MoveStep.L40_ShelfFull);
                        LeftMoveInfo.log($"批量轴已下降到底,料串已满,Left_Batch_P1={Config.Left_Batch_P1},needpos={currpos}");
                    }
                    else
                    {
                        LeftMoveInfo.NextMoveStep(MoveStep.L10_WaitReelPut);
                        Left_Batch_Axis.AbsMove(LeftMoveInfo, currpos, Config.Left_Batch_P1_speed);
                        LeftMoveInfo.log($"批量轴已下降一张料盘位置,等待料盘放入,needpos={currpos}");
                    }
                    break;
                case MoveStep.L10_WaitReelPut:
                    break;
                case MoveStep.L11_ReelPutted:
                    LeftMoveInfo.NextMoveStep(MoveStep.L12);
                    LeftBatchAxisToP2(false);
                    LeftMoveInfo.log($"料盘已放入,批量轴上升,LeftStartMovePosition={LeftStartMovePosition}");
                    break;
                case MoveStep.L12:
                    if (IOValue(IO_Type.LeftOverHead_Check).Equals(IO_VALUE.HIGH))
                    {
                        LeftMoveInfo.NextMoveStep(MoveStep.L11_ReelPutted);
                        Left_Batch_Axis.AbsMove(LeftMoveInfo, LeftStartMovePosition, Config.Left_Batch_P2_speed);
                        LeftMoveInfo.log($"批量轴上升过头,下降到:LeftStartMovePosition={LeftStartMovePosition}");
                    }
                    else
                    {
                        LeftMoveInfo.NextMoveStep(MoveStep.L20_WaitLabel);
                        LeftMoveInfo.log($"批量轴完成上升,等待贴标");
                    }
                    break;
                case MoveStep.L20_WaitLabel:
                    break;
                case MoveStep.L30_LabelFinish:
                    LeftMoveInfo.NextMoveStep(MoveStep.L04);
                    LeftMoveInfo.log($"贴标完成,准备下一盘料");
                    break;
                case MoveStep.L40_ShelfFull:
                    LeftMoveInfo.NextMoveStep(MoveStep.LEND);
                    Left_Batch_Axis.AbsMove(LeftMoveInfo, Config.Left_Batch_P1, Config.Left_Batch_P1_speed);
                    LeftMoveInfo.log($"料串已满,批量轴下降到P1位置");
                    break;
                case MoveStep.LEND:
                    LeftMoveInfo.EndMove();
                    break;
            }
        }


        int LeftStartMovePosition = 0;
        void LeftBatchAxisToP2(bool isFirstMove = true)
        {
            int targetP2 = Config.Left_Batch_P2;
            int targetSpeed = Config.Left_Batch_P2_speed;
            if (!isFirstMove)
            {
                int currPosition = Left_Batch_Axis.GetAclPosition();
                if (currPosition != -1)
                {
                    //targetP2 = currPosition + Config.Left_Batch_ChangeValue * 80;
                    if (targetP2 > Config.Left_Batch_P2)
                    {
                        targetP2 = Config.Left_Batch_P2;
                    }
                    LeftMoveInfo.log("BatchAxisToP2 目标P2: " + targetP2 + "(" + currPosition + ")");
                }
                //targetSpeed = Config.BatchAxis_P3Speed / 2;
            }
            LeftMoveInfo.TimeOutSeconds = 200;
            LeftMoveInfo.CanWhileCount = 0;
            //  需要增加定时器,获取验证信号并停止伺服
            LeftStartMovePosition = Left_Batch_Axis.GetAclPosition();
            LeftMoveInfo.WaitList.Add(WaitResultInfo.WaitBatchAxisMove(Config.Left_Batch_Axis, targetP2, targetSpeed));
            Config.Left_Batch_Axis.TargetPosition = targetP2;
            Left_Batch_Axis.AbsMove(null, targetP2, targetSpeed);
            //开始检测信号
            Left_Batch_Axis.BatchAxisStartCheck(IO_Type.LeftTop_Check, IO_VALUE.LOW);
        }


    }
}