当前位置:文档之家› FANUC宏程序

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+100G01 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=0G90 X100 Y#1G90 X100G90 X100 Y#1G90 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把16 位信号从用户宏程序送到PMC 变量#1100到#1115 用于按位写信号变量#1132 用于一次写一个16位信号#1133 变量#1133 用于从用户宏程序一次写一个32 位的信号到PMC注意#1133的值为从99999999到+99999999详细情况请见连接说明书B-63503C-1用系统变量可以读和写刀具补偿值表15.2(b) 刀具补偿存储器C 的系统变量刀具长度补偿H 刀具半径补偿D 补偿号几何补偿磨损补偿几何补偿磨损补偿1200400#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%的倍率而不管机床操作面板上的进给速度倍率开关的设置。

变量的控制和运算指令算术运算和逻辑运算在变量之间,变量和常量之间,可以进行各种运算,常用的见表7—5。

表7—5 算术和逻辑运算运算格式说明赋值#i=#j 加#i=#j+#k 减#i=#j-#k 乘#i=#j*#k 除#i=#j/#k 正弦#i=sin[#j] 角度单位为度余弦#i=cos[#j]正切#i=tan[#j]反正切#i=atan[#j]平方根#i=sqrt[#j]绝对值#i=abs[#j]四舍五入圆整#i=round[#j]或#i=#jor#k逻辑运算对二进制数逐位进行异或#i=#jxor#k与#i=#jand#k运算的优先顺序如下:1)函数。

2)乘除,逻辑与。

3)加减,逻辑或,逻辑异或。

可以用[ ]来改变顺序7.4.2 控制指令1.无条件转移(GOTO语句)语句格式为:GOTO n其中n为顺序号(1—9999),可用变量表示。

例如:GOTO 1;GOTO #10;2. 条件转移(IF 语句)语句格式为:IF [条件式] GOTO n条件式成立时,从顺序号为n的程序段开始执行;条件式不成立时,执行下一个程序段。

条件式有以下几类:# j EQ # K EQ等于# j NE # K NE不等于# j GT # K GT大于# j LT # K LT小于# j GE # K GE大于等于# j LE # K LE小于等于条件式中变量#J或#K可以是常量也可以是表达式,条件式必须用括弧括起来。

下面的程序可以得到1到10的和:O7100#1=0#2=1N1 IF [#2 GT 10] GOTO 2#1=#1+#2#2=#2+1GOTO 1N2 M303循环语句(WHILE 语句)语句格式为:WHILE [条件式] DO m (m=1,2,3)…END m当条件语句成立时,程序执行从DO m到END m之间的程序段;如果条件不成立,则执行END m之后的程序段。

DO和END后的数字是用于表明循环执行范围的识别号。

可以使用数字1,2和3,如果是其他数字,系统会产生报警。

DO—END循环能够按需执行多次。

如下例所示:上面的O7100程序也可以用WHILE语句编制如下:O7200#1=0#2=1WHILE [#2 LE 10] DO 1#1=#1+#2#2=#2+1END 1M30。

相关主题