HYEquipBase.cs 6.9 KB
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OnlineStore.DeviceLibrary
{
    public abstract   class  HYEquipBase : EquipBase
    {
        public HYEquip_Config Config;

        /// <summary>
        /// 当前设备对应的横移出口的设备ID
        /// </summary>
        public  int HyOutDeviceId = 0;
        /// <summary>
        /// 当前设备对应的横移入口的设备ID
        /// </summary>
        public int HyInDeviceId = 0;
        public static HYEquipBase GetHY(string cid, HYEquip_Config config)
        {
            int hynum = (config.Id % 100); 
            List<int> jNumList = new List<int>() { 5 };
            if (jNumList.Contains(hynum))
            {
                return new HY_Coveryor(cid, config);
            }
            else
            {
                return new HY_C1_SLStation(cid, config);
            }

        }

        public HYEquipBase(string cid, HYEquip_Config config)
        {
            this.DeviceID = config.Id;
            this.Config = config;
            baseConfig = config;
            IsDebug = config.IsDebug.Equals(1);
            Name = (" HY" + (DeviceID % 100).ToString().PadLeft(1, '0') + " ").ToUpper();

            Init();
            MoveInfo = new LineMoveInfo(DeviceID, "[" + Name.Trim() + "-Move]");
            SecondMoveInfo = new LineMoveInfo(DeviceID, "[" + Name.Trim() + "-SMove]");
            UseAxis = config.UpDownUseAxis.Equals(1);
            if (UseAxis)
            {
                UpdownAxis = new AxisBean(config.UpDown_Axis, Name);
            }
            HyOutDeviceId = 0;
            HyInDeviceId = 0;

            if (DeviceID.Equals(201))
            {
                HyOutDeviceId = 202;
            }
            else if (DeviceID.Equals(202))
            {
                HyInDeviceId = 201;
            }
            else if (DeviceID.Equals(203))
            {
                HyOutDeviceId = 204;
            }
            else if (DeviceID.Equals(204))
            {
                HyInDeviceId = 203;
            }

            
            RFIDIP = RFIDManager.GetRFIP(DeviceID);
        }


        public string GetHYDesc()
        {
            StringBuilder buf = new StringBuilder();
            //buf.Append("    所在流水线:" + Config.LineName+"\r\n");
            string dName = "暂无";
            if (Config.WorkDeviceId > 0 && LineManager.Line.AllEquipMap.ContainsKey(Config.WorkDeviceId))
            {
                dName = LineManager.Line.AllEquipMap[Config.WorkDeviceId].Name;
            }
            buf.Append("    取放料设备:" + dName + "\r\n");
            if (Config.IsSideWayIn)
            {
                dName = LineManager.Line.AllEquipMap[HyOutDeviceId].Name;
                buf.Append("横移入口:✔" + ",对应出口" + dName + "\r\n");
            }
            if (Config.IsSideWayOut)
            {
                dName = LineManager.Line.AllEquipMap[HyInDeviceId].Name;
                buf.Append("横移出口:✔" + ",对应入口" + dName + "\r\n");
            }
           
            if (Config.Id.Equals(205))
            {
                buf.Append("     出料工位:✔" + "\r\n");
            }

            return buf.ToString();
        }
         

        protected HYEquipBase GetHyOutEquip()
        {
            if (HyOutDeviceId > 0)
            {
                return LineManager.Line.HYEquipMap[HyOutDeviceId];
            }
            return null;
        }
        protected HYEquipBase GetHyInEquip()
        {
            if (HyInDeviceId > 0)
            {
                return LineManager.Line.HYEquipMap[HyInDeviceId];
            }
            return null;
        }

        internal virtual  bool TrayIsReady()
        {
            return false;
        }

        internal virtual  void TrayCanLeave()
        {
        }

        internal virtual bool CanStartMove()
        {
            if (MoveInfo.MoveType.Equals(LineMoveType.None) && runStatus.Equals(LineRunStatus.Runing))
            {
                if (IOValue(IO_Type.HY_TrayCheck).Equals(IO_VALUE.LOW))
                {
                    return true;
                }
            }
            return false;
        }

        #region 定位气缸升降 ,链条转动
        public void LocationCylinderUp(LineMoveInfo moveinfo = null)
        {
            if (DeviceID.Equals(202))
            {
                IOMove(IO_Type.HY_LocationCylinder_Down, IO_VALUE.LOW);
                IOMove(IO_Type.HY_LocationCylinder_Up, IO_VALUE.HIGH);
                if (moveinfo != null)
                {
                    moveinfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_LocationCylinder_Down1, IO_VALUE.LOW));
                    moveinfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_LocationCylinder_Up1, IO_VALUE.HIGH));
                    moveinfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_LocationCylinder_Down2, IO_VALUE.LOW));
                    moveinfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_LocationCylinder_Up2, IO_VALUE.HIGH));
                }
            }
        }

        public void LocationCylinderDown(LineMoveInfo moveinfo = null)
        {
            if (DeviceID.Equals(202))
            {
                IOMove(IO_Type.HY_LocationCylinder_Up, IO_VALUE.LOW);
                IOMove(IO_Type.HY_LocationCylinder_Down, IO_VALUE.HIGH);
                if (moveinfo != null)
                {
                    moveinfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_LocationCylinder_Up1, IO_VALUE.LOW));
                    moveinfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_LocationCylinder_Down1, IO_VALUE.HIGH));
                    moveinfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_LocationCylinder_Up2, IO_VALUE.LOW));
                    moveinfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_LocationCylinder_Down2, IO_VALUE.HIGH));
                }
            }
        }
        public void LineRun(LineMoveInfo moveInfo = null)
        { 
            IOMove(IO_Type.HY_LineRun, IO_VALUE.HIGH);
            if (moveInfo != null)
            {
                moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_LineRun, IO_VALUE.HIGH));
            }
        }
       
        public void LineStop(LineMoveInfo moveInfo = null)
        { 
            IOMove(IO_Type.HY_LineRun, IO_VALUE.LOW);
            if (moveInfo != null)
            {
                moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_LineRun, IO_VALUE.LOW));
            }
        }


        #endregion



        public override bool StartInStoreMove(InOutParam param)
        {
            return false;
        }

        public override bool StartOutStoreMove(InOutParam param)
        {
            return false;
        } 
        protected override void InStoreProcess()
        { 
        }

        protected override void OutStoreProcess()
        { 
        }

      
    }
}