TinStorePosition.cs 6.3 KB
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace OnlineStore.LoadCSVLibrary
{
    /// <summary>
    /// 松下伺服485控制,单台料仓
    /// </summary>
    public class TinStorePosition : PostionBase
    {
        /// <summary>
        /// 对应的料仓ID(流水线料仓需要用此字段区分哪个BOX)
        /// </summary>
        [CSVAttribute("料仓ID")]
        public int StoreId { get; set; }
        /// <summary>
        /// 库位类型 (1=冷藏区库位,2=回温区库位,>=100的为砝码区)
        /// </summary>
        [CSVAttribute("库位类型")]
        public int PosType { get; set; }

        /// <summary>
        /// 中轴位置(旋转轴库位点)P2
        /// </summary>
        [CSVAttribute("旋转轴位置P2")]
        public int MiddleAxis_P2 { get; set; }
        /// <summary>
        /// 升降轴(库位出料前点)P5
        /// </summary>
        [CSVAttribute("升降轴库位出料前点P5")]
        public int UpDownAxis_OH_P5 { get; set; }
        /// <summary>
        /// 升降轴(库位出料缓冲点)P6
        /// </summary>
        [CSVAttribute("升降轴库位出料缓冲点P6")]
        public int UpDownAxis_OL_P6 { get; set; }
        /// <summary>
        /// 升降轴(库位入料前点)P3
        /// </summary>
        [CSVAttribute("升降轴库位入料前点P3")]
        public int UpDownAxis_IH_P3 { get; set; }
        /// <summary>
        /// 升降轴(库位入料缓冲点)P4
        /// </summary>
        [CSVAttribute("升降轴库位入料缓冲点P4")]
        public int UpDownAxis_IL_P4 { get; set; }

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


        /// <summary>
        /// 回温区旋转轴库位点P2
        /// </summary>
        [CSVAttribute("回温区旋转轴库位点P2")]
        public int WarmAxis_P2 { get; set; }
        /// <summary>
        /// 冷藏区旋转轴P2
        /// </summary>
        [CSVAttribute("冷藏区旋转轴库位点P2")]
        public int ColdAxis_P2 { get; set; }


        public static bool CheckPosition(TinStorePosition position, TieStoreConfig Config)
        {
            try
            {
                if (Config.Middle_Axis.PositionIsHasLimit())
                {
                    int mMin = Config.Middle_Axis.PositionMin;
                    int mMax = Config.Middle_Axis.PositionMax;
                    if (mMin > position.MiddleAxis_P2 || mMax < position.MiddleAxis_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_DoorPosition_P2 || iMax < position.InOutAxis_DoorPosition_P2)
                    //{
                    //    LogUtil.error(position.PositionNum + " InOutAxis_DoorPosition_P2位置超出" + Config.InOut_Axis.Explain + "上下限(" + iMin + "-" + iMax + ")");
                    //    return false;
                    //}
                    if (iMin > position.InOutAxis_P3 || iMax < position.InOutAxis_P3)
                    {
                        LogUtil.error(position.PositionNum + " InOutAxis_P3 位置超出" + 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_IH_P3 || uMax < position.UpDownAxis_IH_P3)
                    {
                        LogUtil.error(position.PositionNum + " UpDownAxis_IH_P3 位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
                        return false;
                    }
                    if (uMin > position.UpDownAxis_IL_P4 || uMax < position.UpDownAxis_IL_P4)
                    {
                        LogUtil.error(position.PositionNum + " UpDownAxis_IL_P4 位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
                        return false;
                    }
                    if (uMin > position.UpDownAxis_OH_P5 || uMax < position.UpDownAxis_OH_P5)
                    {
                        LogUtil.error(position.PositionNum + " UpDownAxis_OH_P5 位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
                        return false;
                    }
                    if (uMin > position.UpDownAxis_OL_P6 || uMax < position.UpDownAxis_OL_P6)
                    {
                        LogUtil.error(position.PositionNum + " UpDownAxis_OL_P6 位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
                        return false;
                    }
                }
            }
            catch (Exception ex)
            {
                LogUtil.error("验证" + position.PositionNum + "的位置范围出错:" + ex.ToString());
            }
            return true;

        }

        public string PosTypeStr()
        {
            if (PosType.Equals(1))
            {
                return $"冷藏区库位[{BagWidth}x{BagHigh}]";
            }
            else if (PosType.Equals(2))
            {

                return $"回温区库位[{BagWidth}x{BagHigh}]";
            }
            else
            {

                return "砝码" + PosType + "g库位";
            }
        }
        /// <summary>
        /// 是否是锡膏库位
        /// </summary>
        /// <returns></returns>
        public bool IsTieBag()
        {
            if (BagWidth.Equals(60) && BagHigh.Equals(75))
            {
                return true;
            }
            return false;
        }

    }
}