文档库 最新最全的文档下载
当前位置:文档库 › 实验四----直线(圆弧)插补

实验四----直线(圆弧)插补

实验四----直线(圆弧)插补
实验四----直线(圆弧)插补

实验四

步进电机插补实验

1.实验目的:

(1) 了解步进电机驱动原理以及应用

(2) 了解逐点比较法插补原理,了解逐点比较法直线插补的具体工作过程. (3) 掌握了解逐点比较法直线插补的程序实现过程. 2. 实验内容

(1) 逐点比较法直线插补 (2) 步进电机驱动电路

3. 实验程序

(1) 直线插补程序

机器码 源程序

LOC OBJ LINE SOURCE

1 ;直线插补程序,在中用到的数值都为双字节

0050 2 ZBL EQU 50H ;所走步数低字节 004F 3 ZBH EQU 4FH ;所走步数高字节 004E 4 XEL EQU 4EH ;终点X 坐标的低字节 004D 5 XEH EQU 4DH ;终点X 坐标的高字节 004C 6 YEL EQU 4CH ;终点Y 坐标的低字节 004B 7 YEH EQU 4BH ;终点Y 坐标的高字节 004A 8 FBL EQU 4AH ;偏差F 低字节

0049 9 FBH EQU 49H ;偏差F 高字节

0048 10 XBF EQU 48H ;为电机驱动子程初始化 0047 11 YBF EQU 47H ;为电机驱动子程初始化 0000 12 ORG 0000H

0000 758160 13 LP: MOV SP,#60H ;设堆栈指针 0003 7480 14 MOV A,#80H ; 8255方式

0005 90FF2B 15 MOV DPTR,#0FF2BH ;8255 方式字寄存器 0008 F0 16 MOVX @DPTR,A 0009 754A00 17 MOV FBL,#00H 000C 754900 18 MOV FBH,#00H

000F 754801 19 MOV XBF,#01H; X 、Y 步进电机置初态 0012 754702 20 MOV YBF,#02H

0015 E54E 21 MOV A,XEL ;计算应走步数Z 0017 254C 22 ADD A,YEL 0019 F550 23 MOV ZBL,A 001B E54D 24 MOV A,XEH 001D 354B 25 ADDC A,YEH 001F F54F 26 MOV ZBH,A 0021 7403 27 MOV A,#03H 0023 90FF28 28 MOV DPTR,#0FF28H 0026 F0 29 MOVX @DPTR,A 0027 1191 30 LP2:ACALL DL0 0029 E549 31 MOV A,FBH 002B 20E722 32 JB ACC.7,LP4

002E 1160 33 ACALL XMP

0030 C3 34 CLR C

0031 E54A 35 MOV A,FBL

0033 954C 36 SUBB A,YEL

0035 F54A 37 MOV FBL,A

0037 E549 38 MOV A,FBH

0039 954B 39 SUBB A,YEH

003B F549 40 MOV FBH,A

003D C3 41 LP3:CLR C ; Z-1 ->Z

003E E550 42 MOV A,ZBL

0040 9401 43 SUBB A,#01H

0042 F550 44 MOV ZBL,A

0044 E54F 45 MOV A,ZBH

0046 9400 46 SUBB A,#00H

0048 F54F 47 MOV ZBH,A

004A 4550 48 ORL A,ZBL

004C 70D9 49 JNZ LP2

004E 80FE 50 SJMP $ ;结束

0050 117A 51 LP4:ACALL YMP

0052 E54A 52 MOV A,FBL

0054 254E 53 ADD A,XEL

0056 F54A 54 MOV FBL,A

0058 E549 55 MOV A,FBH

005A 354D 56 ADDC A,XEH

005C F549 57 MOV FBH,A

005E 80DD 58 SJMP LP3

0060 E548 59 XMP: MOV A,48H ; X电机正转0062 C3 60 CLR C

0063 13 61 RRC A

0064 13 62 RRC A

0065 13 63 RRC A

0066 F4 64 XMP2: CPL A

0067 5449 65 ANL A,#49H

0069 F548 66 MOV 48H,A

006B 4547 67 ORL A,47H

006D 90FF28 68 XMP4: MOV DPTR,#0FF28H

0070 F0 69 MOVX @DPTR,A

0071 22 70 RET

0072 E548 71 XMM: MOV A,48H ; X电机反转子程0074 C3 72 CLR C

0075 33 73 RLC A

0076 33 74 RLC A

0077 33 75 RLC A

0078 80EC 76 SJMP XMP2

007A E547 77 YMP: MOV A,47H ; Y 电机正转 007C C3 78 CLR C 007D 13 79 RRC A 007E 13 80 RRC A 007F 13 81 RRC A 0080 F4 82 YMP2: CPL A

0081 5492 83 ANL A,#92H 0083 F547 84 MOV 47H,A 0085 4548 85 ORL A,48H 0087 80E4 86 SJMP XMP4

0089 E547 87 YMM: MOV A,47H ; Y 电机反转 008B C3 88 CLR C 008C 33 89 RLC A 008D 33 90 RLC A 008E 33 91 RLC A

008F 80EF 92 SJMP YMP2 0091 7F02 93 DL0: MOV R7,#02H 0093 7EFF 94 DELAY1: MOV R6,#0FFH 0095 DEFE 95 DELAY2: DJNZ R6,DELAY2 0097 DFFA 96 DJNZ R7,DELAY1 0099 22 97 RET

98 END 5. 实验步骤:

(1)本实验台两个步进电机都为3相电机,程序驱动时工作在6拍方式下.

(2)当步进电机工作在单三拍方式下时,步距角为3度.螺距导程为1.5mm.试计算6

拍方式下脉冲当量δ为多少? (3)做实验之前,先建立坐标系.x-y

(4)直线插补程序中, 程序运行时,输入终点坐标和偏差初值即可运行.要求对程序进行注释,应详细的写出每段程序完成的功能。

(5)通过对程序进行赋值,在第一象限内画一系列直线,至少有 0,

60,45,30,90 的直线,并和理想直线比较,进行误差分析,并考虑可能造成的原因. (6)对程序进行修改,画出一个矩形。(7)通过修改程序,进行其他象限直线插补。

电路连接原理图

圆弧插补实验

1.实验目的:

(2)了解步进电机驱动原理以及应用

(3)了解逐点比较法插补原理,了解逐点比较法圆弧插补的具体工作过程.

(4)掌握了解逐点比较法圆弧插补的程序实现过程.

3.实验内容

(1)逐点比较法圆弧插补

(2)步进电机驱动电路

3. 实验程序

圆弧插补程序

LOC OBJ LINE SOURCE

1 ;

0052 4 XIL EQU 52H ;起点X坐标

0051 5 XIH EQU 51H

0050 6 YIL EQU 50H ;起点Y坐标

004F 7 YIH EQU 4FH

004E 8 XEL EQU 4EH ;终点X坐标

004D 9 XEH EQU 4DH

004C 10 YEL EQU 4CH;终点Y坐标

004B 11 YEH EQU 4BH

004A 12 FBL EQU 4AH ;偏差F

0049 13 FBH EQU 49H

XBF EQU 48H

YBF EQU 47H

ZBL EQU 46H

ZBH EQU 45H

0000 16 ORG 0000H

0000 758160 17 RP: MOV SP,#60H ;堆栈设置

0003 754A00 18 MOV FBL,#00H ; 清F

0006 754900 19 MOV FBH,#00H

0009 754801 20 MOV XBF,#01H ;X、Y步进电机置初值

000C 754702 21 MOV YBF,#02H

000F 90FF2B 22 MOV DPTR,#0FF2BH ;设置8255为输出

0012 7480 23 MOV A,#80H

0014 F0 24 MOVX @DPTR,A

0015 90FF28 25 MOV DPTR,#0FF28H

0018 7403 26 MOV A,#03H ;X Y电机上电

001A F0 27 MOVX @DPTR,A

001B C3 28 CLR C ; 计算Z

001C E552 29 MOV A,XIL ; Xi-Xe->Z

001E 954E 30 SUBB A,XEL

0020 F554 31 MOV ZBL,A

0022 E551 32 MOV A,XIH

0024 954D 33 SUBB A,XEH

0026 F553 34 MOV ZBH,A

0028 C3 35 CLR C ;(Ye-Yi)+Z

0029 E54C 36 MOV A,YEL

002B 9550 37 SUBB A,YIL

002D 9220 38 MOV 20H,C ; 暂存借位位

002F 2554 39 ADD A,ZBL

0031 F554 40 MOV ZBL,A

0033 9221 41 MOV 21H,C ;暂存进位位

0035 E54B 42 MOV A,YEH

0037 A220 43 MOV C,20H ; (Ye-Yz)+Z->Z

0039 954F 44 SUBB A,YIH

003B A221 45 MOV C,21H ; (Ye-Yi)+(Xi-Xe)->Z 003D 3553 46 ADDC A,ZBH

003F F553 47 MOV ZBH,A

0041 11E7 48 RP2:ACALL DL0 ;延时1ms

0043 E549 49 MOV A,FBH

0045 20E742 50 JB ACC.7, RP6 ;F<0,转RP6

0048 11C8 51 ACALL XMM ;F>=0,-X一

004A C3 52 CLR C ; 计算F'=F-2

004B E54A 53 MOV A,FBL ;F-2X低位在A,高位004D 9552 54 SUBB A,XIL

004F C5F0 55 XCH A,B ;低位在 B

0051 E549 56 MOV A,FBH

0053 9551 57 SUBB A,XIH

0055 C5F0 58 XCH A,B ;低位进入 A,高位进B 0057 C3 59 CLR C

0058 9552 60 SUBB A,XIL ;减2次

005A C5F0 61 XCH A,B

005C 9551 62 SUBB A,XIH

005E C5F0 63 XCH A,B ;完成F-2Xi

0060 2401 64 ADD A,#01H

0062 F54A 65 MOV FBL,A

0064 C5F0 66 XCH A,B

0066 3400 67 ADDC A,#00H

0068 F549 68 MOV FBH,A; 完成F-2Xi+1-〉F' 006A C3 69 CLR C; 计算Xi-1->

006B E552 70 MOV A,XIL

006D 9401 71 SUBB A,#01H

006F F552 72 MOV XIL,A

0071 E551 73 MOV A,XIH

0073 9400 74 SUBB A,#00H

0075 F551 75 MOV XIH,A

0077 C3 76 RP4:CLR C

0078 E554 77 MOV A,ZBL

007A 9401 78 SUBB A,#01h

007C F554 79 MOV ZBL,A

007E E553 80 MOV A,ZBH

0080 9400 81 SUBB A,#00H

0082 F553 82 MOV ZBH,A

0084 4554 83 ORL A,ZBL

0086 70B9 84 JNZ RP2

0088 80FE 85 SJMP $

008A 11D0 86 RP6:ACALL YMP;+Y走一步

008C 7E02 87 MOV R6,#02H;计算F+2Y+1

008E E54A 88 RP7:MOV A,FBL

0090 2550 89 ADD A,YIL

0092 F54A 90 MOV FBL,A

0094 E549 91 MOV A,FBH

0096 354F 92 ADDC A,YIH

0098 F549 93 MOV FBH,A

009A DEF2 94 DJNZ R6,RP7

009C E54A 95 MOV A,FBL

009E 2401 96 ADD A,#01H

00A0 F54A 97 MOV FBL,A

00A2 E549 98 MOV A,FBH

00A4 3400 99 ADDC A,#00H

00A6 F549 100 MOV FBH,A;完成F-2Xi+1-〉F' 00A8 E550 101 MOV A,YIL;计算Yi-1->Y

00AA 2401 102 ADD A,#01H

00AC F550 103 MOV YIL,A

00AE E54F 104 MOV A,YIH

00B0 3400 105 ADDC A,#00H

00B2 F54F 106 MOV YIH,A

00B4 0177 107 AJMP RP4;转去计算Z-1

00B6 E548 108 XMP: MOV A,48H ; X电机正转子程00B8 C3 109 CLR C

00B9 13 110 RRC A

00BA 13 111 RRC A

00BB 13 112 RRC A

00BC F4 113 XMP2: CPL A

00BD 5449 114 ANL A,#49H

00BF F548 115 MOV 48H,A

00C1 4547 116 ORL A,47H

00C3 90FF28 117 XMP4: MOV DPTR,#0FF28H

00C6 F0 118 MOVX @DPTR,A

00C7 22 119 RET

00C8 E548 120 XMM: MOV A,48H ; X电机反转子程00CA C3 121 CLR C

00CB 33 122 RLC A

00CC 33 123 RLC A

00CD 33 124 RLC A

00CE 80EC 125 SJMP XMP2

00D0 E547 126 YMP: MOV A,47H ; Y电机正转子程

00D2 C3 127 CLR C

00D3 13 128 RRC A

00D4 13 129 RRC A

00D5 13 130 RRC A

00D6 F4 131 YMP2: CPL A

00D7 5492 132 ANL A,#92H

00D9 F547 133 MOV 47H,A

00DB 4548 134 ORL A,48H

00DD 80E4 135 SJMP XMP4

00DF E547 136 YMM: MOV A,47H ; Y电机反转子程

00E1 C3 137 CLR C

00E2 33 138 RLC A

00E3 33 139 RLC A

00E4 33 140 RLC A

00E5 80EF 141 SJMP YMP2

00E7 7F02 142 DL0: MOV R7,#02H ;延时子程

00E9 7EFF 143 DELAY1: MOV R6,#0FFH

00EB DEFE 144 DELAY2: DJNZ R6,DELAY2

00ED DFFA 145 DJNZ R7,DELAY1

00EF 22 146 RET

147END

5. 实验步骤:

(1)本实验台两个步进电机都为3相电机,程序驱动时工作在6拍方式下.

(2)当步进电机工作在单三拍方式下时,步距角为3度.螺距导程为1.5mm.试计算6

拍方式下脉冲当量δ为多少?

(3)做实验之前,先建立坐标系.x-y

(4)圆弧插补程序中, 程序运行时,输入起始点和终点坐标和偏差初值即可运行.要求

对程序进行注释,应详细的写出每段程序完成的功能。

(5)通过对程序进行赋值,在第一象限内画圆弧,并和理想圆弧比较,进行误差分析,

并考虑可能造成的原因.

(6)通过修改程序,进行其他象限圆弧插补。

(7)考虑如何编程绘制一个整圆。

项目六 直线与圆弧插补指令的应用

项目六 直线与圆弧插补指令的应用 任务描述: 1. 巩固编程步骤 2. 掌握绝对坐标编程和相对坐标编程的方法。 3. 掌握定位指令、直线插补指令、圆弧插补指令的使用方法和规则 任务分析: 本任务进入到数控程序的编制实例讲解,通过一个指明轨迹加工过程,示范一个简单编程范例,达到使学生初步掌握简单轨迹编程的方法。一般的加工轨迹都是由直线和圆弧组成,而直线与圆弧插补指令则是描绘这样一个加工轨迹的基本指令。 一、绝对坐标编程与相对坐标编程 1.1绝对和相对编程模式如图6-1所示 图6-1绝对和相对坐标 1.绝对坐标(G90):就是以零件上一个公共点(工件坐标原点)作为参考——称为绝对输入的原点。 例如,G90 G01 X+100 Y-50 F300;说明选择G90 绝对模式,数学符号“+”、“—”表示直角坐标系的象限,而不是运动方向;X+100 Y-50表示刀具在程序原点中的刀具位置,而不是刀具运动本身。 2.相对坐标(G91):就是以前一个目标为起点到后一点之间的距离。 例如,G91 G01 X+100 Y-50 F300;数字符号“+”、“—”制定刀具运动方向,而不表示直角坐标系的象限;X+50 Y-50表示刀具在制定方向上的运动距离。 提示: 1.绝对模式下,所有的尺寸都是从程序原点开始测量。 2.相对模式下,所有程序尺寸都是制定方向上的间隔距离。 1.2快速定位指令(G00) 【指令格式】 坐标值:表示移动的终点坐标 G00 X___ Y____ Z____; 坐标值:表示移动的终点坐标 提示: 1.该指令只能用于定位,不能用于切削。

2.快速定位的速度由数控机床参数决定。同时,该指令也不受“F指令”指明的进给速度影响。 3.定位时各坐标轴为独立控制而不是联动控制。 这样可能导致各坐标轴不能同时到达目标点。例如:执行G00 X50 Y50;由于X轴与Y 轴同时按照机床参数给定的速度运动,产生X轴先到达位置,Y轴后到达的情况。编程人员应了解所使用数控系统的刀具移动轨迹情况,以避免加工中可能出现碰撞。 4.空间定位时要避免斜插。 5.在X/Y/Z轴同时定位时,为了避免刀具运动时与夹具或工件碰撞,尽量避免Z轴与其他轴同时运动(即斜插)。因此建议抬刀时,先运动Z轴,再运动X/Y轴;下刀时,则相反。 6.该指令为模态指令,即在没有出现同组其他指令(如:G01、G02、G03)时,将一直有效。 7.该指令使用时,不运动的坐标可以省略。 1.3圆弧插补指令 1).插补平面的选择:G17/G18/G19如图6-2所示 图6-2平面选择 G17:设定加工平面为X-Y平面 G18:设定加工平面为X-Z平面 G19:设定加工平面为Y-Z平面 2).圆弧的知识 1.圆的几何要素 圆定义为平面上的一段封闭曲线,它上面的所有点的距离都相等,如图6-3所示。编程中使用的最重要的元素是圆的圆心、半径和直径。象限是一个圆的主要特征,有时圆弧跨越不止一个象限,在现代控制系统中可以实现一个程序段中加工任意长度的圆弧,它没有任何限制。

直线插补与圆弧插补程序设计

直线插补与圆弧插补程序设计

一.直线插补 1. 直线插补程序流程图

#i nclude #in elude vgraphics.h> #i nclude void cb_li ne(i nt { x1, int y1, int x2, int y2) 直线插补程序流程图 2.直线插补程序设计 int dx, dy, n, k, i, f;

int x, y; dx = abs(x2-x1); dy = abs(y2-y1); n = dx + dy; if (x2 >= x1) { k y2 >= y1 ? 1: 4; x x1; y y1; } else { k y2 >= y1 ? 2: 3; x x2; y y2; } putpixel(x, y, 1); for (i = 0, f = 0; i < n; i++) if (f >= 0) switch (k) { case 1: else switch (k) { case 1: putpixel(x++, y, f -= dy; break; case 2: putpixel(x, y++, f -= dx; break; case 3: putpixel(x--, y, f -= dy; break; case 4: 1); 1); 1); putpixel(x, y--, 1); } f -= dx; break;

putpixel(x, f += dx; break; y++, 1); case 2 : putpixel(x--, f += dy; break; y, 1); case 3 : putpixel(x, f += dx; break; y--, 1); case 4 : putpixel(x++, f += dy; break; y, 1); } } 二. 圆弧插补 2.1. 四象限圆弧插补程序流程图int main() { cb_line(0,0,15,20); /* <--- you forgot return 0; } here */

圆弧插补C语言程序

圆弧插补c语言源代码 专业2008-11-24 20:50:26 阅读253 评论0 字号:大中小订阅 #include #include int ArcXY(double dfx0,double dfy0,double dfrx, double dfry,int angle); int symbol(double number); main() { ArcXY(0,0,-3,5,360); getch(); } int ArcXY(double dfx0,double dfy0,double dfrx, double dfry,int angle) { FILE *f1; double i,j,dx,dy,dfr,x,y,ang,step,f = 0.01; int flag,tempx,tempy,statex,statey,direction = 1; dfr = sqrt((dfrx - dfx0) * (dfrx - dfx0) + (dfry - dfy0) * (dfry - dfy0)); if(dfx0 == 0) { dfx0 = 1; dfrx = dfrx + 1; statex =1; } if(dfy0 == 0) { dfy0 = 1; dfry = dfry + 1; statey =1; } dfrx = 2 * dfx0 - dfrx; i = dfx0 - dfrx; j = dfy0 - dfry; x = dfx0 ; y = dfy0 ; step = ang = 180 * 2 * asin(f/(2*dfr))/3.1415926;

基于Matlab的四象限圆弧插补程序

X0=input('请输入起点横轴坐标x: '); Y0=input('请输入起点纵轴坐标y: '); NXY=input('请输入差补步数: '); pace=input('请输入差补步长: '); RNSS=input('请选择差补走向(1代表顺时针/2代表逆时针): '); XM=X0; YM=Y0; %画基准圆 R=sqrt(X0*X0+Y0*Y0); alpha=0:pi/20:2*pi; xx=R*cos(alpha); yy=R*sin(alpha); plot(xx,yy,'g:'); hold on; axis equal; %针对跨象限运行时对ZF初始化(由于在跨象限运行时不改变ZF值所以必须对其初始化) ZF=(RNSS==1)*(((Y0==0)*((X0>0)*4+(X0<0)*3))+((X0==0)*((Y0>0)*1+(Y0<0) *2)))+... (RNSS~=1)*(((Y0==0)*((X0>0)*3+(X0<0)*4))+((X0==0)*((Y0>0)*2+(Y0<0)*1) )); %建立NXY次循环来实现差补计算与绘图 for num=1:NXY %FM值判断 FM=XM*XM+YM*YM-X0*X0-Y0*Y0; %象限判断(RNS为1,2,3,4分别代表1,2,3,4象限) RNS=(XM>0)*((YM>0)*1+(YM<0)*4)+(XM<0)*((YM>0)*2+(YM<0)*3); %走步计算(RNS百位为1表示逆时针画圆,十位为1表示FM<0,个位数字表示所在

象限,ZF代表走步方向) switch RNS+((FM<0)*10)+(RNSS~=1)*100 case 001 ZF=4; case 002 ZF=1; case 003 ZF=3; case 004 ZF=2; case 011 ZF=1; case 012 ZF=3; case 013 ZF=2; case 014 ZF=4; case 101 ZF=2; case 102 ZF=4; case 103 ZF=1; case 104 ZF=3; case 111 ZF=3; case 112

逐点比较法直线插补圆弧插补实例

逐点比较法直线插补 (1)偏差函数构造 对于第一象限直线OA上任一点(X,Y):X/Y = Xe/Ye 若刀具加工点为Pi(Xi,Yi),则该点的偏差函数Fi可表示为: 若Fi= 0,表示加工点位于直线上; 若Fi> 0,表示加工点位于直线上方; 若Fi< 0,表示加工点位于直线下方。 (2)偏差函数字的递推计算 采用偏差函数的递推式(迭代式):既由前一点计算后一点 Fi =Yi Xe -XiYe 若Fi>=0,规定向+X 方向走一步 Xi+1 = Xi +1 Fi+1 = XeYi –Ye(Xi +1)=Fi –Ye 若Fi<0,规定+Y 方向走一步,则有 Yi+1 = Yi +1 Fi+1 = Xe(Yi +1)-YeXi =Fi +Xe (3)终点判别 直线插补的终点判别可采用三种方法。 1)判断插补或进给的总步数:2)分别判断各坐标轴的进给步数;3)仅判断进给步数较多的坐标轴的进给步数。 (4)例 对于第一象限直线OA,终点坐标Xe=6 ,Ye=4,插补从直线起点O开始,故F0=0 。终点判别是判断进给总步数N=6+4=10,将其存入终点判别计数器中,每进给一步减1,若N=0,则停止插补。

逐点比较法圆弧插补(1)偏差函数构造 任意加工点Pi(Xi,Yi),偏差函数Fi可表示为 若Fi=0,表示加工点位于圆上;

若Fi >0,表示加工点位于圆外; 若Fi <0,表示加工点位于圆内 (2)偏差函数的递推计算 1) 逆圆插补 若F ≥0,规定向-X 方向走一步 若Fi<0,规定向+Y 方向走一步 2) 顺圆插补 若Fi ≥0,规定向-Y 方向走一步 若Fi<0,规定向+y 方向走一步 (3)终点判别 1)判断插补或进给的总步数: 2)分别判断各坐标轴的进给步数: (4)例 对于第一象限圆弧AB ,起点A (4,0),终点B (0,4) ???+-=-+-=-=++12)1(122211i i i i i i i X F R Y X F X X ???++=-++=+=++12)1(122211i i i i i i i Y F R Y X F Y Y ???+-=--+=-=++12)1(122211i i i i i i i Y F R Y X F Y Y ???++=-++=+=++12)1(122211i i i i i i i X F R Y X F X X b a b a Y Y X X N -+-=b a x X X N -= b a y Y Y N -=

欧姆龙NJ直线插补及圆弧插补

NJ网络实验4 实验目的:a.实现空间一组4个工位的合成直线运动。 工位1(0,0),工位2(2000,2000),工位3(2000, 0),工位4(0,0) b.使用圆弧插补功能,实现下图运动轨迹。(图中数值仅供参考,可自行修改) C.学习齿轮比(变速)MC_gearin,MC_gearout指令。速度比要求3比1 实验器材:NJ、G5伺服及伺服电机两套;E3ZM-V81两个、网线若干(AT部门NJ样机箱)。 参考资料:NJ教材、NJ操作手册、运动控制指令手册 指导人员: 实验内容: 1.样机搭建、网络组建、轴设置在前报告中已经说明,此处省略。其中轴设置中原点返回设置选择如下图 两轴原点返回均为此设置

2.建立轴组: 轴设置完毕后,在“配置和设置”中右键点击轴组设置,在下拉菜单中左键点击添加轴组设置,如下图 添加后,左键双击MC_Group000;在轴组基本设置中“轴组使用”选择“使用轴组”如下图: 构成选择“2轴” 分别将“轴A0”分配MC_Axis000(0);“轴A1”分配MC_Axis001(1)如下图

点击左侧“轴组操作设置”在下图中设置最大插补速度及加速度等, 轴设置完毕 3.编写程序 A、准备程序程序 本次程序依然需要MC_POWER及MC_HOME指令由于与上次程序相同这里不多介绍,程序如下图:

原点返回指令 “MC_GroupEnable”轴组使能指令,以下为手册截图 由于直线插补指令属于轴组指令,如想进行直线插补首先要进行轴组使能指令,否则无法使用对应指令。

将上一步设置好的MC_Group000使能,程序如下 指令“MC_GroupDisable”使能解除指令 与MC_GroupEnable对应指令,被轴组使能后被使能轴只能使用轴组指令,而不能使用轴指令,例如MC_Move等指令,所以程序中需要编写MC_GroupEnable程序

C语言模拟直线插补与圆弧插补程序设计

数控技术课程设计 说明书 设计题目直线插补与圆弧插补程序设计 机械设计以及自动化专业机械工程学院 机械102班 设计者青岛理工大学 2013年6月20

日 目录 1.设计题目 (1) 2.目录 (2) 3.直线插补流程图 (3) 4.直线插补程序 (4) 5.程序结果 (8) 6.圆弧插补流程图 (9) 7.圆弧插补程序 (10)

8.程序结果 (21) 一.直线插补 1.直线插补程序流程图 2.直线插补程序设计

#include "stdio.h" int i,X,Y,X0,Y0,Xe,Ye,F,N; int a[30][2]; void main() { int m; int menu(); void yi(); void er(); void san(); void si(); void te(); void shuchu(); m=menu(); a[0][0]=X0; a[0][1]=Y0; switch(m) { case 1:yi();shuchu();break; case 2:er();shuchu();break; case 3:san();shuchu();break; case 4:si();shuchu();break; case 5:te();shuchu();break; default:printf("无法插补\n"); } } int menu() { int t; printf("输入起点坐标\n"); scanf("%d,%d",&X0,&Y0); printf("输入终点坐标\n"); scanf("%d,%d",&Xe,&Ye); if (Xe>=X0&&Ye>=Y0) t=1; else if (Xe<=X0&&Ye>=Y0) t=2; else if (Xe<=X0&&Ye<=Y0) t=3; else if (Xe>=X0&&Ye<=Y0) t=4;

逐点比较法直线插补圆弧插补实例

逐点比较法直线插补(1)偏差函数构造 对于第一象限直线OA上任一点(X,Y):X/Y=Xe/Ye 若刀具加工点为Pi(Xi,Yi),则该点的偏差函数F i 可表示 为 : 若Fi=0,表示加工点位于直线上; 若Fi>0,表示加工点位于直线上方; 若Fi<0,表示加工点位于直线下方。 (2)偏差函数字的递推计算 采用偏差函数的递推式(迭代式):既由前一点计算后一点 Fi=YiXe-XiYe 若Fi>=0,规定向+X 方向走一步 Xi+1=Xi+1 Fi+1=XeYi–Ye(Xi+1)=Fi–Ye 若Fi<0,规定+Y方向走一步,则有 Yi+1=Yi+1 Fi+1=Xe(Yi+1)-YeXi=Fi+Xe (3)终点判别 直线插补的终点判别可采用三种方法。 1)判断插补或进给的总步数:2)分别判断各坐标轴的进给步数;3)仅判断进给步数较多的坐标轴的进给步数。(4)例 对于第一象限直线OA,终点坐标Xe=6,Ye=4,插补从直线起点O开始,故F0=0。终点判别是判断进给总步数 N=6+4=10,将其存入终点判别计数器中,每进给一步减1,若N=0,则停止插补。

逐点比较法圆弧插补 (1)偏差函数构造 任意加工点Pi(Xi,Yi),偏差函数Fi可表示为若Fi=0,表示加工点位于圆上; 若Fi>0,表示加工点位于圆外; 若Fi<0,表示加工点位于圆内 (2)偏差函数的递推计算 1)逆圆插补 若F≥0,规定向-X方向走一步 X i1X i1 F i1(X i1)2Y i 2R2F i2X i1 若Fi<0,规定向+Y方向走一步 Y i1Y i1 F i1X i2(Y i1)2R2F i2Y i1

直线与圆弧插补实验

实验一工作台直线插补运动 1 实验目的 1.了解工作台直线插补原理和算法; 2.在掌握直线插补原理的基础上实现平面绘图。 2 实验设备 1.直线/旋转工作台; 2.工作台控制箱一台; 3.笔架夹持器、画笔及画板。 3 实验原理 本实验利用逐点比较法插补直线,逐点比较法在第一象限的直线插补原理如下图: 现加工OE直线。如果刀具动点在OE直线上方或在该直线上,则令刀具沿X正方向进给一步;若刀具动点在OE直线下方,则令刀具沿Y轴正方向进给一步,如此循环直到加工到E点。判别刀具动点的位置根据偏差判别公式,第一象限直线插补的偏差判别公式如下: Fi = Xe Y i -Y e X i

Fi≥0时,偏差判别公式为 F i+1=F i -Ye 向X正方向进给 Fi<0时,偏差判别公式为 F i+1= F i+Xe,向Y正方向进给 逐点比较法插补节拍:逐点比较法插补需要四个节拍,即偏差判别、进给、偏差计算和终点判别。 4.4 实验步骤 1.按使用说明书上将工作台组合成二自由度直线工作台,安装好笔架夹持器,放置好画板,并正确连接电缆。 2.安装上笔架夹持器及画笔,在桌面相应位置放好画板,使笔尖接触到画板; 3.接通控制箱电源; 4.启动计算机,运行工作台控制软件; 5.在“工作台组合方式”界面中选择X直线工作台和Y直线工作台; 6.单击主界面“工作台复位”按钮,工作台进行回零运动,运动完成后工作台处于零点位置; 7.把画笔安装到笔架夹持器上,使笔尖接触到画板; 8.单击“直线插补”按钮; 9.加速方式选择“梯形”,插补目标X轴填写0,Y轴填写-30,点击“运动”按钮,画出一条直线, 10.插补目标X轴填写30,Y轴填写30,点击“运动”, 11.插补目标X轴填写30,Y轴填写0,点击“运动”,

直线及圆弧插补程序--逐点比较法

此程序是根据《微型计算机控制技术》(第二版)清华大学出版社 第三章数字控制技术——3.2插补原理中的3.2.1逐点比较法的直线插补,3.2.2逐点比较法圆弧插补编写的。其中的变量定义,原理依据均来源于此,如有疑问,请参考书中的讲解。尤其是例子,以下两个程序的第一个运行图均与例题中的一致。 一、四象限直线插补程序 分别加工第一、二、三、四象限直线,起点均为(0,0),终点坐标为(NX,NY),进行插补计算。 程序中(NX,NY)为终点坐标;NXY为总步数;XOY=1,2,3,4,分别为第一、二、三、四象限; ZF=1,2,3,4,分别代表+x,-x,+y,-y走步方向;FM为加工点偏差,初值为0。 源程序: # include "stdio.h" # include "string.h" # include "math.h" void main() { int NX,NY,NXY,BS,XOY,ZF; int FM=0; char a[10]="+X",b[10]="-X",c[10]="+Y",d[10]="-Y",e[10]; printf("\n\n请输入NX,NY\n"); scanf("%d %d",&NX,&NY); {if(NX>0) if(NY>0)

XOY=1; else XOY=4; else if(NY>0) XOY=2; else XOY=3;} printf("终点在第%d象限\n",XOY); printf("\n 步数坐标进给偏差计算终点判断\n\n"); BS=fabs(NX) + fabs(NY); for(NXY= fabs(NX) + fabs(NY)-1;NXY>=0;NXY--) { if(FM>=0) {if(XOY==1||XOY==4) { ZF=1; strcpy(e,a);} else { ZF=2; strcpy(e,b); } FM=FM-fabs(NY); printf(" %d %s FM=%d NXY=%d\n\n",BS-NXY,e,

(完整版)vb圆弧插补程序

Private Sub Command1_Click() Const pi = 3.14159265 Picture1.ForeColor = vbBlack Picture1.DrawWidth = 2 Picture1.Line (50, 500)-(50, 5500) Picture1.Line (50, 5500)-(6500, 5500) Picture1.Line (80, 600)-(50, 500) Picture1.Line (20, 600)-(50, 500) Picture1.Line (6400, 5450)-(6500, 5500) Picture1.Line (6400, 5550)-(6500, 5500) Picture1.ForeColor = vbRed Picture1.DrawWidth = 3 If Int(Text1) = 0 Then Picture1.Circle (50, 5500), Sqr(Int(Text1) * Int(Text1) + Int(Text2) * Int(Text2)) * 400, , Atn(Int(Text4) / Int(Text3)), pi / 2 Else Picture1.Circle (50, 5500), Sqr(Int(Text1) * Int(Text1) + Int(Text2) * Int(Text2)) * 400, , Atn(Int(Text4) / Int(Text3)), Atn(Int(Text2) / Int(Text1)) End If End Sub Private Sub Command2_Click() Dim k, m, j, l, n, F(20) As Integer m = 0 l = Text1.Text k = Text2.Text F(m) = 0 Picture1.ForeColor = vbGreen Picture1.DrawWidth = 3 j = Abs(Int(Text1) - Int(Text3)) + Abs(Int(Text2) - Int(Text4)) Form1.CurrentX = 200 Form1.CurrentY = 200 Print "初始:进给方向 " & "F(m)=0" & " X0=" & Int(Text1) & " Y0=" & Int(Text2) & " ∑ = " & j For n = 1 To j If F(m) >= 0 And j > 0 Then m = m + 1 k = k - 1 F(m) = F(m - 1) - 2 * Abs(k + 1) + 1 Picture1.Line (50 + 400 * l, 5500 - k * 400)-(50 + 400 * l, 5500 - (k + 1) * 400) Form1.CurrentX = 200 Form1.CurrentY = 200 + m * 300 Print "第" & m & "步" & " -△y F(" & m & ")= " & F(m) & " " & "x=" & l & " " & "y="; k & " ∑=" & j - n Else l = l + 1 m = m + 1 Picture1.Line (50 + 400 * l, 5500 - k * 400)-(50 + 400 * (l - 1), 5500 - k * 400) F(m) = F(m - 1) + 2 * Abs(l - 1) + 1 Form1.CurrentX = 200 Form1.CurrentY = 200 + m * 300 Print "第" & m & "步" & " +△x F(" & m & ")= " & F(m) & " " & "x="; l & " " & "y="; k & " ∑=" & j - n End If Next n End Sub Private Sub Command3_Click() Text1.Text = "" Text3.Text = "" End Sub Private Sub Command4_Click() End End Sub

逐点比较法直线插补圆弧插补实例

N=6+4=10,将其存入终点判别计数器中,每进给一步减 1,若N=0,则停止插补。 (1)偏差函数构造 对于第一象限直线 0A 上任一点(X,Y): X/Y = Xe/Ye Pi (Xi , Yi ),则该点的偏差函数 Fi 可表示为: (2 )偏差函数字的递推计算 采用偏差函数的递推式(迭代式):既由前一点计算后一点 Fi =Yi Xe -XiYe 若Fi>=0,规定向 +X 方向走 Xi+1 = Xi +1 Fi+1 = XeYi 讦e(Xi +1)=Fi 讦e 若Fi<0,规定+Y 方向走一步,则有 Yi+1 = Yi +1 Fi+1 = Xe(Yi +1)-YeXi =Fi +Xe (3 )终点判别 直线插补的终点判别可采用三种方法。 逐点比较法直线插补 若刀具加工点为 若 Fi= 0, 表示加工点位于直线上; 若 Fi> 0, 表示加工点位于直线上方; 若 Fi< 0, 表示加工点位于直线下方。

1)判断插补或进给的总步数:2)分别判断各坐标轴的进给步数;3)仅判断进给步数较多的坐标轴的进给步数。 (4)例 对于第一象限直线0A终点坐标Xe=6 ,Ye=4,插补从直线起点0开始,故F0=0。终点判别是判断进给总步数

10 4 逐点比较法圆弧插补(1)偏差函数构造 任意加工点Pi (Xi , Yi),偏差函数Fi可表示为 若Fi=0,表示加工点位于圆上; 若Fi >0,表示加工点位于圆外; 2

若Fi<0,表示加工点位于圆内 (2)偏差函数的递推计 算 1)逆圆插补 若F> 0,规定向-X方向走一步X i 1 X i 若Fi<0,规定向+Y方向走一步 2)顺圆插补 若Fi > 0,规定向-Y方向走一步若Fi<0,规定向+y方向走一步 (3 )终点判 别 1 )判断插补或进给的总步数: 2)分别判断各坐标轴的进给步数: (4)例F i Y i F i Y i F i X i 1 F i 1 N x 对于第一象限圆弧AB,起点A(4,0), (X i Y i X i2 Y i X i2 X i (X i X a X a 终点 1 1)2 (Y i (Y i 1 1)2 X b X b B (0, Y i2 1)2 1)2 Y i2 Y a R2 R2 R2 R2 Y b N y F i F i F i F i Y a 2X i 2Y i 2Y i 2X i Y b

步进驱动系统与数控圆弧插补程序的设计说明

JIANGSU UNIVERSITY OF TECHNOLOGY 课程设计题目: 步进驱动系统与数控圆弧插补程序设计 综合训练题目: 连接电路和机床进给电机驱动器实现第二象限逆圆弧插补加工 学院名称: 机械学院 专 业: 班 级: 姓 名: 学 号: 指导教师: 课程设计与综合训练 说明书

2016年1月 课程设计与综合训练任务书

课程设计题目:步进驱动系统与数控圆弧 插补程序设计 综合训练题目:连接电路和机床进给电机驱动器 实现第二象限逆圆弧插补加工 摘要:通过对微控制器-PLC的学习进行了为期三周的课程设计,本次课程设计是以第二象限逆圆弧插补为例。PLC在工业控制应用非常广泛,主要是因为

其稳定可靠。本设计即根据自制的车数控平台(双轴平台),通过插补运算,利用FX3uPLC发出脉冲,从而控制步进电机的运行,按照插补程序画出轨迹。从而初步掌握步进电机控制系统的设计方法,仿真数控车加工平台加工零件的加工轨迹。 关键词:FX3U-64M ; 步进电机; NR2插补; 目录 第一章概述 (5) 1.1 本次课程设计综合训练对象及容 (5) 1.2 课程设计综合训练任务书及要求 (5) 第二章机电伺服传动系统设计及图形绘制 (7)

2.1 步进电机的选择和齿轮传动比的计算 (7) 2.1.1 系统方案设计 (7) 2.1.2 传动比计算和步进电机的选择 (9) 2.2 圆柱齿轮减速器的设计计算 (15) 2.2.1 X向齿轮减速器的设计计算 (15) 2.2.2 Z向齿轮减速器的设计计算 (17) 2.2.3 丝杠的选择 (19) 2.3 联轴器选择 (24) 2.4 轴承选择 (24) 2.5 键 (25) 2.6 齿轮结构设计的选择 (25) 2.7 传动系统结构设计和图形绘制 (25) 第三章机电伺服系统微控制器电器线路及程序设计 (27) 3.1开环控制系统 (27) 3.2 三菱PLC驱动电路设计 (28) 3.3 PLC插补程序设计概述 (30) 3.4 程序设计调试 (35) 参考文献 (43) 第一章概述

直线插补,圆弧插补

数控技术第三次作业 题目【1】:第一象限的逆圆插补。 1.取该圆弧的圆心坐标为(0,0),起点坐标为(4,0),终点坐标为(0,4),圆弧半径为4. 2.采用逐点比较法的C程序如 #include void main() { int n=8,x,y,f,g; scanf("%d,%d",&x,&y); f=x^2+y^2-16; if (f>=0) g=f-2x+1,x--,n--; printf("%d,%d,%d\n",x,y,n); else g=f+2y+1,y++,n--; printf("%d,%d,%d\n",x,y,n); if (g>=0) g=g-2x+1,x--,n--; printf("%d,%d,%d\n",x,y,n); else g=g+2y+1,y++,n--;

printf("%d,%d,%d\n",x,y,n); while (n==0) printf("it is over"); } 3.程序流程图如下: 4.程序运行后得到一系列插补点,连接插补点得到插补轨迹如

下图所示: 5.综上,第一象限的逆圆采用逐点插补法的插补过程及其解决算法如上所述。 题目【2】:第一象限的直线插补取第一象限的直线方程为Y=X,起点坐标为原点(0,0),终点坐标为(4,4)。 1.基于MATLAB的插补程序如下: Xe = input('输入终点横坐标X\nXe = '); Ye = input('输入终点纵坐标Y\nYe = '); h = input('输入步长\nh = '); Tstep= (abs(Xe)+abs(Ye))/h; Step=0; F=0; Xi=0; Yi=0; x = 0; y = 0; Xi=Xi+h; x = [x Xi]; y = [y Yi]; end Step=1; while (Step

直线圆弧插补程序

直线插补 Private Sub Command1_Click() Command1.Enabled = False Line (x(0), y(0))-(xa, ya) f(0) = 0 For i = 0 To n - 1 If (xa >= 0) And (ya >= 0) Then If f(i) >= 0 Then For j = x(i) To x(i) + 1 Step 0.0001 PSet (j, y(i)), 255 Next j x(i + 1) = x(i) + 1 y(i + 1) = y(i) f(i + 1) = f(i) - ya Else For j = y(i) To y(i) + 1 Step 0.0001 PSet (x(i), j), 255 Next j y(i + 1) = y(i) + 1 x(i + 1) = x(i) f(i + 1) = f(i) + xa End If End If If (xa > 0) And (ya < 0) Then If f(i) >= 0 Then For j = x(i) To x(i) + 1 Step 0.0001 PSet (j, y(i)), 255 Next j x(i + 1) = x(i) + 1 y(i + 1) = y(i) f(i + 1) = f(i) + ya Else For j = y(i) To y(i) - 1 Step -0.0001 PSet (x(i), j), 255 Next j y(i + 1) = y(i) - 1 x(i + 1) = x(i) f(i + 1) = f(i) + xa End If End If If (xa < 0) And (ya > 0) Then If f(i) >= 0 Then For j = x(i) To x(i) - 1 Step -0.0001 PSet (j, y(i)), 255

#VB软件_模拟逐点比较法逆圆弧插补的程序设计

宿迁学院 课程设计说明书 设计题目: 基于VB数字积分法一、二象限逆圆插补计算与仿真 系(部):机电工程系 专业:自动化(数控技术) 班级:09数控本(2) 姓名:李伟 学号:200907052 指导老师(签名):刘萍 起止时间:20 12年12月3 日至20 12年12月7 日共 1 周 20 12 年12 月6 日 正文: 数控原理与系统课程设计说明书 一、课程设计的目的 1)了解连续轨迹控制数控系统的组成原理。 2) 掌握逐点比较法插补的基本原 理。 3)握逐点比较法插补的软件实现 方法。 二.课程设计的任务 逐点比较法插补是最简单的脉冲增

量式插补算法之一,其过程清晰,速度平稳,但一般只用于一个平面内两个坐标轴的插补运算。其基本原理是在刀具按要求轨迹运动加工零件轮廓的过程中,不断比较刀具与被加工零件轮廓之间的相对位置,并根据比较结果决定下一步的进给方向,使刀具向减小偏差的方向进给,且只有一个方向的进给。也就是说,逐点比较法每一步均要比较加工点瞬时坐标与规定零件轮廓之间的距离,依此决定下一步的走向。如果加工点走到轮廓外面去了,则下一步要朝着轮廓内部走;如果加工点处在轮廓的内部,则下一步要向轮廓外面走,以缩小偏差,这样周而复始,直至全部结束,从而获得一个非常接近于数控加工程序规定轮廓的轨迹。逐点比较法插补过程中的每进给一步都要经过偏差判别、坐标进给、偏差计算和终点判别四个节拍的处理,其工作流程图如图所示。 三.逐点比较法基本原理 逐点比较法I 象限逆圆插补 在加工圆弧过程中,人们很容易联想到使用动点到圆心的距离与该圆弧的名义半径进行比较来反映加工偏差。 假设被加工零件的轮廓为第Ⅰ象限逆走向圆弧SE ,,圆心在O (0,0),半径为R ,起点为S (XS ,YS ),终点为E (Xe ,Ye ),圆弧上任意加工动点为N (Xi ,Yi )。当比较该加工动点到圆心的距离ON 与圆弧半径R 的大小时,可获得刀具与圆弧轮廓之间的相对位置关系。 当动点N (Xi ,Yi )正好落在圆弧上时,则有下式成立 22222R Y X Y X e e i i =+=+ 当动点N (Xi ,Yi )落在圆弧外侧时,则有下式成立 22222R Y X Y X e e i i =+>+ 当动点N (Xi ,Yi )落在圆弧内侧时,则有下式成立 22222R Y X Y X e e i i =+<+ 由此可见,取逐点比较法圆弧插补的偏差函数表达式为

什么是插补、直线插补、联动与插补

什么是插补? 试由直线的逐点比较工作节拍说明其插补过程: 答:插补是在组成轨迹的直线段或曲线段的起点和终点之间,按一定的算法进行数据点的密 化工作,以确定一些中间点。从而为轨迹控制的每一步提供逼近目标。 逐点比较法是以四个象限区域判别为特征,每走一步都要将加工点的瞬时坐标与相应给定的图形上的点相比较,判别一下偏差,然后决定下一步的走向。如果加工点走到图形外面去了,那么下一步就要向图形里面走;如果加工点已在图形里面,则下一步就要向图形外面走,以缩小偏差,这样就能得到一个接近给定图形的轨迹,其最大偏差不超过一个脉冲当量(一个 进给脉冲驱动下工作台所走过的距离)。 什么叫直线插补 这个概念般是用在计算机图形显示,或则数控加工的近似走刀等情况下的. 以数控加工为例子 一个零件的轮廓往往是多种多样的,有直线,有圆弧,也有可能是任意曲线,样条线等. 数控机 床的刀具往往是不能以曲线的实际轮廓去走刀的,而是近似地以若干条很小的直线去走刀, 走刀的方向一般是x和y方向. 插补方式有:直线插补,圆弧插补,抛物线插补,样条线插补等 所谓直线插补就是只能用于实际轮廓是直线的插补方式(如果不是直线,也可以用逼近的方 式把曲线用一段段线段去逼近,从而每一段线段就可以用直线插补了).首先假设在实际轮廓 起始点处沿x方向走一小段(一个脉冲当量),发现终点在实际轮廓的下方,则下一条线段沿y 方向走一小段,此时如果线段终点还在实际轮廓下方,则继续沿y方向走一小段,直到在实际 轮廓上方以后,再向x方向走一小段,依次循环类推.直到到达轮廓终点为止.这样,实际轮廓就由一段段的折线拼接而成,虽然是折线,但是如果我们每一段走刀线段都非常小(在精度允许 范围内),那么此段折线和实际轮廓还是可以近似地看成相同的曲线的--------这就是直线插补. 联动与插补 决定质点空间位置需要三个坐标,决定刚体空间位置需要六个坐标。 一个运动控制系统可以控制的坐标的个数称做该运动控制系统的轴数。 一个运动控制系统可以同时控制运动的坐标的个数称做该运动控制系统可联动的轴数。 联动各轴的运动轨迹具有一定的函数关系,例如直线,园弧,抛物线,正弦曲线。 直接计算得出运动轨迹的坐标值往往要用到乘除法,高次方,无理函数,超越函数,会占用很多的CPU时间。 为了实时快速控制运动轨迹,往往预先对运动轨迹进行直线和圆弧拟合,拟合后的运动轨迹仅由直线段和圆弧段所组成,而计算运动轨迹时,每一点的运动轨迹跟据前一个坐标点的数据通过插补运算得到,这样就把计算简化为增量减量移位和加减法。 实现多轴联动的直线插补并不困难,圆弧插补一般为两轴联动。 实现插补运算可以有多种算法,例如"DDA 算法","逐点比较法","正负法","最小偏差法(Bresenham 算法)"等,其中最小偏差法具有最小的偏差和较快的运行速度。

直线插补流程图

直线插补与圆弧插补程序设计 一.直线插补 1.直线插补程序流程图 Y N N 开始 输入相关数据:x0,y0,xe,ye, X=|xe-x0| Y=|ye-y0| n=X+Y x0>=0且y0>=0且xe>=0且ye>=0 CHABU1(F,n,Y,X) x0<=0且y0>=0且xe<=0且ye>=0 x0<=0且y0<=0且xe<=0且ye<=0 CHABU2(F,n,Y,X) CHABU3(F,n,Y,X) x0>=0且y0<=0且xe>=0且ye<=0 CHABU3(F,n,Y ,X) "跨象限运动" 输出子函数计算结果 结束

直线插补程序设计: #include"stdio.h" #include"math.h" void CHABU1 (int F,int n,int Y,int X) /*第一象限调用函数*/ { int nx=0,ny=0; for(;n>0; n--) { printf("运算前:F=%d ",F); i f(F>=0) { printf("需走步数: n=%d\n",n); printf("------向 +xe方向走一步 "); F=F-Y; printf("F=%d ",F); printf("+X\n"); nx++; /*X方向走的总步数*/ } e lse { printf("需走步数: n=%d\n",n); printf("------向 +ye方向走一步 "); F=F+X; printf("F=%d ",F); printf("+Y\n"); ny++; /*y方向走的总步数*/ } } printf("nx=%d,ny=%d\n",nx,ny);

逐点比较法第一象限直线圆弧插补

逐点比较法第一象限直线,圆弧插补编程 逐点比较法是以折线来逼近给定的轨迹,就是每走一步控制系统都要将加工点与给定的图形轨迹相比较,以决定下一步进给的方向,使之逼近加工轨迹。逐点比较法以折线来逼近直线或圆弧,其最大的偏差不超过一个最小设定单位。只要将脉冲当量取得足够小,就可以达到精度要求。逐点比较插补法在脉冲当量为0.01mm,系统进给速度小于3000mm/min时,能很好的满足要求。 一、逐点比较法直线插补 如下图所示设直线 oA 为第一象限的直线,起点为坐标原点o (0 , 0) , 终点坐标为, A( ) , P() 为加工点。 若 P 点正好处在直线 oA 上,由相似三角形关系则有

即 点在直线 oA 上方 ( 严格为直线 oA 与 y 轴正向所包围的区域 ) ,则有 即 若 P 点在直线 oA 下方 ( 严格为直线 oA 与 x 轴正向所包围的区 域 ) ,则有图 3 — 1 逐点比较法第一象限直线插补 即 令 则有: ①如,则点 P 在直线 oA 上,既可向 +x 方向进给一步,也可向 +y 方向进给一步;

②如,则点 P 在直线 oA 上方,应向 +x 方向进给一步,以逼近oA 直线; ③如,则点 P 在直线 oA 下方,应向 +y 方向进给一步,以逼近 oA 直线一般将及视为一类情况, 即时,都向 +x 方向进给一步。 当两方向所走的步数与终点坐标相等时,停止插补。这即逐点比较法直线插补的原理。 对第一象限直线 oA 从起点 ( 即坐标原点 ) 出发,当 F 时, +x 向走一步;当 F<0 时,y 向走一步。 特点:每一步都需计算偏差,这样的计算比较麻烦。 递推的方法计算偏差: 每走一步后新的加工点的偏差用前一点的加工偏差递推出来。 采用递推方法,必须知道开始加工点的偏差,而开始加工点正是直线的起点,故。下面推导其递推公式。 设在加工点 P( ) 处,,则应沿 +x 方向进给一步,此时新加工点的坐标值为

相关文档
相关文档 最新文档