HYEquipBase.cs 9.3 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> workList = new List<int>() { 1, 2, 20,21 };
            List<int> jNumList = new List<int>() { 10,12,17};
            List<int> oNumList = new List<int>() { 5, 7, 14 };
            //List<int> cNumList = new List<int>() { 10, 12, 17 };
            if (workList.Contains(hynum))
            {
                return new HY_C1_SLStation(cid, config);
            }
            if (jNumList.Contains(hynum))
            {
                return new HY_Coveryor(cid, config);

            }else if (oNumList.Contains(hynum))
            { 
                return new HY_OutLine(cid, config);
            }
            else
            { 
                return new HY_C1Line(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(2, '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))
            {
                HyInDeviceId = 202;
            }
            else if (DeviceID.Equals(202))
            {
                HyOutDeviceId = 201;
            }
            else if (DeviceID.Equals(220))
            {
                HyOutDeviceId = 221;
            }
            else if (DeviceID.Equals(221))
            {
                HyInDeviceId = 220;
            }

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

            else if (DeviceID.Equals(209))
            {
                HyOutDeviceId = 208;
            }
            else if (DeviceID.Equals(208))
            {
                HyInDeviceId = 209;
            }

            else if (DeviceID.Equals(215))
            {
                HyOutDeviceId = 216;
            }
            else if (DeviceID.Equals(216))
            {
                HyInDeviceId = 215;
            }
            else if (DeviceID.Equals(218))
            {
                HyOutDeviceId = 219;
            }
            else if (DeviceID.Equals(219))
            {
                HyInDeviceId = 218;
            }
            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("C1线横移入口:✔" + ",对应出口"+dName+"\r\n");
            }
            if (Config.IsSideWayOut)
            {
                dName = LineManager.Line.AllEquipMap[HyInDeviceId].Name;
                buf.Append("C1线横移出口:✔" + ",对应入口" + dName + "\r\n");
            }
            if (Config.IsOutLineIn)
            {
                buf.Append(" 出料托盘入口:✔" + "\r\n");
            }
            if (Config.IsOutLineOut)
            {
                buf.Append(" 出料托盘出口:✔" + "\r\n");
            }
            int hynum = (this.Config.Id % 100);
            List<int> jNumList = new List<int>() { 10, 12, 17 };
            if (hynum.Equals(17))
            {
                buf.Append("     NG料工位:✔" + "\r\n");
            }
          else  if (jNumList.Contains(hynum))
            {
                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()
        {
        }
        #region 定位气缸升降 ,链条转动
        public void LocationCylinderUp(LineMoveInfo moveinfo = null)
        {
            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)
        {
            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)
        {
            if (Config.DOList.ContainsKey(IO_Type.HY_LineBackRun))
            {
                IOMove(IO_Type.HY_LineBackRun, IO_VALUE.LOW);
                if (moveInfo != null)
                {
                    moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_LineBackRun, IO_VALUE.LOW));
                }
            }
            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 LineBackRun(LineMoveInfo moveInfo = null)
        {
            //暂时只有HY04(204)有倒转功能。
            if (Config.DOList.ContainsKey(IO_Type.HY_LineBackRun))
            {
                IOMove(IO_Type.HY_LineBackRun, IO_VALUE.HIGH);
                IOMove(IO_Type.HY_LineRun, IO_VALUE.LOW);
                if (moveInfo != null)
                {
                    moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_LineBackRun, IO_VALUE.HIGH));
                    moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_LineRun, IO_VALUE.LOW));
                }
            }
        }
        public void LineStop(LineMoveInfo moveInfo = null)
        {
            if (Config.DOList.ContainsKey(IO_Type.HY_LineBackRun))
            {
                IOMove(IO_Type.HY_LineBackRun, IO_VALUE.LOW);
                if (moveInfo != null)
                {
                    moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_LineBackRun, IO_VALUE.LOW));
                }
            }
            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()
        { 
        }

      
    }
}