StoreStep.cs 11.7 KB
using log4net;
using OnlineStore.Common;
using OnlineStore.DeviceLibrary;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Text;

using System.Windows.Forms;

namespace OnlineStore.DeviceLibrary
{
    public static class EnumDesHelper
    {
        public static string GetStepDes(this Enum val)
        {
            var type = val.GetType();

            var memberInfo = type.GetMember(val.ToString());

            var attributes = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);

            if (attributes == null || attributes.Length != 1)
            {
                //如果没有定义描述,就把当前枚举值的对应名称返回
                return val.ToString();
            }

            return (attributes.Single() as DescriptionAttribute).Description;
        }
    }

    /// <summary>
    ///0= 等待启动/已经停止,1=初始化完成, 2=正常运行中,3=可以进行新的处理,4=忙碌,重置
    /// </summary>
    public enum LineRunStatus
    {
        /// <summary>
        /// 等待启动/已经停止
        /// </summary>
        Wait = 0,
        /// <summary>
        ///  初始化 ,原点返回状态中,只有流水线使用
        /// </summary>
        HomeMoving = 1,

        /// <summary>
        /// 设备正在重置中,请稍后
        /// </summary>
        Reset = 2,
        /// <summary>
        /// 正常运行中,可以进行新的处理
        /// </summary>
        Runing = 3,

        /// <summary>
        /// 正在忙碌中,请稍后
        /// </summary>
        Busy = 4,

    }
    /// <summary>
    ///1=设备联机(正常就绪)(入库后,BOX恢复原始状态)(出库后,移载装置恢复原始状态),
    ///2=急停,3=故障,4=警告,5=调试
    /// 6=入库执行中,7=入仓完成,8=入仓失败
    /// 9=出库执行,10=出仓完成,11=出库失败
    /// </summary>
    public enum LineStatus
    {
        None = 0,
        /// <summary>
        /// 1=设备联机(正常就绪)(入库后,BOX恢复原始状态)(出库后,移载装置恢复原始状态),
        /// </summary>
        StoreOnline = 1,
        /// <summary>
        ///2=急停中
        /// </summary>
        SuddenStop = 2,
        /// <summary>
        /// 3=故障中
        /// </summary>
        InTrouble = 3,
        /// <summary>
        /// 4=警告
        /// </summary>
        Warning = 4,
        /// <summary>
        /// 5=设备调试中 
        /// </summary>
        Debugging = 5,
        /// <summary>
        /// 6=入库执行中 
        /// </summary>
        InStoreExecute = 6,
        /// <summary>
        /// 7= 入仓位完成(料仓Box把料盘放入对应的库位中,装置还未恢复原始状态) 
        /// </summary>
        InStoreEnd = 7,
        /// <summary>
        /// 8=入库失败
        /// </summary>
        InStoreFaild = 8,
        /// <summary>
        /// 9=出库执行中",
        /// </summary>
        OutStoreExecute = 9,
        /// <summary>
        ///10= 出仓位完成( 料盘已经放到Box门口) 
        /// </summary>
        OutStoreBoxEnd = 10,
        /// <summary>
        /// 12=移栽出库移栽过程中(移栽完成后变成OnLine)
        /// </summary>
        OutMoveExecute = 12,
        /// <summary>
        ///11=出库失败
        /// </summary>
        OutStoreFaild = 11,
        /// <summary>
        /// 重置中(原点返回和重置都发此状态)
        /// </summary>
        ResetMove = 13,
    }

    public enum LineMoveStep
    {
        [Description("等待开始")]
        Wait = 0,

        #region 横移模块   1000开始

        #region 横移模块复位,1001
        /// <summary>
        /// 横移模块复位:横移线体 停止,全部阻挡上升
        /// </summary>
        [Description("复位_横移线体停止,所有阻挡上升")]
        HY_R_01StopMove = 1001,
        /// <summary>
        /// 横移模块复位:顶升气缸下降,定位气缸下降
        /// </summary>
        [Description("复位_顶升气缸下降,定位气缸下降")]
        HY_R_02StopMove,
        #endregion

        #region 横移14箱子流转处理,1101

        [Description("箱子检测_等待")]
        HY01_Wait = 1101,
        /// <summary>
        /// 横移上箱子放行处理:箱子检测_检测到箱子
        /// </summary>
        [Description("箱子检测_检测到箱子")]
        HY02_BoxCheck,
        /// <summary>
        /// 横移上箱子放行处理:箱子流转_箱子已到位
        /// </summary>
        [Description("箱子流转_箱子已到位")]
        HY03_BoxInPosition,
        /// <summary>
        /// 横移上箱子放行处理:箱子流转_检查下游状态
        /// </summary>
        [Description("箱子流转_检查下游状态")]
        HY04_CheckDownriver,
        /// <summary>
        /// 横移上箱子放行处理:箱子流转_箱子向下游流转
        /// </summary>
        [Description("箱子流转_箱子向下游流转")]
        HY05_ToDownriver,
        /// <summary>
        /// 横移上箱子放行处理:箱子流转_等待箱子到达下游
        /// </summary>
        [Description("箱子流转_等待箱子到达下游")]
        HY06_WaitReach,
        /// <summary>
        /// 横移上箱子放行处理:箱子流转_箱子流转完成
        /// </summary>
        [Description("箱子流转_箱子流转完成")]
        HY07_ProBoxOk,
        #endregion

        #region 横移2 出口 箱子从上游流入
        /// <summary>
        /// 横移2:横移线体运行
        /// </summary>
        [Description("箱子流转_横移线体运行")]
        HY20_LineRun,
        /// <summary>
        /// 横移2:等待箱子到达
        /// </summary>
        [Description("箱子流转_等待箱子到达")]
        HY21_WaitBoxCheck,
        /// <summary>
        /// 横移2:顶升下降
        /// </summary>
        [Description("箱子流转_顶升下降")]
        HY22_JackingDown,
        /// <summary>
        /// 横移2:等待箱子流走
        /// </summary>
        [Description("箱子流转_等待箱子流走")]
        HY23_WaitBoxLeave,
        /// <summary>
        /// 横移2:等待箱子流走
        /// </summary>
        [Description("箱子流转_顶升上升")]
        HY24_JackingUp,
        #endregion

        #region 横移3
        /// <summary>
        /// 横移3:前阻挡2上升
        /// </summary>
        [Description("箱子检测_前阻挡2上升")]
        HY30_FrontStop2Up,
        /// <summary>
        /// 横移3:等待箱子进入横移
        /// </summary>
        [Description("箱子检测_前阻挡1下降")]
        HY31_FrontStop1Down,
        /// <summary>
        /// 横移3:箱子进入横移
        /// </summary>
        [Description("箱子检测_箱子到位")]
        HY32_WaitBoxInPos,
        /// <summary>
        /// 横移3:读取箱子rfid以及出入库信息
        /// </summary>
        [Description("箱子检测_更新容器信息")]
        HY33_UpdateBoxInfo,
        /// <summary>
        /// 横移3:将箱子信息放入缓存列表
        /// </summary>
        [Description("箱子检测_获取容器信息")]
        HY34_GetBoxInfo,
        /// <summary>
        /// 横移3:检查下游状态
        /// </summary>
        [Description("箱子检测_检查下游状态")]
        HY35_CheckDownriver,
        /// <summary>
        /// 横移3:放行箱子
        /// </summary>
        [Description("箱子检测_放行箱子")]
        HY36_ReleaseBox,
        /// <summary>
        /// 横移3:放行箱子成功
        /// </summary>
        [Description("箱子检测_放行箱子成功")]
        HY37_ReleaseOK,
        #endregion


        #endregion

        #region 工位
        /// <summary>
        /// 工位复位:所有阻挡上升
        /// </summary>
        SR_01_AllStopDown,
        SR_02_End,
        SI_01_StopUp,
        /// <summary>
        /// 工位入出库的料:等待箱子到达
        /// </summary>
        SI_01_WaitBoxCheck,
        /// <summary>
        /// 工位入出库的料:前阻挡上升
        /// </summary>
        SI_02_FrontStopUp,
        /// <summary>
        /// 工位入出库的料:读取箱子出入库信息
        /// </summary>
        SI_03_ReadAndCheckBox,

        /// <summary>
        /// 工位入出库的料:箱子到达,上报状态
        /// </summary>
        SI_04_BoxArrive,
        /// <summary>
        /// 工位入出库的料:等待箱子被拿走
        /// </summary>
        SI_05_WaitBoxLeave,
        /// <summary>
        /// 工位入出库的料:等待箱子到达工作台
        /// </summary>
        SI_06_WaitBoxAtStation,
        /// <summary>
        /// 工位入出库的料:完成,所有阻挡下降
        /// </summary>
        SI_07_AllStopDown,


        /// <summary>
        /// 工位入出库的料:箱子不是该工位的,阻挡下降,放行
        /// </summary>
        SI_08_StopDown,
        SI_09_WaitDownriverIdle,
        /// <summary>
        /// 工位入出库的料:等待放行完成
        /// </summary>
        SI_09_WaitBoxLeave,
        /// <summary>
        /// 工位入出库的料:前阻挡下降
        /// </summary>
        SI_10_FrontStopDown,
        SI_11_End,
        /// <summary>
        /// 工位入库的料:前阻挡上升,阻挡下降
        /// </summary>
        SO_01_FrontStopUp,
        /// <summary>
        /// 工位入库的料:等待箱子从工作台转移到线体
        /// </summary>
        SO_02_WaitBoxInToLine,
        /// <summary>
        /// 工位入库的料:等待一定时间
        /// </summary>
        SO_03_WaitTime,
        SO_04_FrontStopDown,
        #endregion

        #region 入料工位-AGV
        /// <summary>
        /// 入料工位复位:所有阻挡上升
        /// </summary>
        FR_01_AllStopUp,
        /// <summary>
        /// 入料工位复位:所有阻挡上升
        /// </summary>
        FR_02_End,
        /// <summary>
        /// 入料工位放行箱子:阻挡下降
        /// </summary>
        FO_01_StopDown,
        /// <summary>
        /// 入料工位放行箱子:等待箱子离开
        /// </summary>
        FO_02_WaitBoxLeave,
        /// <summary>
        /// 入料工位放行箱子:阻挡上升
        /// </summary>
        FO_03_StopUp,
        #endregion
        #region 出料工位-AGV
        DisR_01_AllStopUp,
        DisR_02_LineRun,
        DisR_03_LocateFwd,
        DisR_04_LocateBack,
        DisR_05_End,

        DisBox_01_BoxInFrontStop,
        DisBox_02_FrontStopDown,
        DisBox_03_WaitBoxInPosition,
        DisBox_04_WaitTime,
        DisBox_05_FrontStopUp,
        DisBox_06_LocateBox,

        DisOut_01_BoxArrive,
        DisOut_02_CallESS,
        DisOut_03_WaitBoxLeave,
        #endregion
    }

    public enum LineAlarmType
    {
        /// <summary>
        /// 没有报警,数字越大报警级别越大
        /// </summary>
        None = 0,

        /// <summary>
        /// io信号超时未收到
        /// </summary>
        IoSingleTimeOut = 10,
        /// <summary>
        /// 轴报警
        /// </summary>
        AxisAlarm = 1000,
        /// <summary>
        /// 轴运动错误,没有达到指定脉冲,但是io判断已停止运动
        /// </summary>
        AxisMoveError = 1001,
        /// <summary>
        /// 没有气压信号
        /// </summary>
        NoAirCheck = 9999,
        /// <summary>
        /// 收到急停
        /// </summary>
        SuddenStop = 10000,

    }
}