×

G代码编程及宏程序应用

消耗积分:1 | 格式:rar | 大小:0.05 MB | 2017-09-20

分享资料个

  

  (1)变量的表示

  计算机允许使用变量名,用户宏程序不行。变量用变量符号(#)和后面的变量号指定。

  例如:#1

  表达式可以用于指定变量号。此时,表达式必须封闭在括号中。

  例如:#[#1+#2-12]

  (2)变量的类型

  变量根据变量号可以分成四种类型:

  1)#0 空变量,该变量总是空,没有值能赋给该变量。

  2)#1-#33 局部变量,局部变量只能用在宏程序中存储数据,例如,运算结果。当断电时,局部变量被初始化为空。调用宏程序时,自变量对局部变量赋值。

  3)#100-#199、#500-#999 公共变量,公共变量在不同的宏程序中的意义相同。当断电时,变量#100-#199初始化为空。变量#500-#999的数据保存,即使断电也不丢失。

  4)#1000--- 系统变量。系统变量用于读和写CNC运行时各种数据的变化,例如,刀具的当前位置,补偿值。

  (3)变量值的范围

  局部变量和公共变量可以有0值或下面范围中的值:-1047到-10-29或-10-2到-1047,如果计算结果超出有效范围,则发出P/S报警NO.111。

  (4)小数点的省略

  当在程序中定义变量值时,小数点可以省略。

  例:当定义#1=123;变量#1的实际值是123.000。

  (5)变量的引用

  为在程序中使用变量值,指定后跟变量号的地址。当用表达式指定变量时,要把表达式放在括号中。

  例如:G01X[#1+#2]F#3;

  被引用变量的值根据地址的最小设定单位自动地舍入。

  例如:当G00X#/;以1/1000mm的单位执行时,CNC把123456赋值给变量#1,实际指令值为G00X12346.

  改变引用变量的值的符号,要把负号(-)放在#的前面。

  例如:G00X-#1

  当引用未定义的变量时,变量及地址都被忽略。

  例如:当变量#1的值是0,并且变量#2的值是空时,G00X#1 Y#2的执行结果为G00X0。

  (6)双轨迹(双轨迹控制)的公共变量

  对双轨迹控制,系统为每一轨迹都提供了单独的宏变量,但是,根据参数N0.6036和6037的设定,某些公共变量可同时用于两个轨迹。

  (7)未定义的变量

  当变量值未定义时,这样的变量成为空变量。变量#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=#*5

  ↓

  #2=0 #2=#*5

  ↓

  #2=0

  #2=#1+#1

  ↓

  #2=0 #2=#1+#1

  ↓

  #2=0

  (c)条件表达式

  EQ和NE中的《空》不同于0。

  当#1=《空》时当#1=0时

  #1EQ#0

  ↓

  成立 #1EQ#0

  ↓

  不成立

  #1 NE #0

  ↓

  成立 #1 NE #0

  ↓

  不成立

  #1 GE #0

  ↓

  成立 #1 GE #0

  ↓

  不成立

  #1 GT #0

  ↓

  不成立 #1 GT #0

  ↓

  不成立

  (8)限制

  程序号,顺序号和任选程序段跳转号不能使用变量。

  例:下面情况不能使用变量:

  0#1;

  /#2G00X100.0;

  N#3Y200.0;

  二、算术和逻辑运算

  下面列出的运算可以在变量中执行,表达式可包含常量和或由函数或运算符组成的变量。表达式中的变量#j和#k可以用常数赋值。变量也可以用表达式赋值。

  定义:#i=#j

  加法:#i=#j+#k;

  减法:#i=#j-#k;

  乘法:#i=#j*#k;

  除法:#i=#j/#k;

  正弦:#i=SIN[#j];

  反正弦:#i=ASIN[#j];

  余弦:#i=COS[#j];

  反余弦:#i=ACOS[#j];

  正切:#i=TAN[#j];

  反正切:#i=ATAN[#j];

  角度以度数指定:90°30’表示为90.5度。

  平方根:#i=SQRT[#j];

  绝对值:#i=ABS[#j];

  舍入:#i=ROUNND[#j];

  上取整:#i=FIX[#j];

  下取整:#i=FUP[#j];

  自然对数:#i=LN[#j];

  指数函数 :#i=EXP[#j];

  或:#i-#jOR#k;

  异或:#i-#jXOR#k;

  与:#i-#jAND#k;

  逻辑运算一位一位地按二进制数执行。

  从BCD转为BIN

  从BIN转为BCD #i=BIN[#j];

  #i=BCD[#j];

  用于与PMC的信号交换。

  说明:

  ● 角度单位

  函数SIN ,COS,ASIN,ACOS,TAN和ATAN的角度单位是度。如90°30’表示为90.5度。

  ● ARCSIN # i= ASIN[#j]

  1)取值范围如下:

  当参数(NO.6004#0)NAT位设为0时,270°~90°

  当参数(NO.6004#0)NAT位设为1时,-90°~90°

  2)当#j超出-1到1的范围时,发出P/S报警NO.111.

  3)常数可替代变量#j

  ● ARCCOS #i=ACOS[#j]

  1) 取值范围从180°~0°

  2) 当#j超出-1到1的范围时,发出P/S报警NO.111.

  3) 常数可替代变量#j

  ● ARCTAN #i= ATAN[#j]/ [#k]

  1) 指定两个边的长度,并用斜杠(/)分开

  2) 取值范围如下:

  当NAT位(参数NO.6004,#0)设为0时;0°到360°

  当NAT位(参数NO.6004,#0)设为1时;-180°到180°

  3) 常数可替代变量#j

  ● 自然对数 #i=LN[#j];

  1) 注意,相对误差可能大于10-8.

  2) 当反对数(#j)为0或小于0时,发出P/S报警NO.111.

  3) 常数可替代变量#j。

  ● 指数函数 #i=EXP[#j]

  1) 注意,相对误差可能大于10-8。

  2) 当运算结果超过3.65X1047(j大约是110)时,出现溢出并发出P/S报警NO.111.。

  3) 常数可替代变量#j。

  ● ROUND(舍入)函数

  1) 当算术运算或逻辑运算指令IF或WHILE中包含ROUND函数时,则ROUND函数在第一个小数位置四舍五入。 当执行#1=ROUND[#2];此处#2=1.2345,变量1的值是1.0。

  2) 当在NC语句地址中使用ROUND函数时,ROUND函数根据地址的最小设定单位将指定值四舍五入

  ● 上取整下取整

  CNC处理数值运算时,若操作后产生的整数绝对值大于原数的绝对值时为上取整;若小于原数的绝对值为下整数。对于负数的处理应小心。

  ● 算术与逻辑运算指令的缩写

  程序中指令函数时,函数名的前两个字符可以用于指定该函数。

  ROUND→RO

  FLX→FI

  ● 运算次序

  1) 函数

  2) 乘和除运算

  3) 加和减运算

  ● 括号嵌套

  括号用于改变运算次序,括号可以使用5级,包括函数内部使用的括号。当超过5级时,出现P/S报警NO.118.限制

  ● 括号 ([,])用于封闭表达式。注意,圆括号用于注释。

  ● 运算误差 运算时,可能出现误差。

  注:相对误差取决于运算结果;使用两类误差的较小者;绝对误差是常数,而不管运算结果;函数TAN执行SIN/COS。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !