InOutParam.cs 13.1 KB
using log4net;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;


namespace OnlineStore.DeviceLibrary
{
    /// <summary>
    /// 出入库参数
    /// </summary>
    public class InOutParam
    {
        public InOutParam()
        {
            ACStoreP = null;
            this.PosInfo = new InOutPosInfo("", "");
            MoveP = null;
        }

        public InOutParam(InOutPosInfo inoutInfo, LineMoveP linePosition = null)
        {
            ACStoreP = null;
            MoveP = linePosition;
            this.PosInfo = inoutInfo;
        }
        private XLRPosition ACStoreP = null;

        public XLRPosition GetACPosition()
        {
            try
            {
                if (ACStoreP == null)
                {
                    string posId = PosInfo != null ? PosInfo.PosId : "";
                    ACStoreP = CSVPositionReader<XLRPosition>.GetPositon(posId);
                }
            }
            catch (Exception ex)
            {
                LogUtil.error("出入库获取库位信息GetKTKPosition出错:" + ex.ToString());
            }
            return ACStoreP;
        }

        public InOutPosInfo PosInfo { get; set; }
        /// <summary>
        /// 料叉已取料的信息
        /// </summary>
        public InOutPosInfo PosInfoBack { get; set; } = null;
        public LineMoveP MoveP { get; set; }
        /// <summary>
        /// 入料机构从哪个料串取料,或出库放到哪个料串
        /// 0=未知,1=A侧料串,2=B侧料串
        /// </summary>
        public int ShelfType{ get; set; }=0;
} 
    /// <summary>
    /// 出入库料盘信息
    /// </summary>
    public class InOutPosInfo
    {
        public InOutPosInfo() { }
        public InOutPosInfo(string barcode, string posId, int platew = 0, int plateh = 0, bool urgentReel = false, bool cutReel = false, bool smallReel = false, string rfid = "", int rfidLoc = 0, bool singleOut = false)
        {
            this.barcode = barcode;
            this.PosId = posId;
            this.PlateW = platew;
            this.PlateH = plateh;
            this.urgentReel = urgentReel;
            this.cutReel = cutReel;
            this.smallReel = smallReel;
            this.rfid = rfid;
            this.rfidLoc = rfidLoc;
            this.singleOut = singleOut;
        }

        public static InOutPosInfo NewNgPos(string barcode, string posId, int platew, int plateh, string ngMsg)
        {
            InOutPosInfo inOut = new InOutPosInfo(barcode, posId, platew, plateh);
            inOut.IsNG = true;
            inOut.NgMsg = ngMsg;
            return inOut;
        }

        /// <summary>
        /// 物品二维码
        /// </summary>
        public string barcode { get; set; }
        /// <summary>
        /// 库位号编码
        /// </summary>
        public string PosId { get; set; }
        /// <summary>
        /// 料盘宽
        /// </summary>
        public int PlateW { get; set; }
        /// <summary>
        /// 料盘高
        /// </summary>
        public int PlateH { get; set; }

        /// <summary>
        /// urgentReel: true 表示紧急料,
        /// </summary>
        public bool urgentReel { get; set; }
        /// <summary>
        /// cutReel: true 表示分盘料,
        /// </summary>
        public bool cutReel { get; set; }
        /// <summary>
        /// smallReel: true  小料(7x8),
        /// </summary>
        public bool smallReel { get; set; }

        /// <summary>
        /// rfid: 分配的料架RFID
        /// </summary>
        public string rfid { get; set; }
        /// <summary>
        /// 料架位置
        /// </summary>
        public int rfidLoc { get; set; }

        public bool singleOut = false;
        public string ToStr()
        {
            return "  [" + barcode + "] [" + PosId + "] [" + PlateW + "x" + PlateH + "],urgentReel [" + urgentReel
                + "],cutReel [" + cutReel + "],smallReel [" + smallReel + "],rfid [" + rfid + "],rfidLoc [" + rfidLoc + "],singleOut[" + singleOut + "]";
        }

        public bool IsNG { get; set; } = false;

        public string NgMsg { get; set; } = "";
    }
    /// <summary>
    /// 出入库位置信息
    /// </summary>
    public class LineMoveP
    {
        public LineMoveP() { }

        public LineMoveP(BoxEquip_Config equip_Config, string posId = "")
        {
            if (!string.IsNullOrEmpty(posId))
                UpdatePosById(posId);
            LoadStaticPos(equip_Config);
        }
        /// <summary>
        /// 根据库位编号获取库位位置
        /// </summary>
        /// <param name="posId"></param>
        public void UpdatePosById(string posId)
        {
            BoxPosition position = CSVPositionReader<BoxPosition>.GetPositon(posId);
            if (position == null)
            {
                LogUtil.error("GetPositon[" + posId + "] =null,没有库位不能执行出入库");
            }

            PullAxis_Inout_P2_P4 = position.PullAxis_Inout_P2_P4;
            PullAxis_Inout_P3_P5 = position.PullAxis_Inout_P3_P5;
            PullAxis_Updown_P3 = position.PullAxis_Updown_P3;
            PullAxis_Updown_P4 = position.PullAxis_Updown_P4;
            Updown_P6_P12 = position.Updown_P6_P12;
            Updown_P7_P13 = position.Updown_P7_P13;
            XAxis_AB_P3 = position.XAxis_AB_P3;
            ComAxis_AB_P2 = position.ComAxis_AB_P2;
            ComAxis_AB_P3 = position.XAxis_AB_P3;
            MoveAxis_P3 = position.MoveAxis_P3;
        }
        /// <summary>
        /// 加载固定点位位置
        /// </summary>
        public void LoadStaticPos(BoxEquip_Config equip_Config)
        {
            MoveAxis_P1 = equip_Config.MoveAxis_P1;
            MoveAxis_P2 = equip_Config.MoveAxis_P2;
            PullAxis_Inout_P1 = equip_Config.PullAxis_Inout_P1;
            Updown_P1 = equip_Config.Updown_P1;
            Updown_P2 = equip_Config.Updown_P2;
            Updown_P3 = equip_Config.Updown_P3;
            Updown_P4 = equip_Config.Updown_P4;
            Updown_P5 = equip_Config.Updown_P5;
            Updown_P8 = equip_Config.Updown_P8;
            Updown_P9 = equip_Config.Updown_P9;
            Updown_P10 = equip_Config.Updown_P10;
            Updown_P11 = equip_Config.Updown_P11;
            PullAxis_Updown_P1 = equip_Config.PullAxis_Updown_P1;
            PullAxis_Updown_P2 = equip_Config.PullAxis_Updown_P2;
            XAxis_A_P1 = equip_Config.XAxis_A_P1;
            XAxis_A_P2 = equip_Config.XAxis_A_P2;
            MiddleAxis_A_P1 = equip_Config.MiddleAxis_A_P1;
            MiddleAxis_A_P2 = equip_Config.MiddleAxis_A_P2;
            MiddleAxis_A_P3 = equip_Config.MiddleAxis_A_P3;
            ComAxis_A_P1 = equip_Config.ComAxis_A_P1;
            XAxis_B_P1 = equip_Config.XAxis_B_P1;
            XAxis_B_P2 = equip_Config.XAxis_B_P2;
            MiddleAxis_B_P1 = equip_Config.MiddleAxis_B_P1;
            MiddleAxis_B_P2 = equip_Config.MiddleAxis_B_P2;
            MiddleAxis_B_P3 = equip_Config.MiddleAxis_B_P3;
            ComAxis_B_P1 = equip_Config.ComAxis_B_P1;
        }
        #region 固定轴移动点位信息
        /// <summary>
        ///  PRO,0,行走机构_待机点P1,MoveAxis_P1,100,,,,,,,,,,,,
        /// </summary>
        public int MoveAxis_P1 = 0;

        /// <summary>
        ///  PRO,0,行走机构_进出料机构取放点位P2,MoveAxis_P2,100,,,,,,,,,,,,
        /// </summary>
        public int MoveAxis_P2 = 0;

        /// <summary>
        ///  PRO,0,料斗拉取进出轴_待机点P1,PullAxis_Inout_P1,100,,,,,,,,,,,,
        /// </summary>
        public int PullAxis_Inout_P1 = 0;

        /// <summary>
        ///  PRO,0,移栽升降轴_待机点P1,Updown_P1,100,,,,,,,,,,,,
        /// </summary>
        public int Updown_P1 = 0;

        /// <summary>
        ///  PRO,0,移栽升降轴_A上暂存区取料高点P2,Updown_P2,100,,,,,,,,,,,,
        /// </summary>
        public int Updown_P2 = 0;

        /// <summary>
        /// PRO,0,移栽升降轴_A上暂存区取料低点P3,Updown_P3,100,,,,,,,,,,,,
        /// </summary>
        public int Updown_P3 = 0;

        /// <summary>
        /// PRO,0,移栽升降轴_A下暂存区放料高点P4,Updown_P4,100,,,,,,,,,,,,
        /// </summary>
        public int Updown_P4 = 0;

        /// <summary>
        ///  PRO,0,移栽升降轴_A下暂存区放料低点P5,Updown_P5,100,,,,,,,,,,,,
        /// </summary>
        public int Updown_P5 = 0;

        /// <summary>
        ///  PRO,0,移栽升降轴_B上暂存区取料高点P8,Updown_P8,100,,,,,,,,,,,,
        /// </summary>
        public int Updown_P8 = 0;

        /// <summary>
        ///  PRO,0,移栽升降轴_B上暂存区取料低点P9,Updown_P9,100,,,,,,,,,,,,
        /// </summary>
        public int Updown_P9 = 0;

        /// <summary>
        ///  PRO,0,移栽升降轴_B下暂存区取料高点P10,Updown_P10,100,,,,,,,,,,,,
        /// </summary>
        public int Updown_P10 = 0;

        /// <summary>
        ///  PRO,0,移栽升降轴_B下暂存区取料低点P11,Updown_P11,100,,,,,,,,,,,,
        /// </summary>
        public int Updown_P11 = 0;

        /// <summary>
        ///  PRO,0,料斗拉取升降轴_待机点P1,PullAxis_Updown_P1,100,,,,,,,,,,,,
        /// </summary>
        public int PullAxis_Updown_P1 = 0;

        /// <summary>
        ///  PRO,0,料斗拉取升降轴_料屉提取水平点P2,PullAxis_Updown_P2,100,,,,,,,,,,,,
        /// </summary>
        public int PullAxis_Updown_P2 = 0;

        /// <summary>
        ///  PRO,0,A面移栽X轴_待机点P1,XAxis_A_P1,100,,,,,,,,,,,,
        /// </summary>
        public int XAxis_A_P1 = 0;

        /// <summary>
        ///  PRO,0,A面移栽X轴_A进出料暂存区取放料点P2,XAxis_A_P2,100,,,,,,,,,,,,
        /// </summary>
        public int XAxis_A_P2 = 0;

        /// <summary>
        ///  PRO,0,A面移栽旋转轴_待机点P1,MiddleAxis_A_P1,100,,,,,,,,,,,,
        /// </summary>
        public int MiddleAxis_A_P1 = 0;

        /// <summary>
        ///  PRO,0,A面移栽旋转轴_A进出料暂存区取放料水平点P2,MiddleAxis_A_P2,100,,,,,,,,,,,,
        /// </summary>
        public int MiddleAxis_A_P2 = 0;

        /// <summary>
        /// PRO,0,A面移栽旋转轴_A面料屉库位垂直取放料点P3,MiddleAxis_A_P3,100,,,,,,,,,,,,
        /// </summary>
        public int MiddleAxis_A_P3 = 0;

        /// <summary>
        ///  PRO,0,A面移栽压紧轴_待机点P1,ComAxis_A_P1,100,,,,,,,,,,,,
        /// </summary>
        public int ComAxis_A_P1 = 0;

        /// <summary>
        ///  PRO,0,B面移栽X轴_待机点P1,XAxis_B_P1,100,,,,,,,,,,,,
        /// </summary>
        public int XAxis_B_P1 = 0;

        /// <summary>
        ///  PRO,0,B面移栽X轴_B进出料暂存区取放料点P2,XAxis_B_P2,100,,,,,,,,,,,,
        /// </summary>
        public int XAxis_B_P2 = 0;

        /// <summary>
        ///  PRO,0,B面移栽旋转轴_待机点P1,MiddleAxis_B_P1,100,,,,,,,,,,,,
        /// </summary>
        public int MiddleAxis_B_P1 = 0;

        /// <summary>
        /// PRO,0,B面移栽旋转轴_B进出料暂存区取放料水平点P2,MiddleAxis_B_P2,100,,,,,,,,,,,,
        /// </summary>
        public int MiddleAxis_B_P2 = 0;

        /// <summary>
        ///  PRO,0,B面移栽旋转轴_B面料屉库位垂直取放料点P3,MiddleAxis_B_P3,100,,,,,,,,,,,,
        /// </summary>
        public int MiddleAxis_B_P3 = 0;

        /// <summary>
        ///  PRO,0,B面移栽压紧轴_待机点P1,ComAxis_B_P1,100,,,,,,,,,,,,
        /// </summary>
        public int ComAxis_B_P1 = 0;

        #endregion

        #region 灵活轴移动点位信息
        /// <summary>
        /// PRO,0,行走机构_存储库位取放点位P3,MoveAxis_P3,100,,,,,,,,,,,,
        /// </summary>
        public int MoveAxis_P3 = 0;
        /// <summary>
        /// 料斗进出轴料屉提取点
        /// P2 对应 A面
        /// P4 对应 B面
        /// </summary>
        public int PullAxis_Inout_P2_P4 = 0;

        /// <summary>
        /// 料斗进出轴料屉库位点
        /// P3 对应 A面
        /// P5 对应 B面
        /// </summary>
        public int PullAxis_Inout_P3_P5 = 0;
        /// <summary>
        /// 料斗升降轴料屉提取高点P3
        /// </summary>
        public int PullAxis_Updown_P3 = 0;
        /// <summary>
        /// 料斗升降轴料屉提取低点P4
        /// </summary>
        public int PullAxis_Updown_P4 = 0;

        /// <summary>
        /// 移栽升降轴料屉上方过渡点
        /// P6 对应 A面
        /// P12 对应 B面
        /// </summary>
        public int Updown_P6_P12 = 0;
        /// <summary>
        /// 移栽升降轴料屉取放点
        /// P7 对应 A面
        /// P13 对应 B面
        /// </summary>
        public int Updown_P7_P13 = 0;
        /// <summary>
        /// AB移栽X轴料屉库位取放料点P3
        /// </summary>
        public int XAxis_AB_P3 = 0;

        /// <summary>
        /// AB移栽压紧轴压紧前点P2
        /// </summary>
        public int ComAxis_AB_P2 = 0;
        /// <summary>
        /// AB移栽压紧轴压紧点P3
        /// </summary>
        public int ComAxis_AB_P3 = 0;
        #endregion
    }
}