AutoStorePosition.cs 7.0 KB
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 

namespace OnlineStore.LoadCSVLibrary
{ 
    public class AutoStorePosition : StorePostionBase
    {    /// <summary>
        /// 对应的料仓ID(流水线料仓需要用此字段区分哪个BOX)
        /// </summary>
        [CSVAttribute("料仓ID", "StoreID")]
        public int StoreId { get; set; }
         
        /// <summary>
        /// 支持批量操作,1=支持,0=不支持
        /// </summary>
        [CSVAttribute("支持批量操作", "SupportBatch")]
        public int SupportBatch { get; set; }


        /// <summary>
        /// 中轴位置(旋转轴库位点)P2
        /// </summary>
        [CSVAttribute("中轴位置P2", "MiddleAxis_Position_P2")]
        public int MiddleAxis_Position_P2 { get; set; }

        /// <summary>
        /// 升降轴(库位出料前点)P5
        /// </summary>
        [CSVAttribute("升降轴库位出料前点P5", "UpDownAxis_OHPosition_P5")]
        public int UpDownAxis_OHPosition_P5 { get; set; }
        /// <summary>
        /// 升降轴(库位出料缓冲点)P6
        /// </summary>
        [CSVAttribute("升降轴库位出料缓冲点P6", "UpDownAxis_OLPosition_P6")]
        public int UpDownAxis_OLPosition_P6 { get; set; }
        /// <summary>
        /// 升降轴(库位入料前点)P3
        /// </summary>
        [CSVAttribute("升降轴库位入料前点P3", "UpDownAxis_IHPosition_P3")]
        public int UpDownAxis_IHPosition_P3 { get; set; }
        /// <summary>
        /// 升降轴(库位入料缓冲点)P4
        /// </summary>
        [CSVAttribute("升降轴库位入料缓冲点P4", "UpDownAxis_ILPosition_P4")]
        public int UpDownAxis_ILPosition_P4 { get; set; }

        /// <summary>
        /// 进出轴(库位点取料点)P3
        /// </summary>
        [CSVAttribute("进出轴库位点取料点P3", "InOutAxis_Position_P3")]
        public int InOutAxis_Position_P3 { get; set; }

        /// <summary>
        /// 压紧轴(压紧点)P2
        /// </summary>
        [CSVAttribute("压紧轴压紧点P2", "CompressAxis_Position_P2")]
        public int CompressAxis_Position_P2 { get; set; }
        /// <summary>
        /// 压紧轴(压紧前点)P3
        /// </summary>
        [CSVAttribute("压紧轴压紧前点P3", "CompressAxis_CPosition_P3")]
        public int CompressAxis_CPosition_P3 { get; set; }

        /// <summary>
        /// 轴3(进出轴) 进出轴仓门出料点P4 ,料仓门口取料放料点
        /// </summary> 
        [CSVAttribute("进出轴仓门出料点P4", "InOutAxis_DoorOutPosition_P4")]
        public int InOutAxis_DoorOutPosition_P4 { get; set; }
        /// <summary>
        /// 轴3(进出轴) 进出轴吸盘取料点P2 ,吸盘下方取放料点,批量出入库时使用
        /// </summary> 
        [CSVAttribute("进出轴吸盘取料点P2", "InOutAxis_Batch_P2")]
        public int InOutAxis_Batch_P2 { get; set; }

        public override string ToString()
        {
            return $"UpDownAxis_IHPosition_P3={UpDownAxis_IHPosition_P3},UpDownAxis_ILPosition_P4={UpDownAxis_ILPosition_P4}";
        }
        public static bool CheckPosition(AutoStorePosition position, AUTO_SA_Config Config)
        { 
            try
            {
                if (Config.Middle_Axis.PositionIsHasLimit())
                {
                    int mMin = Config.Middle_Axis.PositionMin;
                    int mMax = Config.Middle_Axis.PositionMax;
                    if (mMin > position.MiddleAxis_Position_P2 || mMax < position.MiddleAxis_Position_P2)
                    {
                        LogUtil.error(position.PositionNum + " MiddleAxis_Position_P2位置超出" + Config.Middle_Axis.Explain + "上下限(" + mMin + "-" + mMax + ")");
                        return false;
                    }
                }
                if (Config.InOut_Axis.PositionIsHasLimit())
                {
                    int iMin = Config.InOut_Axis.PositionMin;
                    int iMax = Config.InOut_Axis.PositionMax;
                    if (iMin > position.InOutAxis_DoorOutPosition_P4 || iMax < position.InOutAxis_DoorOutPosition_P4)
                    {
                        LogUtil.error(position.PositionNum + " InOutAxis_DoorPosition_P2位置超出" + Config.InOut_Axis.Explain + "上下限(" + iMin + "-" + iMax + ")");
                        return false;
                    }
                    if (iMin > position.InOutAxis_Position_P3 || iMax < position.InOutAxis_Position_P3)
                    {
                        LogUtil.error(position.PositionNum + " InOutAxis_Position_P3位置超出" + Config.InOut_Axis.Explain + "上下限(" + iMin + "-" + iMax + ")");
                        return false;
                    }
                    if (iMin > position.InOutAxis_Batch_P2 || iMax < position.InOutAxis_Batch_P2)
                    {
                        LogUtil.error(position.PositionNum + " InOutAxis_Batch_P2位置超出" + Config.InOut_Axis.Explain + "上下限(" + iMin + "-" + iMax + ")");
                        return false;
                    }
                }
                if (Config.UpDown_Axis.PositionIsHasLimit())
                {
                    int uMin = Config.UpDown_Axis.PositionMin;
                    int uMax = Config.UpDown_Axis.PositionMax;
                    if (uMin > position.UpDownAxis_IHPosition_P3 || uMax < position.UpDownAxis_IHPosition_P3)
                    {
                        LogUtil.error(position.PositionNum + " UpDownAxis_IHPosition_P3位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
                        return false;
                    }
                    if (uMin > position.UpDownAxis_ILPosition_P4 || uMax < position.UpDownAxis_ILPosition_P4)
                    {
                        LogUtil.error(position.PositionNum + " UpDownAxis_ILPosition_P4位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
                        return false;
                    }
                    if (uMin > position.UpDownAxis_OHPosition_P5 || uMax < position.UpDownAxis_OHPosition_P5)
                    {
                        LogUtil.error(position.PositionNum + " UpDownAxis_OHPosition_P5位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
                        return false;
                    }
                    if (uMin > position.UpDownAxis_OLPosition_P6 || uMax < position.UpDownAxis_OLPosition_P6)
                    {
                        LogUtil.error(position.PositionNum + " UpDownAxis_OLPosition_P6位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
                        return false;
                    }
                }
            }
            catch (Exception ex)
            {
                LogUtil.error("验证" + position.PositionNum + "的位置范围出错:" + ex.ToString());
            }
            return true;

        } 

    }
}