public void UpdateHomebtnMethod() { int count = 0; do { count = 0; foreach (Axis axis in AxisGroup) { if (Motion2610Control.GetAxisIsDoWell(axis)) { count++; Thread.Sleep(100); } } } while (count != 4); btnInitialization.Enabled = true; }
private void timer1_Tick(object sender, EventArgs e) { long pos, pos2; int checkStauts; string str_DisplayPos; pos = Dmc2610.d2610_get_position(0);//读取指定轴的当前位置 str_DisplayPos = "X=" + Convert.ToString(pos) + " " + (!Convert.ToBoolean(Dmc2610.d2610_check_done((ushort)AxisID.XAxis)) ? "...Run..." : "...Stop..."); pos = Dmc2610.d2610_get_position(1); str_DisplayPos = str_DisplayPos + " Y=" + Convert.ToString(pos) + " " + (!Convert.ToBoolean(Dmc2610.d2610_check_done((ushort)AxisID.YAxis)) ? "...Run..." : "...Stop..."); str_DisplayPos += "\n"; pos2 = Dmc2610.d2610_get_position(2); str_DisplayPos = str_DisplayPos + "Z=" + Convert.ToString(pos2) + " " + (!Convert.ToBoolean(Dmc2610.d2610_check_done((ushort)AxisID.ZAxis)) ? "...Run..." : "...Stop..."); pos2 = Dmc2610.d2610_get_position(3); str_DisplayPos = str_DisplayPos + " U=" + Convert.ToString(pos2) + " " + (!Convert.ToBoolean(Dmc2610.d2610_check_done((ushort)AxisID.UAxis)) ? "...Run..." : "...Stop..."); //str_DisplayPos += "\n" + ((Motion2610Control.GetAxisIsORGON(XAxis)) ? "X ORG IS ON" : "X ORG IS OFF"); str_DisplayPos += "\n" + ((Motion2610Control.GetAxisIsORGON(XAxis)) ? "X ORG IS ON" : "X ORG IS OFF") + " " + ((Motion2610Control.GetAxisIsORGON(YAxis)) ? "Y ORG IS ON" : "Y ORG IS OFF") + " " + ((Motion2610Control.GetAxisIsORGON(CAxis)) ? "C ORG IS ON" : "C ORG IS OFF") + " " + ((Motion2610Control.GetAxisIsORGON(LAxis)) ? "L ORG IS ON" : "L ORG IS OFF"); str_DisplayPos += "\n" + ((Motion2610Control.GetAxisIsNELON(XAxis)) ? "X EL- IS ON" : "X EL- IS OFF") + " " + ((Motion2610Control.GetAxisIsNELON(YAxis)) ? "Y EL- IS ON" : "Y EL- IS OFF") + " " + ((Motion2610Control.GetAxisIsNELON(CAxis)) ? "C EL- IS ON" : "C EL- IS OFF") + " " + ((Motion2610Control.GetAxisIsNELON(LAxis)) ? "L EL- IS ON" : "L EL- IS OFF"); str_DisplayPos += "\n" + ((Motion2610Control.GetAxisIsPELON(XAxis)) ? "X EL+ IS ON" : "X EL+ IS OFF") + " " + ((Motion2610Control.GetAxisIsPELON(YAxis)) ? "Y EL+ IS ON" : "Y EL+ IS OFF") + " " + ((Motion2610Control.GetAxisIsPELON(CAxis)) ? "C EL+ IS ON" : "C EL+ IS OFF") + " " + ((Motion2610Control.GetAxisIsPELON(LAxis)) ? "L EL+ IS ON" : "L EL+ IS OFF"); str_DisplayPos += "\n\n" + ((Motion2610Control.GetAxisIsINPON(XAxis)) ? "X INP IS ON" : "X INP IS OFF") + " " + ((Motion2610Control.GetAxisIsINPON(YAxis)) ? "Y INP IS ON" : "Y INP IS OFF"); Label_POSITION.Text = str_DisplayPos;//显示位置信 StringBuilder axisStautsDetail = new StringBuilder(); foreach (Axis axis in AxisGroup) { if (!Motion2610Control.AxisQueryStatus(axis)) { while (axis.AxisStatusStack.Count > 0) { axisStautsDetail.Append(axis.AxisStatusStack.Pop()); } } } if (axisStautsDetail.Length <= 0) { lbAxisStatus.Text = "Axis Status : \n" + "Every Axis is OK!"; } else { lbAxisStatus.Text = "Axis Status : \n" + axisStautsDetail; } StringBuilder sb2 = new StringBuilder(); for (int i = 0; i < 2; i++) { if (Motion2610Control.ReadInputKey((ushort)(i + 1)) != InputiskeyDown[i]) { InputiskeyDown[i] = Motion2610Control.ReadInputKey((ushort)(i + 1)); if (InputiskeyDown[i] != InputinitStatus[i]) { inputstartTime[i] = DateTime.Now; string str1 = "input " + i.ToString() + ": StartTime= " + inputstartTime[i].ToString(); sb2.AppendLine(str1); } else { InputEndTime[i] = DateTime.Now; string str1 = "input " + i.ToString() + ": EndTime = " + InputEndTime[i].ToString(); sb2.AppendLine(str1); } } } this.tbinputsig.Text += sb2.ToString(); }
private void XYMotion() { updateBtn = UpdateRunbtnMethod; uint count = 0; bool isCompleted = true; float xCoordinate, yCoordinate; #region 循环所有孔类型的操作 foreach (DrillTAPE.HoleShapeCollections holeShape in drill1.HoleList) { if (isCompleted) { for (int i = 0; i < holeShape.XYCoordinateGroup.GetCoordinateCount(); i++) { xCoordinate = holeShape.XYCoordinateGroup.Pointfs[i].X; yCoordinate = holeShape.XYCoordinateGroup.Pointfs[i].Y; picBox1.Image = DrawCurrentHitHole1(xCoordinate, yCoordinate); if (!Motion2610Control.XYPMoveAbsolutUseTMode(XAxis, YAxis, xCoordinate, yCoordinate)) { isCompleted = false; break; } else { Thread.Sleep(50); count++; } while ((!Motion2610Control.GetAxisIsDoWell(XAxis)) && (!Motion2610Control.GetAxisIsDoWell(YAxis))) { } } } else { MessageBox.Show("Some wrong has Happend!!!"); RunedorRunAbort = true; BeginInvoke(updateBtn); return; } } #endregion #region 循环所有Slot类型的操作 //foreach (DrillTAPE.SlotShapeCollections slotShape in drill1.SlotList) //{ // if (isCompleted) // { // Stack<PointF> singleSlotSequenceStack; // for (int i = 0; i < slotShape.Count; i++) // { // xCoordinate = slotShape.XYCoordinateGroup.Pointfs[i].X; // yCoordinate = slotShape.XYCoordinateGroup.Pointfs[i].Y; // picBox1.Image = DrawCurrentHitHole1(xCoordinate, yCoordinate); // if (!Motion2610Control.XYPMoveAbsolutUseTMode(XAxis, YAxis, xCoordinate, yCoordinate)) // { // isCompleted = false; // break; // } // else // { // Thread.Sleep(50); // count++; // } // while ((!Motion2610Control.GetAxisIsDoWell(XAxis)) && (!Motion2610Control.GetAxisIsDoWell(YAxis))) // { // } // } // } // else // { // MessageBox.Show("Some wrong has Happend!!!"); // RunedorRunAbort = true; // BeginInvoke(updateBtn); // return; // } //} #endregion RunedorRunAbort = true; BeginInvoke(updateBtn); }
private void AxiseHomeUseThread(Axis axis) { Motion2610Control.HomeMove(axis); BeginInvoke(updateBtn); }
private void btnLoadAxisPara_Click(object sender, EventArgs e) { // DMC2610卡的函数调用 nCard = Dmc2610.d2610_board_init(); //'为控制卡分配系统资源,并初始化控制卡。 if (nCard <= 0) //DMC1000控制卡初始化 { MessageBox.Show("未找到DMC2610控制卡!", "警告"); return;//退出当前程序 } string connectionString = @"Data Source=.\AOI;Initial Catalog=aoi5sys;Integrated Security=True"; SqlConnection connection = new SqlConnection(connectionString); //string sql=@"SELECT * FROM AXIS_PARAM WHERE NAME='#1HOST'"; string sql = @"SELECT [NAME] ,[AXIS] ,[AXIS_ID] ,[PULSE_MODE] ,[MAX_DIST] ,[ORG_POSITION] ,[RESET_SPEED] ,[START_SPEED] ,[MAX_SPEED] ,[ADD_SPEED] ,[ADD_MODE] ,[PULSE_PER_MM] FROM [aoi5sys].[dbo].[AXIS_PARAM] WHERE NAME='#1HOST'"; try { connection.Open(); SqlCommand cmd = new SqlCommand(sql, connection); SqlDataReader dataReader = cmd.ExecuteReader(); AxisGroup = new List <Axis>(); while (dataReader.Read()) { string tempstr = dataReader.GetValue(1).ToString(); AxisPulseOutMode PoutMode = dataReader.GetInt32(3) == 0 ? AxisPulseOutMode.PM_PLDL : AxisPulseOutMode.PM_PHDHPHDH; double pulseOfMilMeter = Convert.ToDouble(dataReader.GetValue(11).ToString()); long maxRouterDistance = Convert.ToInt64(dataReader.GetValue(4)); long logicOrgPosition = Convert.ToInt64(dataReader.GetValue(5)); AxisINPSIG axisInpsig = AxisINPSIG.Enable; double ResetVelocity = Convert.ToDouble(dataReader.GetValue(6)); double startVelocity = Convert.ToDouble(dataReader.GetValue(7)); double maxVelocity = Convert.ToDouble(dataReader.GetValue(8)); double accVelocity = Convert.ToDouble(dataReader.GetValue(9)); double decVelocity = Convert.ToDouble(dataReader.GetValue(9)); float scale = (float)0.75; if (tempstr.Contains("X_")) { this.XAxis = new Axis(AxisID.XAxis, PoutMode, pulseOfMilMeter, maxRouterDistance, logicOrgPosition, axisInpsig); XAxis.AxisSetResetMoveParameters(ResetVelocity / 2, ResetVelocity, ResetVelocity / 2, ResetVelocity / 2); XAxis.AxisSetTMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity); XAxis.AxisSetSPMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity, scale); XAxis.AxisSetSTMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity, scale); // XAxis.AxisSetVectorMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity, (float)0.6); AxisGroup.Add(XAxis); } if (tempstr.Contains("Y_")) { this.YAxis = new Axis(AxisID.YAxis, PoutMode, pulseOfMilMeter, maxRouterDistance, logicOrgPosition, axisInpsig); YAxis.AxisSetResetMoveParameters(ResetVelocity / 2, ResetVelocity, ResetVelocity / 2, ResetVelocity / 2); YAxis.AxisSetTMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity); YAxis.AxisSetSPMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity, scale); YAxis.AxisSetSTMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity, scale); // YAxis.AxisSetVectorMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity, (float)0.6); AxisGroup.Add(YAxis); } if (tempstr.Contains("C_")) { this.CAxis = new Axis(AxisID.ZAxis, PoutMode, pulseOfMilMeter, maxRouterDistance, logicOrgPosition, axisInpsig); CAxis.AxisSetResetMoveParameters(ResetVelocity / 2, ResetVelocity, ResetVelocity / 2, ResetVelocity / 2); CAxis.AxisSetTMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity); CAxis.AxisSetSPMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity, scale); CAxis.AxisSetSTMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity, scale); //CAxis.AxisSetVectorMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity, (float)0.6); AxisGroup.Add(CAxis); } if (tempstr.Contains("L_")) { this.LAxis = new Axis(AxisID.UAxis, PoutMode, pulseOfMilMeter, maxRouterDistance, logicOrgPosition, axisInpsig); LAxis.AxisSetResetMoveParameters(ResetVelocity / 2, ResetVelocity, ResetVelocity / 2, ResetVelocity / 2); LAxis.AxisSetTMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity); LAxis.AxisSetSPMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity, scale); LAxis.AxisSetSTMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity, scale); // LAxis.AxisSetVectorMoveParameters(startVelocity, maxVelocity, accVelocity, decVelocity, (float)0.6); AxisGroup.Add(LAxis); } } timer1.Enabled = true; } catch (DataException dataException) { MessageBox.Show(dataException.ToString()); } finally { connection.Close(); this.btnLoadAxisPara.Enabled = false; } for (int i = 0; i < 2; i++) { InputinitStatus[i] = Motion2610Control.ReadInputKey((ushort)(i + 1)); InputiskeyDown[i] = InputinitStatus[i]; } }