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();
        }
Example #2
0
        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();
     }
 }
Example #4
0
        public override void AlarmDeal()
        {
            WaranResult waranResult;
            string      alarmmsg = "";

            if (lineObj != null)
            {
                alarmmsg = $"{lineObj.LineName},流水线状态{lineObj.LineSegState},离开检查失败,请检查该流水线的顶升气缸 阻挡气缸的感应器等";
            }
            waranResult = AlarmMgr.GetIntance().WarnWithDlg(strAlarmmsg, null, new string[] { "重试" });
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
 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();
 }
Example #8
0
        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);
        }
Example #9
0
        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);
        }
Example #10
0
 /// <summary>
 /// 初始其他硬件状态硬件状态
 /// </summary>
 public static void InitHardWare()
 {
     try
     {
         ResetIO();
         AlarmMgr.GetIntance().StopAlarmBeet();
         string err = "";
     }
     catch (Exception e)
     {
         return;
     }
 }
Example #11
0
        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);
 }
Example #13
0
 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();
 }
Example #14
0
 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();
 }
Example #15
0
        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));
        }
Example #17
0
 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;
                }
            }
        }
Example #22
0
 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;
                }
            }
        }
Example #24
0
        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;
                    }
                }
            }
        }