A. 如何用宏程序车偏心圆
车偏心的宏程利用G32与车削同心轴不同,偏心轴车削径向进给后,当z 向开始进给时主轴的旋转角度应与前一刀严格一致,否则偏心轴的轴线偏移方向将是随机的,会导致偏心轴车出来出现很多问题而以失败告终。因此在正常切削进给前加入G32引导程 ,G32指令运行时与G0、G02、G03 等准备功能不同,其刀具的轴线进给时刻不是随机的。只有当数控系统接收到主轴脉冲编码器发出的zero 脉冲信号后才可驱动z轴电机进给,因此G32指令在 车削螺纹多次进给时才不会乱加。车削偏心轴用G32,二者之间不允许做暂停,能有效解决主轴的定向问题。另外还需注意,在切削过程中不允许操作者改变机床操作面板上的进给倍率修调旋钮(G32进给倍率修调将被屏蔽,其他插补功能不会屏蔽)
B. 法拉克G代码(车床和加工中心),循环指令格式,指令格式要详细,举例子,宏程序怎么弄的!要详细 11
数控编程(数控技术)---标准G代码与标准M代码
数控机床标准G代码
准备功能字是使数控机床建立起某种加工方式的指令,如插补、刀具补偿、固定循环等。G功能字由地址符G和其后的两位数字组成,从G00—G99共100种功能。JB3208-83标准中规定如下表:
表 准备功能字G
代码 功能作用范围 功能 代码 功能作用范围 功能
G00 点定位 G50 * 刀具偏置0/-
G01 直线插补 G51 * 刀具偏置+/0
G02 顺时针圆弧插补 G52 * 刀具偏置-/0
G03 逆时针圆弧插补 G53 直线偏移注销
G04 * 暂停 G54 直线偏移X
G05 * 不指定 G55 直线偏移Y
G06 抛物线插补 G56 直线偏移Z
G07 * 不指定 G57 直线偏移XY
G08 * 加速 G58 直线偏移XZ
G09 * 减速 G59 直线偏移YZ
G10-G16 * 不指定 G60 准确定位(精)
G17 XY平面选择 G61 准确定位(中)
G18 ZX平面选择 G62 准确定位(粗)
G19 YZ平面选择 G63 * 攻丝
G20-G32 * 不指定 G64-G67 * 不指定
G33 螺纹切削,等螺距 G68 * 刀具偏置,内角
G34 螺纹切削,增螺距 G69 * 刀具偏置,外角
G35 螺纹切削,减螺距 G70-G79 * 不指定
G36-G39 * 不指定 G80 固定循环注销
G40 刀具补偿/刀具偏置注销 G81-G89 固定循环
G41 刀具补偿--左 G90 绝对尺寸
G42 刀具补偿--右 G91 增量尺寸
G43 * 刀具偏置--左 G92 * 预置寄存
G44 * 刀具偏置--右 G93 进给率,时间倒数
G45 * 刀具偏置+/+ G94 每分钟进给
G46 * 刀具偏置+/- G95 主轴每转进给
G47 * 刀具偏置-/- G96 恒线速度
G48 * 刀具偏置-/+ G97 每分钟转数(主轴)
G49 * 刀具偏置0/+ G98-G99 * 不指定
注:*表示如作特殊用途,必须在程序格式中说明
数控机床标准M代码
辅助功能字是用于指定主轴的旋转方向、启动、停止、冷却液的开关,工件或刀具的夹紧和松开,刀具的更换等功能。辅助功能字由地址符M和其后的两位数字组成。JB3208-83标准中规定如下表:
表 辅助功能字M
代码 功能作用范围 功能 代码 功能作用范围 功能
M00 * 程序停止 M36 * 进给范围1
M01 * 计划结束 M37 * 进给范围2
M02 * 程序结束 M38 * 主轴速度范围1
M03 主轴顺时针转动 M39 * 主轴速度范围2
M04 主轴逆时针转动 M40-M45 * 齿轮换档
M05 主轴停止 M46-M47 * 不指定
M06 * 换刀 M48 * 注销M49
M07 2号冷却液开 M49 * 进给率修正旁路
M08 1号冷却液开 M50 * 3号冷却液开
M09 冷却液关 M51 * 4号冷却液开
M10 夹紧 M52-M54 * 不指定
M11 松开 M55 * 刀具直线位移,位置1
M12 * 不指定 M56 * 刀具直线位移,位置2
M13 主轴顺时针,冷却液开 M57-M59 * 不指定
M14 主轴逆时针,冷却液开 M60 更换工作
M15 * 正运动 M61 工件直线位移,位置1
M16 * 负运动 M62 * 工件直线位移,位置2
M17-M18 * 不指定 M63-M70 * 不指定
M19 主轴定向停止 M71 * 工件角度位移,位置1
M20-M29 * 永不指定 M72 * 工件角度位移,位置2
M30 * 纸带结束 M73-M89 * 不指定
M31 * 互锁旁路 M90-M99 * 永不指定
M32-M35 * 不指定
注:*表示如作特殊用途,必须在程序格式中说明
[ 指令格式的说明 ]
指令 说 明
G17 指定圆弧在XpYp 平面
G18 指定圆弧在XpZp 平面
G19 指定圆弧在YpZp 平面
G02 顺时针方向圆弧插补(CW)
G03 逆时针方向圆弧插补(CCW)
Xp__ X 轴或平行于X 轴的指令值(由参数No.1022 设定)
Yp__ Y 轴或平行于Y 轴的指令值(由参数No.1022 设定)
Zp__ Z 轴或平行于Z 轴的指令值(由参数No.1022 设定)
I__ 圆弧中心相对于起点的X 轴的距离(带符号)
J__ 圆弧中心相对于起点的Y 轴的距离(带符号)
K__ 圆弧中心相对于起点的Z 轴的距离(带符号)
R__ 圆弧半径指定的带符号的圆弧半径
F__ 沿圆弧的进给率
G 代码组别 功能附注
G00 01 快速定位 模态
G01 直线插补 模态
G02 顺时针圆弧插补 模态
G03 逆时针圆弧插补 模态
G04 00 暂停 非模态
*G10 数据设置 模态
G11 数据设置取消 模态
G17 16 XY平面选择 模态
G18 ZX平面选择(缺省) 模态
G19 YZ平面选择 模态
G20 06 英制(in) 模态
G21 米制(mm) 模态
*G22 09 行程检查功能打开 模态
G23 行程检查功能关闭 模态
*G25 08 主轴速度波动检查关闭 模态
G26 主轴速度波动检查打开 非模态
G27 00 参考点返回检查 非模态
G28 参考点返回 非模态
G31 跳步功能 非模态
*G40 07 刀具半径补尝取消 模态
G41 刀具半径左补尝 模态
G42 刀具半径右补尝 模态
G43 00 刀具长度正补尝 模态
G44 刀具长度负补尝 模态
G45 刀具长度补尝取消 模态
G50 00 工件坐标原点设置,最大主轴速度设置 非模态
G52 局部坐标系设置 非模态
G53 机床坐标系设置 非模态
*G54 14 第一工件坐标系设置 模态
G55 第二工件坐标系设置 模态
G56 第三工件坐标系设置 模态
G57 第四工件坐标系设置 模态
G58 第五工件坐标系设置 模态
G59 第六工件坐标系设置 模态
G65 00 宏程序调用 非模态
G66 12 宏程序模态调用 模态
*G67 宏程序模态调用取消 模态
G73 00 高速深孔钻孔循环 非模态
G74 工旋攻螺纹循环 非模态
G75 精镗循环 非模态
*G80 10 钻孔固定循环取消 模态
G81 钻孔循环
G84 攻螺纹循环 模态
G85 镗孔循环??
G86 镗孔循环 模态
G87 背镗循环 模态
G89 镗孔循环 模态
G90 01 绝对坐标编程 模态
G91 增量坐标编程 模态
G92 工件坐标原点设置 模态
注:1.当机床电源打开或按重置键时,标有"* "符号的G代码被激活,即缺省状态。
2 . 不同组的G代码可以在同一程序段中指定;如果在同一程序段中指定同组G代码,.最后指定的G代码有效。
3.由于电源打开或重置,使系统被初始化时,已指定的G20或G21代码保持有效.
4.由于电源打开被初始化时,G22代码被激活;由于重置使机床被初始化时, 已指定的G22或G23代码保持有效.
编码字符的意义
字符 意义
A 关于X轴的角度尺寸
B 关于Y轴的角度尺寸
C 关于Z轴的角度尺寸
D 刀具半径偏置号
E 第二进给功能(即进刀速度,单位为 mm/分钟)
F 第一进给功能(即进刀速度,单位为 mm/分钟)
G 准备功能
H 刀具长度偏置号
I 平行于X轴的插补参数或螺纹导程
J 平行于Y轴的插补参数或螺纹导程
L 固定循环返回次数或子程序返回次数
M 辅助功能
N 顺序号(行号)
O 程序编号
P 平行于X轴的第二尺寸或固定循环参数
Q 平行于Y轴的第三尺寸或固定循环参数
R 平行于Z轴的第三尺寸或循环参数圆弧的半径
S 主轴速度功能(表标转速,单位为 转/分)
T 第一刀具功能
U 平行于X轴的第二尺寸
V 平行于Y轴的第二尺寸
W 平行于Z轴的第二尺寸
X 基本尺寸
Y 基本尺寸
Z 基本尺寸
FANUC数控系统的准备功能M代码及其功能
M代码 功能 附注
M00 程序停止 非模态
M01 程序选择停止 非模态
M02 程序结束 非模态
M03 主轴顺时针旋转 模态
M04 主轴逆时针旋转 模态
M05 主轴停止 模态
M06 换刀 非模态
M07 冷却液打开 模态
M08 冷却液关闭 模态
M30 程序结束并返回 非模态
M31 旁路互锁 非模态
M52 自动门打开 模态
M53 自动门关闭 模态
M74 错误检测功能打开 模态
M75 错误检测功能关闭 模态
M98 子程序调用 模态
M99 子程序调用返回 模态
C. “宏程序”是什么意思
大家都在问宏程序~其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后旦察段我们给出Z坐标并且每没蚂次加10um那么宏就会自动算出X坐标并且进行切削,实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是 x0dx0a以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广.由于现在B类宏程序的大量使 x0dx0a用很多书都进行了介绍这里我就不再重复了,但在一些老系统中,比如法兰克OTD系统中由于它的MDI键盘上没有公式符号,连最简单的等于号都没有,为此如果应用B类宏程序的话就只能在计算机上编好再通过RSN-32接口传输的数控系统中,可是如果我们没有PC机和RSN-32电缆的话怎么办呢,那么只有通过A类宏程序来进行宏程序编制了,下面我介绍一下A类宏的引用; x0dx0aA类宏是用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代码的各个含义: x0dx0a以下都以#100和#101和#102,及数值10和20做为例子,应用的时候别把他们当格式就行, x0dx0a基本指令: x0dx0aH01赋值;格式:G65H01P#101Q#102:把#102内的数值赋予到#101中 x0dx0aG65H01P#101Q#10:把10赋予到#101中 x0dx0aH02加指令;格式G65 H02 P#101 Q#102 R#103,把#102的数值加上#103的数值赋予#101 x0dx0aG65 H02 P#101 Q#102 R10 x0dx0aG65 H02 P#101 Q10 R#103 x0dx0aG65 H02 P#101 Q10 R20 x0dx0a上面4个都是加指令的格式都是把Q后面的数值或变量号内的数值加上R后面的数 x0dx0a值或变量号内的数值然后等于到P后面的变量号中. x0dx0aH03减指令;格式G65 H03 P#101 Q#102 R#103,把#102的数值减去#103的数值赋予#101 x0dx0aG65 H03 P#101 Q#102 R10 x0dx0aG65 H03 P#101 Q10 R#103 x0dx0aG65 H03 P#101 Q20 R10 x0dx0a上面4个都是减指令的格式都是把Q后面的数值或变量号内的数值减去R后面的数 x0dx0a值或变量号内的数值然后等于到P后面的变量号中. x0dx0aH04乘指令;格式G65 H04 P#101 Q#102 R#103,把#102的数值乘上#103的数值赋予#101 x0dx0aG65 H04 P#101 Q#102 R10 x0dx0aG65 H04 P#101 Q10 R#103 x0dx0aG65 H04 P#101 Q20 R10 x0dx0a上面4个都是乘指令的格式都是把Q后面的数值或变量号内的数值乘上R后面的数 x0dx0a值或变量号内的数值然后等于到P后面的变量号中. x0dx0aH05除指令;格式G65 H05P#101 Q#102 R#103,把#102的数值除以#103的数值赋予#101 x0dx0aG65 H05 P#101 Q#102 R10 x0dx0aG65 H05 P#101 Q10 R#103 x0dx0aG65 H05 P#101 Q20 R10 x0dx0a上面4个都是除指令格式都是把Q后面的数值或变量号内的数值除以R后面的数 x0dx0a值或变量号内的数值然后等于到P后面的变量号中.(余数不存,除数如果为0的话会出现112报警) x0dx0a三角函数指令: x0dx0aH31 SIN正玄函数指令:格式G65 H31 P#101 Q#102 R#103;含义Q后面的#102是三角形的斜边R后面的#103内存的是角度.结果是#101=#102*SIN#103,也就是说可以直接用这个求出三角形的另 x0dx0a一条边长.和以前的指令一样Q和R后面也可以直接写数值. x0dx0aH32 COS余玄函数指令:格式G65 H32 #101 Q#102 R#103;含义Q后面的#102是三角形的斜边 x0dx0aR后面的#103内存的是角度.结果是#101=#102*COS#103,也就是说可以直接用这个求出三角形的 x0dx0a另一条边长.和以前的指令一样Q和R后面也可以直接写数值. x0dx0aH33和H34本来应该是TAN 和ATAN的可是经过我使用得数并不准确,希望有知道的人能够告诉我是为什么? x0dx0a开平方根指令: x0dx0aH21;格式G65 H21 P#101 Q#102 ;意思是把#102内的数值开了平方根然后存到#101中(这个指令是非常重要的如果在车椭圆的时候没有开平方跟的指令是没可能用宏做到的. x0dx0a无条件转移指令: x0dx0aH80;格式:G65 H80 P10 ;直接跳到第10程序段 x0dx0a有条件转移指令: x0dx0aH81 H82 H83 H84 H85 H86 ,分别是等于就转的H81;不等于就转的H82;小于就转的H83;大于就转的H84;小于等于就转的H85;大于等于就转的H86; x0dx0a格式:G65 H8x P10 Q#101 R#102;将#101内的数值和#102内的数值相比较,按上面的H8x的码带入H8x中去,如果条件符合就跳到第10程序段,如果不符合就继续执行下面的程序段. x0dx0a用 户 宏 程 序 x0dx0a能完成某一功能的一系列指令像子程序那样存入存储器,用一个总指令来它们,使用时只需给出这个总指令就能执行其功能。 x0dx0al 所存入的这一系列指令——用户宏程序 x0dx0al 调用宏程序的指令————宏指令 x0dx0al 特点:使用变量 x0dx0a一. 变量的表示和使用 x0dx0a(一) 变量表示x0dx0a#I(I=1,2,3,…)或#[<式子>] x0dx0a例:#5,#109,#501,#[#1+#2-12] x0dx0a(二) 变量的使用x0dx0a1. 地址字后面指定变量号或公式 x0dx0a格式:<地址字>#I x0dx0a<地址字>-#I x0dx0a<地址字>[<式子>] x0dx0a例:F#103,设#103=15则为F15 x0dx0aZ-#110,设#110=250则为Z-250 x0dx0aX[#24+#18*COS[#1]] x0dx0a2. 变量号可用变量代替 x0dx0a例:#[#30],设#30=3则为#3 x0dx0a3. 变量不能使用地址O,N,I x0dx0a例:下述方法下允许 x0dx0aO#1; x0dx0aI#26.00×100.0; x0dx0aN#3Z200.0; x0dx0a4. 变量号所对应的变量,对每个地址来说,都有具体数值范围 x0dx0a例:#30=1100时,则M#30是不允许的 x0dx0a5. #0为空变量,没有定义变量值的变量也是空变量 x0dx0a6. 变量值定义: x0dx0a程序定义时可省略小数点,例:#123=149 x0dx0aMDI键盘输一. 变量的种类 x0dx0a1. 局部变量#1~#33 x0dx0a一个在宏程序中局部使用的变量 x0dx0a例:A宏程序B宏程序 x0dx0a…… x0dx0a#10=20X#10不表示X20 x0dx0a…… x0dx0a断电后清空,调用宏程序时代入变量值 x0dx0a2. 公共变量#100~#149,#500~#531 x0dx0a各用户宏程序内公用的变量 x0dx0a例:上例中#10改用#100时,B宏程序中的 x0dx0aX#100表示X20 x0dx0a#100~#149断电后清空 x0dx0a#500~#531保持型变量(断电后不丢失) x0dx0a3. 系统变量 x0dx0a固定用途的变量,其值取决于系统的状态 x0dx0a例:#2001值为1号刀补X轴补偿值 x0dx0a#5221值为X轴G54工件原点偏置值 x0dx0a入时必须输入小数点,小数点省略时单位为μm x0dx0a一. 运算指令 x0dx0a运算式的右边可以是常数、变量、函数、式子 x0dx0a式中#j,#k也可为常量 x0dx0a式子右边为变量号、运算式 x0dx0a1. 定义 x0dx0a#I=#j x0dx0a2. 算术运算 x0dx0a#I=#j+#k x0dx0a#I=#j-#k x0dx0a#I=#j*#k x0dx0a#I=#j/#k x0dx0a3. 逻辑运算 x0dx0a#I=#JOK#k x0dx0a#I=#JXOK#k x0dx0a#I=#JAND#k x0dx0a4. 函数 x0dx0a#I=SIN[#j] 正弦 x0dx0a#I=COS[#j] 余弦 x0dx0a#I=TAN[#j] 正切 x0dx0a#I=ATAN[#j] 反正切 x0dx0a#I=SQRT[#j]平方根 x0dx0a#I=ABS[#j]绝对值 x0dx0a#I=ROUND[#j]四舍五入化整 x0dx0a#I=FIX[#j]上取整 x0dx0a#I=FUP[#j]下取整 x0dx0a#I=BIN[#j]BCD→BIN(二进制) x0dx0a#I=BCN[#j]BIN→BCD x0dx0a1. 说明 x0dx0a1) 角度单位为度 x0dx0a例:90度30分为90.5度 x0dx0a2) ATAN函数后的两个边长要用“1”隔开 x0dx0a例:#1=ATAN[1]/[-1]时,#1为了35.0 x0dx0a3) ROUND用于语句中的地址,按各地址的最小设定单位进行四舍五入 x0dx0a例:设#1=1.2345,#2=2.3456,设定单位1μm x0dx0aG91X-#1;X-1.235 x0dx0aX-#2F300;X-2.346 x0dx0aX[#1+#2];X3.580 x0dx0a未返回原处,应改为 x0dx0aX[ROUND[#1]+ROUND[#2]]; x0dx0a4) 取整后的绝对值比原值大为上取整,反之为下取整 x0dx0a例:设#1=1.2,#2=-1.2时 x0dx0a若#3=FUP[#1]时,则#3=2.0 x0dx0a若#3=FIX[#1]时,则#3=1.0 x0dx0a若#3=FUP[#2]时,则#3=-2.0 x0dx0a若#3=FIX[#2]时,则#3=-1.0 x0dx0a5) 指令函数时,可只写开头2个字母 x0dx0a例:ROUND→RO x0dx0aFIX→FI x0dx0a6) 优先级 x0dx0a函数→乘除(*,1,AND)→加减(+,-,OR,XOR) x0dx0a例:#1=#2+#3*SIN[#4]; x0dx0a7) 括号为中括号,最多5重,园括号用于注释语句 x0dx0a例:#1=SIN[[[#2+#3]*#4+#5]*#6];(3重) x0dx0a一. 转移与循环指令 x0dx0a1.无条件的转移 x0dx0a格式:GOTO1; x0dx0aGOTO#10; x0dx0a2.条件转移 x0dx0a格式:IF[<条件式>]GOTOn x0dx0a条件式: x0dx0a#jEQ#k 表示= x0dx0a#jNE#k 表示≠ x0dx0a#jGT#k 表示> x0dx0a#jLT#k 表示< x0dx0a#jGE#k 表示≥ x0dx0a#jLE#k 表示≤ x0dx0a例:IF[#1GT10]GOTO100; x0dx0a… x0dx0aN100G00691X10; x0dx0a例:求1到10之和 x0dx0aO9500; x0dx0a#1=0 x0dx0a#2=1 x0dx0aN1IF[#2GT10]GOTO2 x0dx0a#1=#1+#2; x0dx0a#2=#2+1; x0dx0aGOTO1 x0dx0aN2M301.循环 x0dx0a格式:WHILE[<条件式>]DOm;(m=1,2,3) x0dx0a… x0dx0a… x0dx0a… x0dx0aENDm x0dx0a说明:1.条件满足时,执行DOm到ENDm,则从DOm的程序段 x0dx0a不满足时,执行DOm到ENDm的程序段 x0dx0a2.省略WHILE语句只有DOm…ENDm,则从DOm到ENDm之间形成死循环 x0dx0a3.嵌套 x0dx0a4.EQNE时,空和“0”不同 x0dx0a其他条件下,空和“0”相同 x0dx0a例:求1到10之和 x0dx0aO0001; x0dx0a#1=0; x0dx0a#2=1; x0dx0aWHILE[#2LE10]DO1; x0dx0a#1=#1+#2; x0dx0a#2=#2+#1; x0dx0aEND1; x0dx0aM30;
D. 宏程序如何使用
宏就是用公式来加工零件的,普通加工程序直接用指定G代码和移动距离。
指令(EQ为=,NE不等于, GT大于, LT小与, GE大于等于 ,LE小于等于)WH DO END是运算指令也是英文缩写。
例赋值#2等于5,运算#2=#2+1 运行一次后#2值就是6,运行n次#2值为5+n。
宏程序的作用
数控系统为用户配备了强有力的类似于高级语言的宏程序功能,用户可以使用变量进行算术运算、逻辑运算和函数的混合运算,此外宏程序还提供了循环语句、分支语句和子程序调用语句,利于编制各种复杂的零件加工程序,减少乃至免除手工编程时进行繁琐的数值计算,以及精简程序量。
以上内容参考:网络-宏程序