FeedingEquip_Config.cs 11.2 KB
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace OnlineStore.LoadCSVLibrary
{
   
    public class FeedingEquip_Config : DeviceConfig
    {
        public FeedingEquip_Config()
            : base()
        {
        }
        public FeedingEquip_Config(int id, string cid, string type, string filepath)
            : base(id, cid, LoadCSVLibrary.DeviceType.FeedingEquip, filepath)
        {
        }


        /// <summary>
        /// 设备是否处于调试状态(1=调试,0=正常)
        /// </summary>
        [ConfigProAttribute("IsDebug")]
        public int IsDebug { get; set; }

        /// <summary>
        /// PRO,0,扫码的相机名称(多个用#分隔),CameraNameList,Name1#Name1,,,,,
        /// </summary>
        [ConfigProAttribute("CameraNameList")]
        public string CameraNameList { get; set; }

        /// <summary>
        ///  PRO,0,对应的横移模块,SidesWayNum,3,,,,,
        /// </summary>
        [ConfigProAttribute("SidesWayNum",false)]
        public int SidesWayNum { get; set; }
         
        /// <summary>
        ///   PRO,0,上料流水线入口AGV小车站号名称,AgvInName,D3,,,,,
        /// </summary>
        [ConfigProAttribute("AgvInName", false)]
        public string AgvInName { get; set; }
        /// <summary>
        ///   PRO,0,上料流水线出口AGV小车站号名称,AgvOutName,D4,,,,
        /// </summary>
        [ConfigProAttribute("AgvOutName", false)]
        public string AgvOutName { get; set; }



        /// <summary>
        ///   PRO	0	移栽上下运动是否使用伺服 UpDownUseAxis	1
        /// </summary>
        [ConfigProAttribute("UpDownUseAxis")]
        public int UpDownUseAxis { get; set; }
    
        /// <summary>
        ///  AXIS	0	提升上料轴 UpDown_Axis	2
        /// </summary>
        [ConfigProAttribute("Batch_Axis", true)]
        public ConfigMoveAxis Batch_Axis { get; set; }
        



        /// <summary>
        ///  PRO	0	提升上料轴原位待机点 P1   BatchAxisP1	1000
        /// </summary>
        [ConfigProAttribute("BatchAxisP1", true)]
        public int BatchAxisP1 { get; set; }
        /// <summary>
        ///  PRO	0	提升上料轴下降位置P2 BatchAxisP2	10000
        /// </summary>
        [ConfigProAttribute("BatchAxisP2", true)]
        public int BatchAxisP2 { get; set; }
        /// <summary>
        /// PRO	0	提升上料缓慢上升目标位置P3 BatchAxisP3	500
        /// </summary>
        [ConfigProAttribute("BatchAxisP3", true)]
        public int BatchAxisP3 { get; set; }
       
         
        /// <summary>
        ///PRO	0	提升上料轴P1速度 BatchAxis_P1Speed	400
        /// </summary>
        [ConfigProAttribute("BatchAxis_P1Speed", true)]
        public int BatchAxis_P1Speed { get; set; }
        /// <summary>
        ///PRO	0	提升上料轴P2速度 BatchAxis_P2Speed	400
        /// </summary>
        [ConfigProAttribute("BatchAxis_P2Speed", true)]
        public int BatchAxis_P2Speed { get; set; }
        /// <summary>
        ///PRO	0	提升上料轴P3速度 BatchAxis_P3Speed	50
        /// </summary>
        [ConfigProAttribute("BatchAxis_P3Speed", true)]
        public int BatchAxis_P3Speed { get; set; }
        /// <summary>
        ///PRO,0,提升上料轴P4速度/料盘拿走后提升轴下降速度,BatchAxis_P4Speed,2000,,,,,
        /// </summary>
        [ConfigProAttribute("BatchAxis_P4Speed", true)]
        public int BatchAxis_P4Speed { get; set; }
        /// <summary>
        ///PRO,0,提升上料轴高度转换系数(1mm对应的脉冲),Height_ChangeValue,5000,,,,,
        /// </summary>
        [ConfigProAttribute("Height_ChangeValue", true)]
        public int Height_ChangeValue { get; set; }
        /// <summary>
        ///PRO,0,最后一盘料补充高度(mm),LastReel_AHeight,1,,,,,
        /// </summary>
        [ConfigProAttribute("LastReel_AHeight", false )]
        public int LastReel_AHeight { get; set; }


        /// <summary>
        ///  AXIS	0	移栽上下轴 UpDown_Axis	2
        /// </summary>
        [ConfigProAttribute("UpDown_Axis", true)]
        public ConfigMoveAxis UpDown_Axis { get; set; }
        /// <summary>
        ///  PRO	0	移栽上下轴待机点 P1 UpDownAxisP1	403000
        /// </summary>
        [ConfigProAttribute("UpDownAxisP1", true)]
        public int UpDownAxisP1 { get; set; }
        /// <summary>
        ///  PRO,0,移栽上下轴P2移栽机构下降位置,UpDownP2List,0=180000;,,,,,
        /// </summary>
        [ConfigProAttribute("UpDownP2List", true)]
        public string UpDownP2List { get; set; }
        /// <summary>
        ///  PRO,0,移栽上下轴料架上方P3取料/放料位置,UpDownAxisP3,20000,,,,,
        /// </summary>
        [ConfigProAttribute("UpDownAxisP3", true)]
        public int UpDownAxisP3 { get; set; }
         

        /// <summary>
        ///   PRO,0,移栽上下轴走到待机点速度,UpdownAxis_P1Speed,400,,,,,
        /// </summary>
        [ConfigProAttribute("UpdownAxis_P1Speed", true)]
        public int UpdownAxis_P1Speed { get; set; }
        /// <summary>
        /// PRO,0,移栽上下轴P2速度,UpdownAxis_P2Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("UpdownAxis_P2Speed", true)]
        public int UpdownAxis_P2Speed { get; set; }

        /// <summary>
        /// PRO,0,移栽上下轴P3速度,UpdownAxis_P3Speed,400,,,,, 
        /// </summary>
        [ConfigProAttribute("UpdownAxis_P3Speed", true)]
        public int UpdownAxis_P3Speed { get; set; }
        /// <summary>
        ///    PRO,0,是否是用来出料,IsCanOut,1,,,,,
        /// </summary>
        [ConfigProAttribute("IsCanOut", false)]
        public int IsCanOut { get; set; }



        /// <summary>
        ///   PRO,0,移栽上下轴流水线取放料详细位置P2,UpDownP2DetialList,7*16=80000;,,,,,
        /// </summary>
        [ConfigProAttribute("UpDownP2DetialList", false)]
        public string UpDownP2DetialList { get; set; }

        private Dictionary<string, int> UpdownP2DetialMap = null;
        public void ConfigSpeed(Line_Config config)
        {
            if (this.UpdownAxis_P1Speed <= 0)
            {
                this.UpdownAxis_P1Speed = config.UpdownAxis_P1Speed;
            }
            if (this.UpdownAxis_P2Speed <= 0)
            {
                this.UpdownAxis_P2Speed = config.UpdownAxis_P2Speed;
            }
            if (this.UpdownAxis_P3Speed <= 0)
            {
                this.UpdownAxis_P3Speed = config.UpdownAxis_P3Speed;
            }
        }
        public Dictionary<string, int> LoadP2DetialMap()
        {
            try
            {
                if (UpdownP2DetialMap == null)
                {
                    UpdownP2DetialMap = new Dictionary<string, int>();
                    string[] arrayList = UpDownP2DetialList.Split(';');
                    foreach (string str in arrayList)
                    {
                        string[] arrStr = str.Split('=');
                        if (arrStr.Length == 2)
                        {
                            string key = arrStr[0].Trim().ToUpper();
                            if (key.Equals("0X0"))
                            {
                                continue;
                            }
                            int length = Convert.ToInt32(arrStr[1].Trim());
                            UpdownP2DetialMap.Add(key, length);
                        }
                    }
                }
            }
            catch (Exception ex)
            {

            }
            return UpdownP2DetialMap;
        }

        public int GetUpdownP2Detial(int trayHeight, int traySize = 8)
        {
            LoadP2DetialMap();
            string fkey = traySize + "X" + trayHeight;
            if (UpdownP2DetialMap.ContainsKey(fkey))
            {
                return UpdownP2DetialMap[fkey];
            }
            else
            {
                return GetUpdownP2(trayHeight);
            }
            return -1;
        }


        public void UpdateUpdownP2Detial(int size, int height, int sizePosition)
        {
            string fkey = size + "X" + height;
            string newPositionStr = "";
            if (UpdownP2DetialMap.ContainsKey(fkey))
            {
                UpdownP2DetialMap[fkey] = sizePosition;
            }
            else
            {

                UpdownP2DetialMap.Add(fkey, sizePosition);
            }
            foreach (string key in UpdownP2DetialMap.Keys)
            {
                newPositionStr += key + "=" + UpdownP2DetialMap[key] + ";";
            }
            newPositionStr = newPositionStr.Substring(0, newPositionStr.Length - 1);
            UpDownP2DetialList = newPositionStr;
        }

        private List<string> CameraList = null;

        public List<string> GetCameraList()
        {
            if (CameraList == null)
            {
                CameraList = new List<string>();
                string[] arrayList = CameraNameList.Split('#');
                foreach (string str in arrayList)
                {
                    string camera = str.Trim();
                    if (string.IsNullOrEmpty(camera).Equals(false))
                    {
                        CameraList.Add(camera);
                    }   
                }
            }
            return CameraList;
        }

        private Dictionary<int, int> UpDownPositionP2Map = null; 
        public  int GetUpdownP2(int trayHeight)
        {
            try
            {
                if (UpDownPositionP2Map == null)
                {
                    UpDownPositionP2Map = new Dictionary<int, int>();
                    string[] arrayList = UpDownP2List.Split(';');
                    foreach (string str in arrayList)
                    {
                        string[] arrStr = str.Split('=');
                        if (arrStr.Length == 2)
                        {
                            int height = Convert.ToInt32(arrStr[0].Trim());
                            int length = Convert.ToInt32(arrStr[1].Trim());
                            UpDownPositionP2Map.Add(height, length);
                        }
                    }
                }
            }
            catch (Exception ex)
            {

            }
            if (UpDownPositionP2Map.ContainsKey(trayHeight))
            {
                return UpDownPositionP2Map[trayHeight];
            }else if (UpDownPositionP2Map.ContainsKey(0))
            {
                return UpDownPositionP2Map[0];
            }
            return -1;
        }

        public void UpdateUpdownP2(int size, int sizePosition)
        {
            string newPositionStr = "";
            if (UpDownPositionP2Map.ContainsKey(size))
            {
                UpDownPositionP2Map[size] = sizePosition;
            }
            else
            {

                UpDownPositionP2Map.Add(size, sizePosition);
            }
            foreach(int  key in UpDownPositionP2Map.Keys)
            {
                newPositionStr += key + "=" + UpDownPositionP2Map[key] + ";";
            }
            newPositionStr = newPositionStr.Substring(0, newPositionStr.Length - 1);
            UpDownP2List = newPositionStr;
        } 
    }
}