/// <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); }
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); }
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); } }