为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

【精品文献】宏程序

2017-12-12 50页 doc 106KB 39阅读

用户头像

is_314871

暂无简介

举报
【精品文献】宏程序【精品文献】宏程序 宏程序 序 大家都在问宏程序~其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是 以直接的公式和语言输入的和C语言很相似...
【精品文献】宏程序
【精品文献】宏程序 宏程序 序 大家都在问宏程序~其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是 以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广.由于现在B类宏程序的大量使 用很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如法兰克OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A类宏的引用; A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx格式输入的xx的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM~~~~~.#xx就是变量号,关于变量号是什么意思再不知道的的话我也就没治了,不过还是教一下吧,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量,一般OTD系统中有#0~~~#100~#149~~~#500~#531关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据.我们如果说#100=30那么现在#100地址内的数据就是30了,就是这么简单.好现在我来说一下H代码,大家可以看到A类宏的标准格式中#xx和xx都是数值,而G65表示使用A类宏,那么这个H就是要表示各个数值和变量号内的数值或者各个变量号内的数值与其他变量号内的数值之间要进行一个什么运算,可以说你了解了H代码A类宏程序你基本就可以应用了,好,现在说一下H代码的各个含义: 以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行, 基本指令: H01赋值;格式:G65H01P#101Q#102:把#102内的数值赋予到#101中 G65H01P#101Q#10:把10赋予到#101中 H02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的数值加上#103的数值赋予#101 G65 H02 P#101 Q#102 R10 G65 H02 P#101 Q10 R#103 G65 H02 P#101 Q10 R20 上面4个都是加指令的格式都是把Q后面的数值或变量号内的数值加上R后面的数 值或变量号内的数值然后等于到P后面的变量号中. H03减指令;格式G65 H03 P#101 Q#102 R#103,把#102的数值减去#103的数值赋予#101 G65 H03 P#101 Q#102 R10 G65 H03 P#101 Q10 R#103 G65 H03 P#101 Q20 R10 上面4个都是减指令的格式都是把Q后面的数值或变量号内的数值减去R后面的数 值或变量号内的数值然后等于到P后面的变量号中. H04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的数值乘上#103的数值赋予#101 G65 H04 P#101 Q#102 R10 G65 H04 P#101 Q10 R#103 G65 H04 P#101 Q20 R10 上面4个都是乘指令的格式都是把Q后面的数值或变量号内的数值乘上R后面的数 值或变量号内的数值然后等于到P后面的变量号中. H05除指令;格式G65 H05P#101 Q#102 R#103,把#102的数值除以#103的数值赋予#101 G65 H05 P#101 Q#102 R10 G65 H05 P#101 Q10 R#103 G65 H05 P#101 Q20 R10 上面4个都是除指令格式都是把Q后面的数值或变量号内的数值除以R后面的数 值或变量号内的数值然后等于到P后面的变量号中.(余数不存,除数如果为0的话会出现112报警) 三角函数指令: H31 SIN正玄函数指令:格式G65 H31 P#101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*SIN#103,也就是说可以直接用这个求出三角形的另 一条边长.和以前的指令一样Q和R后面也可以直接写数值. H32 COS余玄函数指令:格式G65 H32 #101 Q#102 R#103;含义Q后面的#102是三角形的斜边 R后面的#103内存的是角度.结果是#101=#102*COS#103,也就是说可以直接用这个求出三角形的 另一条边长.和以前的指令一样Q和R后面也可以直接写数值. H33和H34本来应该是TAN 和ATAN的可是经过我使用得数并不准确,希望有知道的人能够告诉我是为什么? 开平方根指令: H21;格式G65 H21 P#101 Q#102 ;意思是把#102内的数值开了平方根然后存到#101中(这个指令是非常重要的如果在车椭圆的时候没有开平方跟的指令是没可能用宏做到的. 无条件转移指令: H80;格式:G65 H80 P10 ;直接跳到第10程序段 有条件转移指令: H81 H82 H83 H84 H85 H86 ,分别是等于就转的H81;不等于就转的H82;小于就转的H83;大于就转的H84;小于等于就转的H85;大于等于就转的H86; 格式:G65 H8x P10 Q#101 R#102;将#101内的数值和#102内的数值相比较,按上面的H8x的码带入H8x中去,如果条件符合就跳到第10程序段,如果不符合就继续执行下面的程序段. 用 户 宏 程 序 能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。 l 所存入的这一系列指令——用户宏程序 l 调用宏程序的指令————宏指令 l 特点:使用变量 一( 变量的表示和使用 (一) 变量表示 ,I(I=1,2,3,…)或,[,式子,] 例:,5,,109,,501,,[,1,,2,12] (二) 变量的使用 1( 地址字后面指定变量号或公式 格式: ,地址字,,I ,地址字,,,I ,地址字,[,式子,] 例:F,103,设,103,15 则为F15 Z,,110,设,110,250 则为Z,250 X[,24,,18,COS[,1]] 2( 变量号可用变量代替 例:,[,30],设,30,3 则为,3 3( 变量不能使用地址O,N,I 例:下述方法下允许 O,1; I,2 6.00×100.0; N,3 Z200.0; 4( 变量号所对应的变量,对每个地址来说,都有具体数值范围 例:,30,1100时,则M,30是不允许的 5( ,0为空变量,没有定义变量值的变量也是空变量 6( 变量值定义: 程序定义时可省略小数点,例:,123,149 MDI键盘输一( 变量的种类 1. 局部变量,1~,33 一个在宏程序中局部使用的变量 例: A宏程序 B宏程序 … … ,10,20 X,10 不表示X20 … … 断电后清空,调用宏程序时代入变量值 2. 公共变量,100~,149,,500~,531 各用户宏程序内公用的变量 例:上例中,10改用,100时,B宏程序中的 X,100表示X20 ,100~,149 断电后清空 ,500~,531保持型变量(断电后不丢失) 3. 系统变量 固定用途的变量,其值取决于系统的状态 例:,2001值为1号刀补X轴补偿值 ,5221值为X轴G54工件原点偏置值 入时必须输入小数点,小数点省略时单位为μm 一( 运算指令 运算式的右边可以是常数、变量、函数、式子 式中,j,,k也可为常量 式子右边为变量号、运算式 1( 定义 ,I,,j 2( 算术运算 ,I=,j+,k ,I=,j,,k ,I=,j,,k ,I=,j,,k 3( 逻辑运算 ,I,,JOK,k ,I,,JXOK,k ,I,,JAND,k 4( 函数 ,I,SIN[,j] 正弦 ,I,COS[,j] 余弦 ,I,TAN[,j] 正切 ,I,ATAN[,j] 反正切 ,I,SQRT[,j] 平方根 ,I,ABS[,j] 绝对值 ,I,ROUND[,j] 四舍五入化整 ,I,FIX[,j] 下取整 ,I,FUP[,j] 上取整 ,I,BIN[,j] BCD?BIN(二进制) ,I,BCN[,j] BIN?BCD 1( 说明 1) 角度单位为度 例:90度30分为90(5度 2) ATAN函数后的两个边长要用“1”隔开 例:,1,ATAN[1],[,1]时,,1为了35(0 3) ROUND用于语句中的地址,按各地址的最小设定单位进行四舍五入 例:设,1,1(2345,,2,2(3456,设定单位1μm G91 X,,1;X,1(235 X,,2 F300;X,2(346 X[,1,,2];X3(580 未返回原处,应改为 X[ROUND[,1],ROUND[,2]]; 4) 取整后的绝对值比原值大为上取整,反之为下取整 例:设,1,1(2,,2,,1(2时 若,3,FUP[#1]时,则,3,2(0 若,3,FIX[#1]时,则,3,1(0 若,3,FUP[#2]时,则,3,,2(0 若,3,FIX[#2]时,则,3,,1(0 5) 指令函数时,可只写开头2个字母 例:ROUND?RO FIX?FI 6) 优先级 函数?乘除(,,1,AND)?加减(,,,,OR,XOR) 例:,1,,2,,3,SIN[,4]; 7) 括号为中括号,最多5重,园括号用于注释语句 例:,1,SIN[[[#2+#3]*#4+#5]*#6];(3重) 一( 转移与循环指令 1(无条件的转移 格式: GOTO 1; GOTO ,10; 2(条件转移 格式: IF[,条件式,] GOTO n 条件式: ,j EQ,k 表示, ,j NE,k 表示? ,j GT,k 表示, ,j LT,k 表示, ,j GE,k 表示? ,j LE,k 表示? 例: IF[,1 GT 10] GOTO 100; … N100 G00 691 X10; 例:求1到10之和 O9500; ,1,0 ,2,1 N1 IF [,2 GT10] GOTO 2 ,1,,1,,2; ,2,,2,1; GOTO 1 N2 M301(循环 格式:WHILE[,条件式,]DO m;(m,1,2,3) … … … ENDm 说明:1(条件满足时,执行DOm到ENDm,则从DOm的程序段 不满足时,执行DOm到ENDm的程序段 2(省略WHILE语句只有DOm…ENDm,则从DOm到ENDm之间形成死循 环 3(嵌套 4(EQ NE时,空和“0”不同 其他条件下,空和“0”相同 例:求1到10之和 O0001; ,1,0; ,2,1; WHILE [,2LE10] DO1; ,1,,1,,2; ,2,,2,,1; END1; M30; 宏程序1 (2007-09-30 22:27:30) 标签:知识/探索 proe函数公式 名称:正弦曲线 建立环境:Pro/E软件、笛卡尔坐标系 x=50*t y=10*sin(t*360) z=0 名称:螺旋线(Helical curve) 建立环境:PRO/E;圆柱坐标(cylindrical) r=t theta=10+t*(20*360) z=t*3 蝴蝶曲线 球坐标 PRO/E 方程:rho = 8 * t theta = 360 * t * 4 phi = -360 * t * 8 Rhodonea 曲线 采用笛卡尔坐标系 theta=t*360*4 x=25+(10-6)*cos(theta)+10*cos((10/6-1)*theta) y=25+(10-6)*sin(theta)-6*sin((10/6-1)*theta) ********************************* 圆内螺旋线 采用柱座标系 theta=t*360 r=10+10*sin(6*theta) z=2*sin(6*theta) 渐开线的方程 r=1 ang=360*t s=2*pi*r*t x0=s*cos(ang) y0=s*sin(ang) x=x0+s*sin(ang) y=y0-s*cos(ang) z=0 对数曲线 z=0 x = 10*t y = log(10*t+0.0001) 球面螺旋线(采用球坐标系) rho=4 theta=t*180 phi=t*360*20 名称:双弧外摆线 卡迪尔坐标 方程: l=2.5 b=2.5 x=3*b*cos(t*360)+l*cos(3*t*360) Y=3*b*sin(t*360)+l*sin(3*t*360) 名称:星行线 卡迪尔坐标 方程: a=5 x=a*(cos(t*360))^3 y=a*(sin(t*360))^3 名稱:心脏线 建立環境:pro/e,圓柱坐標 a=10 r=a*(1+cos(theta)) theta=t*360 名稱:葉形線 建立環境:笛卡儿坐標 a=10 x=3*a*t/(1+(t^3)) y=3*a*(t^2)/(1+(t^3)) 笛卡儿坐标下的螺旋线 x = 4 * cos ( t *(5*360)) y = 4 * sin ( t *(5*360)) z = 10*t 一抛物线 笛卡儿坐标 x =(4 * t) y =(3 * t) + (5 * t ^2) z =0 名稱:碟形弹簧 建立環境:pro/e 圓柱坐 r = 5 theta = t*3600 z =(sin(3.5*theta-90))+24*t 方程: 阿基米德螺旋线 x = (a +f sin (t))cos(t)/a y = (a -2f +f sin (t))sin(t)/b pro/e关系式、函数的相关说明资料, 关系中使用的函数 数学函数 下列运算符可用于关系(包括等式和条件语句)中。 关系中也可以包括下列数学函数: cos () 余弦 tan () 正切 sin () 正弦 sqrt () 平方根 asin () 反正弦 acos () 反余弦 atan () 反正切 sinh () 双曲线正弦 cosh () 双曲线余弦 tanh () 双曲线正切 注释:所有三角函数都使用单位度。 log() 以10为底的对数 ln() 自然对数 exp() e的幂 abs() 绝对值 ceil() 不小于其值的最小整数 floor() 不超过其值的最大整数 可以给函数ceil和floor加一个可选的自变量,用它指定要圆整的小数字数。 带有圆整参数的这些函数的语法是: ceil(parameter_name或number, number_of_dec_places) floor (parameter_name 或 number, number_of_dec_places) 其中number_of_dec_places是可选值: ?可以被表示为一个数或一个使用者自定义参数。如果该参数值是一个实数,则被截尾成为一个整数。 ?它的最大值是8。如果超过8,则不会舍入要舍入的数(第一个自变量),并使用其初值。 ?如果不指定它,则功能同前期版本一样。 使用不指定小数部分位数的ceil和floor函数,其举例如下: ceil (10.2) 值为11 floor (10.2) 值为 11 使用指定小数部分位数的ceil和floor函数,其举例如下: ceil (10.255, 2) 等于10.26 ceil (10.255, 0) 等于11 [ 与ceil (10.255)相同 ] floor (10.255, 1) 等于10.2 floor (10.255, 2) 等于10.26 曲线表计算 曲线表计算使使用者能用曲线表特征,通过关系来驱动尺寸。尺寸可以是草绘器、零件或组件尺寸。格式如下: evalgraph("graph_name", x) ,其中graph_name是曲线表的名称,x是沿曲线表x-轴的值,返回y值。 对于混合特征,可以指定轨线参数trajpar作为该函数的第二个自变量。 注释:曲线表特征通常是用于计算x-轴上所定义范围内x值对应的y值。当超出范围时,y值是通过外推的方法来计算的。对于小于初始值的x值,系统通过从初始点延长切线的方法计算外推值。同样,对于大于终点值的x值,系统通过将切线从终点往外延伸计算外推值。 复合曲线轨道函数 在关系中可以使用复合曲线的轨道参数trajpar_of_pnt。 下列函数返回一个0.0和1.0之间的值: trajpar_of_pnt("trajname", "pointname") 其中trajname是复合曲线名,pointname是基准点名。 轨线是一个沿复合曲线的参数,在它上面垂直于曲线切线的平面通过基准点。因此,基准点不必位于曲线上;在曲线上距基准点最近的点上计算该参数值。 如果复合曲线被用作多轨道扫瞄的骨架,则trajpar_of_pnt与trajpar或1.0 - trajpar 一致(取决于为混合特征选择的起点)。 关于关系 关系(也被称为参数关系)是使用者自定义的符号尺寸和参数之间的等式。关系捕获特征之间、参数之间或组件组件之间的关系,因此,允许使用者来控制对模型修改的影响作用。 关系是捕获设计知识和意图的一种方式。和参数一样,它们用于驱动模型 ,改变关系也就改变了模型。 关系可用于控制模型修改的影响作用、定义零件和组件中的尺寸值、为设计条件担当约束(例如,指定与零件的边相关的孔的位置)。 它们用在设计过程中来描述模型或组件的不同部分之间的关系。关系可以是简单值(例如,d1=4)或复杂的条件分支语句。 关系类型 有两种类型的关系: ?等式 - 使等式左边的一个参数等于右边的表达式。这种关系用于给尺寸和参数赋值。例如: 简单的赋值:d1 = 4.75 复杂的赋值:d5 = d2*(SQRT(d7/3.0+d4)) ?比较 - 比较左边的表达式和右边的表达式。这种关系通常用于作为一个约束或用于逻辑分支的条件语句中。例如: 作为约束:(d1 + d2) > (d3 + 2.5) 在条件语句中;IF (d1 + 2.5) >= d7 增加关系 可以把关系增加到: ?特征的截面(在草绘模式中,如果最初通过选择“草绘器”>“关系”>“增加”来创建截面)。 ?特征(在零件或组件模式下)。 ?零件(在零件或组件模式下)。 ?组件(在组件模式下)。 当第一次选择关系菜单时,预设为查看或改变当前模型(例如,零件模式下的一个零件)中的关系。 要获得对关系的访问,从“部件”或“组件”菜单中选择“关系”,然后从“模型关系”菜单中选择下列命令之一: ?组件关系 - 使用组件中的关系。如果组件包含一个或多个子组件,“组件关系”菜单出现并带有下列命令: ?当前 - 缺省时是顶层组件。 ?名称 - 键入组件名。 ?骨架关系 - 使用组件中骨架模型的关系(只对组件适用)。 ?零件关系 - 使用零件中的关系。 ?特征关系 - 使用特征特有的关系。如果特征有一个截面,那么使用者就可选择:获得对截面(草绘器)中截面(草绘器)中关系的访问,或者获得对作为一个整体的特征中的关系的访问。 ?数组关系 - 使用数组所特有的关系。 注释: ?如果试图将截面之外的关系指派给已经由截面关系驱动的参数,则系统再生模型时给出错误信息。试图将关系指派给已经由截面之外关系驱动的参数时也同样。删除关系之一并重新生成。 ?如果组件试图给已经由零件或子组件关系驱动的尺寸变量指派值时,出现两个错误信息。删除关系之一并重新生成。 ?修改模型的单位元可使关系无效,因为它们没有随该模型缩放。有关修改单位的详细信息,请参阅“关于公制和非公制度量单位”帮助主。 关系中使用参数符号 在关系中使用四种类型的参数符号: ?尺寸符号 - 支持下列尺寸符号类型: ?d# - 零件或组件模式下的尺寸。 ?d#:# - 组件模式下的尺寸。组件或组件的进程标识添加为后缀。 ?rd# - 零件或顶层组件中的参考尺寸。 ?rd#:# - 组件模式中的参考尺寸(组件或组件的进程标识添加为后缀)。 ?rsd# - 草绘器中(截面)的参考尺寸。 ?kd# - 在草绘(截面)中的已知尺寸(在父零件或组件中)。 ?公差 - 这些是与公差格式相关连的参数。当尺寸由数字的转向符号的时侯出项这 些符号。 ?tpm# - 加减对称格式中的公差;#是尺寸数。 ?tp# - 加减格式中的正公差;#是尺寸数。 ?tm# - 加减格式中的负公差;#是尺寸数。 ?实例数 - 这些是整数参数,是数组方向上的实例个数。 ?p# - 其中#是实例的个数。 注释:如果将实例数改变为一个非整数值,Pro/ENGINEER将截去其小数部分。例 如,2.90将变为2。 ?使用者参数 - 这些可以是由增加参数或关系所定义的参数。 例如: Volume = d0*d1*d2 Vendor = "Stockton Corp." 注释: ?使用者参数名必须以字母开头(如果它们要用于关系的话)。 ?不能使用d#、kd#、rd#、tm#、tp#、或tpm#作为使用者参数名,因为它们是由尺寸保留使用的。 ?使用者参数名不能包含非字母数字字符,诸如!、@、#、$。 23:34 | 添加评论 | 固定链接 | 引用通告 (0) | 记录它 如何计算原木旋切的单板数量 旋切运动学 在旋切过程中,旋刀的刃口在木段横断面上所走过的轨迹,称为旋切曲线(图3-10)。在这里将对下列两个问题进行讨论:设计旋切机运动学的依据和实际旋切时的运动轨迹. 设计旋切机运动学的依据 旋切木段的目的是得到厚度均匀的优质连续单板带,像纸卷展开一样。目前 有两种运动轨迹符合要求:阿基米德螺旋线和圆的渐开线。 阿基米德螺旋线 其基本公式为: x=ɑsinφ cosφ y=ɑφsinφ 从木段上旋出的单板名义厚度即为该曲线在J轴方向上螺线各节的螺距 (φ2=2π+φ1)。 要使?χ=常数,则cosφ必须等于1, φ=90?。当甲φ=90?时,y=aφsin90?=0 ,即刀刃高度为零,刀刃应在x轴线上(即在通过木段回转轴线——卡轴中心线的水平面内)。也可以说,不管要求旋切单板厚度的大小如何,刀刃高度总是为零(h=0) 圆的渐开线 其公式为: x=acosφ1+aφ1sinφ1 y= asinφ1-aφ1cosφ1 式中: φ1-------发生线至坐标中心点之间垂线与x轴之间夹角. 旋刀是沿着平行于x轴方向作直线运动,故其x轴方向上渐开线各节的螺距,即为单板的名义厚度. S=?χ[acos(2π+φ1)+a(2π+φ1)sin(2π+φ1)]-[acosφ1+acosφ1+ aφ1sinφ1] =[acosφ1+ a(2π+φ1)sinφ1] -[acosφ1+2φ1sinφ1] =21πasinφl 若要求S为恒值(S=2πα),φl必须为2πn+270?,因此y=a sin270?— acos270?=-a=h。为了保证单板质量,在旋切加工过程中希望旋刀相对于木 段的后角(切削角),或旋刀后面与铅垂面之间夹角(θ),应随木段旋切直径的 减小而自动变小,而h=-a=-s/2π之值是依s值改变而变化,故此时旋刀 的回转中心也应相应变化,这样旋切机结构太复杂了。由于这个原因,用圆的渐 开线作为设计旋切机旋刀与木段相互间的运动关系是不合适的。 与此相反,阿基米德旋线是比较理想的,不管单板的名义厚度的变化,A值 总为零,旋刀的回转中心线不必改变。因此,目前它被作为设计旋切机旋刀与木 段间运动关系的理论基础。 实际旋切时的运动轨迹 在生产中,旋刀刀刃安装高度(h)不一定同卡轴中心线连线在同一水平 面。这由于旋切木段的树种、旋切条件、旋切单板厚度、旋切机结构及精度不同 等原因。为了得到优质单板,装刀时h?0,可为正值或负值,甚至旋刀中部可 略高于旋刀的两端。在不同旋刀刀刃安装位置(h值不同)时,旋切曲线将为: h>0 此时旋切曲线近似于阿基米德螺旋线; h=0 为阿基米德螺旋线; 0>h>-a 为伸长了的渐开线 h=-a 为渐开线; h 23:02 | 添加评论 | 固定链接 | 引用通告 (0) | 记录它 数学公式 飞碟 球坐标 rho=20*t^2 theta=60*log(30)*t phi=7200*t "rho=200*t" "theta=900*t" "phi=t*90*10" 篮子 圆柱坐标 r=5+0.3*sin(t*180)+t theta=t*360*30 z=t*5 正弦曲线 笛卡尔坐标系 x=50*t y=10*sin(t*360) z=0 螺旋线(Helical curve) 圆柱坐标 r=t theta=10+t*(20*360) z=t*3 蝴蝶曲线 球坐标 rho = 8 * t theta = 360 * t * 4 phi = -360 * t * 8 Rhodonea 曲线 采用笛卡尔坐标系 theta=t*360*4 x=25+(10-6)*cos(theta)+10*cos((10/6-1)*theta) y=25+(10-6)*sin(theta)-6*sin((10/6-1)*theta) 圆内螺旋线 采用柱座标系 theta=t*360 r=10+10*sin(6*theta) z=2*sin(6*theta) 渐开线的方程 r=1 ang=360*t \90*t s=2*pi*r*t \pi*r.t/2 x0=s*cos(ang) y0=s*sin(ang) x=x0+s*sin(ang) y=y0-s*cos(ang) z=0 对数曲线 z=0 x = 10*t y = log(10*t+0.0001) 球面螺旋线 采用球坐标系 rho=4 theta=t*180 phi=t*360*20 双弧外摆线 卡迪尔坐标 l=2.5 b=2.5 x=3*b*cos(t*360)+l*cos(3*t*360) Y=3*b*sin(t*360)+l*sin(3*t*360) 星行线 卡迪尔坐标 a=5 x=a*(cos(t*360))^3 y=a*(sin(t*360))^3 心臟線 圓柱坐標 a=10 r=a*(1+cos(theta)) theta=t*360 葉形線 笛卡儿坐標 a=10 x=3*a*t/(1+(t^3)) y=3*a*(t^2)/(1+(t^3)) 笛卡儿坐标下的螺旋线 x = 4 * cos ( t *(5*360)) y = 4 * sin ( t *(5*360)) z = 10*t 抛物线 笛卡儿坐标 x =(4 * t) y =(3 * t) + (5 * t ^2) z =0 碟形弹簧 圓柱坐标 r = 5 theta = t*3600 z =(sin(3.5*theta-90))+24*t 22:56 | 添加评论 | 固定链接 | 引用通告 (0) | 记录它 7月17日 ,,度锥孔加工 G90G54G00X0Y0M03S2500: G43Z50.H01M08: Z2. #1=0.05 WHILE[#1LE5.]DO1 #2=TAN[15.]*#1 #3=5.-#2 G01Z-#1F50 X-#3F500 G02I#3 G01X0 #1=#1+0.05 END1 G0Z50.M05 G91G28Z0Y0M09 23:03 | 添加评论 | 固定链接 | 引用通告 (0) | 记录它 详解A类宏程序 用户宏功能是提高数控机床性能的一种特殊功能。使用中,通常把能完成某一功能的一系列指令像子程序一样存入存储器,然后用一个总指令代表它们,使用时只需给出这个总指令就能执行其功能。 用户宏功能主体是一系列指令,相当于子程序体。既可以由机床生产厂提供,也可以由机床用户自己编制。 宏指令是代表一系列指令的总指令,相当于子程序调用指令。 用户宏功能的最大特点是,可以对变量进行运算,使程序应用更加灵活、方便。 用户宏功能有A、B两类。这里主要介绍A类宏功能,B类宏功能请参见本课程的B类宏程序介绍。 1、变量 在常规的主程序和子程序内,总是将一个具体的数值赋给一个地址。为了使程序更具通用性、更加灵活,在宏程序中设置了变量,即将变量赋给一个地址。 (1)变量的表示 变量可以用“#”号和跟随其后的变量序号来表示:#i(i,1,2,3......) 例:#5, #109, #501。 (2)变量的引用 将跟随在一个地址后的数值用一个变量来代替,即引入了变量。 例:对于F#103,若#103,50时,则为F50; 对于Z-#110,若#110,100时,则Z为-100; 对于G#130,若#130,3时,则为G03。 (3)变量的类型 0MC系统的变量分为公共变量和系统变量两类。 1)公共变量 公共变量是在主程序和主程序调用的各用户宏程序内公用的变量。也就是说,在一个宏指令中的#i与在另一个宏指令中的#i是相同的。 公共变量的序号为:#100,#131;#500,#531。其中#100,#131公共变量在电源断电后即清零,重新开机时被设置为“0”;#500,#531公共变量即使断电后,它们的值也保持不变,因此也称为保持型变量。 2)系统变量 系统变量定义为:有固定用途的变量,它的值决定系统的状态。系统变量包括刀具偏置变量,接口的输入/输出信号变量,位置信息变量等。 系统变量的序号与系统的某种状态有严格的对应关系。例如,刀具偏置变量序号为#01,#99,这些值可以用变量替换的方法加以改变,在序号1,99中,不用作刀偏量的变量可用作保持型公共变量#500,#531。 接口输入信号#1000,#1015,#1032。通过阅读这些系统变量,可以知道各输入口的情况。当变量值为“1”时,说明接点闭合;当变量值为“0”时,表明接点断开。这些变量的数值不能被替换。阅读变量#1032,所有输入信号一次读入。 2、宏指令G65 宏指令G65可以实现丰富的宏功能,包括算术运算、逻辑运算等处理功能。 一般形式: G65 Hm P#i Q#j R#k 式中: m--宏程序功能,数值范围01,99; #i--运算结果存放处的变量名; #j--被操作的第一个变量,也可以是一个常数; #k--被操作的第二个变量,也可以是一个常数。 例如,当程序功能为加法运算时: 程序 P#100 Q#101 R#102...... 含义为#100,#101,#102 程序 P#100 Q-#101 R#102...... 含义为#100,-#101,#102 程序 P#100 Q#101 R15...... 含义为#100,#101,15 宏程序的运用 录入时间:2007-5-2 19:58:36 来源:admin 点击:36 一、目的和要求 1、实训目的 (1)通过程序编制,熟练使用宏程序指令。 (2)掌握宏程序对程序的控制。 (3)了解宏程序的使用场合。 2、实训要求 (1)严格按照数控车床的操作规程进行操作,防止人身、设备事故的发生。 (2)在自动加工前应由实习指导教师检查各项调试是否正确方可进行加工。 二、相关工艺知识 1、编程要求 (1)宏程序的算术运算 , (加) ― (减) * (乘) ? (除) SIN (正弦) ASIN (反正弦) COS (余弦) ACOS (反余弦) TAN (正切) ATAN (反正切) SQRT (平方根) ABS (绝对值) ROUND (舍入) EXP (指数) LN (对数) FIX (上取整) FUP (下取整) MOD (取余) (2)宏程序的逻辑运算 FQ (等于) NE (不等于) GT (大于) GE (大于且等于) LT (小于) LE (小于且等于) AND (与) OR (或) NOT (非) (3)宏程序转移 GOTO无条件跳转 IF 条件转移 WHILE 当型循环 (4)参数赋值 例:#1,0,“=”称作“赋值号”。 注意:每一个语句只能对一个参数赋值。 多次对一个参数赋值,后续值取代前一数值。 (5)宏程序适用场合 宏程序适用于非圆曲线或者有表达式的曲线。 宏程序适用时一般要写出曲线的参数表方程。 2、宏程序的调用 G65:宏程序调用指令,在此可对参数进行赋值; 宏程序结尾使用M99返回主程序。 3、宏程序的使用过程 宏程序使用过程:首先对参数进行赋值(参数间也可进行相互算术 运算),然后参数与参数间进行逻辑判断,最后控制程序进行跳转,从 而对程序进行控制。 宏程序简介 在 编程 工作中,我们经常把能完成某一功能的一系列指令像子程序那样存人存储器,用一个总指令来代表它们,使用时只需给出这个总指令就能执行其功能所存人的这一系 列指令称作用户宏程序本体,简称宏程序。这个总指令称作用户宏程序调用指令。在编程时,编程员只要记住宏指令而不必记住宏程序。 用 户宏 程序与普通程序的区别在于:在用户宏程序本体中,能使用变量,可以给变量赋值,变量间可以运算,程序可以跳转;而普通程序中,只能指定常量,常量之间不能 运算,程序只能顺序执行,不能跳转,因此功能是固定的,不能变化。用户宏功能是用户提高数控机床性能的一种特殊功能,在相类似工件的加工中巧用宏程序将起 到事半功倍的效果。 宏 程序 本体既可以由机床生产厂提供,也可以由机床用户自己编制。使用时,先将用户宏主体像子程序一样存人到内存里,然后用子程序调用指令调用。 2 用户宏程序本体的编写格式 用 户宏 程序本体的编写格式与子程序的格式相同。 在 用户 宏程序本体中,可以使用普通的NC指令,采用变量的NC指令、运算指令和控制指令。格式如下: O x x xx; # 26= # 4+ # 18 x Cos[# 1〕; G90 GOOX #26; …… …… IF[#22 GE # 9〕GOTO 9; …… N 9 M 9 9 变 量可 以用于宏程序本体,可以指定运算和控制指令。用宏程序调用命令赋予变量实际值。 3 应用实例 3.1 圆弧均布孔位计算宏程序的编程 工 程 上 经常使用圆弧均布的联接孔,而这些孔在图样上往往是不给出每点的坐标,在编程时需要逐点计算,因而增加了编程员的工作量。圆弧孔可用极坐标来描述,若圆心 不在坐标原点上,编程不太方便。现 在 有 的系统提供了圆弧均布孔位计算宏指令,可供直接使用。这里给出扇形面上的圆弧孔的宏程序的编制方法。 (1)宏程 序调用指令 G6 5 P9010 I-J-R-A-B-H-; 式中:I,J- 圆弧中心坐标,不赋值为坐标原点; R— 圆 弧 半 径; A— 第 1孔的角度值,省略时为0; B— 孔 间 角 ,当B>0。时为逆时针方向加工,B H — 孔数,包括第1孔; 如 图 1 所示 可 在参 数NO.2 20中设置70(自定),即G 70=G65 P 9010, (2) 宏程 序本体 O 9010(圆弧均布孔) IF[#11 EQ#0〕GOTO 9;孔数不赋值报警 IF[#18 EQ#0]GOTO 9;圆弧半径不赋值报警 IF〔#2 NE#0」GOTO 2; #2二360.。/#11; 圆弧均布孔间角 N2#33= #4003; 保存03组G代码 #3之。; 孔加工计数初值 WHILE[#3 LT#1〕加1; G90X[#4+# 18*COs[#1+# 3*#2丑〕; X孔 位 坐 标 Y [# 5+# 18二SIN[#1+# 3二#2〕]; Y孔 位 坐 标 # 3二# 3+ 1; ENDI ; GOTO 10; N9# 3000= 1; N10 G#30 M99; (3)编程举例(零件如图2所示) 2.2 椭圆形加工宏程序的编程 实 际应用中,还经常会遇到各种各样的椭圆形加工特征。在现今的数控系统中,无论硬件数控系统,还是软件数控系统,其插补的基本原理是相同的,只是实现插补运算的 方法有所区别。常见的是直线插补和圆弧擂补,没有椭圆插补,手工常规编程无法编制出椭圆加工程序,常需要用电脑逐一编程,但这有时受设备和条件的限制。这 时可以采用拟合计算,用宏程序方式,手工编程即可实现,简捷高效,并且不受条件的限制。加工 如 图3所示的椭圆形的半球曲面,刀具为R8的球铣刀。利用椭圆的参数方程和圆的参数方程来编写宏程序。 其 中,A 为椭圆的长轴,B为椭圆的短轴。 在 上例 中可看出,角度每次增加的大小和最后工件的加工表面质量有较大关系,即记数器的每次变化量与加工的表面质量和效率有直接关系。希望读者在实际应用中注意。 4 结束语 在 编制宏程序时,要牢记变量的种类及特性,不可乱用。因为局部变量、系统变量、公共变量的用途和性质各不相同,局部变量#1-#33是在宏程序中局部使用的变 量,公共变量#100- # 149, # 500- # 531是通过主程序及其调出的子程序通用的变量。公共变量的用途,在系统中没有规定,用户可以自由使用。系统变量是在系统中用途固定的变量,如#200。 一#2932为刀具补偿量,# 3001, # 3002为时钟等。 宏程序在生产中的应用(实例) 记得有家公司,做计算机键盘按件板.此产品的CNC第一道加工工序中,有直径为20的到进行由内到外的口袋加工的周铣削,它用的是cimatron生成的程序,程序很长,而要宏程序则大大的简化编程,大大的减小了在数控系统中占用的容量. 由于此产品口袋的长宽深的具体尺寸记不清了,但并不影响对此类口袋加工的宏程序的描述. 例:假设口袋的长为360,宽为150,深为1.3,用宏指令编写口袋加工的程序. O0001; 备注; #1=360.; 对产品的长进行赋值 ; #2=150.; 对产品的宽进行赋值; #3=20.; 对刀具直径进行赋值; #4=0.8*[#3]; 步距取刀具直径的0.8; #5=[#1-#3]/2; X向的刀具中心坐标; #6=[#2-#3]/2; Y向的刀具中心坐标; #7=106.; X向的初始赋值; #8=1.; Y向的初始赋值; M6T1; . G54G90G00X0.Y0.; . S2000M3; . G43Z20.H1M8; . G0Z2.; . G1Z-1.3F100; . WHILE[#8LE#6]DO1; 若#8的值小于等于#6的值则循环继续; G1Y-#8F400; Y负向切削进给; X#7; X正向切削进给; Y#8; Y正向切削进给; X-#7; X负向切削进给; Y-#8; Y负向切削进给; X0.; X切削进给到原点; #8=#8+#4; Y向进行步距的变换; #7=#7+#4; X向进行步距的变换; END1; 若#8的值大于#6的值则循环结束; G0Z100.M9; . M05; . M30; . [转帖]FANUC宏程序 FANUC宏程序宏程序用户宏程序: 虽然子程序对编制相同加工操作的程序非常有用,但用户宏程序由于 允许使用“变量算术和逻辑运算及条件转移”使得编制相同加工操作 的程序更方便更容易,可将相同加工操作编为通用程序如:型腔加 工宏程序和固定加工循环宏程序,使用时加工程序可用一条简单指 令调出用户宏程序和调用子程序完全一样 变量 说明: 1, 变量的表示 2, 变量的类型 3,变量值的范围 普通加工程序直接用数值指定G代码和移动距离。例如:G01和X100.0 使用用户宏程序时数值可以直接指定或用变量指定,当用变量时,变 量值可用程序或用MDI面板上的操作改变。 计算机允许使用变量名,用户宏程序不行变量用变量符号# 和后 面的变量号指定。 例如:#1 表达式可以用于指定变量号此时表达式必须封闭在括号中。 例如:#[#1+#2-12] 变量根据变量号可以分成四种类型。 变量号变量类型功能。 #0 空变量该变量总是空没有值能赋给该变量。 #1 #33 局部变量局部变量只能用在宏程序中存储数据,例如运算结果当断电时局 部变量被初始化为空,调用宏程序时自变量对局部变量赋值#100 ,#199,#500 ,#999 公共变量公共变量在不同的宏程序中的意义相同,当断电时变量#100 #199初始化为空变量#500 #999 的数据保存,即使断电也不丢失。 #1000 系统变量,系统变量用于读和写CNC 运行时各种数据的变化。例如:刀具 的当前位 置和补偿值。 局部变量和公共变量可以有0值或下面范围中的值: -1047到-10-29 或 10-29到1047 如果计算结果超出有效范围则发出P/S报警No.111 #1=#2+100 G01 X#1 F300 ! 小数点的省略 ! 变量的引用 ! 双轨迹双轨迹控制的公共 变量 ! 未定义的变量 当在程序中定义变量值时小数点可以省略 例当定义#1=123 变量#1的实际值是123.000 为在程序中使用变量值指定后跟变量号的地址当用表达式指定变量 时要把表达式放在括号中 例如G01X[#1+#2]F#3 被引用变量的值根据地址的最小设定单位自动地舍入 例如 当G00X#/ 以1/1000mm 的单位执行时CNC 把12.3456 赋值给 变量#1 实际指令值为G00X12.346; 改变引用变量的值的符号要把负号放在#的前面 例如G00X #1 当引用未定义的变量时变量及地址字都被忽略 例如 当变量#1的值是0 并且变量#2的值是空时G00X#1 Y#2的执行 结果为G00X0 对双轨迹控制系统为每一轨迹都提供了单独的宏变量但是根据参 数No.6036和6037的设定某些公共变量可同时用于两个轨迹 当变量值未定义时这样的变量成为空变量变量#0 总是空变量 它不能写只能读 a 引用 当引用一个未定义的变量时地址本身也被忽略 当#1=<空> 当#1=0 G90 X100 Y#1 G90 X100 G90 X100 Y#1 G90 X100 Y0 ! 变量值的显示 b 运算 除了用<空>赋值以外其余情况下<空>与0 相同 当#1=<空>时当#1=0时 #2=#1 #2=<空> #2=#1 #2=0 #2=#1,5 #2=0 #2=#1,5 #2=0 #2=#1+#1 #2=0 #2=#1+#1 #2=0 (c)条件表达式 EQ和NE中的<空>不同于0 当#1=<空>时当#1=0时 #1 EQ #0 成立 #1 EQ #0 不成立 #1 NE #0 成立 #1 NE #0 不成立 #1 GE #0 成立 #1 GE #0 不成立 #1 GT #0 不成立 #1 GT #0 不成立 ! 当变量值是空白时变量是空 ! 符号********表示溢出当变量的绝对值大于99999999 时或下 溢出当变量的绝对值小于0.0000001时 ! 限制程序号顺序号和任选程序段跳转号不能使用变量 例 下面情况不能使用变量 #1 /#2G00X100.0; N#3Y200.0; 2 系统变量 说明 ! 接口信号 ! 刀具补偿值 系统变量用于读和写NC内部数据例如刀具偏置值和当前位置数据 但是某些系统变量只能读系统变量是自动控制和通用加工程序开发 的基础 是可编程机床控制器PMC 和用户宏程序之间交换的信号 表15.2(a) 接口信号的系统变量 变量号功能 #1000 #1015 #1032 把16位信号从PMC送到用户宏程序变量#1000 到#1015 用于按位读取信号变量#1032 用于一次 读取一个16位信号 #1100 #1115 #1132 把16 位信号从用户宏程序送到PMC 变量#1100 到#1115 用于按位写信号变量#1132 用于一次写 一个16位信号 #1133 变量#1133 用于从用户宏程序一次写一个32 位的 信号到PMC 注意#1133的值为从99999999到+99999999 详细情况请见连接B-63503C-1 用系统变量可以读和写刀具补偿值 表15.2(b) 刀具补偿存储器C 的系统变量 刀具长度补偿H 刀具半径补偿D 补偿 号几何补偿磨损补偿几何补偿磨损补偿 1 200 400 #11001 #2201 #11201 #2400 #11400 #10001 #2001 #10201 #2200 #10400 #13001 #13400 #12001 #12400 当偏置组数小于等于200时也可使用#2001 #2400 ! 宏程序报警 ! 停止和信息显示 ! 时间信息 表15.2(c) 宏程序报警的系统变量 变量号功能 #3000 当变量#3000 的值为0 200 时CNC 停止运行 且报警 在表达式后为不超过26个字符的报警信息 CRT 屏幕上显示报警号和报警信息其中报警号 为变量#3000的值加上3000 例 #3000=1 TOOL NOT FOUND 报警屏幕上显示3001 TOOL NOT FOUND 刀具未找到 程序执行停止并显示信息 报警号功能 #3006 在宏程序中指令#3006=1 MESSAGE 时程序执行前面程序段并停止 当最多到26 个字符的信息由控制输入 和控制输出括住在同一程序段中编程 时信息被显示在外部操作信息屏幕 时间信息可以读和写 表15.2(d) 时间信息的系统变量 变量号功能 #3001 该变量为一个计时器以1 毫秒为计时单位 当电源接通时该变量值复位为0 当达到 2147483648毫秒时该计时器的值返回到0 #3002 该变量为一个计时器当循环起动灯亮时以 一小时为单位计时该计时器即使在电源断 电时也保存该值当达到9544.371767 小时 该计时器的值返回到0 #3011 该变量用于读取当前的日期年/月/日年/ 月/日信息转换成十进制数例如1994 年9 月8日表示为19940928 #3012 该变量用于读取当前的时间时/分/秒时/ 分/秒信息转换成十进制数例如下午3 点 34分56秒表示为153456 ! 自动运行控制可以改变自动运行的控制状态 表15.2(e) 自动运行控制的系统变量#3003 #3003 单程序段辅助功能的完成 0 有效等待 1 无效等待 2 有效不等待 3 无效不等待 当电源接通时该变量的值为0 当单程序段停止无效时,即使单程序段开关设为ON 也不执行单程序段停止, 当不指定等待辅助功能M S 和T 功能完成时,在辅助功能完成之前, 程序执行到下列程序段而且分配完成信号DEN不输出 表15.2(f) 自动运行控制的系统变量#3004 #3004 进给暂停进给速度倍率准确停止 0 有效有效有效 1 无效有效有效 2 有效无效有效 3 无效无效有效 4 有效有效无效 5 无效有效无效 6 有效无效无效 7 无效无效无效 当电源接通时该变量的值为0 当进给暂停无效时 1 当进给暂停按钮被按下时,机床在单段停止方式停止,但是当 用变量#3003使单程序段方式无效时单程序段停止不执行。 2 当进给暂停按钮压下又松开时,进给暂停灯亮,但是机床不停 止程序继续执行,并且机床停在进给暂停有效的第一个程序段, 当进给速度倍率无效时总是100%的倍率而不管机床操作面板上 的进给速度倍率开关的设置。 用户宏程序(MACRO)的编辑方法与G代码程序的编制基本是一样的,不同点是 宏程序是以语句基本单元(不是以字符)进行编辑的。程序实例如下: O9100; G81Z#26R#18F#9K0; IF[#3EQ90]GOTO1; #24=#5001+#24; #25=#5002+#25; N1 WHILE[#11GT0]DO1; #5=#24+#4*COS[#1]; #6=#25+#4*SIN[#1]; G90X#5Y#6; END1; G#3G80; M30; 椭圆 N10 G54 G90 G0 S1500 M03 N12 X0 Y0 Z20. N14 G0 Z1 N16 G1 Z-5. F150. N18 G41 D1 N20 #1=0 (椭圆起始角) N22 #2=34 (椭圆长轴) N24 #3=24 (椭圆短轴) N26 #4=#2*COS[#1] (计算坐标) N28 #5=#3*SIN[#1] N30 #10=#4*COS45 - #5*SIN45 (椭圆外形与水平的角度) N32 #11=#4*SIN45 - #5*COS45 N34 G1 X#10 Y#11 N36 #1=#1+1 (角度增加,精度高可以减小一点的值) N38 IF [#1 LT 370] GOTO26 N40 G40 G1 X0 Y0 N42 G0 Z100 N44 M30 圆变方 上圆周直径D24 方体40 高度30 G54 G90 G00 X0 Y0 Z30. S1500 M3 ,1,-0.5 Z方向每次的进刀量 ,2,11.8 R的每次变化量,第一刀的初值 ,3,12.0357 第一次X,Y方向的初始值 ,4,,3,,2 中间变量。 G00 X-25.Y-2 Z1 N10 G01 Z#1 F150 N12 G41 D1 X-#3 G1 Y#4 G2 X#3 Y#4 R#2 G1 X#4 G2 X#3 Y#4 R#2 G1 Y-#4 G2 X#4 Y-#3 R#2 G1 X-#4 G2 X-#3 Y-#4 R#2 G1 Y#3 G40 X-25. #1=#1-0.5 #2=#2-0.2 #3=#3+0.0357 #4=#3-#2 IF [ #1 GE -30 ] GOTO10 G0 Z100 M5 M30 字号: 大大 中中 小小 宏程序在凸轮轴零件的应用 FANUC 系统宏程序在凸轮轴类零件中的应用 夏林 罗良玲 冯艳 (南昌大学:机电工程学院,江西南昌330029) 随着汽车工业的迅速发展,发动机的性能越来越多的受到厂家的重视,而凸轮轴作为发动机的一个重要部件对于发动机的性能起着举足轻重的作用。因此,如何能更快地加工出高精度的凸轮轴零件变成为一个急需解决的问题。目前,数控技术迅速发展,数控机床的功能日益强大,凸轮轴已更多的采用数控机床进行加工,而由于凸轮轴的形状相似而尺寸各异,这便会导致手工编程大量的重复劳动以及由于坐标计算不准确而引起加工精度的下降。 本文介绍通过FANUC系统宏程序的参数化编程功能对一类凸轮轴零件定制宏程序,通过简单调用来编写特定尺寸凸轮轴加工的NC代码,大幅度的提高了加工精度和效率。 1 凸轮轴的功用及结构特点 凸轮轴是汽车发动机上的一个重要部件,它对各气缸进、排气门的开启和关闭起控制作用,同时还用来驱动分电器、汽油泵等辅助装置,因此,凸轮轴的工作表面应该具有较高的尺寸精度、较小的表面粗糙度和足够的刚度。其结构的主要差别存在于凸轮的数量,形状和位置上,以四缸、六缸、八缸凸轮轴用得最多[1]。转速较低的发动机中,其凸轮轮廓多由几段圆弧组成(如图2所示),而在高转速发动机中则多采用函数凸轮,其轮廓由某种函数曲线构成[2]。 2 凸轮轴零件的结构及加工工艺性分析 2.1 凸轮轴零件的结构 如图1所示为四缸四冲程汽油机凸轮轴相对角位置图,每完成一个工作循环,曲轴旋转两周而凸轮轴只旋转一周,在这期间内,每个气缸都要进行一次进气或排气, 且各缸进气或排气的时间间隔相等,即凸轮轴上各缸同名凸轮(各进气凸轮或各排气凸轮)间的夹角均为360o/4=90o,如图1(b)所示,如果从发动机风扇端看凸轮轴逆时针旋转,则发动机的点火顺序为1—2—4—3[2]。 2.2 零件结构分析 1)形状复杂 凸轮轴大多由几段曲线(包括圆弧)构成,需要计算大量的刀位点。 2)零件的精度要求高 不仅有尺寸精度要求,而且有形位公差要求,加工难度较大。 3 宏程序的特点[3][4][5] FANUC系统用户宏程序是FANUC数控系统及类似产品的特殊编程功能,其最大特点是用户宏程序本体可用变量进行编程,同时具有计算、赋值、选择、跳转及循环等功能。它的变量可分为局部变量(#1-#33),用户可自由使用,公共变量(#100-#199,#500-#599),以及大量的系统变量。用户宏程序分为宏程序A和宏程序B,而且随系统不同指令及变量也会有所不同,本文采用FANUC系统宏程序B加以介绍。鉴于宏程序强大的参数化编程功能,类似于凸轮轴类零件在传统加工中所遇到的难加工问题,可通过用户定制宏程序得到较好的解决。 4 基于上述凸轮轴的宏程序[6][7][8] 对于低速发动机的圆弧凸轮(如图2所示),根据零件的设计尺寸获得不同工作部位的圆弧半径以及转角,根据零件所要求的加工精度计算出插补误差,通过宏程序编程实现这一类凸轮轴零件加工程序的生成。 4.1宏程序本体如下: 结构如图:(加工采用直径编程,F:mm/r) O9001 O9002 O9003 O9004 O9005 4.2源程序及注释:(限于篇幅,程序仅限于说明) 1、O9001 R S ( R:最小圆弧 S:半径允许偏差) #107=2*acos[[#18-#19]/#18]; #110=3.1415926;#111=0.017453292;#112=57.29578049; #100=0; #101=0; #102=0;#13=0; #104=0; #105=0; #106=0; #107=0; #108=0; #109=0; #113=1; M99; 2、O9002 K1 K2 K3 K4 K5 I1 I2 I3 I4 I5 T W (K1:基圆半径 K2:第2段弧半径 K3:第3段弧半径 K4:第4段弧半径 K5:第5段弧半径 I1:第1段圆弧终点与x轴夹角 I2:第1、2段夹角 I3:第2、3段夹角 I4:第3、4段夹角 I5:第4、5段夹角 T:刀具进给量 W:凸轮厚度) #150=#6;#151=#9;#152=#12;#153=#15;#154=#18;#155=#154;#156=#153;#157=#152;# 158=#151; #159=#150; #160=#4*#111;#161=#7*#111;#162=#10*#111;#163=#13*#111;#164=#16*#111; #165=#164; #166=#163; #167=#162; #168=#161; #169=#160;#106=#20; #109=#23; M99; 3、O9003 I1 J1 I2 J2 K1 S (I1:刀具(前一凸轮)距第一凸轮(待加工凸轮)的距离 I2:前一凸轮与待加工凸轮的间距 J1:定位点(前一凸轮)与第一凸轮(待加工凸轮)基圆底的夹角 K1:刀具安全位置(直径) J2:前一凸轮与待加工凸轮基圆底的夹角 S:加工凸轮是否为第一组(是-1,否1)) O9003,O9004,O9005程序略。 5 举例说明: 采用卧式全功能数控车床加工双顶尖装夹(如上图所示刀具从A点开始加工,工件沿箭头方向旋转) % O0010; ………… G65 P9001 R6.626 S0.001; G65 P9002 K18.41 K29.339 K36.112 K62.175 K6.626 I6 I24 I20 I30 I10 T40 W16; G65 P9003 I10 J270 I36 J225 K60 S-1; G65 P9003 I49.5 J90 I36 J135 K60 S1; ………… % 零件加工程序的仿真编译生成: ……... G01 G91 X60.000 Z-7.00 F0.75; X36.820 Z2.00; G91 X0.000 Z0.02 F40.00; G91 X0.000 Z0.02 F40.00; ………… G91 X0.021 Z0.35 F40.00; G91 X0.063 Z0.35 F40.00; ………… 从虚拟仿真生成的加工程序可以看出,通过调用编写的宏程序能够实现零件的加工,而且通过对代码仿真的数据分析,加工精度得到了保证(如图3)。 通过上面例子我们可以看出对于加工类似凸轮轴这样的复杂零件而言,宏程序显示出了它优越性。其具体体现在:首先,与采用传统数控代码进行编程相比,它成倍地缩短了加工程序的代码,节约了机床存贮器的空间。其次,对于类似凸轮轴这样的零件,其轮廓形状复杂而同类零件又具有很大的相似性, 如果采用具体零件具体编程的方法,那么对于一类零件的编程,这种方法将是非常耗时和低效的,因此若能采用宏程序对这一类零件进行编程,采用参数化的尺寸驱动方式,那将是非常的快捷和高效,而且由于采用参数化编程,程序自身具有很好的扩充功能以适应更加复杂零件的数控加工。 简单盲孔宏程序: 自变量赋值说明 O0521 #1=__ 圆孔直径 #2=__ 圆孔深度 #3=__ 平底立铣刀刀具直径 #4=0 Z坐标(绝对值)设为自变量,赋初始值为0 #17=__ Z坐标(绝对值)每次递增量(每层切深即层间距Q) #5=[#1-#3]/2螺旋加工时刀具中心的回转直径 S1000 M03 G54 G90 G00 X0 Y0 Z30 G00 X#5 ?Z[-#4+1]? ?G01 Z-#4 F200? WHILE [#4LT#2] DO1 #4=#4+#17 ?G03 I-#5 Z-#4 F1000? END1 ?G03 I-#5? G01 X[#5-1] G00 Z30 M30 ———————————————————————————————————— —————— 内(直)螺纹宏程序 O0523 S2000 M03 程序开始 G54 G90 G00 X0 Y0 Z30 G65 P1523 A20.650 B-20 C13,5 I1.0 H1.5 粗 G65 P1523 A20.825 B-20 C13.5 I1.0 H1.5 半精 G65 P1523 A21.0 B-20 C13.5 I1.0 H1.5 精 M30 自变量赋值说明 #1=A 螺纹顶径 #2=B 螺纹深度 #3=C 螺纹铣刀半径 #4=I Z坐标设为自变量 #11=H 螺距P O1523 #5=#1-#3 G00 X#5 ?Z[#4+1]? ?G01 Z#4 F200? WHILE [#4GT#2] DO1 #4=#4-#11 ?G02 I-#5 Z#4 F500? END1 G01 X[#5-3] G00 Z30 M99 疑问1:为什么在圆孔程序中做“?...?”记号的这几步程序中Z后面总是“-#4” 而螺纹程序中做“?...?”记号的这几步程序中Z后面总是“#4” 这是为什么呢,为什么圆孔这里会多个“-”号呢,,,, 疑问2 在圆孔程序中大“?...?”这一步步骤中的“I”的含义是什么,, 这一步骤整个含义是什么呢,,, 作者: 老虎吃狮子 2006-10-15 15:32 回复此发言 -------------------------------------------------------------------------------- 2 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! DING 作者: 58.24.216.* 2006-10-17 16:26 回复此发言 -------------------------------------------------------------------------------- 3 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! DDDD 作者: 58.24.216.* 2006-10-19 17:02 回复此发言 -------------------------------------------------------------------------------- 4 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! 给你推荐一个UG视频教程下载的,里面很多UG视频教程,有简单有复杂 下载地址 贴子相关图片: 作者: 59.36.114.* 2006-10-20 14:28 回复此发言 -------------------------------------------------------------------------------- 5 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! DDDDD 作者: 58.24.216.* 2006-10-21 18:17 回复此发言 -------------------------------------------------------------------------------- 6 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! dddd 作者: 58.24.216.* 2006-10-22 16:43 回复此发言 -------------------------------------------------------------------------------- 7 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! 首先声明本人不是高手,回答仅供参考 疑问1:因为"#4=0 Z坐标(绝对值)设为自变量,赋初始值为0 "这个变量在“G01 Z-#4 F200”这句话中相当于G83中的R作用,而在这 “#4=#4+#17”是相当于深度的累计~“G03 I-#5 Z-#4 F1000”是铣孔的语句,Z后跟着负号就很容易解释了~你铣孔不至于往Z的正方向洗吧~另外#2的值一定是正值,否则达成不了D1的循环~ 同理,看"#4=#4-#11 ?G02 I-#5 Z#4 F500“ 可以看出#4累计的是负值,铣孔是往下铣的呀~当然不用加负号了~ G65 P1523 A20.650 B-20 C13,5 I1.0 H1.5 WHILE [#4GT#2] DO1 注意B为-20 当#4大于-20时做DO1,可能这有点问题 好像给人一种不安全的感觉,有可能#4为-20.15时,不铣最后一刀 也许是螺纹的缘故吧~呵呵~ 疑问2: 那是螺旋下刀的,就是三轴联动~ 靠,好像F1000给快了吧~有没有这么牛的铣刀哇~ 作者: xusir98 2006-11-19 10:55 回复此发言 -------------------------------------------------------------------------------- 8 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! 这是一个铣孔的程序,比较完整,没什么BUG,呵呵~ :8411(HELICAL POCKET CYCLE) (DATE 220294 070995-01) (G65/G66 P8411 X* Y* I Z F D T Q - W S R H J) IF[#24EQ#0]GOTO3000 IF[#25EQ#0]GOTO3000 IF[#20GT2]GOTO3000 IF[#4*#26*#9*#7*#20*#17EQ0]GOTO3000 #26=ABS[#26] #4=ABS[#4] IF[#4012EQ67.]GOTO24 G4P500 #24=#5041 #25=#5042 N24IF[#11LT#26]GOTO1009 #11=0 N1009IF[#11NE#0]GOTO1008(H=RE DEPTH) #11=0 N1008IF[#18NE#0]GOTO1007(R=R POINT) #18=5. N1007IF[#19NE#0]GOTO1006(S=Z FEED) #19=100. N1006IF[#23NE#0]GOTO1005(W=WIDTH) #23=1000. N1005IF[#5NE#0]GOTO10(J=PRE-HOLE) #5=0 N10#28=#4-#7(I-D) IF[#28LE0]GOTO3000 IF[#5GT0]GOTO60 #32=-#7(W) GOTO61 N60#32=0 N61#33=0(Z) G52X#24Y#25 G0X0Y0 Z5. G1Z[1-#11]F1000 N19#32=#32+#23 IF[#32+#5GE#28]GOTO62 IF[#32LT#28]GOTO20 N62#32=#28 #5=0 N20G1X[#32+#5]Z-#11F#19 N21#33=#33+#17(Z) IF[#33LT[#26-#11]]GOTO22 #33=#26 #1=#11 #11=0 N22G[1+#20]I-[#32+#5]Z-[#33+#11]F#9 IF[#33EQ#26]GOTO25 GOTO21 N25G[1+#20]I-[#32+#5] G1X0Y0F1000 G0Z[1-#11] IF[#32EQ#28]GOTO99 #33=0 GOTO19 N3000#3000=140(DATA ERROR) N99G90G0Z#18 G52X0Y0 #11=#1 M99 % 作者: xusir98 2006-11-19 11:07 回复此发言 -------------------------------------------------------------------------------- 9 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! 大哥~小弟是初学者怎样才能看懂宏程序~急用~谢谢~ 作者: 123.115.99.* 2008-5-2 21:25 回复此发言 -------------------------------------------------------------------------------- 11 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! 首先要努力参考你的书及我给与以下答 作者: 222.243.19.* 2008-5-18 15:14 回复此发言 -------------------------------------------------------------------------------- 12 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! 62190457本人有丰富的工业设计经验,寻找爱好工业设计的朋友一起创作和创 业....... 作者: 116.77.5.* 2008-5-23 18:39 回复此发言 -------------------------------------------------------------------------------- 13 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! 62190457本人有丰富的工业设计经验,寻找爱好工业设计的朋友一起创作和创 业,本群有许多在职工业设计人士....... 作者: 116.77.5.* 2008-5-23 18:41 回复此发言 -------------------------------------------------------------------------------- 14 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! 你稍微会一点基本的VB就能看懂宏程序了... VB是宏程序的超集. 顺便送个大家一个取系统变量东西. 在Funac系统的数控车里任意位置加一句#100=#2601,然后程序途中用M0暂停,然 后你看看#100等于多少? =shift value 作者: 222.210.217.* 2008-5-28 22:21 回复此发言 -------------------------------------------------------------------------------- 17 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! 有没有检验宏程序的工具啊!!写了些宏程序想检验以下,有什么工具啊,主要是想检 验格式,最好可以出图的 作者: 218.69.101.* 2008-6-27 14:37 回复此发言 -------------------------------------------------------------------------------- 19 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! z-u5000.g1-2000. 1000s-2g. 3000g.g1-2000. m05 m15 作者: 219.133.208.* 2008-7-6 14:35 回复此发言 -------------------------------------------------------------------------------- 20 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! 作者: 58.61.73.* 2008-7-6 22:52 回复此发言 -------------------------------------------------------------------------------- 21 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! % O8121() #23=1500 #10=#1+#2 #29=#31*[TAN[#14]-1/COS[#14]+1] #129=0 G00G90X0Y0 N1IF[#10GT#33]GOTO9 #20=[#30-#109-[TAN[#14]*#10]]+#29 IF[#32EQ0.2]GOTO11 IF[#32EQ0.1]GOTO4 IF[#32EQ0]GOTO2 IF[#20LT#32]GOTO9 G00X-[#20-#32]Y#32 Z-[#10-#2] G01Z-#10F#23 G03R#32X-#20Y0.F[#21*0.7] G03X-#20Y0I#20J0F#21 G03X-[#20*COS[206./#30]]Y-[#20*SIN[206./#30]]R#20F#21 G03R#32X-[[#20-#32]*COS[206/#30]]Y-[#32+[#20-#32]*SIN[206/#30]] GOTO3 N2IF[#20LE0]GOTO9 Z-[#10-#2] G01Z-#10F#21 G01X#20F#21 G03X#20I-#20F#21 G01X0Y0 GOTO3 N4#106=1 IF[#31GT3]GOTO1000 #106=0.3 N1000 #120=FUP[#2/#106] #121=#2/#120 #107=[#109-#108]*2*.75 IF[#20LT#107/2]GOTO9 G00G90X[#107/2]Y0 G01Z-[#10-#2]F#23 #122=#10-#2 #123=#122+#121 N222G03X[#107/2]I-[#107/2]Z-#123F#21 IF[#123EQ#10]GOTO223 #123=#123+#121 IF[#123LT#10]GOTO222 #123=#10 GOTO222 N223G01X0Y0F#21 #127=#20/[FUP[#20/#107]] #128=#127 WHILE[[#128]LE#20]DO1 G03X#128R[#128-#127/2]F#21 G03X-#128R#128F#21 #128=#128+#127 END1 IF[#128GT#20]THEN#128=#20 G03X#128R#128F#21 G01Z-[#10-.5] GOTO3 N11IF[#20LE0]GOTO9 IF[#129EQ0.9]GOTO12 G00X#20 G01Z-[#10-#2]F#23 #129=0.9 N12IF[#14EQ0]GOTO13 G01X#20F#21 N13G03X#20I-#20Z-#10F#21 IF[#10NE#3]GOTO3 X#20I-#20 N3IF[#10EQ#3]GOTO9 #10=#10+#2 IF[#10LT#3]GOTO1 #10=#3 GOTO1 N9G00Z150. M99 % 作者: 121.11.142.* 2008-8-10 18:34 回复此发言 -------------------------------------------------------------------------------- 22 回复:【求助】关于数控宏程序的问题!请大家帮忙一下!谢谢!!! O0521 #1=__ 圆孔直径 #2=__ 圆孔深度 #3=__ 平底立铣刀刀具直径 #4=0 Z坐标(绝对值)设为自变量,赋初始值为0 #17=__ Z坐标(绝对值)每次递增量(每层切深即层间距Q) #5=[#1-#3]/2螺旋加工时刀具中心的回转直径 S1000 M03 G54 G90 G00 X0 Y0 Z30 G00 X#5 ?Z[-#4+1]? ;铣前的安全高度。#4你自己上面有注解。 ?G01 Z-#4 F200? ;铣的平面 WHILE [#4LT#2] DO1 #4=#4+#17 ?G03 I-#5 Z-#4 F1000? ;这也是个加工圆弧的程序,I=圆心-终点。这个是控制Z 控制X完成空间螺旋的程序段。 S只有1000,你F也1000, END1 ?G03 I-#5? 同上。只不过这个是平面圆弧 G01 X[#5-1] G00 Z30 M30
/
本文档为【【精品文献】宏程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索