StoreBase.cs 9.9 KB
//using log4net;
//using System;
//using System.Collections.Generic;
//using System.Drawing;
//using System.Linq;
//using System.Text;
// 
//using OnlineStore.Common;
//using OnlineStore.LoadCSVLibrary;

//namespace OnlineStore.DeviceLibrary
//{
//    public abstract class StoreBase
//    {
//        public static readonly ILog LOGGER = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
       
//        /// <summary>
//        /// 料仓ID唯一
//        /// </summary>
//        public int StoreId { get; set; }
//        /// <summary>
//        /// 开始运行的时间
//        /// </summary>
//        public DateTime StartTime { get; set; }
//        /// <summary>
//        /// 日志颜色
//        /// </summary>
//        public static Color storeMoveColor = Color.Blue;
//        public DateTime statusTime = DateTime.Now;
//        /// <summary>
//        /// 伺服运行时间列表,key=轴,key=开始时间,value=结束时间
//        /// </summary>
//        public Dictionary<int, Dictionary<DateTime, DateTime>> AxisRunTimeMap = new Dictionary<int, Dictionary<DateTime, DateTime>>();
//        public DateTime middleAxisLastStartTime;
//        public DateTime updownAxisLastStartTime;
//        /// <summary>
//        /// 上下轴报警状态
//        /// </summary>
//        public int UpDownAxisAlarmCode = 0;
//        /// <summary>
//        /// 料仓中轴报警状态
//        /// </summary>
//        public int MiddleAxisAlarmCode = 0;
//        /// <summary>
//        /// 定时器
//        /// </summary>
//        protected System.Timers.Timer timersTimer;
     
//        /// <summary>
//        /// 料仓状态
//        /// </summary>
//        protected StoreRunStatus storerunstatus = StoreRunStatus.Wait;
//        /// <summary>
//        /// 移动信息
//        /// </summary>
//        public StoreMoveInfo StoreMove = null;
//        /// <summary>
//        /// 料仓配置信息
//        /// </summary>
//        public StoreConfig Config { get; set; }
//        public string StoreName()
//        { 
//            return "ID=" + Config.Id + ",CID+" + Config.CID;
//        }
//        public StoreStatus storeStatus = StoreStatus.StoreOnline;
//        /// <summary>
//        /// 料仓状态
//        /// </summary>
//        public StoreRunStatus storeRunStatus
//        {
//            get
//            {
//                return storerunstatus;
//            }
//            set
//            {
//                StoreRunStatus oldStatus = storerunstatus;
//                storerunstatus = value;
//                statusTime = DateTime.Now;
//            }
//        }
//        public StoreBase()
//        { 
//        }

//        public StoreBase(StoreConfig config)
//        {
//            this.StoreId = config.Id;
//            this.Config = config;
//            StoreMove = new StoreMoveInfo(StoreId);
//        } 
//        /// <summary>
//        /// 定时任务
//        /// </summary> 
//        protected abstract void timersTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e);
//        /// <summary>
//        /// 复位
//        /// </summary>
//        public abstract void Reset();

//        /// <summary>
//        /// 报警
//        /// </summary>
//        /// <param name="alarmType"></param>
//        public abstract void Alarm(StoreAlarmType alarmType);

//        /// <summary>
//        /// 停止运动
//        /// </summary>
//        public abstract void StopMove();
//        /// <summary>
//        /// 上下移动(根据料仓类型,为电钢移动或者运动轴运动)
//        /// </summary>
//        /// <param name="abs"></param>
//        public abstract void UpDownAxisMove(AbsMoveParam abs);
//        /// <summary> 
//        /// 中轴运动
//        /// </summary>
//        /// <param name="abs"></param>
//        public abstract void MiddleAxisMove(AbsMoveParam abs);
//        /// <summary>
//        /// 出仓流程处理
//        /// </summary>
//        protected abstract void OutStoreProcess();
//        /// <summary>
//        /// 入仓流程处理
//        /// </summary>
//        protected abstract void InStoreProcess();
      
//        /// <summary>
//        /// 判断急停是否开着,开着表示可以运行
//        /// </summary>
//        /// <returns></returns>
//        public abstract Boolean IsCanStart();
        
//        /// <summary>
//        /// 开始运行
//        /// </summary>
//        public abstract void StartRun();

//        /// <summary>
//        /// 停止运行
//        /// </summary>
//        public abstract void StopRun();

//        /// <summary>
//        /// 初始化
//        /// </summary>
//        public virtual void Init()
//        {
//            StoreMove = new StoreMoveInfo(this.StoreId);  
//            timersTimer = new System.Timers.Timer();
//            timersTimer.Enabled = false;
//            timersTimer.Interval = 100;
//            timersTimer.Elapsed += timersTimer_Elapsed;
//            timersTimer.AutoReset = true;
//        }
//        /// <summary>
//        /// 运动处理
//        /// </summary> 
//        public virtual void BusyMoveProcess()
//        {
//            if (StoreMove.MoveType == StoreMoveType.InStore)
//            {
//                InStoreProcess();
//            }
//            else if (StoreMove.MoveType == StoreMoveType.OutStore)
//            {
//                OutStoreProcess();
//            }
//        }

//        /// <summary>
//        /// 开始入库移动移动
//        /// </summary> 
//        public abstract void StartInStoreMove(InOutStoreParam param);
//        /// <summary>
//        /// 开始出库运动
//        /// </summary> 
//        public abstract void StartOutStoreMove(InOutStoreParam param);
//        /// <summary>
//        /// 开始或者停止吹吹气,通过io来判断
//        /// </summary>
//        /// <param name="start"></param>
//        public abstract void StartOrStopBlow(bool start);

//        /// <summary>
//        /// io控制的运动(取料叉子运动,门上下移动)
//        /// </summary>
//        /// <param name="moveType">运行方式</param> 
//        /// <param name="ioValue">1=开始,0=停止</param>
//        public abstract void DeviceIoMove(Store_IO_Type moveType, IO_VALUE ioValue);
//        /// <summary>
//        /// 获取io控制的运动当前的指示灯状态
//        /// </summary> 
//        public abstract IO_VALUE GetDeviceIoStatus(Store_IO_Type moveType);
//        /// <summary>
//        /// 中轴轴定点运动结束处理
//        /// </summary> 
//        public virtual void MiddleMoveEnd(int moveType, int AxisNo, int targetPosition)
//        {
//            StoreMoveInfo move = StoreMove;
//            if (middleAxisLastStartTime != null && middleAxisLastStartTime.Year > 1)
//            {
//                Dictionary<DateTime,DateTime> moveTimeMap=null;
//                if (AxisRunTimeMap.ContainsKey(AxisNo))
//                {
//                    moveTimeMap = AxisRunTimeMap[AxisNo];
//                }
//                else
//                {
//                    moveTimeMap = new Dictionary<DateTime, DateTime>();
//                    AxisRunTimeMap.Add(AxisNo, moveTimeMap);
//                }
//                if (!moveTimeMap.ContainsKey(middleAxisLastStartTime))
//                {
//                    moveTimeMap.Add(middleAxisLastStartTime, DateTime.Now);
//                    LOGGER.Info("storeId=" + StoreId + ",伺服运动结束,开始时间" + middleAxisLastStartTime.ToString() + ",结束时间" + DateTime.Now.ToString());
//                    middleAxisLastStartTime.AddYears(-1 * middleAxisLastStartTime.Year+1);
//                }

//                AxisRunTimeMap.Remove(AxisNo);
//                AxisRunTimeMap.Add(AxisNo, moveTimeMap);
//            }
//            if (moveType == 0)
//            { 
//                //if (move.moveStatus == StoreMoveStep.InStoreReadyMove
//                //    || move.moveStatus == StoreMoveStep.MoveToRoom
//                //    || move.moveStatus == StoreMoveStep.MoveOutFromRoom
//                //    || move.moveStatus == StoreMoveStep.OutStoreReadyMove
//                //    )
//                {
//                    move.MoveResult++;
//                }
//            }
//            else if (moveType == 1)
//            {
//                //if (storeRunStatus == StoreRunStatus.Reset)
//                //{
//                //    StoreMove.MoveResult--;
//                //    if (StoreMove.MoveResult == 0)
//                //    {
//                //        storeRunStatus = StoreRunStatus.Runing;
//                //    }
//                //}
//            }
//        }
//        /// <summary>
//        /// 获取料仓运行的时间
//        /// </summary>
//        /// <returns></returns>
//        public TimeSpan GetStoreRunTime()
//        {
//            if (StartTime != null)
//            {
//                return DateTime.Now - StartTime;
//            }
//            else
//            {
//                return new TimeSpan(0);
//            }
//        }
//        /// <summary>
//        /// 获取轴已运行时间
//        /// </summary>
//        /// <returns></returns>
//        public TimeSpan GetAxisRunTime(int axisNo)
//        {
//            TimeSpan span = new TimeSpan(0);
//            if (AxisRunTimeMap.ContainsKey(axisNo))
//            {
//                Dictionary<DateTime, DateTime> moveMap = AxisRunTimeMap[axisNo];
//                if (moveMap != null && moveMap.Count > 0)
//                {
//                    foreach (DateTime key in moveMap.Keys)
//                    {
//                        span += moveMap[key] - key;
//                    }
//                }
//            }
//            return span;
//        }
      
//        public abstract string GetTemperateAddress(); 
//        public abstract bool IsMyAxis(string deviceName, int AxisNo);

//    } 

//}