基于PMAC的数控程序的实现
在FANUC-0I精工系统仿真界面中,某些G、M、T等代码需要转换成可供PMAC识别的精工代码。基于PMAC加工中心精工系统利用VB6.0开发精工G代码编译程序处理模块,主要用于FANUC-0I精工系统仿真界面中G代码的转换,现以基于PMAC的宏程序编程在精工机床上的应用为例进行介绍。1.FANUC系统宏程序FANUC系统提供两种用户宏程序,即用户宏程序功能A和用户宏程序功能B[31]。由于用户宏程序功能A的宏程序需要使用G65Hm格式的宏指令来表达各种数学运算和逻辑关系,极不直观,且可读性非常差,因而导致在实际工作中很少人使用它[31]。由于绝大部分的FANUC系统都支持用户宏程序功能B,因而重点介绍用户宏程序功能B的相关知识。1.1变量及赋值格式:#i=#j+#k;FANNC系统宏程序的变量是用变量符号#和后面的变量号指定,变量号是用以区分各变量。=就是变量的赋值指令,=左边是被赋值的变量,=右边是一个数值表达式[32]。表达式中包含的运算符有:+、-、*、/、[]以及一些数学运算函数,也可以包括变量。常用的数学运算函数有:正弦SIN[]、正切TAN[]、平方根SQRT[]、余弦COS[]、反正切ATAN[]、或OR、反余弦ACOS[]、与AND[]、反正弦ASIN[]、异或XOR和绝对值函数ABS[]等。1.2无条件转移GOTO语句格式:GOTOn;n是目标程序段的标号,本指令将无条件地转移到标有顺序号(行号)n的程序段[32];1.3条件转移指令IF语句格式1:IF[<条件表达式>]GOTOn;格式2:IF[<条件表达式>]THEN;[]中是一个条件表达式,条件表达式中可以包含的运算符有:等于EQ、不等于NE、大于GT、大于等于GE、小于LT、小于等于LE[33]。如果[]中的条件表达式成立,格式1中程序将转移(跳转)到标有顺序号(行号)n的程序段,否则,顺序执行下一条指令,如图3-3所示[33]。如果[]中的条件表达式成立,格式2中程序将执行预先指定的宏程序语句,而且只执行一个宏程序语句。1.4循环指令WHILE格式:WHILE[<条件表达式>]DOm……ENDm[]里是程序执行的判断条件。DO与END命令后的m是循环编号;二者之间的程序是被循环执行的语句,其中允许嵌套另一个WHILE循环。如果[]中的判断条件成立,DO与END命令之间的程序会不断运行,否则,将运行END命令后面的程序,如图3-4所示。1.5嵌套格式1:D0循环可以多重嵌套,如图3-5所示。格式2:条件转移可以跳出循环的外面,如图3-6所示。2.基于PMAC的精工宏程序的实现在基于PMAC构成的精工系统中,PMAC将G代码作为特殊子程序来调用。例如在运动程序中遇到G65代码,它将认为这是调用子程序Program1000中N65000程序段。为了增加程序的可读性,我们采用GOSUB{数值}命令,此命令使运动程序跳转型到同一运动程序段中{数值}指定的行号(N或0),当程序遇到GOSUB后的RETURN命令后马上返回。CALL{数值}命令与此相似,只是它可以跳转到另一个运动程序,比如CALL7将执行PROG7并返回,可用于用户宏程序功能A的宏程序G65(或G66)。用户宏程序功能A的宏程序的调用格式是G65(或G66)P_L_[参数],其中P值为宏程序的程序号,L为调用次数[34]。FANUC精工系统的宏程序在PMAC上无法实现直接运行,因此需要将宏程序转化成PMAC能识别的代码格式。2.1进行指令替换,PMAC能识别的加工程序指令和FANUC机床的编程语言稍有差别。为适应机床操作人员的习惯,需要将机床操作人员输入的程序中的某些指令替换成PMAC能识别的指令,转换后再进行下载、运行。例如“EQ”需要替换成“=”,“#”需要替换成“vall”,这一过程通过VB软件来进行,程序代码如下:stra1=Replace(stra1,"EQ","=",1,-1,0)stra1=Replace(stra1,"#","vall",1,-1,0)另外还有一些不能通过替换直接修改的指令,如循环指令WHILE,在FANUC机床中,用法为:WHILE[<条件表达式>]DOm……ENDm在PMAC中应用需要改为:WHILE[<条件表达式>]..….ENDWHILE故需要vb软件将DOm删除,将ENDm替换为ENDWHILE,程序的嵌套通过距离最近的的未配对的WHILE和ENDWHILE来实现。2.2增加程序的可读性PMAC中参数的存储变量都是P,Q等固定字母加数字组成的,例如p201,因此变量名称没有特定含义,加工程序易读性较差,VB软件在进行加工程序处理时可自动在加工程序之前加上定义,增强可读性,例如定义变量p201为vail:Text2.Text="#defineval1p201"&vbCrLf&Text2.Text为了PMAC能够识别程序代码,需要按照PMAC程序代码格式对程序进行转换。例如在经过校验的运动程序开头添加清空缓冲区指令,把程序号00007转换为openprog7clear,在程序结尾处加上关闭缓冲区指令’’close”,VB程序代码如下:t1(0)="definetbuf1"&vbCrLf&"openprog"&zzz&"clear"Text2.Text=t1(0)&Text2.Text&vbCrLf&"close"对于PMAC可以直接识别的代码,把原程序代码进行复制即可。例如G、M、T、D代码,+、-、*、/运算代码,SIN()、COS〇等数学运算函数代码,X、Y、Z等代码[2]。[1]VB软件界面设计为对上述构想进行程序验证,采用VB软件编写精工界面。左上角的窗口用来给操作人员输入程序。右上角的窗口用来显示转换后的PMAC能识别的程序。点击“宏程序椭圆”转换按钮,在PMAC程序窗口出现转换后的结果,即PMAC可识别的控制卡代码[35]。如图3-7所示。下面列出实现宏程序功能的关键VB源代码:PrivateSub宏程序椭圆_Click()stra1=Text1(0).Texthcxpd=0If(InStr(stra1,"#"))Thenhcxpd=1stra1=Replace(stra1,"#","vall",1,-1,0)……stra1=Replace(stra1,"]",")",1,-1,0)t1=Split(stra1,";")t2=Split(t1(0),"")n=t2(1)cxh=Replace(n,"0","",1,-1,0)zzz=Replace(n,"0","",1,-1,0)t1(0)="definetbuf1"&vbCrLf&"openprog"&zzz&"clear"Text2.Text=""Fori=1To(UBound(t1)-1)t1(i)=Mid(t1(i),8,255)Text2.Text=Text2.Text&vbCrLf&t1(i)NextiText2.Text=t1(0)&Text2.Text&vbCrLf&"close"Ifhcxpd=1ThenFori=1To10Text2.Text="#defineval"&i&"p20"&i-1&vbCrLf&Text2.TextNextiFori=11To12Text2.Text="#defineval"&i&"p2"&i-1&vbCrLf&Text2.TextNextiEndIfEndSub2.4将宏程序下载到PMAC中和运行程序下载PMAC程序,需要先将转换后的G代码程序存入文件中,文件后缀pmc,之后通过PmacDownloadA指令将上述程序下载到PMAC中,“Download代码”按钮可以将转换后的程序下载到PMAC中。点击“运行”按钮,通过PmacGetResponseA指令将运动命令下载到PMAC中,即可实现PMAC的宏程序加工。其中关键的VB源代码如下:retum_value=PmacGetResponseA(DeviceNumber,response,255,”#lb”&cxh&”r”)其中“cxh”为程序号。本文由海天精工整理发表文章均来自网络仅供学习参考,转载请注明!相关内容可查阅:主页(加工中心)、产品页(CNC加工中心)、文章页(精工加工中心)本文采摘自“基于PMAC的加工中心开放式精工系统研究”,因为编辑困难导致有些函数、表格、图片、内容无法显示,有需要者可以在网络中查找wnsr888手机版相关的文章!
- wnsr888手机版相关的文章
- 发表留言
-
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。