任务:将前置处理程序输出的CL文件中的刀位数据及有关信息转换成特定数控机床控制系统所要求的数控加工程序。
特点:后置处理程序是专用的,在同一前置处理程序的条件下,后置处理程序的设计,主要与具体数控机床的加工程序格式有关。
本节所介绍的后置处理程序设计,是将MPAPT系统前置处理程序输出的CL 文件数据转换成FANUC-6M数控加工程序,即前接MPAPT系统,后接FANUC-6M数控系统。
现以FANUC-6M系统用于数控铣床的后置处理程序设计为例,介绍一般后置处理程序的结构及其设计方法。
一、后置处理程序的一般结构
后置处理程序的已知输入数据即为前置处理程序的输出结果─CLDATA,而后置处理程序的输出结果,即为数控加工程序。由于设计CLDATA的类型、格式及其所包含的数据内容与指令信息时,已考虑到尽可能简化专用的后置处理程序设计,所以后置处理程序设计的难易程度及工作量远不如前置处理程序,即只需将CL文件中的有关数据进行传递、转换和作少量的简单计算,其一般结构如图3-55所示。

㈠输入部分
这部分是把外存贮器中的CLDATA读入计算机内存,并将CLDATA转换成便于后置处理程序能接受的已知数据。
㈡控制部分
这部分是根据CLDATA的类型,控制程序的转向。即控制程序转入辅助部分或运动部分进行分别处理,以及输入/输出部分的调用。如CLDATA的输入和数控加工程序的输出等均受其支配。从而控制整个程序流程。
㈢辅助部分
这部分主要是针对2000类中的CLDATA,将其传递或转换成特定数控机床的准备、辅助等功能,即主要是指G、F、T、M等指令的处理。
㈣运动部分
这部分主要是针对3000类及5000类中CLDATA进行处理。这些记录的处理与数控系统的准备功能有关,是后置处理程序中的主要处理部分。其内容主要包括:坐标转换计算,数据圆整化,根据数控机床程序格式要求,进行指令排序等,从而形成一条条数控加工程序段。
㈤输出部分
这部分主要是将处理结果,即已形成的数控加工程序进行存盘、打印、通信传送等。
处理方法:后置处理程序也是读一条CLDATA记录,处理一条记录,即根据与数控机床有关的不同记录类型,转移到对应的地方去处理,直到最后一条记录为止,从而生成被加工零件的数控加工程序。
三、FANUC-6M数控系统后置处理程序设计
根据MPAPT系统CLDATA的格式及记录类型和该数控系统的指令格式及编程方法,该数控系统的后置处理程序总框图见图3-56。现分别介绍各部分程序的设计方法。

㈠输入部分的程序设计
若系统是从前置处理程序直接转入后置处理程序,则CLDATA已驻留在计算机内存中(CL(N0,7)),若磁盘中已存有CL文件,则可利用文件菜单直接打开所需文件,并使文本中的数据读入数组CL(N0,7)中,该方法已在总体设计中做了介绍。
处理方法:后置处理实际上就是对一个二维的数组进行处理,即用“取出一条CLDATA记录子程序”从内存中按CLDATA记录顺序,取出一条记录,以便后继程序逐条进行处理。CLDATA有N0条记录,则该子程序就要执行N0次。
取出一条CLDATA记录子程序
Public Sub GetCldata(I)
For T = 1 To 7
W(T) = CL(I, T)‘I为当前处理的一条CL文件记录序号
Next T
End Sub
㈡控制部分的程序设计
由于CLDATA中的数据已分成不同的类型,故可直接根据其数据类型控制程序的流向。因CLDATA数据类型中还包括了子类型,还需根据子类型地不同进行处理。因此,控制部分实际上是被分布在程序各部分之中的。
例如,2000类记录控制程序流程的有关语句:
Select Case W(2)‘判断记录类型
Case 2000
If W(3) = 1009 Then ProcFD F$, FEED$‘记录内容转换为F指令
If W(3) = 1030 Then ProcCL M$‘记录内容转换为对应的M 指令
If W(3) = 1031 Then ProcSP M$‘记录内容转换S指令及对应的M 指令
If W(3) = 1000 Then TS = W(4)‘向下传递刀偏信息
例如,5000类记录控制程序流程的有关语句:
Case 5000
For j = 4 To 5‘参数圆整化
W(j) = Int(Abs(W(j) * 1000 + 0.5) * Sgn(W(j)))
Next j
Select Case W(3)‘判断记录子类型
Case 1‘FROM语句记录的处理
ProcFRM OX, OY
Case 2‘GODLTA语句记录的处理
ProcGD F$, M$, FG$()
Case 3‘GOTO语句记录的处理
ProcGT F$, M$, OX, OY, FG$()
Case 4 To 5‘GO直线语句记录的处理
ProcGOL F$, M$, D$, OX, OY, TS, CR, FEED$, FG$()
Case 6‘GO圆弧语句记录的处理
ProcGOC F$, M$, OX, OY, TS, CS, U, V, FG$()
End Select
㈢辅助指令处理部分的程序设计
1. 2000类记录的处理
该类记录的类型较多,然而根据数控系统的程序编制要求,并不是所有2000类记录均需处理,而只要求与程编指令有关的记录内容进行处理。如FANUC-6M数控系统,只需对FEDRAT、COOLNT、SPINDL和刀偏语句的记录进行直接转换或传递,具体处理过程见图3-56。
有关程序:
Public WI,NI,PN$,W(7),CR,NC$(200)
DimFEED$, F$, M$, D$‘存放F、M、D功能指令
BB$ = "": F$ = BB$: M$ = BB$: D$ = BB$: FEED$ = BB$
Public Sub ProcFD(F$, FEED$)‘FEDRAT语句记录的处理
Dim FF As Single
FF = W(4)
F$ = "F" + LTrim(Str$(FF)): FEED$ = F$
End Sub
Public Sub ProcCL(M$)‘COOLNT语句记录的处理
Dim N$
If M$ <> "" Then N$ = FunN(): NC$(NI) = N$ + M$ + "CR"‘N指令排序
If W(4) = 1 Then M$ = "M08" Else M$ = "M09"
End Sub
Public Sub ProcSP(M$)‘SPINDIE语句记录的处理
Dim SS As Single
Dim S$, N$
If M$ <> "" Then N$ = FunN(): NC$(NI) = N$ + M$ + "CR"
SS = W(4)
If SS = 0 Then
M$ = "M05"
Else
If SS > 1800 Then SS = 1800‘机床最高转速为1800转/分
S$ = "S" + LTrim(Str$(SS))
If W(5) = 1 Then M$ = "M03" Else M$ = "M04"
M$ = S$ + M$
End If
End Sub
说明:
(1)程序中多处出现“LTrim(Str$(X))”字符串函数式(X为函数自变量:正数),由于正数前有一空格(符号位),故此函数式是为了去掉正数前的空格字符。
(2)由FNAUC-6M数控系统编程说明可知,该系统一条数控加工程序(或称为程序段)中,最多只允许出现一个M指令,否则只有最后一个M指令有效,因此程序中若连续遇到二个M指令时,则先将前一个已处理M指令作为一个程序段保留于NC$(NI)数组中,该数组中的N$为已排序的程序段序号;“CR”即为程序段结束符。
(3)排序子程序:由FANUC-6M系统编程说明可知,该系统加工程序开头的固定格式(参见表3-7)一般为:
ER
CR
O00001(五位数)CR
N1------------CR
N2------------CR
即程序段序号从第四条开始,则加工程序的总条数(包括前三条)与带有程序段序号的程序条数差值为3。为了确定加工程序段的序号和总条数,可分别用二个计数器进行自动计数得到,从而对程序段序号进行排序。
有关程序:
NC$(1) = "ER": NC$(2) = "CR": NC$(3) = PN$ + "CR"‘NC$()和PN$为全局变量
NI = 3‘NI加工程序段序号计数器,全局变量
Public Function FunN()‘N指令排序
Dim NN$,EOB
NI = NI + 1: NOB = NI - 3‘NI加工程序段序号计数器,NOB程序段序号计数器
NN$ = "N" + LTrim(Str$(NOB))
FunN = NN$
End Function
(4)对于机床主轴转数的处理,由于转速指令(S)总是与M03或M04指令配合使用,故程序中把S与M指令同存放于M$中。
(5)刀偏语句(TLLFT、TLRGT或TLON)的记录信息,见前面控制部分程序中的2000类语句处理, 即直接赋给某一标识符(TS)中,以便为后面处理G41、G42或G40提供已知信息。
2. 6000类记录(刀具参数)的处理
由于FANUC-6M数控系统具有刀具半径补偿功能,所选用的刀具半径通过MID方式输入控制系统中,即存入“D”代码后面数字(刀补号)所指定的寄存器中。由于“D”代码的刀补号取值范围为0~32, 故后置处理程序对APT语言中“CUTTER”语句的书写,一般约定为“CUTTER/0;数字(0~32)”。因此后置处理时,根据该语句中的后一个数字,处理成“D”代码。
有关程序:
Dim CR As Single‘存放刀具半径
D$ = BB$:CR=0
Public Sub ProcCUT(D$, CR)‘CUTTER语句记录的处理
Dim CNO As Integer
CR = W(4): CNO = W(5)
If CNO > 32 Then CNO = 32
D$ = LTrim(Str$(CNO))
If CNO < 10 Then D$ = "D0" + D$ Else D$ = "D" + D$
End Sub.
业务咨询:932174181 媒体合作:2279387437 24小时服务热线:15136468001 盘古机械网 - 全面、科学的机械行业免费发布信息网站 Copyright 2017 PGJXO.COM 豫ICP备12019803号