private void btnStart_Click(object sender, EventArgs e) { if (cbxMotionTrail.SelectedItem == null) { MessageBox.Show("请选择轨迹"); return; } ushort _CardID = 0; ushort AxisX = 0; ushort AxisY = 1; ushort crd = 0; //设置脉冲当量 LTDMC.dmc_set_equiv(0, AxisX, FormMain.PulseEquiv); LTDMC.dmc_set_equiv(0, AxisY, FormMain.PulseEquiv); // 画图 ushort axisnum = 2; ushort[] axises = new ushort[] { AxisX, AxisY }; LTDMC.dmc_conti_open_list(0, crd, axisnum, axises); //设置插补速度 LTDMC.dmc_set_vector_profile_unit(0, crd, 0, vectorChabu, 0.1, 0.1, 0); // LTDMC.dmc_conti_set_blend(0, crd, 1); if (cbxMotionTrail.SelectedIndex == 0) { double[] A = new double[] { 0, 0 }; double[] B = new double[] { 200, 0 }; double[] C = new double[] { 400, -200 }; double[] D = new double[] { 400, -400 }; LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, B, 1, 0); //直线插补,相对模式 LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises, C, new double[] { 200, -200 }, 0, 0, 1, 0); //XY平面圆弧插补,顺时针,相对坐标模式。 此函数是基于圆心圆弧扩展的螺旋线插补运动(可作两轴圆弧插补) //终点坐标 圆心坐标 LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, D, 1, 0); //直线插补,相对模式 LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, A, 1, 0); //直线插补,相对模式 LTDMC.dmc_conti_start_list(_CardID, crd); Thread.Sleep(1000); LTDMC.dmc_conti_close_list(_CardID, crd); } if (cbxMotionTrail.SelectedIndex == 1) { double[] A = new double[] { 0, 0 }; double[] B = new double[] { 200, 0 }; double[] C = new double[] { 400, -200 }; double[] D = new double[] { 400, -400 }; LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, new double[] { 200, 0 }, 1, 0); //直线插补,相对模式 LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises, new double[] { 400, -200 }, new double[] { 200, -200 }, 0, 0, 1, 0); //XY平面圆弧插补,顺时针,相对坐标模式。 此函数是基于圆心圆弧扩展的螺旋线插补运动(可作两轴圆弧插补) //终点坐标 圆心坐标 LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, new double[] { 400, -400 }, 1, 0); //直线插补,相对模式 LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, new double[] { 0, 0 }, 1, 0); //直线插补,相对模式 LTDMC.dmc_conti_start_list(_CardID, crd); Thread.Sleep(1000); LTDMC.dmc_conti_close_list(_CardID, crd); } if (cbxMotionTrail.SelectedIndex == 2) { } if (cbxMotionTrail.SelectedIndex == 3) { } }
private void btnStart_Click(object sender, EventArgs e) { if (cbxMotionTrail.SelectedItem == null) { MessageBox.Show("请选择轨迹"); return; } ushort _CardID = 0; ushort AxisX = 0; ushort AxisY = 1; ushort crd = 0; //设置脉冲当量 LTDMC.dmc_set_equiv(0, AxisX, FormMain.PulseEquiv); LTDMC.dmc_set_equiv(0, AxisY, FormMain.PulseEquiv); // 画图 ushort axisnum = 2; ushort[] axises = new ushort[] { AxisX, AxisY }; LTDMC.dmc_conti_open_list(0, crd, axisnum, axises); // LTDMC.dmc_conti_set_blend(0, crd, 1); if (cbxMotionTrail.SelectedIndex == 0) { double[] A = new double[] { 0, 0 }; double[] B = new double[] { 200, 0 }; double[] C = new double[] { 400, -200 }; double[] D = new double[] { 400, -400 }; //设置插补速度 SetLineVecter(); LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, B, 1, 0); //直线插补,绝对模式 //设置插补速度 SetArcVecter(); LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises, C, new double[] { 200, -200 }, 0, 0, 1, 0); //XY平面圆弧插补,顺时针,相对坐标模式。 此函数是基于圆心圆弧扩展的螺旋线插补运动(可作两轴圆弧插补) //终点坐标 圆心坐标 //设置插补速度 SetLineVecter(); LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, D, 1, 0); //直线插补,绝对模式 LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, A, 1, 0); //直线插补,绝对模式 LTDMC.dmc_conti_start_list(_CardID, crd); Thread.Sleep(1000); LTDMC.dmc_conti_close_list(_CardID, crd); } if (cbxMotionTrail.SelectedIndex == 1) { //LTDMC.dmc_pmove_unit(0, 0, 100, 1);//定长运动 //LTDMC.dmc_check_done(0, 0); double[] A = new double[] { 100, 0 }; double[] B = new double[] { 300, 0 }; double[] C = new double[] { 300, -200 }; double[] D = new double[] { 100, -200 }; SetLineVecter(); LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, B, 1, 0); //直线插补,绝对模式 SetArcVecter(); LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises, C, new double[] { 300, -100 }, 0, 0, 1, 0); //XY平面圆弧插补,顺时针,绝对模式模式。 此函数是基于圆心圆弧扩展的螺旋线插补运动(可作两轴圆弧插补) //终点坐标 圆心坐标 SetLineVecter(); LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, D, 1, 0); //直线插补,绝对模式 SetArcVecter(); LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises, A, new double[] { 100, -100 }, 0, 0, 1, 0); LTDMC.dmc_conti_start_list(_CardID, crd); Thread.Sleep(1000); LTDMC.dmc_conti_close_list(_CardID, crd); } if (cbxMotionTrail.SelectedIndex == 2) {//直线 直线 圆弧 直线 double[] A = new double[] { 0, 0 }; double[] B = new double[] { 200, 0 }; double[] C = new double[] { 200, -200 }; double[] D = new double[] { 0, -200 }; SetLineVecter(); LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, B, 1, 0); //直线插补 LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, C, 1, 0); //直线插补 SetArcVecter(); LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises, D, new double[] { 100, -200 }, 0, 0, 1, 0); //XY平面圆弧插补,顺时针,相对坐标模式。 此函数是基于圆心圆弧扩展的螺旋线插补运动(可作两轴圆弧插补) //终点坐标 圆心坐标 SetLineVecter(); LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, A, 1, 0); //直线插补 LTDMC.dmc_conti_start_list(_CardID, crd); Thread.Sleep(1000); LTDMC.dmc_conti_close_list(_CardID, crd); } if (cbxMotionTrail.SelectedIndex == 3) { //直线 圆弧 直线 圆弧 直线 直线 double[] A = new double[] { 0, 0 }; double[] B = new double[] { 200, 0 }; double[] C = new double[] { 300, -100 }; double[] D = new double[] { 300, -300 }; double[] E = new double[] { 200, -400 }; double[] F = new double[] { 0, -400 }; SetLineVecter(); LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, B, 1, 0); //直线插补 SetArcVecter(); LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises, C, new double[] { 200, -100 }, 0, 0, 1, 0); //XY平面圆弧插补,顺时针,相对坐标模式。 此函数是基于圆心圆弧扩展的螺旋线插补运动(可作两轴圆弧插补) //终点坐标 圆心坐标 SetLineVecter(); LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, D, 1, 0); //直线插补 SetArcVecter(); LTDMC.dmc_conti_arc_move_center_unit(_CardID, crd, axisnum, axises, E, new double[] { 200, -300 }, 0, 0, 1, 0); SetLineVecter(); LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, F, 1, 0); //直线插补 LTDMC.dmc_conti_line_unit(_CardID, crd, axisnum, axises, A, 1, 0); //直线插补 LTDMC.dmc_conti_start_list(_CardID, crd); Thread.Sleep(1000); LTDMC.dmc_conti_close_list(_CardID, crd); } }