/// <summary> /// List<Interpolation_Data> 无前瞻和坐标矫正的 FIFO数据追加 /// </summary> /// <param name="Concat_Datas"></param> public static void Tran_Data(List <Interpolation_Data> Concat_Datas) { //清除FIFO 0 Clear_FIFO(); //初始化FIFO 0前瞻模块 Gts_Return = MC.GT_InitLookAhead(1, 0, Convert.ToDouble(Para_List.Parameter.LookAhead_EvenTime), Convert.ToDouble(Para_List.Parameter.LookAhead_MaxAcc), 4096, ref crdData[0]); Log.Commandhandler("Line_Interpolation--初始化FIFO 0前瞻模块", Gts_Return); foreach (var o in Concat_Datas) { //未矫正数据 if (o.Type == 1) //直线 { Line_FIFO(o.End_x, o.End_y); //将直线插补数据写入 } else if (o.Type == 2) //圆弧 { Circle_R_FIFO(o.End_x, o.End_y, o.Circle_radius, o.Circle_dir); //将圆弧插补写入 } else if (o.Type == 3) //圆形 { Circle_C_FIFO(o.End_x, o.End_y, o.Center_Start_x, o.Center_Start_y, o.Circle_dir); //将圆形插补写入 } } //将前瞻数据压入控制器 Gts_Return = MC.GT_CrdData(1, Crd_IntPtr, 0); Log.Commandhandler("Line_Interpolation--将前瞻数据压入控制器", Gts_Return); }
//XY平台运动到指定点位 public static void Gts_Ready_Correct(Vector Point) { //数据矫正 Vector Tmp_Point = new Vector(); //定义处理的变量 decimal Tmp_X = 0.0m; decimal Tmp_Y = 0.0m; //终点计算 //数据矫正 Tmp_Point = new Vector(Gts_Cal_Data_Resolve.Get_Affinity_Point(0, Point.X, Point.Y, affinity_Matrices)); Tmp_X = Tmp_Point.X; Tmp_Y = Tmp_Point.Y; //清除FIFO 0 Clear_FIFO(); //初始化FIFO 0前瞻模块 Gts_Return = MC.GT_InitLookAhead(1, 0, Convert.ToDouble(Para_List.Parameter.LookAhead_EvenTime), Convert.ToDouble(Para_List.Parameter.LookAhead_MaxAcc), 4096, ref crdData[0]); Log.Commandhandler("Line_Interpolation--初始化FIFO 0前瞻模块", Gts_Return); //直线插补定位 Line_FIFO(Tmp_X, Tmp_Y);//将直线插补数据写入 //将前瞻数据压入控制器 Gts_Return = MC.GT_CrdData(1, Crd_IntPtr, 0); Log.Commandhandler("Line_Interpolation--将前瞻数据压入控制器", Gts_Return); //启动定位 Interpolation_Start(); }
//XY平台运动到指定点位 public static void Gts_Ready(Vector Point) { //清除FIFO 0 Clear_FIFO(); //初始化FIFO 0前瞻模块 Gts_Return = MC.GT_InitLookAhead(1, 0, Convert.ToDouble(Para_List.Parameter.LookAhead_EvenTime), Convert.ToDouble(Para_List.Parameter.LookAhead_MaxAcc), 4096, ref crdData[0]); Log.Commandhandler("Line_Interpolation--初始化FIFO 0前瞻模块", Gts_Return); //直线插补定位 Line_FIFO(Point.X, Point.Y);//将直线插补数据写入 //将前瞻数据压入控制器 Gts_Return = MC.GT_CrdData(1, Crd_IntPtr, 0); Log.Commandhandler("Line_Interpolation--将前瞻数据压入控制器", Gts_Return); //启动定位 Interpolation_Start(); }
/// <summary> /// XY平台运动到配合振镜切割准备点 坐标矫正4 /// </summary> /// <param name="x"></param> /// <param name="y"></param> public static void Gts_Ready_Correct(decimal x, decimal y) { //数据矫正 Vector Tmp_Point = new Vector(); //定义处理的变量 decimal Tmp_X = 0.0m; decimal Tmp_Y = 0.0m; if (Para_List.Parameter.Gts_Affinity_Type == 2) { Tmp_Point = new Vector(Gts_Cal_Data_Resolve.Get_Line_Fit_Coordinate_AM(x, y, Fit_Matrices_AM)); Tmp_X = Tmp_Point.X; Tmp_Y = Tmp_Point.Y; } else { //数据矫正 Tmp_Point = new Vector(Gts_Cal_Data_Resolve.Get_Affinity_Point(0, x, y, affinity_Matrices)); Tmp_X = Tmp_Point.X; Tmp_Y = Tmp_Point.Y; } #if !DEBUG //清除FIFO 0 Clear_FIFO(); //初始化FIFO 0前瞻模块 Gts_Return = MC.GT_InitLookAhead(1, 0, Convert.ToDouble(Para_List.Parameter.LookAhead_EvenTime), Convert.ToDouble(Para_List.Parameter.LookAhead_MaxAcc), 4096, ref crdData[0]); Log.Commandhandler("Line_Interpolation--初始化FIFO 0前瞻模块", Gts_Return); //直线插补定位 Line_FIFO(Tmp_X, Tmp_Y);//将直线插补数据写入 //将前瞻数据压入控制器 Gts_Return = MC.GT_CrdData(1, Crd_IntPtr, 0); Log.Commandhandler("Line_Interpolation--将前瞻数据压入控制器", Gts_Return); #endif //启动定位 Interpolation_Start(); }
/// <summary> /// List<Interpolation_Data> 有前瞻和坐标矫正的 FIFO数据追加 /// </summary> /// <param name="Concat_Datas"></param> public static void Tran_Data_Correct(List <Interpolation_Data> Concat_Datas) { #if !DEBUG //清除FIFO 0 Clear_FIFO(); //初始化FIFO 0前瞻模块 Gts_Return = MC.GT_InitLookAhead(1, 0, Convert.ToDouble(Para_List.Parameter.LookAhead_EvenTime), Convert.ToDouble(Para_List.Parameter.LookAhead_MaxAcc), 4096, ref crdData[0]); Log.Commandhandler("Line_Interpolation--初始化FIFO 0前瞻模块", Gts_Return); #endif //定义处理的变量 Vector Tmp_Point = new Vector(); decimal Tmp_End_X = 0.0m; decimal Tmp_End_Y = 0.0m; decimal Tmp_Center_X = 0.0m; decimal Tmp_Center_Y = 0.0m; decimal Tmp_Center_Start_X = 0.0m; decimal Tmp_Center_Start_Y = 0.0m; foreach (var o in Concat_Datas) { if (Para_List.Parameter.Gts_Affinity_Type == 2) { Tmp_Point = new Vector(Gts_Cal_Data_Resolve.Get_Line_Fit_Coordinate_AM(o.End_x, o.End_y, Fit_Matrices_AM)); Tmp_End_X = Tmp_Point.X; Tmp_End_Y = Tmp_Point.Y; Tmp_Point = new Vector(Gts_Cal_Data_Resolve.Get_Line_Fit_Coordinate_AM(o.Center_x, o.Center_y, Fit_Matrices_AM)); Tmp_Center_X = Tmp_Point.X; Tmp_Center_Y = Tmp_Point.Y; } else { //数据矫正 //终点计算 Tmp_Point = new Vector(Gts_Cal_Data_Resolve.Get_Affinity_Point(0, o.End_x, o.End_y, affinity_Matrices)); Tmp_End_X = Tmp_Point.X; Tmp_End_Y = Tmp_Point.Y; //圆心计算 Tmp_Point = new Vector(Gts_Cal_Data_Resolve.Get_Affinity_Point(0, o.Center_x, o.Center_y, affinity_Matrices)); Tmp_Center_X = Tmp_Point.X; Tmp_Center_Y = Tmp_Point.Y; } //圆心与差值计算 Tmp_Center_Start_X = Tmp_Center_X - Tmp_End_X; Tmp_Center_Start_Y = Tmp_Center_X - Tmp_End_Y; #if !DEBUG //替换数据 if (o.Type == 1) //直线 { Line_FIFO(Tmp_End_X, Tmp_End_Y); //将直线插补数据写入 } else if (o.Type == 2) //圆弧 { Circle_R_FIFO(Tmp_End_X, Tmp_End_Y, o.Circle_radius, o.Circle_dir); //将圆弧插补写入 } else if (o.Type == 3) //圆形 { Circle_C_FIFO(Tmp_End_X, Tmp_End_Y, Tmp_Center_Start_X, Tmp_Center_Start_Y, o.Circle_dir); //将圆形插补写入 } #endif } #if !DEBUG //将前瞻数据压入控制器 Gts_Return = MC.GT_CrdData(1, Crd_IntPtr, 0); Log.Commandhandler("Line_Interpolation--将前瞻数据压入控制器", Gts_Return); #endif }