OutputEquip_Config.cs 13.7 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 OutputEquip_Config : DeviceConfig
    {
        public OutputEquip_Config()
            : base()
        {
        }
        public OutputEquip_Config(int id,  string type, string filepath)
            : base(id,  LoadCSVLibrary.DeviceType.OutputDevice, filepath)
        {
        }


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

        /// <summary>
        ///  PRO,0,空料串入口AGV站号名称,AgvInName,F3,,,,,
        /// </summary>
        [ConfigProAttribute("AgvInName")]
        public string AgvInName { get; set; }
        /// <summary>
        ///  PRO,0,料串出口AGV站号名称,AgvOutName,F4,,,,,
        /// </summary>
        [ConfigProAttribute("AgvOutName")]
        public string AgvOutName { get; set; }
        /// <summary>
        ///  PRO,0,相机名称,CameraName,GigE:MV-CE200-10GC (00D77519052),,,,,
        /// </summary>
        [ConfigProAttribute("CameraName")]
        public string CameraName { get; set; }
        /// <summary>
        ///  PRO,0,出料提升轴上升待机点 P1,BatchAxisP1,6504500,,,,,
        /// </summary>
        [ConfigProAttribute("BatchAxisP1")]
        public int BatchAxisP1 { get; set; }
        /// <summary>
        ///  PRO,0,出料提升轴下降位置P2,BatchAxisP2,-48000,,,,,
        /// </summary>
        [ConfigProAttribute("BatchAxisP2")]
        public int BatchAxisP2 { get; set; }
        /// <summary>
        ///  PRO,0,出料提升轴缓慢上升目标位置P3,BatchAxisP3,5914000,,,,,
        /// </summary>
        [ConfigProAttribute("BatchAxisP3")]
        public int BatchAxisP3 { get; set; }
        /// <summary>
        ///  PRO,0,出料提升轴P1速度,BatchAxis_P1Speed,4000,,,,,
        /// </summary>
        [ConfigProAttribute("BatchAxis_P1Speed")]
        public int BatchAxis_P1Speed { get; set; }
        /// <summary>
        ///  PRO,0,出料提升轴P2速度,BatchAxis_P2Speed,4000,,,,,
        /// </summary>
        [ConfigProAttribute("BatchAxis_P2Speed")]
        public int BatchAxis_P2Speed { get; set; }
        /// <summary>
        ///  PRO,0,出料提升轴P3速度,BatchAxis_P3Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("BatchAxis_P3Speed")]
        public int BatchAxis_P3Speed { get; set; }
        /// <summary>
        ///  PRO,0,出料提升轴高度转换系数(1mm对应的脉冲),Height_ChangeValue,11000,,,,,
        /// </summary>
        [ConfigProAttribute("Height_ChangeValue")]
        public int Height_ChangeValue { get; set; }



        /// <summary>
        ///  PRO,0,取料X轴待机点-P1,MoveX_P1,2000,,,,,
        /// </summary>
        [ConfigProAttribute("MoveX_P1")]
        public int MoveX_P1 { get; set; }
        /// <summary>
        ///  PRO,0,取料X轴在取料点-P2集合,MoveX_P2List,0=120000;7=203600;11=155000;13=150000;15=153000,,,,,
        /// </summary>
        [ConfigProAttribute("MoveX_P2List")]
        public string  MoveX_P2List { get; set; }
        /// <summary>
        ///  PRO,0,取料X轴在放料点-P3,MoveX_P3,2000,,,,,
        /// </summary>
        [ConfigProAttribute("MoveX_P3")]
        public int MoveX_P3 { get; set; }
        /// <summary>
        ///  PRO,0,取料X轴P1速度,MoveX_P1Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("MoveX_P1Speed")]
        public int MoveX_P1Speed { get; set; }
        /// <summary>
        ///  PRO,0,取料X轴P2速度,MoveX_P2Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("MoveX_P2Speed")]
        public int MoveX_P2Speed { get; set; }
        /// <summary>
        ///  PRO,0,取料X轴P3速度,MoveX_P3Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("MoveX_P3Speed")]
        public int MoveX_P3Speed { get; set; }


        /// <summary>
        ///  PRO,0,取料Z轴待机点-P1,MoveZ_P1,2000,,,,,
        /// </summary>
        [ConfigProAttribute("MoveZ_P1")]
        public int MoveZ_P1 { get; set; }
        /// <summary>
        ///  PRO,0,取料Z轴在取料点-P2集合,MoveZ_P2List,0=120000;8=203600;12=155000;16=150000;24=153000;32=129000;44=107000;56=95000,,,,,
        /// </summary>
        [ConfigProAttribute("MoveZ_P2List")]
        public string MoveZ_P2List { get; set; }
        /// <summary>
        ///  PRO,0,取料Z轴在放料点-P3集合,MoveZ_P3List,0=150000;8=150000;12=150000;16=150000;24=150000;32=140000;44=120000;56=100000,,,,,
        /// </summary>
        [ConfigProAttribute("MoveZ_P3List")]
        public string MoveZ_P3List { get; set; }
        /// <summary>
        ///  PRO,0,取料Z轴P1速度,MoveZ_P1Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("MoveZ_P1Speed")]
        public int MoveZ_P1Speed { get; set; }
        /// <summary>
        ///  PRO,0,取料Z轴P2速度,MoveZ_P2Speed,500,,,,, 
        /// </summary>
        [ConfigProAttribute("MoveZ_P2Speed")]
        public int MoveZ_P2Speed { get; set; }
        /// <summary>
        ///  PRO,0,取料Z轴P3速度,MoveZ_P3Speed,500,,,,, 
        /// </summary>
        [ConfigProAttribute("MoveZ_P3Speed")]
        public int MoveZ_P3Speed { get; set; }


        /// <summary>
        ///  PRO,0,贴标机构X轴待机点-P1,LabelX_P1,2000,,,,,
        /// </summary>
        [ConfigProAttribute("LabelX_P1")]
        public int LabelX_P1 { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构X轴在取料点-P2,LabelX_P2,3000,,,,,
        /// </summary>
        [ConfigProAttribute("LabelX_P2")]
        public int LabelX_P2 { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构X轴在放料点-P3,LabelX_P3,5000,,,,,
        /// </summary>
        [ConfigProAttribute("LabelX_P3")]
        public int LabelX_P3 { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构X轴P1速度,LabelX_P1Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("LabelX_P1Speed")]
        public int LabelX_P1Speed { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构X轴P2速度,LabelX_P2Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("LabelX_P2Speed")]
        public int LabelX_P2Speed { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构X轴P3速度,LabelX_P3Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("LabelX_P3Speed")]
        public int LabelX_P3Speed { get; set; }



        /// <summary>
        ///  PRO,0,贴标机构Y轴待机点-P1,LabelY_P1,2000,,,,,
        /// </summary>
        [ConfigProAttribute("LabelY_P1")]
        public int LabelY_P1 { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构Y轴在取料点-P2,LabelY_P2,3000,,,,,
        /// </summary>
        [ConfigProAttribute("LabelY_P2")]
        public int LabelY_P2 { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构Y轴在放料点-P3,LabelY_P3,5000,,,,,
        /// </summary>
        [ConfigProAttribute("LabelY_P3")]
        public int LabelY_P3 { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构Y轴P1速度,LabelY_P1Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("LabelY_P1Speed")]
        public int LabelY_P1Speed { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构Y轴P2速度,LabelY_P2Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("LabelY_P2Speed")]
        public int LabelY_P2Speed { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构Y轴P3速度,LabelY_P3Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("LabelY_P3Speed")]
        public int LabelY_P3Speed { get; set; }


        /// <summary>
        ///  PRO,0,贴标机构Z轴待机点-P1,LabelZ_P1,2000,,,,,
        /// </summary>
        [ConfigProAttribute("LabelZ_P1")]
        public int LabelZ_P1 { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构Z轴在取料点-P2,LabelZ_P2,3000,,,,,
        /// </summary>
        [ConfigProAttribute("LabelZ_P2")]
        public int LabelZ_P2 { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构Z轴在放料点-P3,LabelZ_P3,5000,,,,,
        /// </summary>
        [ConfigProAttribute("LabelZ_P3")]
        public int LabelZ_P3 { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构Z轴P1速度,LabelZ_P1Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("LabelZ_P1Speed")]
        public int LabelZ_P1Speed { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构Z轴P2速度,LabelZ_P2Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("LabelZ_P2Speed")]
        public int LabelZ_P2Speed { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构Z轴P3速度,LabelZ_P3Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("LabelZ_P3Speed")]
        public int LabelZ_P3Speed { get; set; }


        /// <summary>
        ///  PRO,0,贴标机构R轴待机点-P1,LabelR_P1,2000,,,,,
        /// </summary>
        [ConfigProAttribute("LabelR_P1")]
        public int LabelR_P1 { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构R轴在取料点-P2,LabelR_P2,3000,,,,,
        /// </summary>
        [ConfigProAttribute("LabelR_P2")]
        public int LabelR_P2 { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构R轴在放料点-P3,LabelR_P3,5000,,,,,
        /// </summary>
        [ConfigProAttribute("LabelR_P3")]
        public int LabelR_P3 { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构R轴P1速度,LabelR_P1Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("LabelR_P1Speed")]
        public int LabelR_P1Speed { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构R轴P2速度,LabelR_P2Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("LabelR_P2Speed")]
        public int LabelR_P2Speed { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构R轴P3速度,LabelR_P3Speed,500,,,,,
        /// </summary>
        [ConfigProAttribute("LabelR_P3Speed")]
        public int LabelR_P3Speed { get; set; }

        /// <summary>
        ///  PRO,0,贴标机构Z轴旋转点P4,LabelZ_P4,2000,,,,,
        /// </summary>
        [ConfigProAttribute("LabelZ_P4")]
        public int LabelZ_P4 { get; set; }
        /// <summary>
        ///  PRO,0,贴标机构Z轴P4速度,LabelZ_P4Speed,4500,,,,,
        /// </summary>
        [ConfigProAttribute("LabelZ_P4Speed")]
        public int LabelZ_P4Speed { get; set; }

        private static string UpdateP(Dictionary<int, int> pMap, int key, int value)
        {
            if (pMap.ContainsKey(key))
            {
                pMap[key] = value;
            }
            else
            {
                pMap.Add(key, value);
            }
            string newPositionStr = "";
            foreach (int newK in pMap.Keys)
            {
                newPositionStr += newK + "=" + pMap[newK] + ";";
            }
            newPositionStr = newPositionStr.Substring(0, newPositionStr.Length - 1);
            return newPositionStr;
        }
        private static Dictionary<int, int> LoadPMap(Dictionary<int, int> PMap, string strPList)
        {
            try
            {
                if (PMap == null)
                {
                    PMap = new Dictionary<int, int>();
                    string[] arrayList = strPList.Split(';');
                    foreach (string str in arrayList)
                    {
                        string[] arrStr = str.Split('=');
                        if (arrStr.Length == 2)
                        {
                            int size = Convert.ToInt32(arrStr[0].Trim().ToUpper());
                            int length = Convert.ToInt32(arrStr[1].Trim());
                            PMap.Add(size, length);
                        }
                    }
                }
            }
            catch (Exception ex)
            {

            }
            return PMap;
        }


        private Dictionary<int, int> MoveXP2Map = null;  
        public int GetMoveXP2(int width = 7)
        {
            MoveXP2Map= LoadPMap(MoveXP2Map, MoveX_P2List); 
            if (MoveXP2Map.ContainsKey(width))
            {
                return MoveXP2Map[width];
            }
            else if (MoveXP2Map.ContainsKey(0))
            {
                return MoveXP2Map[0];
            }
            return -1;
        } 
        public void UpdateMoveXP2(int width, int position)
        {  
            MoveX_P2List = UpdateP(MoveXP2Map,width,position);
        }

        private Dictionary<int, int> MoveZP2Map = null;
        public int GetMoveZP2(int height = 8)
        {
            MoveZP2Map= LoadPMap(MoveZP2Map, MoveZ_P2List);
            if (MoveZP2Map.ContainsKey(height))
            {
                return MoveZP2Map[height];
            }
            else if (MoveZP2Map.ContainsKey(0))
            {
                return MoveZP2Map[0];
            }
            return -1;
        }
        public void UpdateMoveZP2(int height, int position)
        {
            MoveZ_P2List = UpdateP(MoveZP2Map, height, position);
        }

        private Dictionary<int, int> MoveZP3Map = null;
        public int GetMoveZP3(int height = 8)
        {
            MoveZP3Map= LoadPMap(MoveZP3Map, MoveZ_P3List);
            if (MoveZP3Map.ContainsKey(height))
            {
                return MoveZP3Map[height];
            }
            else if (MoveZP3Map.ContainsKey(0))
            {
                return MoveZP3Map[0];
            }
            return -1;
        }
        public void UpdateMoveZP3(int height, int position)
        {
            MoveZ_P3List = UpdateP(MoveZP3Map, height, position);
        }

    }
}