首页>工作相关>数控宏程序中的变量

数控宏程序中的变量

前言

本文对数控宏程序中的变量做了一个简单的介绍,默认阅读对象为有一定数控手工编程基础的读者,故基础语句部分不再赘述,希望熟悉基础语句部分的读者,可以先浏览一下机床说明书或其他相关资料,熟悉一下基本的语句与格式。

什么是宏程序

宏程序类似电脑上的编程语言,可以在程序中定义变量,并对其进行赋值、运算操作;宏程序具备循环与判断语句,它扩展了手工编程的应用场景,提高了手工编程的灵活性。

宏程序中的变量

cnc_macro_variable_p1

假设需要加工一个正方形,刀具路径长度为50mm,当然实际加工中圆形刀具是无法加工出图片中这样的倾角的,刀具大小我们暂时也不理会,总而言之,先不要在意这些细节,试手工编制程序如下:

G54
M3
G0X0Y0Z0
G1Y-25
G1X25
G1Y25
G1X-25
G1Y-25
G1X25
G0Y0
M5
M30

程序编完,制图气喘吁吁的跑过来告诉你,哎呦不错啊,编程挺熟练啊!就是尺寸设计小了,麻烦把正方形尺寸改大10个mm。虽然心中已经万马奔腾,作为一个有责任有担当的员工,我们还是需要遵从上级的指挥。出于对制图的不信任,这次我多加了个心眼。在程序中增加了一个变量“#1”,先来看看重新编制后的程序。

G54
M3
#1=30
G0X0Y0Z0
G1Y-#1
G1X#1
G1Y#1
G1X-#1
G1Y-#1
G1X#1
G0Y0
M5
M30

可以看到,相比原程序,我们增加了一条“#1=30”的语句,类似于电脑上的C语言,这里的等号我们理解为赋值,也就是让“#1”的值等于30,赋值操作完成之后,后面的“#1”都等价于30,所以新的程序实际加工时可以视为:

G54
M3
#1=30
G0X0Y0Z0
G1Y-30
G1X30
G1Y30
G1X-30
G1Y-30
G1X30
G0Y0
M5
M30

改成这样有什么好处?手动修改程序将25改为30,我们需要修改6个数字,而设置了一个变量后,我们只需要修改一个“#1”的值就可以了。所以当你看见制图又气喘吁吁的跑过来,告诉你由于外加工已经按50mm做了适配,需要改回原来的设计尺寸时,你有了两个选择:

利用满格的怒气值打出一记超必杀;
用早已洞悉一切的表情将”#1=30″后的30修改为25;
在实际生产中,有些容易被变更的尺寸往往在程序的第几十乃至几百行,这个时候将其设置为变量,放在程序的头部,也是一种比较省事的做法。

另一种变量

来看一个案例,某公司做了一堆产品,由于工艺把关不严,产品高低肉眼可见,现在想用数控铣床对每个产品的上下平面做一次精铣。产品仅要求平面平整,对产品高度的一致性不做要求,单台产品一面去除材料厚度约0.2mm即可。每台去对刀吧,似乎有点麻烦,产品要求也不是特别高,有没有取巧的方法呢?答案是有的,这个加工方案的难点在于每个产品z轴平面都不一致,相同点在于,每台去除的料厚基本相同。如果程序能得到每个产品z轴上平面的位置值。那我们的加工高度就是:上平面位置值-0.2mm。

cnc_macro_variable_p2

机床坐标里有个绝对坐标,将刀具对齐产品上平面时,该绝对坐标的位置,即刀具的实际位置。也就是我们所需要的上平面的z轴坐标值,这个坐标值也是一个变量,在法拉克系统中,该坐标值z轴的变量名为#5043,在不同的系统中,绝对坐标值的变量名有所不同。实际使用中以各机床的产品说明书为准。先上图,这张图有一个明显的错误,z轴零点到产品上平面的距离是一个正值,而#5043是一个负值,一般机床的零点都在最高点。还是那句老话,不要在意这些细节……

假设刀具为30mm,产品宽度小于刀具直径,精铣平面只需要x方向走一刀就行,走刀路径长度为150mm。为什么这么假设,因为懒得打太多程序啊。试编程序如下:

G54
M3
G0X0Y0Z#5043
G0Z[#5043-0.2]
G1X150
G0Z#5043
G0X0
M5
M30

程序的本意是将刀具停在工件上平面,运行程序,程序会自动读取当前高度,并在当前高度的基础上下沉0.2mm,然后x轴正方向走150mm,仍旧上浮0.2mm,回x轴零点。但实际加工中会发现,这0.2mm并没有抬起来,而是贴着精铣平面一路火花带闪电的回来了。为什么呢,对刀的时候如果对着绝对坐标系看的话,这个坐标值是不断在变化的,而我们的#5043是一个系统提供的变量,Z轴每发生一次位置变化,#5043就会被赋予一次新的值。程序中使用的值,取决于当前读取到的值,当我们把Z轴下沉0.2mm,再重新去读取的时候,这个#5043的值已经变成了刀具当前高度。即精铣过的平面的高度。所以说机床厂家充值送的变量靠不住啊,还是得靠自己自定义一个变量,我们仍旧使用#1,再新定义一个#2的变量:

G54
M3
#1=#5043
#2=#1-0.2
G0X0Y0Z#1
G0Z#2
G1X150
G0Z#1
G0X0
M5
M30

虽然#1也是变量,但它是我们自定义的,我们只赋值一次,所以后面的#1值不会有变化,重新换产品时,只要把刀具对齐产品上平面,#1会被重新赋值,每运行一次程序,#1会被赋值一次。#2比#1低了0.2mm,所以这次不带火花了,实际上抬刀0.2mm有点太少了。另外上述两例中出现了变量的运算,虽然前面没提,估计大家也应该能看的懂,所以放最后说。变量可以直接在程序中进行运算,支持加减乘除以及其他更为复杂的运算,注意这里的除号应该为“/”,另三个符号请参考小学数学一年级上册。变量的运算与一些运算函数比较枯燥,可以等到需要用到的时候查手册也不迟。关于G0Z[#5043-0.2]的中括号,类似小学数学中……恩……数学中小括号的用途,优先计算的意思。部分机床负值也需要用中括号括起来,比如G0Z#1正常使用,G0Z-#1报错的时候,可以试试G0Z[-#1]。那为啥#2的运算又不用中括号了呢?前面提过这里的等号代表赋值,赋值符号有个默认的属性,就是先运算,后赋值。所以会把后面的算式都计算完毕,再赋值给#2。所以一般也建议在赋值阶段就把运算的事情做好,而不是程序运行当中G0X[#2+1]这样去运行。

变量类型

变量名以“#”开头,以数字结尾,变量分为好几个类型,在法拉克系统中#1-#33属于局部变量,#100~#149属于全局变量,#500~#531同样是公共变量,但是能在断电后保持,#1000之后的为系统变量,比如我们刚才用的 #5043,系统变量由系统定义,一般只能读不能赋值,比如#5043这样的变量,每变动0.001(假设)就会被系统重新赋值一次。一般情况下,前33个变量省着点花就够用了。

标签: CNC

移动端可扫我直达哦~

推荐阅读

cnc 2025-01-03

三菱60S如何删除多余程序

可能很少有工厂还在使用这么老旧的设备了吧,单位就有这么一台,一般拿来开粗,除了内存小一些,手工编程麻烦一点,还是蛮好用的,至于面板上的浮灰就请诸位当作没看见吧。内存小到什么程度呢,平均2~3KB的程序存了30几道,它就开始报空间不足。...

工作相关 CNC

cnc 2024-12-28

Hsv-160u-075型号驱动器报A35处理一例

闲聊的时候最怕空气突然安静,上班的时候则是最怕车间突然变安静——不是停电了,就是设备又故障了。今天一向任劳任怨的华中机床也报了一串错误:百度大致查了一下,说这个报错可能是由于输入的指令脉冲的脉冲频率过高。故障原因:指令脉冲频率过高。指...

工作相关 CNC

cnc 2024-09-07

三菱CNC 64-SM如何复制程序

2024年了,遇到这样一台没有u盘,rs232接口生死难料的设备,也是挺无语的。BOSS以旧换旧淘了这么台设备,于是输入程序成了一个令人头疼的事情。花整半天时间手打了一个程序之后,想起来,这台设备对应的工序类似,所以程序格式基本相同,...

工作相关 CNC

cnc 2024-06-25

数控设备打刀缸紧刀慢松刀快或是紧刀快松到慢

公司某台华中的设备出了点问题,自动换刀的时候刀臂停在了换刀的位置不动弹了。检查了一下气源,供气倒是正常,将刀臂手动摇回初始位置后,按华中官网的指令,用“M69”命令将刀杯回位。检测了一下抓刀的流程,发现松刀时打刀缸下落速度正常,但紧刀...

工作相关 CNC

cnc 2024-06-22

华中数控刀库主要功能M代码含刀套倒下回位

单位多台华中系统的设备,运行稳定,就是时不时会出现一些小问题,比如刀库突然卡死,主轴定位偏移之类的。今天遇到一个因为信号超时引起的异常,换刀时松刀较快,但紧刀的时候气缸回退过慢,松紧刀信号超过了换刀程序的规定时长,从而引发了报警。用活...

工作相关 CNC

cnc 2024-04-17

数控铣刀杆MFWN04镶合金铣刀的代替品

单位加工深槽一直使用镶合金的铣刀,这货因为需要把刀片焊接上去,可能尺寸比较难以控制。博主在淘宝上尝试了很多家店铺的商品,质量偏差较大,不是直径(标称值统一为20的情况下)有较大出入,就是头部研磨过于粗糙,好不容易找到一家图片与产品质量...

工作相关 CNC

cnc 2024-03-07

三菱M60S无刀库报错9.ATC NOT READY

公司的三菱M60S有年头了,原本就是一台二手设备,配置较低,也没有加装刀库。某天操机的师傅过来找,说机床撞刀后报警了,重新开机后报警也没有消除。下去看了一下报警信息:9.ATC NOT READY这个错误太眼熟了,在有刀库的设备上经常...

工作相关 CNC

cnc 2024-03-01

广州数控GSK980MDC黑屏维修一例

清早到公司的时候车间主任告知一台广数的设备黑屏,看了下电气柜,伺服均通电量灯无报警。打开GSK980MDC位置的控制箱,测量了一下配套开关电源的输入部分,220V输入正常,就是没有了低压输出,考虑是开关电源损坏了。开关电源是个易损件,...

工作相关 CNC

cnc 2023-10-28

GSK980数控铣床伺服无报警黑屏一例

生产企业的设备故障犹如家常便饭,坏得多了,虽然不是设备维修人员,现场看上一圈,偶尔也能看出一点门道了。今天遇到一个黑屏的故障,设备系统是广州数控980系统的,广数的系统虽然没有三菱法拉克之类的名声在外,胜在操作简单,工作也很稳定。打开...

工作相关 CNC