广告招募

基于PMAC的数控程序的实现

2026年03月18日 08:42:42      来源:东莞市宇匠数控设备有限公司 >> 进入该公司展台      阅读量:1

分享:

FANUC-0I数控系统仿真界面中,某些GMT等代码需要转换成可供PMAC识 别的数控代码。基于PMAC加工中心数控系统利用VB 6.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语句

格式:GOTO n;

n是目标程序段的标号,本指令将无条件地转移到标有顺序号(行号n的程序段[32];

1.3条件转移指令IF语句

格式1: IF [<条件表达式>]GOTO n;

格式2: IF [<条件表达式>]THEN;

[]中是一个条件表达式,条件表达式中可以包含的运算符有:等于EQ不等于NE大于GT大于等于GE小于LT小于等于LE[33]。如果[]中的条件表达式成立,格式1 中程序将转移(跳转到标有顺序号(行号n的程序段,否则,顺序执行下一条指令, 如图3-3所示[33]。如果[]中的条件表达式成立,格式2中程序将执行预先指定的宏程序语 句,而且只执行一个宏程序语句。

1. 4循环指令WHILE

格式: WHILE [<条件表达式>] DO m

……

END m

[]里是程序执行的判断条件。DOEND命令后的m是循环编号;二者之间的程序是 被循环执行的语句,其中允许嵌套另一个WHILE循环。如果[]中的判断条件成立DO END命令之间的程序会不断运行,否则,将运行END命令后面的程序,如图3-4所示。

1.5嵌套

格式1:D0循环可以多重嵌套,如图3-5所示。 格式2:条件转移可以跳出循环的外面,如图3-6所示。

2.基于PMAC的数控宏程序的实现

在基于PMAC构成的数控系统中,PMACG代码作为特殊子程序来调用。例如在 运动程序中遇到G65代码,它将认为这是调用子程序Program 1000中N65000程序段。 为了增加程序的可读性,我们采用GOSUB{数值}命令,此命令使运动程序跳转型到同一 运动程序段中{数值}指定的行号(N0),当程序遇到GOSUB后的RETURN命令后马 上返回CALL {数值}命令与此相似,只是它可以跳转到另一个运动程序,比如CALL 7 将执行PROG 7并返回,可用于用户宏程序功能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 [ <条件表达式>] DO m

……

END m

在 PMAC 中应用需要改为:

WHILE [<条件表达式>]

..….

END WHILE

故需要vb软件将DO m删除,将ENDm替换为END WHILE,程序的嵌套通过距离 最近的的未配对的WHILEEND WHILE来实现。

2.2增加程序的可读性

PMAC中参数的存储变量都是P, Q等固定字母加数字组成的,例如p201,因此变量 名称没有特定含义,加工程序易读性较差,VB软件在进行加工程序处理时可自动在加工 程序之前加上定义,增强可读性,例如定义变量p201vail:

Text2.Text = "#define val1 p201" & vbCrLf & Text2.Text

为了 PMAC能够识别程序代码,需要按照PMAC程序代码格式对程序进行转换。例 如在经过校验的运动程序开头添加清空缓冲区指令,把程序号00007转换为open prog 7 clear,在程序结尾处加上关闭缓冲区指令’’close”,VB程序代码如下:

t1 (0) = "define tbuf 1" & vbCrLf & "open prog " & zzz & " clear"

Text2.Text = t1 (0) & Text2.Text & vbCrLf & " close "

对于PMAC可以直接识别的代码,把原程序代码进行复制即可。例如GMT、D 代码,+、-、*、/运算代码,SIN()、COS等数学运算函数代码,XYZ等代码[2]。

[1] VB软件界面设计

为对上述构想进行程序验证,采用VB软件编写数控界面。左上角的窗口用来给操作 人员输入程序。右上角的窗口用来显示转换后的PMAC能识别的程序。点击“宏程序椭圆” 转换按钮,在PMAC程序窗口出现转换后的结果,即PMAC可识别的控制卡代码[35]。如 图3-7所示。

下面列出实现宏程序功能的关键VB源代码:

Private Sub 宏程序椭圆_Click()

stra1 = Text1(0).Text

hcxpd = 0

If (InStr(stra1, "#")) Then hcxpd = 1

stra1 = 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) = "define tbuf 1" & vbCrLf & "open prog " & zzz & " clear"

Text2.Text = ""For i = 1 To ( UBound (t1) - 1)

t1(i) = Mid(t1(i), 8, 255)

Text2.Text = Text2. Text & vbCrLf & t1(i)

Next i

Text2.Text = t1(0) & Text2. Text & vbCrLf & "close"

If hcxpd = 1 Then

For i = 1 To 10

Text2.Text = "#define val" & i & " p20" & i - 1 & vbCrLf & Text2.Text

Next i

For i = 11 To 12

Text2.Text = "#define val" & i & " p2" & i - 1 & vbCrLf & Text2.Text

Next i

End If

End Sub

2.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的加工中心开放式数控系统研究”,因为编辑困难导致有些函数、表格、图片、内容无法显示,有需要者可以在网络中查找相关文章!

版权与免责声明:
1.凡本网注明"来源:全球供应商网"的所有作品,版权均属于全球供应商网,转载请必须注明全球供应商网。违反者本网将追究相关法律责任。
2.企业发布的公司新闻、技术文章、资料下载等内容,如涉及侵权、违规遭投诉的,一律由发布企业自行承担责任,本网有权删除内容并追溯责任。
3.本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。 4.如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系。