華北機電學校 (山西長治 046000) 焦連岷
機械加工行業“數控加工”逐漸普及,零件的輪廓樣式日益繁多,對數控行業的軟硬件環境要求日益提高,尤其是對編程操作人員的基本素質提出了更高的要求,宏程序的編程日益成為所需掌握的必備技能之一。然而,不少編程人員聽到宏程序就“發憷”,尤其是初學者,總感覺高深莫測,遙不可及,其實不然,只要大家有一些計算機高級語言的編程基礎并掌握其編程思路與方法,其實遠沒有想象得那樣難。本文就宏程序的一些編程“基本理念”和同行們作一些交流。
采用宏指令編制的程序稱作宏程序,所謂宏指令是指:為了完成某一功能,事先編制相應的程序代碼并存入存儲器中,然后使用其功能如同使用子程序,用一組語句命令行為代表即可,該組語句命令行即為宏指令。
宏指令一般由系統廠家進行開發編寫,按其功能特點我們姑且稱之為“完備型”和“開放型”,前者是指指令功能已經完全確定,用戶不可修改,只能調用(用此類指令編寫的程序發那科系統稱作A類宏程序);而后者則是系統廠家只為用戶開發了一些復合程序語句框架,用戶可以根據需要進行二次開發”(用此類指令編寫的程序發那科系統稱作B類宏程序);由于前者在使用中并不太多,而我們在此所講的主要是指用“開放型”宏指令編寫的宏程序。
宏程序與普通程序相比,更多地采用了變量及循環的方式,使得程序的應用更加廣泛與通用。如果希望變換其輪廓及要素,只需更改相應的變量與數學模型關系表達式即可,因此,其靈活性大大增加。
由數學知識知道,如圖1所示:對于曲線段AB,在微小范圍段內其長度可以近似用割線段AC、CB之和來表示(其中C為AB內一點),只要范圍足夠小,其軌跡也可近似表示成AC、CB的軌跡。顯然,AB曲線段內取得的中間點越多(如再增加D、E兩點),即割線的數目越多,則與原曲線愈接近(無論是長度還是軌跡)。這就是割線逼近曲線原理。

圖1 割線逼近曲線原理示意圖
在標準的G代碼軌跡插補中常用的只有圓弧與直線插補指令,并沒有非圓曲線插補指令,而要加工帶有非圓曲線輪廓的工件則可以根據割線逼近曲線原理,利用系統中原有的直線插補指令,進行走微小直線段模擬曲線,即將曲線分割成很多微直線段,只要直線段足夠短,就可以將其軌跡保證在一定的精度誤差范圍之內。宏程序也正是利用了這樣的原理,進行數控程序加工的。
(1)變量與表達式及函數的引入使程序控制更加靈活 宏程序中引入了變量與表達式及函數,具有實時動態計算能力,可以加工非圓曲線,如拋物線、橢圓、雙曲線及三角函數曲線等。特別是對于圖形一樣尺寸不同的系列零件加工。工藝路徑一樣位置不同的系列零件加工,更能顯示出特定的優勢(只需更改相關的變量即可)。
變量分為全局變量、局部變量和系統變量,其格式通常為“#”和數字組成,在條件允許的情況下程序中提倡盡量多用局部變量,不至于影響到其他相關程序的運行。
(2)流程控制語句的引入,使得程序具有決策分析能力 特別是引入程序流程控制語句,根據條件選擇性地執行某些部分使得程序具有一定的決策能力。對于復雜零件輪廓的加工編程,宏程序的引入使程序大為精簡。華中數控系統有兩種流程控制命令:

條件分支 IF:
格式1:(條件成立則執行)

功能:條件成立執行IF與ENDIF之間的程序,不成立就跳過。其中IF、ENDIF稱為關鍵詞,不區分大小寫。IF為開始標識,ENDIF為結束標識。
格式2:(二選一, 選擇執行)


功能:條件成立執行IF與ELSE之間的程序,不成立就執行ELSE與ENDIF之間的程序。
條件循環 WHILE:
格式:

功能:條件成立執行WHILE與ENDW之間的程序,然后返回到WHILE再次判斷條件,直到條件不成立才跳到ENDW后面。
WHILE中必須有修改條件變量的語句,使得其循環若干次后,條件變為“不成立”而退出循環,不然就成為死循環。
(3)基本構成框圖 由于宏程序是基于微小直線段模擬曲線的理念進行編程的,所以采用宏程序編制的程序大多是要循環重復執行。下面以循環語句為例繪制其一般通用基本結構框圖(見圖2)。①初始化:這部分通常是確定起刀點的位置,給變量賦初值等,做一些相關的輔助性準備工作。②條件判斷:用來控制程序分支的走向,當條件成立時才執行循環體內的語句。③執行循環體:這部分是數控程序對零件輪廓進行插補,也是數控伺服機構真正需要完成的動作。④調整條件變量:決策控制是需要由條件判斷的,每次執行完循環體都需要修改調整條件控制變量,否則就成為死循環,機床連續不斷的無條件重復執行,這是絕對不允許的。⑤后續處理:可放置與本輪廓相關的語句,如循環結束后其插補軌跡是否到位,是否需要重新補插走刀等;也可是對其他相關輪廓描述的的后續語句體等。

圖2 通用宏程序循環控制結構框圖
數控加工宏程序編程首先要進行工藝分析,根據材料及精度要求確定進給速度,吃刀量,加工路線等;其次要確定輪廓的數學模型,選定自變量,確定變量的變化范圍及控制條件等;最后根據數控機床的系統類型選定適當的控制語句,填寫程序代碼。下面以具體實例說明其編寫方法與步驟。
(1)題目要求 加工輪廓如圖3所示,要求加工第一、第四象限的半橢球(其中長半軸為30mm,短半軸為25mm,焦點在Z軸上,毛坯材料為鋁棒,表面粗糙度值要求略)。

圖3 加工輪廓及走刀路線示意圖
(2)題目分析 ①工藝分析:根據題目要求,選定如圖3所示的走刀加工路線,即從毛坯件開始,沿Z向進行車削,加工至橢球輪廓后進行退刀,為了保證一定的精度,可以留有一定的余量,最后再沿零件輪廓補走一刀。②確定數學模型:由于零件輪廓在平面內是橢圓,所以其方程為Z2/302+X2/252=1。③確定自變量、因變量及變化范圍:確定自變量的原則是一定要單調,且便于實際加工,根據題目要求在此選擇X為自變量,Z為因變量,即根據X確定Z,則其初值為:X=25,變化范圍為:25→0(直徑編程時乘以2),而Z的表達式為:Z=30×SQRT[1-X×X/(25×25)]。④確定更新、插補的步長及循環體:選定以X的變化為控制條件,即當X>0時循環執行循環體,更新的長粗車定為1mm,精車定為0.1mm。
(3)填寫代碼 根據以上分析,以華中數控系統為例,控制流程用循環語句WHILE—ENDW,X方向坐標值用#1變量表示,兼作為控制條件,Z向坐標值用#2變量表示。其程序代碼如下:


以下為精車程序

雖然現在較復雜的零件輪廓大部分采用編程軟件進行自動編程,但自動編程生成的程序代碼長,占用的存儲空間多,執行的速度慢,通用性差,特別是更改調試程序繁瑣,發現某處不合適就需重新建模造型,然后再進入后置處理環節,即一切從頭再來;而宏程序則可以避免以上不足,它生成的代碼占用存儲空間少,執行速度快,特別是通用性好,對于零件輪廓相同尺寸不同,只需修改相關的變量即可。因此,對于宏程序的編程,越來越受到重視與關注,應用日趨廣泛,越來越成為編程人員掌握的必備技能之一。