控制軟件是為完成特定CNC(或MNC)系統(tǒng)各項功能所編制的專用軟件,又稱為系統(tǒng)軟件(或系統(tǒng)程序)。由于CNC(或MNC)系統(tǒng)的功能設(shè)置與控制方案各不相同,各種系統(tǒng)軟件在結(jié)構(gòu)和規(guī)模上差別很大。系統(tǒng)程序的設(shè)計與各項功能的實現(xiàn)及其將來的擴(kuò)展有最直接的關(guān)系,是整個CNC(或MNC)系統(tǒng)研制工作中關(guān)鍵性的和工作量最大的部分。
前面曾提到,系統(tǒng)軟件一般由輸進(jìn)、譯碼、數(shù)據(jù)處理(預(yù)計算)、插補(bǔ)運算、速度控制、輸出控制、治理程序及診斷程序等部分構(gòu)成。下面分別加以介紹。
1、輸進(jìn)
CNC系統(tǒng)中一般通過紙帶閱讀機(jī)、磁帶機(jī)、磁盤及鍵盤輸進(jìn)零件程序,且其輸進(jìn)大都采用中斷方式。在系統(tǒng)程序中有相應(yīng)的中斷服務(wù)程序,如紙帶閱讀機(jī)中斷服務(wù)程序及鍵盤中斷服務(wù)程序等。當(dāng)紙帶閱讀機(jī)讀進(jìn)一個字符至接口中時,就向主機(jī)發(fā)出中斷,由中斷服務(wù)程序?qū)⒃撟址瓦M(jìn)內(nèi)存。同樣,每按一個鍵則表示向主機(jī)申請一次中斷,調(diào)出一次鍵盤服務(wù)程序,對相應(yīng)的鍵盤命令進(jìn)行處理。
從閱讀機(jī)及鍵盤輸進(jìn)的零件程序,一般是經(jīng)過緩沖器以后,才進(jìn)進(jìn)零件程序存儲器的。零件程序存儲器的規(guī)模由系統(tǒng)設(shè)計員確定。一般有幾K字節(jié),可以存放很多零件程序。例如7360系統(tǒng)的零件程序存儲器為5K,可存放20多個零件程序。
鍵盤中斷服務(wù)程序負(fù)責(zé)將鍵盤上打進(jìn)的字符存進(jìn)MDI緩沖器,按一下鍵就是向主機(jī)申請一次中斷。
2、譯碼
由前面的討論可知,經(jīng)過輸進(jìn)系統(tǒng)的工作,已將數(shù)據(jù)段送進(jìn)零件程序存儲器。下一步就是由譯碼程序?qū)⑤斶M(jìn)的零件程序數(shù)據(jù)段翻譯本錢系統(tǒng)能識別的語言。一個數(shù)據(jù)段從輸進(jìn)到傳送至插補(bǔ)工作寄存器需經(jīng)過以下幾個環(huán)節(jié),
從原理和本質(zhì)上說,軟件譯碼與硬件譯碼相同。對于8單位的紙帶程序,一個字符占8位。在16位字長的緩沖器中,一個字可存放兩個字符。數(shù)據(jù)段長的則占的字?jǐn)?shù)多。譯碼程序按次序?qū)⒁粋€個字符和相應(yīng)的數(shù)字進(jìn)行比較,若相等了,則說明已輸進(jìn)了該字符。它就似乎在硬件譯碼線路中,一個代碼輸進(jìn)時只打開相應(yīng)的某一個與門一樣。所不同的是譯碼程序是串行工作的,即一個一個地比較,一直到相等時為止。而硬件譯碼線路則是并行工作的,因而速度較快。以ISO碼為例,M為(01,001,101)2,即M為八進(jìn)制的(115)8,S為(123)8,T為(124)8,F(xiàn)為(106)8,……,因此,在判定數(shù)據(jù)段中是否已編進(jìn)M,S,T或F字時,就可以將輸進(jìn)的字符和這些八進(jìn)制數(shù)相比較,若相等了,則說明相應(yīng)的字符已輸進(jìn),立即設(shè)立相應(yīng)的標(biāo)志。
某一個字符輸進(jìn)以后的處理過程包括:
(1) 建立格式標(biāo)志。假如是位格式,則每個字符所占的格式字的位數(shù)不同。
(2) 根據(jù)輸進(jìn)字符的不同,確定相應(yīng)的存放數(shù)值的地址。例如,M碼的值存放在1000H,S碼的值存放在1002H,……;有的系統(tǒng)則對于各專用地址碼(如N,X,Y,G,M,F(xiàn)等)在存放區(qū)域中都有一個位移量,該區(qū)域的首址加上地址碼所對應(yīng)的位移量,就可得到該地址碼所存放的區(qū)域。
(3) 確定調(diào)用“數(shù)碼轉(zhuǎn)換程序”的次數(shù)。一個代碼后總有數(shù)字相接,例如M02,S11,X1000000,……。M碼的值最多為2位,是碼最多為2位(或3位),X碼的值最多為7位等。各個系統(tǒng)不盡相同。但對某一個具體系統(tǒng)而言,有一個規(guī)定值。假如某一個代碼,它的值得最多為2位,那么只需調(diào)用數(shù)碼轉(zhuǎn)換程序兩次。所謂數(shù)碼轉(zhuǎn)換,即把輸進(jìn)的字符(如ASCII碼)轉(zhuǎn)換成二進(jìn)制碼在內(nèi)存中存放。
將不同字符的處理器程序合并起來需要一張信息表。該表中沒一個字符均有相應(yīng)的一欄。欄中內(nèi)容包括地址偏移量、在格式標(biāo)志字中的位數(shù)及調(diào)用數(shù)碼轉(zhuǎn)換程序的次數(shù)。經(jīng)過一次的算術(shù)和邏輯運算即可以完成譯碼工作。在進(jìn)行譯碼的同時,系統(tǒng)要對零件程序作語法檢查,如輸進(jìn)的數(shù)字個數(shù)是否大于答應(yīng)值,不答應(yīng)帶負(fù)號的地址碼是否帶了負(fù)號等。
譯碼的結(jié)果存放在規(guī)定的存儲區(qū)內(nèi),存放譯碼結(jié)果的地方叫做譯碼結(jié)果存儲器。譯碼結(jié)果存儲器以規(guī)定的次序存放各代碼的值(二進(jìn)制),且包括一個程序格式標(biāo)志單元,在該格式標(biāo)志單元中某一位為1,即表示指定的代碼(例如F、S、M……)已經(jīng)被編進(jìn)。為了使用方便,有時對G碼、M碼的每一個值或幾個值單獨建立標(biāo)志字。例如,對關(guān)于插補(bǔ)方式的G00,G01,G02,G03建立一個標(biāo)志字,該標(biāo)志字為0時代表已編進(jìn)了G00,為1時代表婊進(jìn)了G01……。
3、預(yù)計算
為了減輕插補(bǔ)工作的負(fù)擔(dān),進(jìn)步系統(tǒng)的實時處理能力,經(jīng)常在插補(bǔ)運算前先進(jìn)行數(shù)據(jù)的預(yù)處理,例如,確定圓弧平面、刀具半徑補(bǔ)償?shù)挠嬎愕取.?dāng)采用數(shù)字積分法時,可預(yù)先進(jìn)行左移規(guī)格化的處理和積分次數(shù)的計算等,這樣,可把最直接、最方便形式的數(shù)據(jù)提供給插補(bǔ)運算。
數(shù)據(jù)預(yù)處理即預(yù)計算,通常包括刀具長度補(bǔ)償、刀具半徑補(bǔ)償計算、象限及進(jìn)給方向判定、進(jìn)給速度換算和機(jī)床輔助功能判定等。在第二章中已對刀具半徑補(bǔ)償計算的方法作了介紹。下面僅敘述速度計算及控制。
進(jìn)給速度的控制方法與系統(tǒng)采用的插補(bǔ)算法有關(guān),也因不同的伺服系統(tǒng)而有所不同。在開環(huán)系統(tǒng)中,經(jīng)常采用基準(zhǔn)脈沖插補(bǔ)法,其坐標(biāo)軸的運動速度控制是通過控制插補(bǔ)運算的頻率,進(jìn)而控制向步進(jìn)電機(jī)輸出脈沖的頻率來實現(xiàn)的,速度計算的方法是根據(jù)編程F值來確定這個頻率值。通常有程序延時法和中斷法兩種。
(1) 程序延時法。程序延時法又稱為程序計時法。這種方法先根據(jù)系統(tǒng)要求的進(jìn)給頻率,計算出兩次插補(bǔ)運算之間的時間間隔,用CPU執(zhí)行延時子程序的方法控制兩次插補(bǔ)之間的時間。改變延時子程序的循環(huán)次數(shù),即可改變進(jìn)給速度。
(2) 中斷方法。中斷方法或稱為時鐘中斷法,是指每隔規(guī)定的時間向CPU發(fā)中斷請求,在中斷服務(wù)程序中進(jìn)行一次插補(bǔ)運算并發(fā)出一個進(jìn)給脈沖。因此,改變中斷請求信號的頻率,就即是改變了進(jìn)給速度。中斷請求信號可通過F指令設(shè)定的脈沖信號產(chǎn)生,也可通過可編程計數(shù)器/定時器產(chǎn)生。如采用Z80CTC作定時器,由程序設(shè)置時間常數(shù),每定時到,就向CPU發(fā)中斷請求信號,改變時間常數(shù)Tc就可以改變中斷請求脈沖信號的頻率。所以,進(jìn)給速度計算與控制的關(guān)鍵就是如何給定CTC的時間常數(shù)Tc。
在半閉環(huán)和閉環(huán)系統(tǒng)中,則是采用時間分割的思想,根據(jù)編程的進(jìn)給速度F值將輪廓曲線分割為采樣周期,即迭代周期的進(jìn)給量——輪廓步長的方法。速度計算的任務(wù)是:當(dāng)直線插補(bǔ)時,計算出各坐標(biāo)軸的采樣周期的步長;當(dāng)插補(bǔ)圓弧時,為插補(bǔ)程序計算好步長分配系數(shù)(有時也稱之為角步距)。另外,在進(jìn)給速度控制中,一般也都有一個升速、恒速(勻速)和降速的過程,以適應(yīng)伺服系統(tǒng)的工作狀態(tài),保證工作的穩(wěn)定性。此內(nèi)容將在第五章中具體介紹。
4、插補(bǔ)計算
插補(bǔ)計算是CNC系統(tǒng)中最重要的計算工作之一。在傳統(tǒng)的NC裝置中,采用硬件電路(插補(bǔ)器)來實現(xiàn)各種軌跡的插補(bǔ)。為了在軟件系統(tǒng)中計算所需的插補(bǔ)軌跡,這些數(shù)字電路必須由計算機(jī)的程序來模擬。利用軟件來模擬硬件電路的題目在于:三軸或三軸以上聯(lián)動的系統(tǒng)具有三個或三個以上的硬件電路(如每軸一個數(shù)字積分器),計算機(jī)是用若干條指令來實現(xiàn)插補(bǔ)工作的。但是計算機(jī)執(zhí)行每條指令都須要花費一定的時間,而當(dāng)前有的小型或微型計算機(jī)的計算速度難以滿足NC機(jī)床對進(jìn)給速度和分頻率的要求。因此,在實際的CNC系統(tǒng)中,經(jīng)常采用粗、精插補(bǔ)相結(jié)合的方法,即把插補(bǔ)功能氛圍軟件插補(bǔ)和硬件插補(bǔ)兩部分,計算機(jī)控制軟件把刀具軌跡分為若干段,而硬件電路再在段的出發(fā)點和終點之間進(jìn)行數(shù)據(jù)的“密化”,使刀具軌跡在答應(yīng)的誤差之內(nèi),即軟件實現(xiàn)初插補(bǔ),硬件實現(xiàn)精插補(bǔ)。下面以三坐標(biāo)直線插補(bǔ)為例予以說明。
5、輸出
輸出程序的功能是:
(1) 進(jìn)行伺服控制。如上所述。
(2) 當(dāng)進(jìn)給脈沖改變方向時,要進(jìn)行反向間隙補(bǔ)償處理。若某一軸由正向變成負(fù)向運動,則在反向前輸出Q個正向脈沖;反之,若由負(fù)向變成正向運動,則在反向前輸出Q個負(fù)向脈沖(Q為反向間隙值,可由程序預(yù)置)。
(3) 進(jìn)行絲杠螺距補(bǔ)償。當(dāng)系統(tǒng)具有盡對零點時,軟件可顯示刀具在任意位置上的盡對坐標(biāo)值。若預(yù)先對機(jī)床各點精度進(jìn)行丈量,作出其誤差曲線,隨后將各點修正量制成表格存進(jìn)數(shù)控系統(tǒng)的存儲器中。這樣,數(shù)控系統(tǒng)在運行過程中就可對各點坐標(biāo)位置自動進(jìn)行補(bǔ)償,從而進(jìn)步了機(jī)床的精度。
(4) M,S,T等輔助功能的輸出。在某些程序段中須要啟動機(jī)床主軸、改變主軸速度、換刀等,因此要輸出M,S,T代碼,這些代碼大多數(shù)是開、關(guān)控制,由機(jī)床強(qiáng)電執(zhí)行。但哪些輔助功能是在插補(bǔ)輸出之后才執(zhí)行,哪些輔助功能必須在插補(bǔ)輸出前執(zhí)行,需要在軟件設(shè)計前預(yù)先確認(rèn)。
6、治理與診斷軟件
一般CNC(MNC)系統(tǒng)中的治理軟件只涉及兩項,即CPU治理和外部設(shè)備治理。由于數(shù)控機(jī)床的加工是以單個零件為對象的,一個零件程序可以分成若干程序段。每個程序段的執(zhí)行又分成數(shù)據(jù)分析、運算、走刀控制、其他動作的控制等步驟。通常情況下,這些加工步驟之間多是順序關(guān)系,因此實際的過程就是這些預(yù)定步驟的反復(fù)執(zhí)行。在實際系統(tǒng)中,通常多是采用一個主程序?qū)⒄麄€加工過程串起來,主控程序?qū)斶M(jìn)的數(shù)據(jù)分析判定后,轉(zhuǎn)進(jìn)相應(yīng)的子程序處理,處理完畢后再返回對數(shù)據(jù)的分析、判定、運算……。在主控程序空閑時(如延時),可以安排CPU執(zhí)行預(yù)防性診斷程序,或?qū)ι形磮?zhí)行程序段的輸進(jìn)數(shù)據(jù)進(jìn)行預(yù)處理等。
在CNC系統(tǒng)中,中斷處理部分是重點,工作量也比較大。由于大部分實時性較強(qiáng)的控制步驟如插補(bǔ)運算、速度控制、故障處理等都要由中斷處理來完成。有的機(jī)床將行程超程和報警、閱讀機(jī)請求、插補(bǔ)等分為多級中斷,根據(jù)其優(yōu)先級決定響應(yīng)的次序。有的機(jī)床則只設(shè)一級中斷,只是在中斷請求同時存在時,才用硬件排隊或軟件詢問的方法來定一個順序。
對于單CPU數(shù)控系統(tǒng)而言,常見的軟件結(jié)構(gòu)有兩種,即前后臺型和中斷型。
在前后臺型結(jié)構(gòu)的CNC系統(tǒng)中,整個控制軟件分為前臺程序和后臺程序。前臺程序是一個實時中斷服務(wù)程序,它幾乎承擔(dān)了全部的實時功能,如插補(bǔ)、位置控制、機(jī)床相關(guān)邏輯和監(jiān)控等。后臺程序是指實現(xiàn)輸進(jìn)、譯碼、數(shù)據(jù)處理及治理功能的程序,亦稱背景程序,如圖3-25所示。背景程序是一個循環(huán)運行程序,
在其運行過程中,前臺實時中斷程序不斷插進(jìn),與背景程序相配合,共同完成零件的加工任務(wù)。
中斷型結(jié)構(gòu)的特點是,除了初始化程序之外,系統(tǒng)軟件中所有的各種任務(wù)模塊分別安排在不同級別的中斷服務(wù)程序中。整個軟件就是一個大的中斷系統(tǒng)。其治理的功能主要通過各級中斷程序之間的相互通訊來解決。
能夠方便地設(shè)置各種診斷程序也是CNC和MNC系統(tǒng)的特點之一。有了較完善的診斷程序可以防止故障的發(fā)生或擴(kuò)大。在故障出現(xiàn)后可以迅速查明故障的類型和部位,減少故障停機(jī)時間。各種CNC(MNC)系統(tǒng)設(shè)置診斷程序的情況差別也很大。診斷程序可以包括在系統(tǒng)運行過程中進(jìn)行檢查和診斷;也可以作為服務(wù)性程序,在系統(tǒng)運行前或故障停機(jī)后進(jìn)行診斷,查找故障的部位。國外一些公司的CNC系統(tǒng)還可以進(jìn)行通訊(海外)診斷,由通訊診斷中心指示系統(tǒng)或操縱者進(jìn)行某些試運行,以查找故障隱患或故障部位。
(1) 運行中的診斷。在普通NC系統(tǒng)中已包含有在運行中進(jìn)行診斷的萌芽,如紙帶輸進(jìn)時的橫向與縱向(水平與垂直)奇偶校驗,同步孔丟失校驗,非法指令碼檢查等。此外還有超程報警等措施。在CNC和MNC系統(tǒng)中做這些工作更加方便。而且還可以用打字機(jī)指示各種項目診斷的結(jié)果和用同一編號表示的故障部位。一般來說,運行中進(jìn)行診斷的程序比較零散,常包含在主控程序及中斷處理程序分支中。常見的手段有:
① 用代碼和檢查內(nèi)存:此法只能對程序中那些不變區(qū)域進(jìn)行檢查,而且必須是在恢復(fù)系統(tǒng)程序的初態(tài)后進(jìn)行的。
② 格式檢查:此法一般用在紙帶輸進(jìn)時,對零件加工源程序進(jìn)行檢查,包括奇偶校驗、非法指令代碼(本系統(tǒng)中不使用的指令代碼)、數(shù)據(jù)超限等。
③ 雙向傳送數(shù)據(jù)校驗:此法常用在間接型CNC系統(tǒng)或群控系統(tǒng)中。手動數(shù)據(jù)輸進(jìn)也可用此法校驗。
④ 清單校驗:即利用所配備的打印設(shè)備打印程序清單及某些中間數(shù)據(jù),綜合性地診斷主機(jī)、接口及軟件的故障。
(2) 停機(jī)診斷。停機(jī)診斷是指在系統(tǒng)開始運行前,或發(fā)生故障(包括故障先兆)系統(tǒng)停止運行后,利用計算機(jī)進(jìn)行診斷。它一般是用軟件控制進(jìn)行階段性的運行,如傳送數(shù)據(jù)或模擬進(jìn)行單項的控制動作。逐項檢查硬件線路的功能,有選擇地查找故障部位。這種診斷程序可以與運行用的系統(tǒng)程序分開,在須要進(jìn)行診斷時再輸進(jìn)計算機(jī)。必要時,還可沖掉部分系統(tǒng)程序而裝進(jìn)內(nèi)存。
(3) 通訊診斷。通訊診斷是由用戶經(jīng)電話線路與通訊診斷中心聯(lián)系,由該中心的計算機(jī)給用戶的計算機(jī)發(fā)送診斷程序,程序指示CNC系統(tǒng)進(jìn)行某種運行,同時收集數(shù)據(jù),分析系統(tǒng)的狀態(tài)。將系統(tǒng)狀態(tài)與存儲的應(yīng)有工作狀態(tài)以至某些極限參數(shù)作比較,以確定系統(tǒng)的工作狀態(tài)是否正常,故障的部位及故障的趨勢。可見,通訊診斷既可用作診斷異常狀態(tài)的工具,又可用作預(yù)防性檢驗的手段。由于用戶與通訊診斷中心之間可使用跨洋電話系統(tǒng),故又被稱為海外診斷。
(審核編輯: 智匯小新)
分享