Ejemplo n.º 1
0
        /// <summary>
        /// 判断当前位置是否是所在按区域的时候,对应IO是否安全,安全返回TRUE,否则FLASE
        /// </summary>
        /// <returns></returns>
        public static bool IOIsSafe(PointAggregate pa)
        {
            if (pa == null || pa.tag_AxisSafeManage == null || pa.tag_AxisSafeManage.tag_InIoList == null || pa.tag_AxisSafeManage.tag_InIoList.Count == 0)
            {
                return(true);
            }
            foreach (OutIOParameterPoint io in pa.tag_AxisSafeManage.tag_InIoList)
            {
                bool var = false;
                // io.tag_IniO1.tag_name
                if (io != null && io.tag_IniO2 != null && NewCtrlCardV0.GetInputIoBitStatus(io.tag_IniO2.tag_name, io.tag_IniO2.tag_IOName, out var) == 0)
                {
                    if (var == io.tag_IniO2.tag_var)
                    {
                    }
                    else
                    {
                        LogOutControl.OutLog("IO:<" + io.tag_IniO2.tag_IOName + "  >有安全隐患,可能撞机,请注意", 0);
                        return(false);
                    }
                }
            }

            return(true);
        }
Ejemplo n.º 2
0
        public static bool IsRestExit()
        {
            bool axio    = false;
            bool stopIoS = false;

            NewCtrlCardV0.GetInputIoBitStatus("", "急停", out stopIoS);
            //NewCtrlCardV0.GetInputIoBitStatus("", "Z1报警", out axio);
            if (axio || !stopIoS)
            {
                LogOutControl.OutLog("轴报警", 0);

                return(true);
            }
            if (Global.WorkVar.tag_SuspendState == 1 || Global.WorkVar.tag_ButtonStopState == 1)
            {
                Global.WorkVar.tag_StopState    = 1;
                Global.WorkVar.tag_SuspendState = 0;
                return(true);
            }
            return(false);
        }
Ejemplo n.º 3
0
        public void CheckIoThread(object o)
        {
            while (true)
            {
                bool suspendIo      = false;
                bool stopIoS        = false;
                bool RestIoS        = false;
                bool AxisAlarm      = false;
                bool AxisLimitAlarm = false;
                bool SafetyDoorIoS  = false;             //安全门
                bool RasterIoS_L    = false;             //左安全光栅
                bool RasterIoS_R    = false;             //右安全光栅


                if (NewCtrlCardV0.tag_isInit == 0)
                {
                    Thread.Sleep(100);
                    continue;
                }
                IOParameter SuspendIo  = StationManage.FindInputIo("暂停");
                IOParameter StopIo     = StationManage.FindInputIo("急停");
                IOParameter RestIo     = StationManage.FindInputIo("复位");
                IOParameter Raster_L   = StationManage.FindInputIo("左安全光栅");
                IOParameter Raster_R   = StationManage.FindInputIo("右安全光栅");
                IOParameter SafetyDoor = StationManage.FindInputIo("安全门");


                //AxisAlarm =  IsAxisAlarm();
                AxisLimitAlarm = IsAxisLimitAlarm();
                if (SuspendIo == null)
                {
                    LogOutControl.OutLog("请配置<暂停IO>", 0);
                    Thread.Sleep(100);
                    continue;
                }
                if (StopIo == null)
                {
                    LogOutControl.OutLog("请配置<急停IO>", 0);
                    Thread.Sleep(100);
                    continue;
                }
                if (RestIo == null)
                {
                    LogOutControl.OutLog("请配置<复位IO>", 0);
                    Thread.Sleep(100);
                    continue;
                }
                if (Raster_L == null)
                {
                    LogOutControl.OutLog("请配置<左安全光栅IO>", 0);
                    Thread.Sleep(100);
                    continue;
                }
                if (Raster_R == null)
                {
                    LogOutControl.OutLog("请配置<右安全光栅IO>", 0);
                    Thread.Sleep(100);
                    continue;
                }
                if (SafetyDoor == null)
                {
                    LogOutControl.OutLog("请配置<安全门IO>", 0);
                    Thread.Sleep(100);
                    continue;
                }


                NewCtrlCardV0.GetInputIoBitStatus("", "暂停", out suspendIo);
                NewCtrlCardV0.GetInputIoBitStatus("", "复位", out RestIoS);
                NewCtrlCardV0.GetInputIoBitStatus("", "急停", out stopIoS);
                NewCtrlCardV0.GetInputIoBitStatus("", "安全门", out SafetyDoorIoS);
                NewCtrlCardV0.GetInputIoBitStatus("", "左安全光栅", out RasterIoS_L);
                NewCtrlCardV0.GetInputIoBitStatus("", "右安全光栅", out RasterIoS_R);
                //if (!stopIoS || Global.WorkVar.tag_StopState == 2 || !IsafeIOOk() || !IoAllSafeCheck() || !AxisSafeCheck() || AxisAlarm || (AxisLimitAlarm && Global.WorkVar.tag_ResetState != 1))
                if (!stopIoS || Global.WorkVar.tag_StopState == 2 || !IsafeIOOk() || !IoAllSafeCheck() || !AxisSafeCheck() || AxisAlarm)
                {
                    IsafeIOInit();
                    Stop();
                    Thread.Sleep(100);
                    continue;
                }
                else if (((!SafetyDoorIoS && !_Config.tag_PrivateSave.tag_safeGateOffOn) || suspendIo) && Global.WorkVar.tag_SuspendState == 0 && (Global.WorkVar.bWork_L || Global.WorkVar.bWork_R))
                {
                    Suspend(null);
                    Thread.Sleep(500);
                }
                else if (RestIoS)
                {
                    Global.WorkVar.tag_StopState = 0;
                    if (Global.WorkVar.tag_ResetState != 1 && Global.WorkVar.tag_workState == 0)
                    {
                        Rest();
                    }
                    else
                    {
                    }
                    continue;
                }
                else if (suspendIo && Global.WorkVar.tag_SuspendState == 1)
                {
                    Continue(null);
                    Thread.Sleep(500);
                    continue;
                }
                else if (Global.WorkVar.bcanRunFalg == true && Global.WorkVar.tag_ResetState == 2 && Global.WorkVar.tag_workState == 0)
                {
                    Global.WorkVar.bcanRunFalg = false;
                    if (start())
                    {
                        Global.WorkVar.bcanRunFalg = true;
                    }
                    continue;
                }
                if (!RasterIoS_L && !_Config.tag_PrivateSave.tag_safeLightOffOn && Global.WorkVar.bWork_L && !Global.WorkVar.bSuspendState_L)
                {
                    Suspend_L(null);
                }
                else if (RasterIoS_L && Global.WorkVar.bSuspendState_L)
                {
                    Continue_L(null);
                }
                if (!RasterIoS_R && !_Config.tag_PrivateSave.tag_safeLightOffOn && Global.WorkVar.bWork_R && !Global.WorkVar.bSuspendState_R)
                {
                    Suspend_R(null);
                }
                else if (RasterIoS_R && Global.WorkVar.bSuspendState_R)
                {
                    Continue_R(null);
                }
                Thread.Sleep(100);
            }
        }