什么是用户宏程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.什么是用户宏程序?, e, W" ~8 n0 Z: r$ E0 b$ Q0

( s
在数控编程中,用户宏程序是数控系统中的特殊编程功能。所谓用户宏程序其实是把一组带有变量的子程序事先存储在系统存储器中,并通过主程序中的宏程序调用指令调用并执行这一组程序。由于数控系统的指令功能有限,而宏程序功能可以显著地增强机床的加工能力,同时可精简程序,所以宏程序编程是加工编程的重要补充。/ @+ W0 R5

W& }& q2 [3 J
用户宏程序可以用公式来加工零件,例如加工椭圆,如果用常规的编程方法,需要逐点算出曲线上的点,然后用直线或圆弧进行拟合逼近,所以编程时需要计算很多的点。如果使用用户宏程序,可以直接把椭圆公式编入到程序中,加工零件时系统会自动计算出曲线上各点的坐标,大大减轻了编程的工作量。& ~# p* D% d7 a9 a

2.什么是变量?

变量是指在程序的运行过程中随时可以发生变化的量。

普通加工程序直接用数值指定G代码和移动距离;例如,G01和X100.0等,这些数值都是常量,所以一个程序只能描述一个几何形状。而用户宏程序本体中可以使用变量进行编程,编程时可以使用变量进行算术运算、逻辑运算和函数的混合运算,这样就可以实现编制一个程序,即可加工尺寸不同但是形状相同的工件,加工时只需修改少数几个参数,从而可以使用宏程序执行一些有规律变化的动作。) E7 g, p0 n9 X

变量分局部变量,公共变量(全局变量)和系统变量三种。!

B. g& d3 U+ v7 B5 C+ m
局部变量是一个在宏程序中局部使用的变量,即只在本程序内起作用。例如当宏程序A调用宏程序B而且都有变量#1时,由于变量#1服务于不同的宏程序,所以宏程序A中的#1与宏程序B中的#1不是同一个变量,因此可以赋于不同的值,相互间互不影响。局部变量不能在程序运行时加以修改,只能由程序控制。在使用局部变量时,必须在程序中赋初值。当断电时,局部变量被初始化为空,调用宏程序时,自变量对局部变量赋值。

公共变量贯穿于整个程序过程,即在所有程序中起相同的作用。同样,当宏程序A调用宏程序B而且都有变量#100时,由于#100是全局变量,所以宏程序A中的#100与宏程序B中的#100是同一个变量。全局变量可以程序运行时人为地加以修改。在使用全局变量时,可以不在程序中赋初值,而在加工时由系统MDI面板中输入所需值。

系统变量是系统自动保存的一些与当前运行有关的数据,它的值决定系统的状态。如当前的绝对坐标值、刀具偏置值变量、连接中的输入与输出信号变量、位置信号变量等。系统变

量可以在程序中使用,但不能修改系统变量。

一般情况下变量可以在程序中用赋值语句赋值,也可以在系统面板上直接键入。直接键入可以在不修改程序的情况下,把一个程序用于加工多个不同的工件。

大多数数控系统使用#号后面加几位数字来表示变量号,如#201,西门子系统的变量称为计算参数,用R后面加几位数字来表示变量号,如R15。9 i% q5 A# n

@# m0 y; C
#0是空变量,#0始终是为空,任何情况下都不能给#0赋值。空变量和0的含义是不同的。例如当#1=0时,G1 X100 Y#1相当于G1 X100 Y0,而当#1=#0时,也就是#1为空时,G1 X100 Y#1相当于G1 X100。再如当#1的值为0时,G#1 X100相当于G0 X100,而当#1为空时,G#1 X100相当于X100。

#号后面的数也可以用表达式表示,表达式必须封闭在中括号中。例如,已知#1=5,#2=30,#3=25,#4=0,#5=80时,判断

①#6=#[#1]、②#[3+4]=128、③#8=#[#4]、④#9=#[#2-#3]与⑤G#4X#2*#1Y#[#4]的值。: @" h# L8 T1 ~9 P+ O
①#6=#[#1]:因为#1=5所以#[#1]=#5,即#6=#5;又因为#5=80,所以#6=80;' f7 i2 ?3 V+ H
②#[3+4]=128:因为3+4=7,所以#[3+4]= #7,又因为#[3+4]=128,所以#7=128;+ K* f( I) f7 Y- V6 p/ Q
③#8=#[#4]:因为#4=0,所以#[#4]=#0,又因为#0是空变量,所以#8=#0相当于#8为空;
④#9=#[#2-#3]:因为#2-#3=30-25=5,所以#[#2-#3]=#5,即#9=#5,又因为#5=80,所以#9=80;
⑤G#4X#2*#1Y#[#4]:因为#2=30, #1=5,所以#2*#1=150,即X#2*#1=X150;又因为#[#4]=#0,所以Y#[#4]为空,因此G#4X#2*#1Y#[#4]相当于G0X150。

当引用的变量值为负值时,要把负号(-)放在#的前面。 例如:G00X-#18 u9 |7 [

P4 R; _+ \
变量可以自增或自减,变量经过运算后的值可以赋给自身。例如,当前#1=3;则执行#1=#1+1后#1的值是4;再如,当前#1=3,则执行#1=#1EQ3(EQ相当于等于号)后,#1的值是1。

# D程序号,顺序号和任选程序段跳转号不能使用变量。" Z$ \2 L8 u6 }; c8 V4 {; b5 @

3.逻辑跳转或逻辑循环。

用户宏程序可以使程序实现智能化判断,根据一定的条件决定执行或不执行某些程序段,继续一个循环或退出循环。这样可以实现一些复杂形状的加工。

使用条件表达式来测试条件是否成立,两个条件表达式可以使用比较运算符来连接,比较运算符有:大于、大于等于、小于、小于等于、等于、不等于。" Z% q% R% v; m- c& t

跳转和循环功能的使用使程序增加了灵活性,循环的使用可以在重复加工的情况下大大减少程序的长度,使程序易于阅读和维护。结合变量的计算功能,可以实现常规程序无法完成的插补运动。8 w$ v; X- a: {

4.用户宏程序的种类。8 k$ h3 Q1 [' f+

u9

[ J
目前各数控系统厂家的用户宏程序大致分为A类宏程序和B类宏程序两种。+ O' k6 r9 z- W- z7 y3 z1 P3 _

①A类宏程序。A类宏程序以广数GSK980(GSK980TDa第二版使用B类宏程序)为代表,使用G65 H** P** Q** R**指令来实现各种运算,在计算过程中不支持表达式。使用A类宏程序的数控系统,除了广州数控外,还包括凯恩帝KND1000和FANUC的早期产品如FANUC OTD。该类宏程序的逻辑运算是通过G65 H80至G65 H86的条件转移指令(H80是无条件转移)来实现的,灵活使用这些指令,实际上可以实现所有的逻辑运算功能,缺点是所编制的程序太繁琐,阅读与分析程序不直观。B; ^* v) I! w- j9

②B类宏程序。另一类是以FANUC B类宏程序为代表(FANUC Oi系列),可以使用人们所熟悉的等号(=)与加减乘除(+、-、*、/)等运算符组成表达式直接给变量赋值;在条件表达式中使用英文单词缩写GE、GT、LE、LT、EQ、NE来表示大于等于、大于、小于等于、小于、等于、不等于;(也有直接使用更直观的比较符>=、 >、 <=、 <、 ==、 <>、如西门子系统)。

跳转与循环指令主要有IF、WHILE,WHILE用来实现循环,即当条件满足时重复执行WHILE至END间的程序段;IF的用法则比较多,大致上有以下几种用法:: y/ ?, }2 n1 U2 G

在FANUC B类宏程序中,有IF GOTO及IF THEN二个用法,前者用于当条件满足时跳转到指定的程序段运行;后者用于当条件满足时执行一个命令。

在华中世纪星宏程序中,有IE ......ENDIF及IF...... ELSE......ENDIF,前者用于当条件满足时执行其中的程序段;后者用于当条件满足时执行IF至ENDIF间的程序段,不满足时执行ELSE至ENDIF间的程序段。$ k1 S k7 P6 P7 Q) X* v9 {

在西门子801/802宏程序中,没有WHILE这类循环语句,完全依靠IF命令来实现跳转或循环功能,IF.......GOTOF是当条件满足时向前跳转到指定程序段,一般用来在某些情况下避免运行一些程序段;IF.......GOTOB是向后跳转,一般用来重复执行某些程序段,可以使用这个命令来实现循环。

相关文档
最新文档