private void button_AddUser_Click(object sender, EventArgs e) { if (textBox_UserName.Text == "" || textBox_PassWord.Text == "") { AlarmMgr.GetIntance().Warn("用户名和密码不能为空 "); return; } string str = ((UserRight)comboBox_SelRight.SelectedIndex).ToString(); int userIndex = sys.g_listUser.FindIndex(t => t._userName == textBox_UserName.Text); if (userIndex != -1) { AlarmMgr.GetIntance().Warn("用户名已存在 "); return; } dataGridView_UserList.Rows.Add(textBox_UserName.Text, str); sys.g_listUser.Add(new User() { _userName = textBox_UserName.Text, _userPassWord = textBox_PassWord.Text, _userRight = (UserRight)comboBox_SelRight.SelectedIndex }); ConfigToolMgr.GetInstance().SaveUserConfig(); }
public StationStep StepInitRun(bool bmanual = false) { StationStep step = StationStep.Step_Stop; ParamSetMgr.GetInstance().SetBoolParam("转盘站初始化完成", false); Info("转盘站 等待其他工位回零"); WaranResult waranResult = doWhileWaitInit.doSomething(this, doWhileWaitInit, false, null); if (waranResult == WaranResult.TimeOut) { AlarmMgr.GetIntance().WarnWithDlg("转盘站回原点前,点胶工站或者AA工站复位时间过长,请检查,程序将会停止", this, CommonDlg.DlgWaranType.WaranOK, doWhileWaitInit, false); ClearAllStep(); GlobalVariable.g_StationState = StationState.StationStateStop; return(step); } Info("转盘站 开始回零"); if (!GoTableHome(bmanual)) { Err("转盘站 回零失败"); throw new Exception("转盘轴回零失败!"); } GoTableReadySafe(bmanual); ParamSetMgr.GetInstance().SetBoolParam("转盘站初始化完成", true); step = StationStep.Step_WaitAllStationFinsh; TableData.GetInstance().SetAllSationResultFalse(); TableData.GetInstance().SetALLStartCmd();//到位启动 return(step); }
public void CheckBuzzerPlaneAndUp(bool bManual = false) { if (IOMgr.GetInstace().ReadIoInBit("右装料平台有无感应器")) { Task task0 = new Task(() => { ParamSetMgr.GetInstance().SetBoolParam("右装料平台上升到位", false); Info("装料步进运动"); int pos = MotionMgr.GetInstace().GetAxisPos(AxisZ); pos = pos + (int)(ParamSetMgr.GetInstance().GetDoubleParam("装料步长") * nResolutionZ); MoveSigleAxisPosWaitInpos(AxisZ, pos, MotionMgr.GetInstace().GetAxisMovePrm(AxisZ).VelH, 20, bManual, bManual ? null : this); ParamSetMgr.GetInstance().SetBoolParam("右装料平台上升到位", true); }); task0.Start(); } else { Task task = new Task(() => { Info("回到原始位置"); double pos = GetStationPointDic()["装料原始位"].pointZ; MoveSigleAxisPosWaitInpos(AxisZ, pos, MotionMgr.GetInstace().GetAxisMovePrm(AxisZ).VelH, 20, bManual, this); //AlarmMgr.GetIntance().WarnWithDlg("右剥料工站 装料平台无料,请添加蜂鸣片", bManual ? null : this, CommonDlg.DlgWaranType.WaranOK); AlarmMgr.GetIntance().WarnWithDlg("右剥料工站 装料平台无料,请添加蜂鸣片,添加完成点击OK", this, CommonDlg.DlgWaranType.WaranOK); FindBuzzer(bManual); ParamSetMgr.GetInstance().SetBoolParam("右装料平台上升到位", true); }); task.Start(); task.Wait(); } }
public override void AlarmDeal() { WaranResult waranResult; string alarmmsg = ""; if (lineObj != null) { alarmmsg = $"{lineObj.LineName},流水线状态{lineObj.LineSegState},离开检查失败,请检查该流水线的顶升气缸 阻挡气缸的感应器等"; } waranResult = AlarmMgr.GetIntance().WarnWithDlg(strAlarmmsg, null, new string[] { "重试" }); }
public bool IsCanLeave(bool bmanual) { if (MotionMgr.GetInstace().IsAxisNormalStop(nAxisNo) > AxisState.NormalStop) { AlarmMgr.GetIntance().WarnWithDlg($"流水线{lb.LineName} 在出料前,轴{MotionMgr.GetInstace().GetAxisName(nAxisNo)} ,报警{MotionMgr.GetInstace().IsAxisNormalStop(nAxisNo).ToString()},程序停止", null, CommonDlg.DlgWaranType.WaranOK, null, bmanual); StationMgr.GetInstance().Stop(); } bool bIsAxisStop = MotionMgr.GetInstace().IsAxisNormalStop(nAxisNo) == AxisState.NormalStop; return(lb.CheckJackUpCliyderStateInPos(false) && bIsAxisStop); }
public override bool IsCanLeave(bool bmanual) { if (MotionMgr.GetInstace().IsAxisNormalStop(nAxisNo) > AxisState.NormalStop) { AlarmMgr.GetIntance().WarnWithDlg($"流水线{LineName} 在出料前,轴{MotionMgr.GetInstace().GetAxisName(nAxisNo)} ,报警{MotionMgr.GetInstace().IsAxisNormalStop(nAxisNo).ToString()},程序停止", null, CommonDlg.DlgWaranType.WaranOK, null, bmanual); StationMgr.GetInstance().Stop(); } bool bIsAxisStop = MotionMgr.GetInstace().IsAxisNormalStop(nAxisNo) == AxisState.NormalStop; bool bIsAxisInPosOnOutPos = Math.Abs(MotionMgr.GetInstace().GetAxisActPos(nAxisNo) - dDischargePos) < 0.3; return(CheckJackUpCliyderStateInPos(false) && bIsAxisStop && bIsAxisInPosOnOutPos); }
private APP() { MotionMgr = MotionMgr.GetInstace(); IOMgr = IOMgr.GetInstace(); AlarmMgr = AlarmMgr.GetIntance(); ConfigToolMgr = ConfigToolMgr.GetInstance(); StationMgr = StationMgr.GetInstance(); ParamSetMgr = ParamSetMgr.GetInstance(); ComMgr = ComMgr.GetInstance(); TcpMgr = TcpMgr.GetInstance(); SocketSeverMgr = SocketSeverMgr.GetInstace(); }
public static bool ReadVisionData() { //视觉初始化 string strVisionConfigPath = AppDomain.CurrentDomain.BaseDirectory + @"config\Vision\" + "VisionMgr" + ".xml"; VisionMgr.GetInstance().CurrentVisionProcessDir = ParamSetMgr.GetInstance().CurrentWorkDir + "\\" + ParamSetMgr.GetInstance().CurrentProductFile + "\\" + @"Config\Vision\"; VisionMgr.GetInstance().Read(); if (VisionMgr.GetInstance().dicVisionType.Count == 0 && bHaveVissionProcess) { AlarmMgr.GetIntance().WarnWithDlg("视觉处理文件文件丢失", null, CommonDlg.DlgWaranType.WaranOK, null, true); } return(true); }
public override bool IsOutFinishDealOK(bool bmaual) { if (MotionMgr.GetInstace().IsAxisNormalStop(nAxisNo) > AxisState.NormalStop) { AlarmMgr.GetIntance().WarnWithDlg($"流水线{LineName} 在出料前,轴{MotionMgr.GetInstace().GetAxisName(nAxisNo)} ,报警{MotionMgr.GetInstace().IsAxisNormalStop(nAxisNo).ToString()},程序停止", null, CommonDlg.DlgWaranType.WaranOK, null, bmaual); StationMgr.GetInstance().Stop(); } bool bIsAxisStop = MotionMgr.GetInstace().IsAxisNormalStop(nAxisNo) == AxisState.NormalStop; double pos = MotionMgr.GetInstace().GetAxisActPos(nAxisNo); bool bIsAxisInPosOnFeedPos = Math.Abs(MotionMgr.GetInstace().GetAxisActPos(nAxisNo) - dFeedPos) < 0.3; return(bIsAxisStop & bIsAxisInPosOnFeedPos); }
/// <summary> /// 初始其他硬件状态硬件状态 /// </summary> public static void InitHardWare() { try { ResetIO(); AlarmMgr.GetIntance().StopAlarmBeet(); string err = ""; } catch (Exception e) { return; } }
public override void AlarmDeal() { WaranResult waranResult = AlarmMgr.GetIntance().WarnWithDlg(strAlarmmsg, lineObj.sb, new string[] { "重试", "已经人工拿走" }); if (waranResult == WaranResult.Custom1) { lineObj.LeaveTimer.ResetStartTimer(); lineObj.LeaveDelayTimer.Stop(); } if (waranResult == WaranResult.Custom2) { lineObj.LineSegState = LineSegementState.None; } }
protected override bool InitStation() { ParamSetMgr.GetInstance().SetBoolParam("右搜寻蜂鸣器成功", false); ParamSetMgr.GetInstance().SetIntParam("右剥料次数", 0); ParamSetMgr.GetInstance().SetBoolParam("右装料平台上升到位", false); ParamSetMgr.GetInstance().SetBoolParam("右剥料回原点成功", false); AlarmMgr.GetIntance().DoWhenAlarmEvent += DoSomethingWhenalarm; if (!thread.IsAlive) { thread.IsBackground = true; thread.Start(this); } PushMultStep((int)StationStep.step_init); PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState = PlaneState.None; return(true); }
private void button_stop_Click(object sender, EventArgs e) { if (MessageBox.Show("是否确定停止", "Info", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { return; } _logger.Info("stop:开始"); if (GlobalVariable.g_StationState == StationState.StationStateRun || GlobalVariable.g_StationState == StationState.StationStatePause) { StationMgr.GetInstance().Stop(); } else { DoWhile.StopCirculate(); } _logger.Info("stop:结束"); AlarmMgr.GetIntance().StopAlarmBeet(); }
public static void CloseHardWork() { //for (int i = 0; i < 6; i++) // LightControl.GetInstance().CloseLight(i); ResetIO(); AlarmMgr.GetIntance().StopAlarmBeet(); CameraMgr.GetInstance().Close(); TcpMgr.GetInstance().CloseAllEth(); MotionMgr.GetInstace().Close(); IOMgr.GetInstace().Close(); if (ParamSetMgr.GetInstance().GetBoolParam("是否选择程控电源")) { OtherDevices.ckPower.SetVoltage(1, 0); OtherDevices.ckPower.SetVoltage(2, 0); } // LightControl.GetInstance().Close(); // Weighing.GetInstance().Close(); }
public override void AlarmDeal() { WaranResult waranResult = AlarmMgr.GetIntance().WarnWithDlg(strAlarmmsg, null, new string[] { "重试", "已经人工拿走" }); if (waranResult == WaranResult.Custom1) { lineObj.OutTimer.ResetStartTimer(); } if (waranResult == WaranResult.Custom2) { lineObj.LineSegState = LineSegementState.None; } //waranResult = AlarmMgr.GetIntance().WarnWithDlg($"{LineName} :离开段超时,可能料被拿走 或者卡住", null, new string[] { "重试", "已经人工拿走" }, CommonDlg.DlgWaranType.Waran_Custom1, null, bmaual); //if (waranResult == WaranResult.Custom1) // OutTimer.ResetStartTimer(); //if (waranResult == WaranResult.Custom2) // LineSegState= LineSegementState.None; }
public WaranResult CheckIobyName(string ioName, bool val = true, string excptionmsg = "", bool bmanual = false, int nTimeout = 3000) { DoWhile doWhile = new DoWhile((time, dowhile, bmanual2, obj) => { if (IOMgr.GetInstace().ReadIoInBit(ioName) == val) { return(WaranResult.Run); } else if (time > nTimeout) { WaranResult waranResult = AlarmMgr.GetIntance().WarnWithDlg(string.Format("《{0}》 信号异常:{1} ", ioName, excptionmsg), bmanual2?null: this, CommonDlg.DlgWaranType.WaranInorge_Stop_Pause_Retry, dowhile); return(waranResult); } else { return(WaranResult.CheckAgain); } }, 100000); return(doWhile.doSomething(this, doWhile, bmanual, null)); }
private void button_stop_Click(object sender, EventArgs e) { UserTest.RunLog.Write($"点击【停止】", LogType.Info, PathHelper.LogPathManual); if (MessageBox.Show("是否确定停止? 如果为回零状态会关闭软件!", "Info", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { return; } if (!Form_Auto.IsHome) { IsShowCloseForm = true; Form_Auto.EvenStop(); this.Close(); } else { _logger.Info("stop:开始"); StationMgr.GetInstance().Stop(); _logger.Info("stop:结束"); AlarmMgr.GetIntance().StopAlarmBeet(); } }
public WaranResult FindBuzzer(bool bManual = false) { if (sys.g_AppMode == AppMode.AirRun) { Info("右剥料站:空跑搜寻蜂鸣器成功"); ParamSetMgr.GetInstance().SetBoolParam("右搜寻蜂鸣器成功", true); ParamSetMgr.GetInstance().SetBoolParam("右装料平台上升到位", true); return(WaranResult.Run); } if (!IOMgr.GetInstace().ReadIoInBit("右装料平台有无感应器")) { double pos = GetStationPointDic()["装料原始位"].pointZ; MoveSigleAxisPosWaitInpos(AxisZ, pos, MotionMgr.GetInstace().GetAxisMovePrm(AxisZ).VelH, 20, bManual, this); MotionMgr.GetInstace().StopAxis(AxisZ); Info("右剥离工站:装料平台无料"); WaranResult waranResult = AlarmMgr.GetIntance().WarnWithDlg("右剥料:装料平台无料,请装料,装料完成点击<<重试>>按钮", bManual ? null : this, CommonDlg.DlgWaranType.WaranInorge_Stop_Pause_Retry); //if( WaranResult == WaranResult.) return(waranResult); } else { Info("右剥料工站:装料平台寻料"); // MotionMgr.GetInstace().ResetAxis() DoWhile doWhile = new DoWhile((time, dowhile, bmanual, obj) => { int pos = MotionMgr.GetInstace().GetAxisPos(AxisZ); if (this.GetStationPointDic().ContainsKey("装料最高位")) { if (pos > this.GetStationPointDic()["装料最高位"].pointZ) { Warn("右剥料工站:右装料平台寻找蜂鸣器, 已经到达最高位"); Info("右剥离工站:搜寻蜂鸣器失败"); ParamSetMgr.GetInstance().SetBoolParam("右搜寻蜂鸣器成功", false); MotionMgr.GetInstace().StopAxis(AxisZ); return(AlarmMgr.GetIntance().WarnWithDlg("右剥料:装料平台Z轴升至最高点 仍然没有检查到物料 请检查最高位设置,感应器之后,装料完成点击<<重试>>按钮", bManual ? null : this, CommonDlg.DlgWaranType.WaranInorge_Stop_Pause_Retry)); } if (MotionMgr.GetInstace().IsAxisNormalStop(AxisZ) > AxisState.NormalStop) { Warn("右剥料工站:电机报警"); ParamSetMgr.GetInstance().SetBoolParam("右搜寻蜂鸣器成功", false); return(AlarmMgr.GetIntance().WarnWithDlg("右剥料:装料平台Z轴电机报警 请检查电机及驱动器,装料完成点击<<重试>>按钮", this, CommonDlg.DlgWaranType.WaranInorge_Stop_Pause_Retry)); } if (IOMgr.GetInstace().ReadIoInBit("右装料Z轴上升到位感应器")) { MotionMgr.GetInstace().StopAxis(AxisZ); double currentzaxisPos = MotionMgr.GetInstace().GetAxisPos(AxisZ); currentzaxisPos = currentzaxisPos + ParamSetMgr.GetInstance().GetDoubleParam("装料抬升距离") * nResolutionZ; if (currentzaxisPos > GetStationPointDic()["装料最高位"].pointZ) { currentzaxisPos = GetStationPointDic()["装料最高位"].pointZ - 10; } MoveSigleAxisPosWaitInpos(AxisZ, currentzaxisPos, MotionMgr.GetInstace().GetAxisMovePrm(AxisZ).VelH, 20, bManual, this); Info("右剥离工站:搜寻蜂鸣器成功"); ParamSetMgr.GetInstance().SetBoolParam("右搜寻蜂鸣器成功", true); ParamSetMgr.GetInstance().SetBoolParam("右装料平台上升到位", true); ParamSetMgr.GetInstance().SetIntParam("右蜂鸣器顶位", MotionMgr.GetInstace().GetAxisPos(AxisZ)); return(WaranResult.Run); } else { MotionMgr.GetInstace().JogMove(AxisZ, true, 0, (int)MotionMgr.GetInstace().GetAxisMovePrm(AxisZ).VelM); return(WaranResult.CheckAgain); } } else { double position = GetStationPointDic()["装料原始位"].pointZ; MoveSigleAxisPosWaitInpos(AxisZ, position, MotionMgr.GetInstace().GetAxisMovePrm(AxisZ).VelH, 20, bManual, bManual ? null : this); MotionMgr.GetInstace().StopAxis(AxisZ); Info("右剥离工站:装料平台无料"); WaranResult waranResult = AlarmMgr.GetIntance().WarnWithDlg("右剥料:装料平台无料,请装料,装料完成点击<<重试>>按钮", bManual ? null : this, CommonDlg.DlgWaranType.WaranInorge_Stop_Pause_Retry); return(waranResult); } }, int.MaxValue); return(doWhile.doSomething(this, doWhile, bManual, null)); } }
public bool Init(bool bmanual = false) { WaranResult waranResult; InitGoHome: IOMgr.GetInstace().WriteIoBit("右剥料后压紧气缸电磁阀", false); IOMgr.GetInstace().WriteIoBit("右剥料夹料气缸电磁阀", false); IOMgr.GetInstace().WriteIoBit("右剥料气缸电磁阀", false); #if false //IOMgr.GetInstace().WriteIoBit("右剥料压紧气缸电磁阀", false); //WaranResult waranResult = CheckIobyName("右剥料压紧气缸原位", true, "右剥料 归零:右剥料压紧气缸原位失败,", bmanual); // if (waranResult == WaranResult.Retry) // goto InitGoHome; //IOMgr.GetInstace().WriteIoBit("右剥料前推压紧气缸电磁阀", false); //waranResult = CheckIobyName("右剥料前推压紧气缸原位", true, "右剥料 归零:右剥料前推压紧气缸原位失败,", bmanual); //if (waranResult == WaranResult.Retry) // goto InitGoHome; IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", false); waranResult = CheckIobyName("右装料Z轴气缸原位", true, "右剥料 归零:右装料Z轴气缸原位失败,", bmanual); if (waranResult == WaranResult.Retry) { goto InitGoHome; } #endif IOMgr.GetInstace().WriteIoBit("右装料搬运气缸电磁阀", false); waranResult = CheckIobyName("右装料搬运气缸原位", true, "右剥料 归零:右装料搬运气缸原位失败,", bmanual); if (waranResult == WaranResult.Retry) { goto InitGoHome; } #if false retry_inpos: IOMgr.GetInstace().WriteIoBit("右剥料压紧气缸电磁阀", true); waranResult = CheckIobyName("右剥料压紧气缸到位", true, "右剥料 归零:右剥料压紧气缸到位失败,", bmanual); if (waranResult == WaranResult.Retry) { goto retry_inpos; } #endif Info("RBZ 轴回原点"); Retry_X_Home: waranResult = HomeSigleAxisPosWaitInpos(AxisX, this, 60000, bmanual); if (waranResult != WaranResult.Run) { waranResult = AlarmMgr.GetIntance().WarnWithDlg("右剥料 归零不成功: " + string.Format("{0} 轴回零失败", MotionMgr.GetInstace().GetAxisName(AxisX)), this, CommonDlg.DlgWaranType.Waran_Stop_Retry, null, bmanual); if (waranResult == WaranResult.Retry) { goto Retry_X_Home; } } Info("RZZ 轴回原点"); Retry_Z_Home: waranResult = HomeSigleAxisPosWaitInpos(AxisZ, this, 60000, bmanual); if (waranResult != WaranResult.Run) { waranResult = AlarmMgr.GetIntance().WarnWithDlg("右剥料 归零不成功: " + string.Format("{0} 轴回零失败", MotionMgr.GetInstace().GetAxisName(AxisZ)), this, CommonDlg.DlgWaranType.Waran_Stop_Retry, null, bmanual); if (waranResult == WaranResult.Retry) { goto Retry_Z_Home; } } Info("RBY 轴回原点"); Retry_Y_Home: waranResult = HomeSigleAxisPosWaitInpos(AxisY, this, 60000, bmanual); if (waranResult != WaranResult.Run) { waranResult = AlarmMgr.GetIntance().WarnWithDlg("右剥料 归零不成功: " + string.Format("{0} 轴回零失败", MotionMgr.GetInstace().GetAxisName(AxisY)), this, CommonDlg.DlgWaranType.Waran_Stop_Retry, null, bmanual); if (waranResult == WaranResult.Retry) { goto Retry_Y_Home; } } Info("回剥料准备位"); double xpos = GetStationPointDic()["剥料准备位"].pointX; double ypos = GetStationPointDic()["剥料准备位"].pointY; double zpos = GetStationPointDic()["装料原始位"].pointZ; Retry_YZ_InitPos: waranResult = MoveMulitAxisPosWaitInpos(new int[] { AxisX, AxisY, AxisZ }, new double[] { xpos, ypos, zpos }, new double[] { (double)SpeedType.High, (double)SpeedType.High, (double)SpeedType.High }, 20, true, this, 60000); if (waranResult != WaranResult.Run) { waranResult = AlarmMgr.GetIntance().WarnWithDlg("右剥料 归零成功: " + "Y回准备或Z回原始位失败", this, CommonDlg.DlgWaranType.WaranInorge_Stop_Pause_Retry, null, bmanual); if (waranResult == WaranResult.Retry) { goto Retry_YZ_InitPos; } } ParamSetMgr.GetInstance().SetBoolParam("右剥料回原点成功", true); return(true); }
protected override bool InitStation() { ParamSetMgr.GetInstance().SetBoolParam("Socket流水线初始化完成", false); SocketMgr.GetInstance().ResetAllSocket(); AlarmMgr.GetIntance().DoWhenAlarmEvent += DoSomethingWhenalarm; WaranResult waranResult; Info("Y轴气缸伸出"); check_cyliderYout: IOMgr.GetInstace().WriteIoBit("Y轴气缸电磁阀", true); waranResult = CheckIobyName("Y轴气缸1到位", true, "Socket流水站:流水线自检 Y轴气缸移动伸出, 没到位可能卡住,,请拿开"); if (waranResult == WaranResult.Retry) { goto check_cyliderYout; } waranResult = CheckIobyName("Y轴气缸2到位", true, "Socket流水站:流水线自检 Y轴气缸移动伸出, 没到位可能卡住,,请拿开"); if (waranResult == WaranResult.Retry) { goto check_cyliderYout; } Info("Y轴气缸退回"); check_cyliderYback: IOMgr.GetInstace().WriteIoBit("Y轴气缸电磁阀", false); waranResult = CheckIobyName("Y轴气缸1原位", true, "Socket流水站:流水线自检 Y轴气缸移动退回, 没到位可能卡住,,请拿开"); if (waranResult == WaranResult.Retry) { goto check_cyliderYback; } waranResult = CheckIobyName("Y轴气缸2原位", true, "Socket流水站:流水线自检 Y轴气缸移动退回, 没到位可能卡住,,请拿开"); if (waranResult == WaranResult.Retry) { goto check_cyliderYback; } Info("X轴气缸伸出"); check_cyliderXout: IOMgr.GetInstace().WriteIoBit("X轴气缸电磁阀", true); waranResult = CheckIobyName("X轴气缸1到位", true, "Socket流水站: 流水线自检 X轴气缸伸出, 没到位可能卡住,,请拿开"); if (waranResult == WaranResult.Retry) { goto check_cyliderXout; } waranResult = CheckIobyName("X轴气缸2到位", true, "Socket流水站: 流水线自检 X轴气缸伸出, 没到位可能卡住,,请拿开"); if (waranResult == WaranResult.Retry) { goto check_cyliderXout; } Info("X轴气缸退回"); check_cyliderXback: IOMgr.GetInstace().WriteIoBit("X轴气缸电磁阀", false); waranResult = CheckIobyName("Y轴气缸1原位", true, "Socket流水站: 流水线自检 X轴气缸退回, 没到位可能卡住,,请拿开"); if (waranResult == WaranResult.Retry) { goto check_cyliderXback; } waranResult = CheckIobyName("X轴气缸2原位", true, "Socket流水站:流水线自检 X轴气缸退回, 没到位可能卡住,,请拿开"); if (waranResult == WaranResult.Retry) { goto check_cyliderXback; } PushMultStep((int)StationStep.step_init); ParamSetMgr.GetInstance().SetBoolParam("Socket流水线初始化完成", true); return(true); }
public void KeepPressure(bool bmanual = false) { WaranResult waranResult; if (SocketMgr.GetInstance().socketArr[(int)SocketType.press].socketState == SocketState.HaveOK || bmanual) { retry_press_up2: IOMgr.GetInstace().WriteIoBit("保压气缸电磁阀", false); waranResult = CheckIobyName("保压上下气缸原位", true, "流水线站:保压上下气缸原位 没有到位,请检查感应器,气缸,气压,线路等", bmanual); if (waranResult == WaranResult.Retry) { goto retry_press_up2; } retry_messureA: waranResult = dowhileCheckA.doSomething(this, dowhileCheckA, bmanual, null); if (waranResult != WaranResult.Run) { waranResult = AlarmMgr.GetIntance().WarnWithDlg("保压时 ,A模块读不出数据 ", this, CommonDlg.DlgWaranType.Waran_Stop_Retry); if (waranResult == WaranResult.Retry) { goto retry_messureA; } } retry_messureB: waranResult = dowhileCheckB.doSomething(this, dowhileCheckA, bmanual, null); if (waranResult != WaranResult.Run) { waranResult = AlarmMgr.GetIntance().WarnWithDlg("保压时 ,B模块读不出数据 ", this, CommonDlg.DlgWaranType.Waran_Stop_Retry); if (waranResult == WaranResult.Retry) { goto retry_messureB; } } for (int i = 0; i < 4; i++) { pressvals[i] = press1[i]; pressvals[4 + i] = press2[i]; } retry_press_down: IOMgr.GetInstace().WriteIoBit("保压气缸电磁阀", true); waranResult = CheckIobyName("保压上下气缸到位", true, "流水线站:保压上下气缸到位 没有到位,请检查感应器,气缸,气压,线路等", bmanual); if (waranResult == WaranResult.Retry) { goto retry_press_down; } Thread.Sleep(ParamSetMgr.GetInstance().GetIntParam("保压时间")); retry_messureA2: waranResult = dowhileCheckA.doSomething(this, dowhileCheckA, bmanual, null); if (waranResult != WaranResult.Run) { waranResult = AlarmMgr.GetIntance().WarnWithDlg("保压时 ,A模块读不出数据 ", this, CommonDlg.DlgWaranType.Waran_Stop_Retry); if (waranResult == WaranResult.Retry) { goto retry_messureA2; } } retry_messureB2: waranResult = dowhileCheckB.doSomething(this, dowhileCheckA, bmanual, null); if (waranResult != WaranResult.Run) { waranResult = AlarmMgr.GetIntance().WarnWithDlg("保压时 ,B模块读不出数据 ", this, CommonDlg.DlgWaranType.Waran_Stop_Retry); if (waranResult == WaranResult.Retry) { goto retry_messureB2; } } for (int i = 0; i < 4; i++) { pressvals[i] = Math.Abs(pressvals[i] - press1[i]); pressvals[4 + i] = Math.Abs(pressvals[i + 4] - press2[i]); } Thread.Sleep(500); Weighing.GetInstance().Update(new int[] { pressvals[0], pressvals[1], pressvals[2], pressvals[3] }, new int[] { pressvals[4], pressvals[5], pressvals[6], pressvals[7] }); retry_press_up: IOMgr.GetInstace().WriteIoBit("保压气缸电磁阀", false); waranResult = CheckIobyName("保压上下气缸原位", true, "流水线站:保压上下气缸原位 没有到位,请检查感应器,气缸,气压,线路等", bmanual); if (waranResult == WaranResult.Retry) { goto retry_press_up; } } }
private void BtnReset_Click(object sender, EventArgs e) { IOMgr.GetInstace().m_deltgateSystemSingl("复位", true); AlarmMgr.GetIntance().StopAlarmBeet(); }
public bool Carray(bool bmanul = false) { Info("右剥料工站:搬运气缸开始搬运物料"); WaranResult waranResult; // CheckAndUp(bmanul); retry_carry_up: ParamSetMgr.GetInstance().SetBoolParam("右剥料完成", false); Info("右装料Z轴气缸电磁阀 上升"); IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", false); waranResult = CheckIobyName("右装料Z轴气缸原位", true, "右剥料工站:右装料Z轴气缸电磁阀 上升失败,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carry_up; } StationRightPackage stationLeftPackage = (StationRightPackage)StationMgr.GetInstance().GetStation("右贴装站"); int AxisYNooFPageBack = stationLeftPackage.AxisY; int AxiXYNooFPageBack = stationLeftPackage.AxisX; retry_carryMoving: if (MotionMgr.GetInstace().GetHomeFinishFlag(AxisY) == AxisHomeFinishFlag.Homed && MotionMgr.GetInstace().GetAxisPos(AxisY) > GetStationPointDic()["剥料准备位"].pointY - 50 && MotionMgr.GetInstace().GetHomeFinishFlag(AxisYNooFPageBack) == AxisHomeFinishFlag.Homed && MotionMgr.GetInstace().GetAxisPos(AxisYNooFPageBack) < stationLeftPackage.GetStationPointDic()["搬料安全位"].pointY - 50 ) { #if false IOMgr.GetInstace().WriteIoBit("右剥料前推压紧气缸电磁阀", true); waranResult = CheckIobyName("右剥料前推压紧气缸到位", true, "右剥料工站:右剥料前推压紧气缸到位失败,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carryMoving; } IOMgr.GetInstace().WriteIoBit("右剥料压紧气缸电磁阀", true); waranResult = CheckIobyName("右剥料压紧气缸到位", true, "右剥料工站:右剥料压紧气缸到位失败,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carryMoving; } #endif Info("右装料搬运气缸电磁阀 移动搬料"); IOMgr.GetInstace().WriteIoBit("右装料搬运气缸电磁阀", true); waranResult = CheckIobyName("右装料搬运气缸到位", true, "右剥料工站:右装料搬运气缸到位失败,物料可能掉落,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carryMoving; } // CheckBuzzerPlaneAndUp(); retry_carry_down: Info("右装料Z轴气缸电磁阀 下降"); IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", true); waranResult = CheckIobyName("右装料Z轴气缸到位", true, "右剥料工站:右装料Z轴气缸原下降失败,物料可能掉落,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carry_down; } Info("右装料真空吸电磁阀 关闭"); Info("右装料破真空电磁阀 打开"); Info("右剥料真空吸电磁阀 打开"); IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", true); IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", false); IOMgr.GetInstace().WriteIoBit("右剥料真空吸电磁阀", true); Thread.Sleep(ParamSetMgr.GetInstance().GetIntParam("吸真空延时")); IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", false); retry_carry_up2: Info("右装料Z轴气缸电磁阀 上升"); IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", false); waranResult = CheckIobyName("右装料Z轴气缸原位", true, "右剥料工站:右装料Z轴气缸电磁阀 上升 失败,请检查气缸和感应器 线路 ", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carry_up2; } waranResult = CheckIobyName("右剥料真空检测", true, "右剥料工站:Carray:蜂鸣器片 在剥料平台未吸紧", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carry_down; } Info("右装料真空吸电磁阀 复检 检查料是否脱落"); IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", false); IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", true); waranResult = CheckIobyName("右装料真空检测", false, "右剥料工站 :Carray:蜂鸣器片 在装料抓手上未脱离", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carry_down; } IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", false); retry_carryMovingback: Info("右装料搬运气缸电磁阀 移动搬料"); IOMgr.GetInstace().WriteIoBit("右装料搬运气缸电磁阀", false); waranResult = CheckIobyName("右装料搬运气缸原位", true, "右剥料工站:Carray:搬运气缸回到原位", bmanul); if (waranResult == WaranResult.Retry) { goto retry_carryMovingback; } IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", false); IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", false); IOMgr.GetInstace().WriteIoBit("右剥料真空吸电磁阀", false); IOMgr.GetInstace().WriteIoBit("右剥料后压紧气缸电磁阀", false); ParamSetMgr.GetInstance().SetIntParam("右剥料次数", 0); NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState = NozzleState.None; PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState = PlaneState.Have; return(true); } else { Info("Y轴 在剥料准备位前 不能移动 请挪开 或者 右剥料平台Y轴 没有回原点"); return(false); WaranResult waranResult2 = AlarmMgr.GetIntance().WarnWithDlg("Y轴 在剥料准备位前 不能移动 请挪开 或者 右剥料平台Y轴 没有回原点", bmanul ? null : this, CommonDlg.DlgWaranType.WaranInorge_Stop_Pause_Retry); if (waranResult2 == WaranResult.Retry) { goto retry_carryMoving; } } }
public void ProcessSysIo(string strIoName, bool bCurrentState) { if (InvokeRequired) { this.BeginInvoke(new Action(() => ProcessSysIo(strIoName, bCurrentState))); } else { if (strIoName == "急停" && !bCurrentState && !bAlreadyEmg) { bAlreadyEmg = true; if (GlobalVariable.g_StationState == StationState.StationStateRun || GlobalVariable.g_StationState == StationState.StationStatePause) { MotionMgr.GetInstace().StopEmg(); StationMgr.GetInstance().Stop(); MotionMgr.GetInstace().StopEmg(); } GlobalVariable.g_StationState = StationState.StationStateEmg; if (IOMgr.GetInstace().GetOutputDic().ContainsKey("绿灯")) { IOMgr.GetInstace().WriteIoBit("绿灯", false); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("红灯")) { IOMgr.GetInstace().WriteIoBit("红灯", false); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("黄灯")) { IOMgr.GetInstace().WriteIoBit("黄灯", false); } //IOMgr.GetInstace().WriteIoBit("蜂鸣", true); alarmtimer.Interval = 500; alarmtimer.Start(); AlarmMgr.GetIntance().Warn("急停被按下,点击后关闭软件!", AlarmType.AlarmType_Emg); AlarmMgr.GetIntance().StopAlarmBeet(); this.Close(); } if (strIoName == "安全门" && !bCurrentState) { if (ParamSetMgr.GetInstance().GetBoolParam("启用安全门")) { if (GlobalVariable.g_StationState == StationState.StationStateRun) { StationMgr.GetInstance().Pause(); IOMgr.GetInstace().WriteIoBit("绿灯", false); if (IOMgr.GetInstace().GetOutputDic().ContainsKey("红灯")) { IOMgr.GetInstace().WriteIoBit("红灯", false); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("黄灯")) { IOMgr.GetInstace().WriteIoBit("黄灯", true); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("蜂鸣")) { IOMgr.GetInstace().WriteIoBit("蜂鸣", false); } //AlarmMgr.GetIntance().Warn("安全门打开"); MessageBox.Show("安全门打开", "Waran", MessageBoxButtons.OK, MessageBoxIcon.Warning); // WaranResult waranResult = AlarmMgr.GetIntance().WarnWithDlg("安全门打开", null, DlgWaranType.WaranOK); } } } if (strIoName == "暂停" && bCurrentState) { if (GlobalVariable.g_StationState == StationState.StationStateRun) { StationMgr.GetInstance().Pause(); if (IOMgr.GetInstace().GetOutputDic().ContainsKey("绿灯")) { IOMgr.GetInstace().WriteIoBit("绿灯", false); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("红灯")) { IOMgr.GetInstace().WriteIoBit("红灯", false); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("黄灯")) { IOMgr.GetInstace().WriteIoBit("黄灯", true); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("蜂鸣")) { IOMgr.GetInstace().WriteIoBit("蜂鸣", false); } //AlarmMgr.GetIntance().Warn("安全门打开"); // WaranResult waranResult = AlarmMgr.GetIntance().WarnWithDlg("安全门打开", null, DlgWaranType.WaranOK); } } if (strIoName == "安全光栅" && !bCurrentState) { if (ParamSetMgr.GetInstance().GetBoolParam("启用安全光栅")) { if (ParamSetMgr.GetInstance().GetBoolParam("启用安全光栅")) { if (GlobalVariable.g_StationState == StationState.StationStateRun) { StationMgr.GetInstance().Pause(); IOMgr.GetInstace().WriteIoBit("绿灯", false); if (IOMgr.GetInstace().GetOutputDic().ContainsKey("红灯")) { IOMgr.GetInstace().WriteIoBit("红灯", false); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("黄灯")) { IOMgr.GetInstace().WriteIoBit("黄灯", true); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("蜂鸣")) { IOMgr.GetInstace().WriteIoBit("蜂鸣", false); } // AlarmMgr.GetIntance().Warn("安全光栅打开"); //WaranResult waranResult = AlarmMgr.GetIntance().WarnWithDlg("安全光栅打开", null, DlgWaranType.WaranOK); MessageBox.Show("安全光栅打开", "Waran", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } } if (strIoName == "启动" && bCurrentState) { if (GlobalVariable.g_StationState == StationState.StationStateStop) { if (!IsSafeDoorAndGrating()) { return; } Thread.Sleep(500); StationMgr.GetInstance().Run(); if (IOMgr.GetInstace().GetOutputDic().ContainsKey("绿灯")) { IOMgr.GetInstace().WriteIoBit("绿灯", true); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("红灯")) { IOMgr.GetInstace().WriteIoBit("红灯", false); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("黄灯")) { IOMgr.GetInstace().WriteIoBit("黄灯", false); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("蜂鸣")) { IOMgr.GetInstace().WriteIoBit("蜂鸣", false); } } else if (GlobalVariable.g_StationState == StationState.StationStatePause) { if (!IsSafeDoorAndGrating()) { return; } StationMgr.GetInstance().Resume(); if (IOMgr.GetInstace().GetOutputDic().ContainsKey("绿灯")) { IOMgr.GetInstace().WriteIoBit("绿灯", true); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("红灯")) { IOMgr.GetInstace().WriteIoBit("红灯", false); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("黄灯")) { IOMgr.GetInstace().WriteIoBit("黄灯", false); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("蜂鸣")) { IOMgr.GetInstace().WriteIoBit("蜂鸣", false); } } else { MessageBox.Show("发生错误,请先复位", "Err", MessageBoxButtons.OK, MessageBoxIcon.Error); } } if (strIoName == "复位" && bCurrentState) { if (GlobalVariable.g_StationState == StationState.StationStateEmg) { alarmtimer.Stop(); GlobalVariable.g_StationState = StationState.StationStateStop; MotionMgr.GetInstace().ResetAxis(); if (IOMgr.GetInstace().GetOutputDic().ContainsKey("绿灯")) { IOMgr.GetInstace().WriteIoBit("绿灯", true); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("红灯")) { IOMgr.GetInstace().WriteIoBit("红灯", false); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("黄灯")) { IOMgr.GetInstace().WriteIoBit("黄灯", true); } if (IOMgr.GetInstace().GetOutputDic().ContainsKey("蜂鸣")) { IOMgr.GetInstace().WriteIoBit("蜂鸣", false); } bStartAlarmTimer = false; bAlreadyEmg = false; } } } }