基于LabVIEW平臺(tái)的數(shù)控軟件系統(tǒng)的實(shí)現(xiàn)
點(diǎn)擊:1611
A+ A-
所屬頻道:新聞中心
在系統(tǒng)地闡述了數(shù)控系統(tǒng)的構(gòu)成、模塊和任務(wù)的劃分、功能的確定、加工控制的數(shù)據(jù)流程、數(shù)控軟件結(jié)構(gòu)的基礎(chǔ)上,介紹了一種基于LabVIEw平臺(tái)的上、下位機(jī)形式的數(shù)控系統(tǒng)的實(shí)現(xiàn)方法和途徑。
近年來,隨著PC機(jī)技術(shù)的迅速發(fā)展,與之原理及結(jié)構(gòu)幾近相同的工業(yè)Pc機(jī)的性能得到了快速的發(fā)展,這使得工業(yè)PC的軟、硬件資源迅速豐富起來,而價(jià)格卻大幅度降低,開發(fā)基于工業(yè)Pc機(jī)的數(shù)控系統(tǒng),已成為機(jī)床控制領(lǐng)域研究的熱點(diǎn)。
本課題研究一種基于PC和windows平臺(tái)的,用于任意形狀的二維零件加工的數(shù)控系統(tǒng)。數(shù)控系統(tǒng)硬件平臺(tái)采用Pc+運(yùn)動(dòng)驅(qū)動(dòng)卡,軟件采用Windows98/NT平臺(tái),開發(fā)平臺(tái)采用LabVIEW。本系統(tǒng)的研制成功,將全面提升該類數(shù)控系統(tǒng)的整機(jī)性能,提高性能價(jià)格比,是較為先進(jìn)的數(shù)控系統(tǒng)。
1 系統(tǒng)的組成
系統(tǒng)的組成如圖1所示,系統(tǒng)由上下位機(jī)兩部分構(gòu)成,上、下位機(jī)通過PCI或USB實(shí)現(xiàn)連接。這種方式下PC機(jī)只負(fù)責(zé)常規(guī)的系統(tǒng)管理和維護(hù),而具體的數(shù)控系統(tǒng)的核心功能,則由運(yùn)動(dòng)控制卡直接實(shí)現(xiàn)。運(yùn)動(dòng)控制卡硬件直接控制電機(jī)的動(dòng)作,從而解決了WINDOWS平臺(tái)下計(jì)算機(jī)控制中經(jīng)常碰到的實(shí)時(shí)控制問題所帶來的困擾。本文簡(jiǎn)單介紹了基于這種思想和LabVIEW軟件平臺(tái)而開發(fā)的切割機(jī)數(shù)控軟件系統(tǒng)。
圖1控制系統(tǒng)的組成
2 LabVIEW簡(jiǎn)介
LabVIEW是NI公司的主打產(chǎn)品之一,是一種用圖標(biāo)代碼來代替編程語言創(chuàng)建應(yīng)用程序的開發(fā)工具,它使用數(shù)據(jù)流的編程方法來描述程序的執(zhí)行,用圖標(biāo)和連線代替文本的形式編寫程序。它具有較豐富的面板工具,可以快速開發(fā)出精美的控制界面,具有豐富的數(shù)據(jù)處理子模塊,可以方便地進(jìn)行多種數(shù)據(jù)處理進(jìn)程,它還可與Visual C++進(jìn)行交互,充分利用在C語言基礎(chǔ)上開發(fā)的已有的軟件資源。由于其語言上的特性,所以對(duì)編程者的要求沒有傳統(tǒng)計(jì)算機(jī)語言那樣高,易于學(xué)習(xí)和使用。對(duì)于本系統(tǒng)而言,LabVIEW最為先進(jìn)的技術(shù)是它具有多任務(wù)并行處理機(jī)制,使得系統(tǒng)開發(fā)人員可以輕松地實(shí)現(xiàn)在傳統(tǒng)編程中難度較大的多任務(wù)并行處理。
其多任務(wù)并行處理實(shí)現(xiàn)的機(jī)理是:LabVIEW中存在一個(gè)任務(wù)隊(duì)列,系統(tǒng)將要執(zhí)行的一系列任務(wù)都在隊(duì)列中存儲(chǔ),并根據(jù)所存在的任務(wù)的優(yōu)先級(jí)決定下一時(shí)間片將要執(zhí)行哪一項(xiàng)任務(wù),直到所有任務(wù)被完成為止。在LabVIEw中可以通過VI設(shè)置對(duì)話框進(jìn)行優(yōu)先級(jí)設(shè)置,也可以通過調(diào)用wait()函數(shù)放棄cPu占用來實(shí)現(xiàn)。較傳統(tǒng)的多任務(wù)實(shí)現(xiàn)而言,用LabVIEw的實(shí)現(xiàn)則更加簡(jiǎn)單和靈活。
另外,LabVIEw可以輕松實(shí)現(xiàn)系統(tǒng)編程的模塊化,將系統(tǒng)的各個(gè)任務(wù)劃分成多個(gè)子VI,由各個(gè)子VI實(shí)現(xiàn)各個(gè)模塊的劃分和開發(fā),是較為理想的開發(fā)平臺(tái)。
3 數(shù)控系統(tǒng)任務(wù)的劃分
本數(shù)控系統(tǒng)的任務(wù)分為實(shí)時(shí)任務(wù)及非實(shí)時(shí)任務(wù)兩種。由于系統(tǒng)的譯碼、刀具半徑補(bǔ)償?shù)裙ぷ魇窃诩庸ら_始前完成的,并且系統(tǒng)所需要的當(dāng)前零件的加工數(shù)據(jù)將會(huì)在加工運(yùn)動(dòng)之前一次或分次成塊地寫入到下位機(jī)的兩塊存儲(chǔ)量較大的內(nèi)存區(qū)域當(dāng)中,所以,系統(tǒng)的任務(wù)劃分與一般的系統(tǒng)是不同的。上位機(jī)的非實(shí)時(shí)任務(wù)有:參數(shù)輸入任務(wù)、命令輸人任務(wù)、程序解釋及刀具半徑補(bǔ)償任務(wù)、程序預(yù)處理任務(wù)、文件服務(wù)任務(wù)、系統(tǒng)幫助任務(wù)、故障診斷任務(wù)及輸人事件處理任務(wù)。這些任務(wù)的產(chǎn)生及處理是非實(shí)時(shí)的,也是隨機(jī)的。上位機(jī)的實(shí)時(shí)任務(wù)有:控制參數(shù)顯示任務(wù)、系統(tǒng)設(shè)置任務(wù)、加工動(dòng)態(tài)顯示任務(wù)、加工參數(shù)顯示任務(wù)、加工程序顯示任務(wù)及加工數(shù)據(jù)送人任務(wù)。這些任務(wù)主要是由系統(tǒng)定義一系列的不同任務(wù)優(yōu)先級(jí)實(shí)現(xiàn),對(duì)訪問有次序的任務(wù)采取制約機(jī)制,限制運(yùn)行次序及訪問權(quán)限。
4 系統(tǒng)模塊的劃分
上位機(jī)的控制系統(tǒng)共分為系統(tǒng)控制、界面、譯碼、刀補(bǔ)、仿真、系統(tǒng)設(shè)置、故障診斷、上下位機(jī)通訊、幫助等幾個(gè)模塊。模塊是以系統(tǒng)模塊總體的透明性、獨(dú)立性、可維護(hù)性、可擴(kuò)展性為原則設(shè)計(jì)和開發(fā)的。
系統(tǒng)控制模塊的主要功能是協(xié)調(diào)各模塊的運(yùn)行次序和運(yùn)行的優(yōu)先級(jí)別,它是系統(tǒng)上位機(jī)控制的核心。在該系統(tǒng)中實(shí)現(xiàn)了主界面、手工移動(dòng)界面、定程移動(dòng)界面、極限移動(dòng)界面、程序編輯界面、多件加工界面、自動(dòng)加工界面、系統(tǒng)設(shè)置界面及診斷界面。實(shí)現(xiàn)了各界面內(nèi)部切換功能、相應(yīng)工具條的顯示隱藏及對(duì)應(yīng)功能的調(diào)用。
譯碼模塊是對(duì)加工數(shù)據(jù)進(jìn)行處理的第一個(gè)模塊,處理的是標(biāo)準(zhǔn)的G代碼,該模塊中集成了對(duì)數(shù)控代碼的讀入、錯(cuò)誤檢查、加工軌跡參數(shù)的讀取與規(guī)范、控制參數(shù)的讀取與存儲(chǔ)等功能。該模塊中的加工及控制信息均存在于一個(gè)全局的模板中,便于后繼的處理及訪問。該模塊主要是借用原有的c語言實(shí)現(xiàn)的譯碼功能,通過LabVIEw與Vc的動(dòng)態(tài)調(diào)用功能,將數(shù)據(jù)傳送給已有的程序,程序分析和數(shù)據(jù)分離后將所產(chǎn)生的數(shù)據(jù)傳遞給系統(tǒng)。
刀補(bǔ)模塊采用c功能的刀具半徑補(bǔ)償算法,c刀補(bǔ)是基于矢量的計(jì)算原理的,所以能夠很好地解決工件輪廓加工過程中的兩程序段間的轉(zhuǎn)接過渡問題。這種補(bǔ)償技術(shù)是通過計(jì)算和判斷轉(zhuǎn)接類型(伸長(zhǎng)型、插入型、縮短型)、曲線連接形式及刀補(bǔ)狀態(tài),再加上譯碼的數(shù)據(jù)來實(shí)現(xiàn)數(shù)據(jù)的處理的。刀具半徑補(bǔ)償模塊同樣是由已有的Vc程序?qū)崿F(xiàn)的。
仿真模塊是在不啟動(dòng)電機(jī)的情況下而實(shí)現(xiàn)加工過程模擬的繪圖模塊。該模塊是由具體繪圖函數(shù)、尺寸計(jì)算函數(shù)以及插補(bǔ)運(yùn)算函數(shù)組成的。
系統(tǒng)設(shè)置中實(shí)現(xiàn)對(duì)系統(tǒng)一些全局參數(shù)的設(shè)置,其中包括系統(tǒng)運(yùn)行需要的參數(shù)和系統(tǒng)調(diào)試需要的參數(shù)兩類,這兩類參數(shù)的正確設(shè)置是保證系統(tǒng)的正常運(yùn)行的條件。
監(jiān)控診斷包含了對(duì)系統(tǒng)全部硬件端口、傳感器和電機(jī)的檢測(cè)功能,另外還具有一些系統(tǒng)維護(hù)的必要軟件工具,如殺毒程序等。
5 系統(tǒng)功能的確定
在已有數(shù)控系統(tǒng)的設(shè)計(jì)方案的基礎(chǔ)上,該數(shù)控系統(tǒng)設(shè)定了手動(dòng)控制、程序編輯、自動(dòng)加工、零件選項(xiàng)、套料、系統(tǒng)設(shè)置、監(jiān)控診斷機(jī)系統(tǒng)幫助等功能。手動(dòng)控制中實(shí)現(xiàn)了點(diǎn)動(dòng)、連續(xù)移動(dòng)、定長(zhǎng)移動(dòng)、回零等功能,用于系統(tǒng)定位及實(shí)現(xiàn)簡(jiǎn)單加工。程序編輯中實(shí)現(xiàn)了加工程序的打開、新建、編輯、存儲(chǔ)及圖形預(yù)顯等功能用于對(duì)G代碼文件的編輯處理。
自動(dòng)加工功能是對(duì)由程序編輯處理后的G代碼文件實(shí)現(xiàn)加工,它也包含了一些對(duì)主軸的控制,如停止加工、暫停加工、斷點(diǎn)記憶功能等。
零件選項(xiàng)主要是針對(duì)經(jīng)程序編輯處理后文件的圖形進(jìn)行排列和轉(zhuǎn)動(dòng),并可以形成新的G代碼文件。套料功能中實(shí)現(xiàn)了不同零件問的組合、拆分、相對(duì)轉(zhuǎn)動(dòng)、排列和切割順序的定義等。
系統(tǒng)設(shè)置及監(jiān)控診斷功能在上面已有論述,在這里將不再重復(fù)。
6 數(shù)據(jù)流程分析
本數(shù)控系統(tǒng)和一般的數(shù)控系統(tǒng)一樣,必須完成譯碼(加工代碼解釋)、代碼預(yù)處理(刀補(bǔ)等)、插補(bǔ)準(zhǔn)備、插補(bǔ)等幾個(gè)基本過程來實(shí)現(xiàn)加工。由于該系統(tǒng)的插補(bǔ)功能由運(yùn)動(dòng)控制卡的硬件電路來完成,所以上位機(jī)軟件系統(tǒng)只需要為下位機(jī)提供相應(yīng)的加工數(shù)據(jù)即可。
下面簡(jiǎn)要說明一下其數(shù)據(jù)的流程:零件的加工程序在經(jīng)過了NC程序準(zhǔn)備后,以ISO標(biāo)準(zhǔn)格式放入了NC程序緩沖區(qū)中,首先經(jīng)過Nc程序的譯碼操作,將代碼中的加工及控制信息提取出來,以約定的格式存放于預(yù)刀補(bǔ)緩沖存儲(chǔ)區(qū)Bs中;刀補(bǔ)后的數(shù)據(jù)放入刀補(bǔ)工作緩沖區(qū)AS中,然后將As的內(nèi)容置為可直接用于下位機(jī)讀取的數(shù)據(jù)后放入刀補(bǔ)輸出緩沖區(qū)OS中,下位機(jī)會(huì)循環(huán)檢測(cè)該區(qū)域的數(shù)據(jù)是否準(zhǔn)備好,準(zhǔn)備好后讀取數(shù)據(jù)控制電機(jī)及相關(guān)設(shè)備運(yùn)行。在沒有刀補(bǔ)的情況下,將BS區(qū)中的軌跡信息經(jīng)過簡(jiǎn)單處理后直接放入刀補(bǔ)工作緩沖區(qū)AS中。
由于系統(tǒng)采用了C型刀具半徑補(bǔ)償算法,所以在有刀補(bǔ)處理的情況下,只用一個(gè)BS緩沖區(qū)不能夠滿足實(shí)際刀具中、心軌跡計(jì)算的需要,因此在BS區(qū)和AS區(qū)之間設(shè)立刀補(bǔ)緩沖區(qū)CS,由三個(gè)數(shù)據(jù)緩存共同實(shí)現(xiàn)刀補(bǔ)的計(jì)算。
7 數(shù)控軟件結(jié)構(gòu)分析
上位機(jī)的控制系統(tǒng)共分為系統(tǒng)控制模塊、人機(jī)界面、手動(dòng)控制模塊、程序編輯模塊、自動(dòng)加工、零件選項(xiàng)、系統(tǒng)設(shè)置、診斷、圖形庫(kù)、譯碼、刀補(bǔ)、仿真幾個(gè)模塊。系統(tǒng)模塊的構(gòu)架如圖2所示。
圖2系統(tǒng)的軟件結(jié)構(gòu)
系統(tǒng)控制模塊是系統(tǒng)的調(diào)度核心模塊,該模塊每循環(huán)一次就對(duì)其循環(huán)次數(shù)進(jìn)行查詢,根據(jù)循環(huán)次序所反映的信息,輪流調(diào)用其所控制的各個(gè)子任務(wù);而不受它控制的非實(shí)時(shí)任務(wù)則作為并行的子任務(wù)運(yùn)行。其實(shí)現(xiàn)是利用了LabVIEw中的事件和事件等待函數(shù)來控制任務(wù)的激活和掛起。系統(tǒng)每次遇到等待函數(shù)將是當(dāng)前的子任務(wù)放棄目前的CPU的占用,從而實(shí)現(xiàn)任務(wù)的輪流調(diào)用。
譯碼模塊處理的是標(biāo)準(zhǔn)的G代碼,該模塊中集成了對(duì)數(shù)控代碼的讀入、錯(cuò)誤檢查、加工軌跡參數(shù)的讀取與規(guī)范、控制參數(shù)的讀取與存儲(chǔ)等功能。該模塊中的加工及控制信息均存在于一個(gè)全局的模板中,便于后繼的處理及訪問。
刀補(bǔ)模塊采用c功能的刀具半徑補(bǔ)償算法,c刀補(bǔ)是基于矢量的計(jì)算原理的,所以能夠很好地解決工件輪廓加工過程中的兩程序段間的轉(zhuǎn)接過渡問題。仿真模塊主要由LabVIEw編程系統(tǒng)中的繪圖函數(shù)實(shí)現(xiàn),由于實(shí)現(xiàn)二維繪圖并不是十分困難,所以該編程環(huán)境的圖形處理功能不強(qiáng)的缺點(diǎn)對(duì)于本系統(tǒng)的開發(fā)沒有太多的妨礙。
8 上、下位機(jī)的通訊
本系統(tǒng)采用雙CPU控制的方式,上位機(jī)采用工業(yè)控制微機(jī)、下位機(jī)采用深圳摩信公司的McT8000S4控制器。上、下位機(jī)通訊是實(shí)現(xiàn)加工控制的重要環(huán)節(jié)。上位機(jī)通過摩信公司所提供的軟件包和動(dòng)態(tài)庫(kù)中的相應(yīng)函數(shù)實(shí)現(xiàn)加工數(shù)據(jù)和標(biāo)示信息的互傳,再由下位機(jī)調(diào)用相應(yīng)的軌跡控制函數(shù)控制電機(jī)運(yùn)動(dòng)實(shí)現(xiàn)實(shí)時(shí)控制。下位機(jī)采用c語言和摩信公司提供的編程開發(fā)環(huán)境實(shí)現(xiàn)。
8.1標(biāo)志位的定義
為了表明上位機(jī)對(duì)下位機(jī)的控制要求和體現(xiàn)上位機(jī)的控制時(shí)序,需要系統(tǒng)定義標(biāo)志位。標(biāo)志位實(shí)際上是單個(gè)單位或連續(xù)的多單位的下位機(jī)內(nèi)存空間,這些內(nèi)存空間中所動(dòng)態(tài)寫入的值和加工數(shù)據(jù)代表了不同的控制內(nèi)容,下位機(jī)實(shí)時(shí)檢測(cè)這些內(nèi)存空間中重要的幾個(gè)。再根據(jù)被檢測(cè)內(nèi)存中的內(nèi)容或直接控制硬件動(dòng)作或讀取另外一些內(nèi)存空間中的數(shù)據(jù),根據(jù)數(shù)據(jù)進(jìn)行運(yùn)動(dòng)控制。
這些標(biāo)志位主要有:主循環(huán)標(biāo)志位、參數(shù)塊首地址存儲(chǔ)位、位置塊首地址存儲(chǔ)位、程序塊1首地址存儲(chǔ)位、程序塊2首地址存儲(chǔ)位、預(yù)熱標(biāo)志位、加減速標(biāo)志位、移動(dòng)方式標(biāo)志位、切割速度標(biāo)志位、開始加工標(biāo)志位等標(biāo)志位。
這里需要單獨(dú)說明的是兩個(gè)程序緩存的設(shè)定。下位機(jī)的內(nèi)存空間有限,能容納的加工數(shù)據(jù)也是有限的,為了突破這個(gè)限制系統(tǒng)定義了兩個(gè)大小相同的內(nèi)存空間用于存儲(chǔ)加工數(shù)據(jù)。如果加工程序很長(zhǎng),系統(tǒng)首先會(huì)把兩個(gè)程序緩存多寫滿數(shù)據(jù),當(dāng)?shù)谝粋€(gè)程序緩存讀取完畢時(shí),上位機(jī)將繼續(xù)在第一個(gè)程序緩存中寫入余下的加工數(shù)據(jù),當(dāng)?shù)诙€(gè)程序緩存讀取完畢時(shí),上位機(jī)將繼續(xù)在第二個(gè)程序緩存中寫入余下的加工數(shù)據(jù),如此往復(fù)直到所有的加工數(shù)據(jù)都被寫完。這樣,系統(tǒng)就不會(huì)受到內(nèi)存大小的限制,可加工任意長(zhǎng)度的零件加工程序了。
8.2上位機(jī)控制的實(shí)現(xiàn)
上位機(jī)能夠?qū)崿F(xiàn)對(duì)下位機(jī)的控制主要解決以下幾個(gè)問題:
(1)對(duì)下位機(jī)這個(gè)非標(biāo)準(zhǔn)硬件的內(nèi)存的驅(qū)動(dòng)和訪問;
(2)對(duì)下位機(jī)一些內(nèi)存的實(shí)時(shí)檢測(cè);
(3)從下位機(jī)內(nèi)存中寫入和讀出數(shù)據(jù)。對(duì)于第(1)和第(3)項(xiàng),由于采用的控制卡是摩信公司開發(fā)的智能化較高的板卡,該公司已經(jīng)提供了對(duì)該硬件驅(qū)動(dòng)的必要技術(shù)和資料,同時(shí)也提供了可以對(duì)板卡進(jìn)行各種控制和訪問的動(dòng)態(tài)庫(kù),動(dòng)態(tài)庫(kù)中具有豐富的控制和訪問函數(shù),在許多編程環(huán)境中可以隨意調(diào)用;可以說實(shí)現(xiàn)上還是很容易的。檢測(cè)任務(wù)的功能主要是在進(jìn)入相應(yīng)的控制功能后檢測(cè)下位機(jī)的狀態(tài),然后根據(jù)這些狀態(tài)來判斷當(dāng)前的功能是否需要退出。如果沒有這個(gè)任務(wù)的存在,系統(tǒng)的交互狀態(tài)很容易混亂,造成嚴(yán)重錯(cuò)誤。
下位機(jī)的控制實(shí)現(xiàn)是通過一個(gè)上電后的不間斷的while循環(huán),連續(xù)監(jiān)測(cè)其內(nèi)存空間中的標(biāo)志位的狀態(tài),并根據(jù)這些狀態(tài)進(jìn)入相應(yīng)的子函數(shù)實(shí)現(xiàn)系統(tǒng)的控制。
8.3 系統(tǒng)的下載以及初始化表
當(dāng)系統(tǒng)啟動(dòng)時(shí)上位機(jī)必須保證下位機(jī)的驅(qū)動(dòng)程序下載到下位機(jī),這就需要系統(tǒng)啟動(dòng)時(shí)上位機(jī)調(diào)用摩信提供的動(dòng)態(tài)庫(kù)函數(shù)將相應(yīng)的程序下載。
系統(tǒng)啟動(dòng)時(shí)還有另一項(xiàng)很重要的任務(wù),就是將上次加工或調(diào)節(jié)的參數(shù)設(shè)置恢復(fù),這就需要系統(tǒng)建立一個(gè)數(shù)據(jù)備份文件即初始化表;每當(dāng)系統(tǒng)啟動(dòng)時(shí)都會(huì)從該文件中讀取系統(tǒng)的參數(shù)設(shè)置,完成初始化上位機(jī)和下位機(jī)的工作。
9 結(jié)束語
本系統(tǒng)在原有的功能模塊的基礎(chǔ)上,采用LabVIEw平臺(tái)實(shí)現(xiàn)了系統(tǒng)界面和并行任務(wù)處理的快速開發(fā),是較為方便快捷的一種開發(fā)思路。
(審核編輯: 智匯胡妮)
分享