StoreStep.cs 12.0 KB
using log4net;
using OnlineStore.Common;
using OnlineStore.DeviceLibrary;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Text;
 
using System.Windows.Forms;

namespace OnlineStore.DeviceLibrary
{
    
    /// <summary>
    /// 等待启动/已经停止,初始化完成, 正常运行中,可以进行新的处理,忙碌,重置
    /// </summary>
    public enum StoreRunStatus
    {
        /// <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 StoreStatus
    {
        /// <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,    
        /// <summary>
        /// 库位盘点中
        /// </summary>
        CheckPosMove,
    }

    /// <summary>
    /// 料仓运动状态(当料仓状态=busy时,才会有此运动状态)
    /// </summary>
    public enum StoreMoveStep
    {
        /// <summary>
        /// 无操作,等待状态
        /// </summary>
        Wait = 0,
        #region 料仓原点返回和重置步骤
        /// <summary>
        /// 料仓原点返回和重置步骤,,定位气缸下降
        /// </summary>
        BOX_H_LocationCylinderBack = 010,

        /// <summary>
        /// 料仓原点返回和重置步骤,轴三先相对走3000
        /// </summary>
        BOX_H_InOutMove = 011,
        /// <summary>
        /// 料仓原点返回和重置步骤,,轴三进出轴先返回原点
        /// </summary>
        BOX_H_InOutBack = 012,

        /// <summary>
        /// 料仓原点返回和重置步骤,,轴三返回P1点
        /// </summary>
        BOX_H_InOutToP1 = 013,
        /// <summary>
        ///  料仓原点返回和重置步骤,,升降轴,旋转轴,压紧轴原点返回
        /// </summary>
        BOX_H_OtherAxisBack = 014,
        ///// <summary>
        ///// 清理轴位置
        ///// </summary>
        //BOX_H_WaitAxisCountClear = 015,
        /// <summary>
        /// 旋转轴返回P1
        /// </summary>
        BOX_H_MiddleAxisToP1 = 016,

        /// <summary>
        /// 叉子先退回P1
        /// </summary>
        BOX_M_H_InOutToP1 = 018,
        /// <summary>
        /// 旋转轴回原点
        /// </summary>
        BOX_M_H_MiddleAxisHome = 019,
        /// <summary>
        /// 旋转轴等待清理位置
        /// </summary>
        BOX_M_H_MiddleWait = 020,

        /// <summary>
        /// 叉子走到P1
        /// </summary>
        BOX_M_H_TOP1_InOutToP1 = 030,
        /// <summary>
        /// 压紧轴回原点
        /// </summary>
        BOX_M_H_TOP1_CompressHome = 031,
        /// <summary>
        /// 关闭门,旋转轴到P1,升降轴到P1
        /// </summary>
        BOX_M_H_TOP1_OtherAxisToP1 = 032,
        #endregion


        #region 料仓 出库步骤 101-200

        /// <summary>
        ///料仓出库:叉子先运动到P1
        /// </summary>
        SO_02_InoutBack = 102,

        /// <summary>
        ///  料仓出库,,所有轴运行到库位,  压紧轴到P3(压紧前点) ,旋转轴到P2( 库位点),升降轴到P5(库位出库前点) 
        /// </summary>
        SO_03_ToBagP,
        /// <summary>
        ///  料仓出库,,叉子进入库位中,  进出轴到P3(库位取放料点)
        /// </summary>
        SO_04_InoutToP3,

        /// <summary>
        ///料仓出库,, 库位的物品放入叉子上,升降轴到P6( 库位出料缓冲点),压紧轴到P2(压紧点)
        /// </summary>
        SO_05_GetWare,

        /// <summary>
        ///料仓出库,,叉子从 库位返回,进出轴到P1( 待机点)
        /// </summary>
        SO_06_InoutToP1,


        #region 定位处理:先将料放入定位区,再拿起料到仓门口


        /// <summary>
        /// 出库定位:旋转轴 至P2( 库位点)升降轴到P3(库位入库前点)
        /// </summary>
        SOL_11_MoveToBag = 110,

        /// <summary>
        /// 出库定位:进出轴到P3(库位取放料点)
        /// </summary>
        SOL_12_InoutToP3,
        /// <summary>
        /// 出库定位: 压紧轴到P3( 压紧前点)
        /// </summary>
        SOL_13_ComToP3,
        /// <summary>
        /// 出库定位:放下物品,升降轴到P4( 库位入料缓冲点) 
        /// </summary>
        SOL_14_UpdownToP4,
        /// <summary>
        /// 出库定位:拿物品,升降轴到P6( 库位出料缓冲点),压紧轴到P2(压紧点)
        /// </summary>
        SOL_15_GetWare,
        /// <summary>
        /// 出库定位:叉子从 库位返回,进出轴到P1( 待机点)
        /// </summary>
        SOL_16_InoutToP1,

        #endregion



        /// <summary>
        /// 料仓出库,,所有设备运行到门,,旋转轴到P1( 待机点)升降轴到P2( 进料口出料前点)
        /// </summary>
        SO_21_ToDoorP = 121,
        /// <summary>
        /// 等待门口无料盘
        /// </summary>
        SO_22_WaitNoTray,
        /// <summary>
        /// 料仓出库,,叉子进出料口,,进出轴到P2( 进料口取料点)
        /// /// </summary>
        SO_23_InoutToP2,
        /// <summary>
        /// 料仓出库,,把物品放下,,升降轴到P8( 进料口出料缓冲点)压紧轴到P1( 待机点)
        /// </summary>
        SO_24_PutWare,
        /// <summary>
        /// 料仓出库,,叉子从出料口返回,,轴3( 叉子) 动作至P1( 待机点)
        /// </summary>
        SO_25_InoutToP1,
        /// <summary>
        /// 料仓出库,检测料仓门口信号
        /// </summary>
        SO_26_CheckTray,
        /// <summary>
        /// 料仓出库,,升降轴返回,,  轴2至P1( 待机点)
        /// </summary>
        SO_27_GoBack,
        /// <summary>
        /// 等待拿走物品
        /// </summary>
        SO_28_WaitTake,

        #endregion

        #region 料仓 入库 
        /// <summary>
        /// 入库检测
        /// </summary>
        SI_00_TrayCheck = 200,
        /// <summary>
        /// 入库,。定位气缸下降
        /// </summary>
        SI_01_LocationCylinderDown = 201,
        /// <summary>
        /// 入库。。进出轴(叉子)先返回P1
        /// </summary>
        SI_02_InOutAxisHome = 202,
        /// <summary>
        /// 入库。。所有轴先回到待机点,轴2、轴1 动作到P1,,轴4动作至P3
        /// </summary>
        SI_03_ReturnHome = 203,
        /// <summary>
        /// 入库。。压紧物品(有压紧轴的才需要此步骤),压紧轴到P3(压紧前点)
        /// </summary>
        SI_04_CompressWare = 204,
        /// <summary>
        /// 入库。。叉子进入入料口,进出轴到P2( 进料口取料点)
        /// </summary>
        SI_05_DeviceToDoor = 205,
        /// <summary>
        /// 入库。。把物品放入叉子上,升降轴到P7( 进料口取料缓冲点),压紧物品(有压紧轴的才需要此步骤),压紧轴到P2(压紧点)
        /// </summary>
        SI_06_DoorWarToDevice = 206,

        /// <summary>
        /// 入库。。叉子 从入料口抽出,进出轴到P1( 待机点)
        /// </summary>
        SI_07_DeviceBackFromDoor = 207,
        /// <summary>
        /// 入库。。,定位气缸伸出 (有压紧轴的不需要此步骤) 
        /// </summary>
        SI_08_LocationCylinder_Up = 208,
        /// <summary>
        /// 入库。。移动到库位点,旋转轴到P2( 库位点)升降轴到P3(库位入库前点)
        /// </summary>
        SI_09_MoveToBag = 209,
        /// <summary>
        /// 入库。。定位气缸退回 (有压紧轴的不需要此步骤)
        /// </summary>
        SI_10_LocationCylinder_Down = 210,
        /// <summary>
        /// 入库。。叉子进入库位中,进出轴到P3(库位取放料点)
        /// </summary>
        SI_11_DeviceToBag = 211,
        /// <summary>
        /// 入库。。放下物品,升降轴到P4( 库位入料缓冲点)压紧轴到P3( 压紧前点)
        /// </summary>
        SI_12_PutWareToBag = 212,
        /// <summary>
        /// 入库。。叉子从库位中返回,轴3( 叉子) 动作至P1( 待机点)
        /// </summary>
        SI_13_DeviceBackFromBag = 213,
        /// <summary>
        /// 入库。。返回待机点,轴2/轴1/轴4动作至P1( 待机点))开始
        /// </summary>
        SI_14_GoBack = 214,

        #endregion

        #region 料仓库位盘点
        /// <summary>
        /// 盘点 料叉回原点P1
        /// </summary>
        SC_01_InOutAxisHome,
        /// <summary>
        /// 料叉背面移动到库位低点
        /// </summary>
        SC_02_MoveToLBag,
        /// <summary>
        /// 料叉背面移动到库位高点
        /// </summary>
        SC_03_MoveToHBag,
        /// <summary>
        /// 盘点仓位
        /// </summary>
        SC_04_Inventory,
        #endregion

    }

    public enum StoreAlarmType
    {
        /// <summary>
        /// 没有报警
        /// </summary>
        None = 0,
        /// <summary>
        /// 轴报警
        /// </summary>
        AxisAlarm = 1, 
        /// <summary>
        /// 收到急停
        /// </summary>
        SuddenStop = 10,
        /// <summary>
        /// 没有气压信号
        /// </summary>
        NoAirCheck = 11,
        /// <summary>
        /// 轴运动错误,没有达到指定脉冲,但是io判断已停止运动
        /// </summary>
        AxisMoveError = 20,
        /// <summary>
        /// io信号超时未收到
        /// </summary>
        IoSingleTimeOut = 30,
        /// <summary>
        /// 电钢报警
        /// </summary>
        StellAlarm=50,
    }
}