一、宏程序所用的系统变量


1、用户宏程序输入信号(G54.0~G54.2)


为了实现用户宏程序调用换刀,使用三个系统变量UI000(G54.0-#1000)、UI001(G54.1-#1001)、UI002(G54.2-#1002)供宏程序与PMC间跳转控制。G54.0为"1"表示编程刀号大于等于刀库容量,G54.1为"1"时表示主轴刀号等于编程刀号(T码值),G54.2为"1"时表示编程刀号为0。


2、宏程序报警变量


发那科 0iC系统的"#3000"变量用于宏程序报警,可在其表达式后指定不超过26个字符的报警信息。可显示报警号和报警信息,其中报警号为变量#3000的值加上3000。


例:"#3000=1(TOOL NOT FOUND)"对应屏幕上的显示为"3001 TOOL NOT FOUND"


3、模态信息变量(#4003、#4006)


系统变量#4003保存系统当前所处的编程坐标模态值G90/G91;#4006保存系统当前所用的编程单位系统G20(英制)/G21(米制)。这两个系统变量用于保护宏程序执行过程中系统的模态,在宏程序执行结束后,再恢复至系统调用宏程序前的模态。


二、宏程序调用及刀库相关系统参数


本项目采用M指令的M06调用宏程序实现刀库的换刀控制。


1、指定调用宏程序的M代码值参数(PRM#6080~6089)


PRM#6080~PRM#6089分别对应调用程序号为O9020~9029的宏程序所需的M代码值。当用"M06"调用O9023宏程序时,必须将PRM#6083设为"6"。本项目中的宏程序号为O9021,所以PRM#6081设置为"6"。


2、主轴准停位置设置参数(PRM#4031)


当刀库调整好后,将所测主轴准停的位置数据设置在参数PRM#4031中,参数PRM#4077(定向时停止位置偏移量)设为0。当执行完主轴准停指令(M19或手动主轴准停)后,NC输出的准停结束信号(F45.7)为"1"。


3、主轴定向速度参数(PRM#4038)


    在执行M19或手动主轴准停指令时,主轴按参数PRM#4038所设定的运转速度进行准停定向。


4、换刀点设置参数(PRM#1241)


一般情况下,用第二参考点作为主轴换刀或还刀点。对于立式加工中心,一般只需将刀库调整好后所测的Z轴位置数据设置在参数PRM#1241中。


5、其他相关参数


(1)PRM#4000.0——主轴和电动机的旋转方向设定


若使用主轴内置编码器,该参数位设为0时,表示主轴和电动机的旋转方向相同。


(2)PRM#4002.3、2、1、0——使用主轴位置编码器作为位置反馈


该参数位分别对应设置为"0、0、0、1"。


(3)PRM#4015.0——定向是否有效


该参数位设为"1",使定向有效。


(4)PRM#4010.2、1、0——设定电动机传感器类型


使用内置位置编码器时,设为"0、0、1"。


若主轴和主轴电动机间的传动比为1:1时,PRM#4056~4059不需要设置。


三、换刀宏程序


下面提供换刀调用的宏程序例子供分析参考,例中刀库容量为16。


%


O9021                              ;换刀宏(子)程序号


#23=#4003                          ;保存米制或英制系统


#24=#4006                          ;保存增量或绝对编程方式(G90、G91方式)


G91                                ;增量坐标编程


M05                                ;主轴停止


G30P2Z0                            ;至抓刀点(换刀点)


M19                                ;主轴准停


M26                                ;刀号读取(判断刀库刀号与主轴刀号是否一致)


IF[#1000EQ1]GOTO30                 ;T码值≥17时退出换刀程序


IF[#1001EQ1]GOTO40                 ;主轴刀号等于T码值时退出换刀程序


IF[#1002EQ1]GOTO50                 ;T码值为0时退出换刀程序


M23                                ;刀库推出


G04P500                            ;停0.5秒


M25                                ;松刀


G04P500                            ;停0.5秒


G28Z0                              ;至Z轴零点


M21                                ;刀库转(刀盘旋转选刀)


G30P2Z0                            ;至抓刀点


M24                                ;紧刀(抓刀)


M22                                ;刀库退回


GOTO100                            ;换刀结束并返回


N30#3000=1(TOOL NOT FOUND)       ;刀没找到报警


GOTO100                            ;结束换刀并返回


N40#3000=2(TOOL NO. ON SPINDLE)  ;主轴刀号已是需换刀刀号报警


GOTO100                            ;结束换刀并返回


N50#3000=3(T CODE IS 0)          ;换刀刀号为0报警


N100M05                            ;主轴停转


G#23                               ;恢复到主程序的米、英制系统


G#24                               ;恢复至主程序的增量或绝对编程系统


M99                                ;返回主程序


%


    从程序中可以看出,M19为主轴准停指令,M20为刀库回零指令,M21为选刀(刀库转)指令,M22为刀库退回指令,M23为刀库推出指令,M24为紧刀指令,M25为松刀指令,M26为刀号读取指令。