一、宏程序所用的系统变量
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为刀号读取指令。