LabelMachine.Tmove.cs 7.5 KB
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using CodeLibrary;
using Newtonsoft.Json;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
namespace DeviceLibrary
{
    using static System.Windows.Forms.VisualStyles.VisualStyleElement.ProgressBar;
    using crc = OnlineStore.CodeResourceControl;
    public partial class LabelMachine
    {
        /// <summary>
        /// 等待响应料盘移栽
        /// </summary>
        public bool NextNeedWaitTransplanting=false;

        public bool CanNextWaitTransplanting(RemoteLoad remoteLoad, out string msg)
        {
            msg = "";
            if (!RobotManage.isRunning || runStatus != RunStatus.Running)
            {
                msg = "主设备不在运行,不能放料";
                return false;
            }
            if (IOValue(IO_Label_Type.Tray_Check, IO_VALUE.HIGH))
            {
                msg = "等待1号机物料流走";
                return false;
            }
            if (TransMoveInfo.MoveStep != MoveStep.Wait)
            {
                msg = "正在处理移栽物料,不能放料";
                return false;
            }

            NextNeedWaitTransplanting=true;
            TransMoveInfo.NextMoveStep(MoveStep.Trans_WaitReady);
            TransMoveInfo.ReelParam = remoteLoad.RequestLoadInfo.LoadParam.clone();
            TransMoveInfo.log($"等待2号机放置料盘:"+ TransMoveInfo.ReelParam.ToDetailStr());
            return true;
        }
        
        public bool PutReelFinish(RemoteLoad remoteLoad, out string msg)
        {
            msg = "";
            NextNeedWaitTransplanting=false;
            TransMoveInfo.NextMoveStep(MoveStep.Trans_01);
            TransMoveInfo.ReelParam = remoteLoad.RequestLoadInfo.LoadParam.clone();
            TransMoveInfo.log("收到料盘:"+ TransMoveInfo.ReelParam.ToDetailStr());
            return true;
        }

        string GroupName = "XRAY02";
        void TransProcess()
        {
            if (CheckWait(TransMoveInfo))
                return;

            switch (TransMoveInfo.MoveStep)
            {
                case MoveStep.Wait:
                    break;
                case MoveStep.Trans_WaitReady:
                    var xrstep = (RobotManage.xrayMachine.MoveInfo.MoveStep == MoveStep.XRay_11_GetCoutResult
                        || RobotManage.xrayMachine.MoveInfo.MoveStep <= MoveStep.XRay_09_SentToLabelStop);
                    var lbstep = (MoveInfo.MoveStep == MoveStep.Lbl_01_Wait_ATray || MoveInfo.MoveStep >= MoveStep.Lbl_03_StopDown_and_wait);
                    if (xrstep && lbstep
                        && IOValue(IO_Label_Type.Line1_Run).Equals(IO_VALUE.LOW)
                        && secPreReelParam == null
                        )
                    {
                        Msg.add($"等待2号机放置料盘", MsgLevel.info);
                        RemoteLoad remoteLoad1 = new RemoteLoad();
                        remoteLoad1.Seq = Snowflake.Instance().GetId();
                        remoteLoad1.Action = "StartPutReel";
                        remoteLoad1.RequestLoadInfo = new RequestLoadInfo();
                        var remoteresult = RemoteService.SendAndWait(GroupName, remoteLoad1);
                        if (remoteresult == RemoteResult.True)
                        {
                            TransMoveInfo.log($"{GroupName} 等待物料到位");
                            TransMoveInfo.NextMoveStep(MoveStep.Trans_WaitReel);
                            ConfigHelper.Config.Set($"Runtime_{GroupName}_MoveParamJson", JsonConvert.SerializeObject(TransMoveInfo.ReelParam));
                            return;
                        }
                        else if (remoteresult == RemoteResult.False)
                        {
                            TransMoveInfo.NextMoveStep(MoveStep.Wait);
                            TransMoveInfo.log($"{GroupName} 没有准备好放料盘");
                        }
                        else
                        {
                            Msg.add($"{GroupName} 通讯超时", MsgLevel.warning);
                        }
                    }
                    else {
                        Msg.add($"等待二号机放料位置空闲,D:{secPreReelParam == null},XR:{xrstep},LB:{lbstep},LR:{IOValue(IO_Label_Type.Line1_Run).Equals(IO_VALUE.LOW)}", MsgLevel.info);
                    
                    }
                    break;
                case MoveStep.Trans_WaitReel:
                    TransMoveInfo.log($"{GroupName} 等待料盘放下");
                    break;
                case MoveStep.Trans_01:
                    TransMoveInfo.NextMoveStep(MoveStep.Trans_02);
                    //RobotManage.Line1.LineRun("trans", 999, "Trans_01");
                    //TransMoveInfo.StopwatchLog(false, "开始送出");
                    break;
                case MoveStep.Trans_02:
                    if (RobotManage.labelMachine.IOValue(IO_Label_Type.Line_HasTray_Check).Equals(IO_VALUE.HIGH))
                    {                        
                        if (!RobotManage.offlinemode && !TransMoveInfo.ReelParam.IsNg)
                        {
                            var cl = ServerConn.inputCounterDataByXRayMachine(TransMoveInfo.ReelParam.WareCode, TransMoveInfo.ReelParam.QTY);
                            if (cl == null)
                            {
                                TransMoveInfo.ReelParam.IsNg = true;
                                TransMoveInfo.ReelParam.NgMsg = "点料数量上传失败";
                                TransMoveInfo.ReelParam.logresult();
                            }
                        }
                        TransMoveInfo.NextMoveStep(MoveStep.Trans_03);
                        RobotManage.labelMachine.secPreReelParam = TransMoveInfo.ReelParam;
                        TransMoveInfo.log("料盘到达贴标线入口");
                    }
                    else if (MoveInfo.IsTimeOut(10))
                    {
                        Msg.add("等待二号机料盘放到皮带线", MsgLevel.warning);
                        TransMoveInfo.log("等待二号机料盘放到皮带线");
                    }
                    break;
                case MoveStep.Trans_03:
                    TransMoveInfo.NextMoveStep(MoveStep.Trans_04);
                    TransMoveInfo.log("二号料盘已准备好,等待贴标机1");
                    break;
                case MoveStep.Trans_04:
                    TransMoveInfo.NextMoveStep(MoveStep.Trans_05);
                    TransMoveInfo.log("二号料盘已准备好,等待贴标机2");
                    break;
                case MoveStep.Trans_05:
                    if (RobotManage.labelMachine.IOValue(IO_Label_Type.Line_HasTray_Check).Equals(IO_VALUE.LOW))
                    {
                        TransMoveInfo.NextMoveStep(MoveStep.Trans_06);
                        TransMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1500));
                        TransMoveInfo.log("料盘已离开");
                    }
                    else if (TransMoveInfo.IsTimeOut(15))
                    {
                        Msg.add("等待贴标机处理二号机料盘", MsgLevel.warning);
                        TransMoveInfo.log("等待贴标机处理二号机料盘");
                    }
                    break;
                case MoveStep.Trans_06:
                    TransMoveInfo.log("完成");
                    TransMoveInfo.EndMove();
                    break;
            }
        }

    }
}