/// <summary> /// 增加自动界面 标志位 /// </summary> /// <param name="formauto"></param> public static void AddFlag(Form_Auto formauto) { formauto.AddFlag("可以上下料", false); formauto.AddFlag("启动点胶", false); formauto.AddFlag("点胶完成", false); formauto.AddFlag("抓取启动", false); formauto.AddFlag("抓取完成", false); formauto.AddFlag("启动AA", false); formauto.AddFlag("AA完成", false); formauto.AddFlag("点胶工站初始化完成", false); formauto.AddFlag("AA工站初始化完成", false); formauto.AddFlag("转盘站初始化完成", false); formauto.AddFlag("点胶回零完成", false); formauto.AddFlag("AA回零完成", false); formauto.AddFlag("转盘回零完成", false); // formauto.AddFlag("系统空跑", sys.g_AppMode == AppMode.AirRun); }
public static void InitCam(Form_Auto formauto) { List <CameraBase> cameraBases = new List <CameraBase>(); //默认添加的是海康相机 如果换相机 填上对应的类 CameraMgr.GetInstance().EnumDevices(new HikVisionCamera(""), out cameraBases); foreach (var temp in cameraBases) { temp.Open(); temp.SetExposureTime(1000); temp.SetGain(1); temp.RegisterCallBack(); temp.SetAcquisitionMode(); temp.StartGrab(); } }
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(); } }
private void Form1_Load(object sender, EventArgs e) { #region 变量定义 run = DateTime.Now; #endregion #region 初始化参数配置 EvenAddPara(); //读工站配置 ConfigToolMgr.GetInstance().ReadStationConfig(); //读取用户设置 ConfigToolMgr.GetInstance().ReadUserConfig(); ConfigToolMgr.GetInstance().ReadUserParam(); //读取产品文件 ConfigToolMgr.GetInstance().ReadProductDir_Name(); //添加工位 UserConfig.AddStation(); //读取工站位置坐标 Dictionary <string, PointInfo> dicPonit = new Dictionary <string, PointInfo>(); foreach (var tem in StationMgr.GetInstance().GetAllStationName()) { ConfigToolMgr.GetInstance().ReadPoint(tem, out dicPonit); StationMgr.GetInstance().GetStation(tem).SetStationPointDic(dicPonit); } GlobalVariable.g_StationState = StationState.StationStateStop; UserTest.algType = ParamSetMgr.GetInstance().GetStringParam("算法类型"); #endregion #region 初始化硬件 EvenAddHardware(); ConfigToolMgr.GetInstance().ReadEthConfig(); ConfigToolMgr.GetInstance().ReadComConfig(); //读硬件配置 并创建IO,Motion 卡类 对象 并以默认参数配置卡 ConfigToolMgr.GetInstance().ReadMotionCardConfig(); ConfigToolMgr.GetInstance().ReadIoCardConfig(); ConfigToolMgr.GetInstance().ReadIoInputConfig(); ConfigToolMgr.GetInstance().ReadIoOutputConfig(); //读运动配置 ConfigToolMgr.GetInstance().ReadMoveParamConfig(); ConfigToolMgr.GetInstance().ReadHomeParamConfig(); //初始化IO Motion if (!IOMgr.GetInstace().initAllIoCard()) { MessageBox.Show("初始化IO卡失败"); return; } if (!MotionMgr.GetInstace().OpenAllCard()) { MessageBox.Show("初始化控制卡失败"); return; } #endregion #region 初始化界面加载 Ver.Text = "软件版本:" + System.IO.File.GetLastWriteTime(this.GetType().Assembly.Location).ToString("1.yyyy.MMdd.HHmm"); //界面加载初始化 this.WindowState = FormWindowState.Maximized; int BtnHeight = button_stop.Height + 10; panel_window.Location = new System.Drawing.Point(0, BtnHeight); panel_window.Size = new Size(this.Width - 30, this.Height - BtnHeight - 1); Form_Auto autoform = new Form_Auto(); m_dicAllWindows.Add(button_Home, autoform); m_dicAllWindows.Add(button_Set, new Form_Set()); m_dicAllWindows.Add(button_vision, new Form_VisionDebug()); m_dicAllWindows.Add(button_Param, new Form_ParamSet()); m_dicAllWindows.Add(button_UserSMgr, new UserManger()); m_currentForm = autoform; autoform.TopLevel = false; autoform.Dock = DockStyle.Fill; autoform.Parent = this.panel_window; autoform.Show(); //初始化登入权限 User user = new User(); int index = sys.g_listUser.FindIndex(t => t._userName == "admin"); if (index == -1) { user = new User() { _userName = "******", _userPassWord = "******", _userRight = UserRight.超级管理员 }; sys.g_listUser.Add(user); } index = sys.g_listUser.FindIndex(t => t._userName == "user"); if (index == -1) { user = new User() { _userName = "******", _userPassWord = "******", _userRight = UserRight.客户操作员 }; sys.g_listUser.Add(user); } index = sys.g_listUser.FindIndex(t => t._userName == "debug"); if (index == -1) { user = new User() { _userName = "******", _userPassWord = "******", _userRight = UserRight.调试工程师 }; sys.g_listUser.Add(user); } index = sys.g_listUser.FindIndex(t => t._userName == "engineer"); if (index == -1) { user = new User() { _userName = "******", _userPassWord = "******", _userRight = UserRight.软件工程师 }; sys.g_listUser.Add(user); } #endregion }
private void button_Reset_Click(object sender, EventArgs e) { UserTest.RunLog.Write($"点击【复位】", LogType.Info, PathHelper.LogPathManual); button_Reset.BackColor = Color.Green; Form_Auto.EvenReset(); }
private void Form1_Load(object sender, EventArgs e) { //读取网口串口配置 ParamSetMgr.GetInstance().SetBoolParam("启用安全门", true); ParamSetMgr.GetInstance().SetBoolParam("启用安全光栅", true); ConfigToolMgr.GetInstance().ReadEthConfig(); ConfigToolMgr.GetInstance().ReadComConfig(); //读硬件配置 并创建IO,Motion 卡类 对象 并以默认参数配置卡 ConfigToolMgr.GetInstance().ReadMotionCardConfig(); ConfigToolMgr.GetInstance().ReadIoCardConfig(); ConfigToolMgr.GetInstance().ReadIoInputConfig(); ConfigToolMgr.GetInstance().ReadIoOutputConfig(); //读工站配置 ConfigToolMgr.GetInstance().ReadStationConfig(); //读取用户设置 ConfigToolMgr.GetInstance().ReadUserConfig(); //读取产品文件 ConfigToolMgr.GetInstance().ReadProductDir_Name(); //读运动配置 ConfigToolMgr.GetInstance().ReadMoveParamConfig(); ConfigToolMgr.GetInstance().ReadHomeParamConfig(); ConfigToolMgr.GetInstance().ReadUserParam(); //视觉x文件路径初始化 VisionMgr.GetInstance().CurrentVisionProcessDir = ParamSetMgr.GetInstance().CurrentWorkDir + "\\" + ParamSetMgr.GetInstance().CurrentProductFile + "\\" + @"Config\Vision\"; string str = VisionMgr.GetInstance().CurrentVisionProcessDir; //初始化 Motion IO MotionMgr.GetInstace().OpenAllCard(); IOMgr.GetInstace().initAllIoCard(); //AA参数加载 UserConfig.BandEventOnForm1(this); this.WindowState = FormWindowState.Maximized; int BtnHeight = button_stop.Height + 10; panel_window.Location = new System.Drawing.Point(0, BtnHeight); panel_window.Size = new Size(this.Width - 30, this.Height - BtnHeight - 1); Form_Auto autoform = new Form_Auto(); m_dicAllWindows.Add(button_Home, autoform); m_dicAllWindows.Add(button_Set, new Form_Set()); m_dicAllWindows.Add(button_vision, new Form_VisionDebug()); m_dicAllWindows.Add(button_Param, new Form_ParamSet()); m_dicAllWindows.Add(button_UserSMgr, new UserManger()); m_currentForm = autoform; UserConfig.AddStation(); //读取工站位置坐标 Dictionary <string, PointInfo> dicPonit = new Dictionary <string, PointInfo>(); foreach (var tem in StationMgr.GetInstance().GetAllStationName()) { ConfigToolMgr.GetInstance().ReadPoint(tem, out dicPonit); StationMgr.GetInstance().GetStation(tem).SetStationPointDic(dicPonit); } // 注册安全函数 UserConfig.AddIoSafeOperate(); UserConfig.AddAxisSafeOperate(); //初始化 工站状态 GlobalVariable.g_StationState = StationState.StationStateStop; IOMgr.GetInstace().m_deltgateSystemSingl += ProcessSysIo; MotionMgr.GetInstace().m_eventAxisSingl += ProcessSysIo; autoform.TopLevel = false; autoform.Dock = DockStyle.Fill; autoform.Parent = this.panel_window; autoform.Show(); //初始化权限 sys.g_eventRightChanged += ChangedUserRight; User user = new User(); int index = sys.g_listUser.FindIndex(t => t._userName == "admin"); if (index == -1) { user = new User() { _userName = "******", _userPassWord = "******", _userRight = UserRight.超级管理员 }; sys.g_listUser.Add(user); } index = sys.g_listUser.FindIndex(t => t._userName == "user"); if (index == -1) { user = new User() { _userName = "******", _userPassWord = "******", _userRight = UserRight.客户操作员 }; sys.g_listUser.Add(user); } index = sys.g_listUser.FindIndex(t => t._userName == "debug"); if (index == -1) { user = new User() { _userName = "******", _userPassWord = "******", _userRight = UserRight.调试工程师 }; sys.g_listUser.Add(user); } index = sys.g_listUser.FindIndex(t => t._userName == "engineer"); if (index == -1) { user = new User() { _userName = "******", _userPassWord = "******", _userRight = UserRight.软件工程师 }; sys.g_listUser.Add(user); } GlobalVariable.g_eventStationStateChanged += StationStateChangedHandler; }
/// <summary> /// 工站绑定主界面视觉窗口 /// </summary> /// <param name="formauto"></param> public static void BandStationWithVisionCtr(Form_Auto formauto) { }
/// <summary> /// 初始化主界面Haclon窗口 /// </summary> /// <param name="formauto"></param> public static void InitHalconWindow(Form_Auto formauto) { }
public StationStep StepCheckIpos(bool bmanual = false) { StationStep step = StationStep.Step_CheckIpos; bool dEnableA = ParamSetMgr.GetInstance().GetBoolParam("屏蔽A工位"); bool dEnableB = ParamSetMgr.GetInstance().GetBoolParam("屏蔽B工位"); bool bA_UnLoadLoadStart = TableData.GetInstance().GetStationStartCmd("A_UnLoadLoad") && !dEnableA; bool bB_UnLoadLoadStart = TableData.GetInstance().GetStationStartCmd("B_UnLoadLoad") && !dEnableB; if (bA_UnLoadLoadStart || bB_UnLoadLoadStart || ParamSetMgr.GetInstance().GetBoolParam("重新上料")) { ParamSetMgr.GetInstance().SetBoolParam("重新上料", false); TableData.GetInstance().ResetStartCmd("A_UnLoadLoad"); TableData.GetInstance().ResetStartCmd("B_UnLoadLoad"); strStationName = TableData.GetInstance().GetStationName(); if (strStationName == "A_Pick" || strStationName == "B_Pick") { TableData.GetInstance().SetStationResult("A_UnLoadLoad", true); TableData.GetInstance().SetStationResult("B_UnLoadLoad", true); return(step); } SocketNumOfUnloadLoad = TableData.GetInstance().GetSocketNum(1, 0.5) - 1; if (SocketNumOfUnloadLoad == 0 && dEnableA) { TableData.GetInstance().SetStationResult("A_UnLoadLoad", true); TableData.GetInstance().SetStationResult("B_UnLoadLoad", true); return(step); } if (SocketNumOfUnloadLoad == 1 && dEnableB) { TableData.GetInstance().SetStationResult("A_UnLoadLoad", true); TableData.GetInstance().SetStationResult("B_UnLoadLoad", true); return(step); } IOMgr.GetInstace().WriteIoBit("NG指示红灯", false); IOMgr.GetInstace().WriteIoBit("OK指示绿灯", true); Info("开始上下料,安全光栅开始屏蔽"); ParamSetMgr.GetInstance().SetBoolParam("启用安全光栅", false); ParamSetMgr.GetInstance().SetBoolParam("可以上下料", true); SocketState state = SocketMgr.GetInstance().socketArr[SocketNumOfUnloadLoad].socketState; if (state == SocketState.HaveOK || state == SocketState.HaveNG) { string lightColor = state == SocketState.HaveOK ? "OK指示绿灯" : "NG指示红灯"; string fp = state == SocketState.HaveOK ? "P" : "F"; UserTest.TestResultAB[SocketNumOfUnloadLoad].SocketerNumber = SocketNumOfUnloadLoad == 0 ? "A" : "B"; #region 计算CT赋值 if (UserTest.ProductCount.CountCTAll == 0) { UserTest.ProductCount.StarCTTime = DateTime.Now; UserTest.ProductCount.EndCTTime = DateTime.Now; UserTest.ProductCount.CountCTTime = 0; } else { UserTest.ProductCount.CountCTTime += (DateTime.Now - UserTest.ProductCount.EndCTTime).TotalSeconds; UserTest.ProductCount.EndCTTime = DateTime.Now; if ((DateTime.Now - UserTest.ProductCount.StarCTTime).TotalMinutes > ParamSetMgr.GetInstance().GetDoubleParam("UPH计算时长")) { if (UserTest.ProductCount.CountCTAll > ParamSetMgr.GetInstance().GetDoubleParam("UPH计算时长范围内最少个数")) { UserTest.ProductCount.UPH = (UserTest.ProductCount.CountCTAll) * 3600 / UserTest.ProductCount.CountCTTime; } //清除 UserTest.ProductCount.CountCTAll = -1; } } UserTest.ProductCount.CountCTAll++; if (SocketNumOfUnloadLoad == 0) { if (fp == "P") { UserTest.ProductCount.OKA++; } else { UserTest.ProductCount.NGA++; if (!UserTest.FailResultAB.Play) { UserTest.ProductCount.PlayFailA++; UserTest.FailResultAB.OC = true; UserTest.FailResultAB.SFR = true; UserTest.FailResultAB.Tilt = true; } if (!UserTest.FailResultAB.OC) { UserTest.ProductCount.OCFailA++; UserTest.FailResultAB.Play = true; UserTest.FailResultAB.SFR = true; UserTest.FailResultAB.Tilt = true; } if (!UserTest.FailResultAB.Tilt) { UserTest.ProductCount.TiltFailA++; UserTest.FailResultAB.OC = true; UserTest.FailResultAB.SFR = true; UserTest.FailResultAB.Play = true; } if (!UserTest.FailResultAB.SFR) { UserTest.ProductCount.SFRFailA++; UserTest.FailResultAB.OC = true; UserTest.FailResultAB.Play = true; UserTest.FailResultAB.Tilt = true; } if (UserTest.FailResultAB.Play && UserTest.FailResultAB.OC && UserTest.FailResultAB.Tilt && UserTest.FailResultAB.SFR) { UserTest.ProductCount.OtherFailA++; } } } else { if (fp == "P") { UserTest.ProductCount.OKB++; } else { UserTest.ProductCount.NGB++; if (!UserTest.FailResultAB.Play) { UserTest.ProductCount.PlayFailB++; UserTest.FailResultAB.OC = true; UserTest.FailResultAB.SFR = true; UserTest.FailResultAB.Tilt = true; } if (!UserTest.FailResultAB.OC) { UserTest.ProductCount.OCFailB++; UserTest.FailResultAB.Play = true; UserTest.FailResultAB.SFR = true; UserTest.FailResultAB.Tilt = true; } if (!UserTest.FailResultAB.Tilt) { UserTest.ProductCount.TiltFailB++; UserTest.FailResultAB.OC = true; UserTest.FailResultAB.SFR = true; UserTest.FailResultAB.Play = true; } if (!UserTest.FailResultAB.SFR) { UserTest.ProductCount.SFRFailB++; UserTest.FailResultAB.OC = true; UserTest.FailResultAB.Play = true; UserTest.FailResultAB.Tilt = true; } if (UserTest.FailResultAB.Play && UserTest.FailResultAB.OC && UserTest.FailResultAB.Tilt && UserTest.FailResultAB.SFR) { UserTest.ProductCount.OtherFailB++; } } } #endregion Form_Auto.EvenShowCT(SocketNumOfUnloadLoad + 1); UserTest.TestResultAB[SocketNumOfUnloadLoad].Result = fp == "P" ? true : false; if (fp == "P") { UserTest.TestResultAB[SocketNumOfUnloadLoad].FailStep = "Pass"; } UserTest.TestResultAB[SocketNumOfUnloadLoad].EndTime = DateTime.Now; UserTest.TestResultAB[SocketNumOfUnloadLoad].TestTime = (UserTest.TestResultAB[SocketNumOfUnloadLoad].EndTime - UserTest.TestResultAB[SocketNumOfUnloadLoad].StarTime).TotalSeconds; string errCsv = CSVHelper.Instance.SaveToCSVPath(PathHelper.TestResultCsvPath, UserTest.TestResultAB[SocketNumOfUnloadLoad]); IOMgr.GetInstace().WriteIoBit("OK指示绿灯", false); IOMgr.GetInstace().WriteIoBit("NG指示红灯", false); IOMgr.GetInstace().WriteIoBit(lightColor, true); Info($"保存OK结果:cvs={errCsv}."); if (SocketNumOfUnloadLoad == 0) { IOMgr.GetInstace().WriteIoBit($"ALens升降气缸", true); } else { IOMgr.GetInstace().WriteIoBit($"BLens升降气缸", true); } //PlaceToSocket(SocketNumOfUnloadLoad); UserTest.CTTestAB[SocketNumOfUnloadLoad].Star = false; UserTest.CTTestAB[SocketNumOfUnloadLoad].End = false; UserTest.CTTestAB[SocketNumOfUnloadLoad].Show = true; } //同意下料接口 SysFunConfig.LodUnloadPatten.ULoad(SocketNumOfUnloadLoad == 0? "A":"B", bmanual); retry_check_Start: ParamSetMgr.GetInstance().SetBoolParam("启用安全光栅", false); WaranResult waranResult = doWhileCheckStartSignal.doSomething(this, doWhileCheckStartSignal, false, new object[] { this }); if (waranResult == WaranResult.Retry) { goto retry_check_Start; } IOMgr.GetInstace().WriteIoBit($"相机光源", true); IOMgr.GetInstace().WriteIoBit("启动按钮灯", false); IOMgr.GetInstace().WriteIoBit("OK指示绿灯", false); IOMgr.GetInstace().WriteIoBit("NG指示红灯", false); if (!IOMgr.GetInstace().ReadIoInBit($"点胶液位感应") && ParamSetMgr.GetInstance().GetBoolParam("点胶液位检测")) { MessageBox.Show($"点胶液位感应有信号,胶水已经用完!请更换,或者屏蔽[点胶液位检测]。", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly); goto retry_check_Start; } Form_Auto.EvenGetSN(SocketNumOfUnloadLoad); if (UserTest.TestResultAB[SocketNumOfUnloadLoad].SerialNumber == "NOSN") { MessageBox.Show("请输入SN 或者屏蔽SN,重新启动", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly); goto retry_check_Start; } if (SocketNumOfUnloadLoad == 0) { UserTest.ProductCount.CompeteA++; } else { UserTest.ProductCount.CompeteB++; } ParamSetMgr.GetInstance().SetBoolParam("启用安全光栅", true); ParamSetMgr.GetInstance().SetBoolParam("可以上下料", false); ParamSetMgr.GetInstance().SetBoolParam("AA完成", false); ParamSetMgr.GetInstance().SetBoolParam("点胶完成", false); ParamSetMgr.GetInstance().SetBoolParam("启动AA", false); ParamSetMgr.GetInstance().SetBoolParam("启动点胶", false); Info("开始上下料,安全光栅开始启用"); ParamSetMgr.GetInstance().SetBoolParam("启用安全光栅", true); UserTest.CTTestAB[SocketNumOfUnloadLoad].Star = true; UserTest.CTTestAB[SocketNumOfUnloadLoad].End = false; UserTest.CTTestAB[SocketNumOfUnloadLoad].Show = false; step = StationStep.Step_GoSnap; } return(step); }
public static void FlushDatatoAutoScreen(Form_Auto formauto) { }
public static void BandStationWithCtrl(Form_Auto formauto) { UserConfig.bandStationAndVisionCtrl("点胶站", formauto.visionControl1, 1); }
/// <summary> /// 增加自动界面 标志位 /// </summary> /// <param name="formauto"></param> public static void AddFlag(Form_Auto formauto) { formauto.AddFlag("系统空跑", sys.g_AppMode == AppMode.AirRun); }