1 前言
目前,數(shù)控技術(shù)正在發(fā)生根本性變革,由專用型封閉式開環(huán)控制模式向通用型開放式實(shí)時(shí)動(dòng)態(tài)全閉環(huán)控制模式發(fā)展。另一方面,隨著工業(yè)Pc機(jī)性能的飛速發(fā)展,其可靠性也大為提高,且其價(jià)格卻大幅度降低。從而以工業(yè)PC機(jī)為核心的控制系統(tǒng)已廣泛被工業(yè)控制領(lǐng)域所接受。尤其是近年來,發(fā)展通用的全軟件開放式數(shù)控系統(tǒng)已成為國際數(shù)控行業(yè)研究的熱點(diǎn),代表著數(shù)控技術(shù)發(fā)展的最新潮流。全軟件數(shù)控系統(tǒng)由通用PC+I/O接口卡構(gòu)成。這種模式是將I/O接口卡插入到PC機(jī)的標(biāo)準(zhǔn)插槽中,整個(gè)系統(tǒng)是由PC擴(kuò)展而成。數(shù)控系統(tǒng)所有的非實(shí)時(shí)任務(wù)和實(shí)時(shí)任務(wù)都由PC完成。I/O接口卡實(shí)現(xiàn)PC與控制目標(biāo)之間的溝通及驅(qū)動(dòng)接口的任務(wù)。PC+I/O接口卡模式的全軟件數(shù)控系統(tǒng)才是真正意義上的開放式數(shù)控系統(tǒng),能實(shí)現(xiàn)Nc內(nèi)核的開放、用戶操作界面的開放。
該全軟件開放式數(shù)控系統(tǒng),采用PC前端加高速I/0平臺(tái)的復(fù)合式結(jié)構(gòu);所有的數(shù)控功能都由模塊化的功能軟件實(shí)現(xiàn),可供程序直接調(diào)用,也可作為構(gòu)造其他控制系統(tǒng)的二次開發(fā)調(diào)用。本系統(tǒng)的控制通道為:PC通過總線控制每一個(gè)I/O端口,I/O端口與各個(gè)控制目標(biāo)相連。硬件組成如圖1所示。
圖1數(shù)控系統(tǒng)硬件組成結(jié)構(gòu)圖
2 硬件系統(tǒng)
2.1 工控PC機(jī)
計(jì)算機(jī)是運(yùn)行數(shù)控軟件的核心部件。采用通用的工控PC機(jī),不但可以充分利用PC完備的硬件及計(jì)算機(jī)領(lǐng)域的先進(jìn)技術(shù)以提高CNC系統(tǒng)的可靠性,而且可以在很大范圍內(nèi)選擇硬件,從而避免CNC在更換硬件和服務(wù)時(shí)引起的限制。選用新型高性能的SIMATC PC840型工控機(jī)作為運(yùn)算和控制核心,用以來完成數(shù)控系統(tǒng)的基本功能、開關(guān)量功能及伺服控制功能。
2.2 I/O適配卡
系統(tǒng)在PC/AT總線上構(gòu)架高速I/O平臺(tái),自行設(shè)計(jì)了一塊I/O適配卡。該卡用以完成地址譯碼、I/O端口光電隔離、I/O端口驅(qū)動(dòng)等作為信號(hào)輸入輸出的通用功能。其I/O端口控制和譯碼的功能都由CPLD可編程器件實(shí)現(xiàn),功能完全由寫入該卡的軟件定義,只要對CPLD重新編程,而無需修改硬件就可以成為新的數(shù)控I/O硬件平臺(tái),將硬件設(shè)計(jì)也實(shí)現(xiàn)軟件化,使數(shù)控系統(tǒng)硬件完全具有通用性,且升級(jí)、維護(hù)都更方便。其結(jié)構(gòu)如圖2所示。
圖2I/O適配卡原理圖
由于PC機(jī)的I/O地址單元大部分被一些標(biāo)準(zhǔn)設(shè)備占用,如果設(shè)置不當(dāng),會(huì)引起PC機(jī)工作不正常,甚至死機(jī)。根據(jù)PC機(jī)I/O端口地址分配表,我們將適配卡置為0310H~031FH 16個(gè)連續(xù)地址單元。I/0地址譯碼采用高速電可擦除可編程器件ATFl6V8B。
其地址分配如下:
2.3伺服信號(hào)中轉(zhuǎn)板
這塊伺服信號(hào)中轉(zhuǎn)板用于在I/O適配卡與電機(jī)伺服驅(qū)動(dòng)器之間進(jìn)行信號(hào)轉(zhuǎn)換。主要產(chǎn)生各部分之間差分形式的信號(hào),使伺服控制具有更高的抗干擾能力和可靠性。
3 軟件系統(tǒng)分析
數(shù)控系統(tǒng)軟件屬于前后臺(tái)結(jié)構(gòu)的控制模式,由實(shí)時(shí)中斷完成插補(bǔ)運(yùn)算和位置控制。與傳統(tǒng)的基于PC的數(shù)控系統(tǒng)結(jié)構(gòu)比較,全軟件數(shù)控系統(tǒng)要解決插補(bǔ)計(jì)算和位置控制的軟件化問題,同時(shí)須滿足加工過程的實(shí)時(shí)性要求。所以在選擇軟件方案時(shí)必須圍繞這一出發(fā)點(diǎn)來進(jìn)行。在目前比較流行的windows2000操作系統(tǒng)下開發(fā)本數(shù)控系統(tǒng)的軟件。然而目前的windows的產(chǎn)品不支持實(shí)時(shí)性要求很高的實(shí)時(shí)任務(wù)的調(diào)度管理,所以考慮采用windows操作系統(tǒng)下外圍設(shè)備的硬件中斷,由它來提供高精度的實(shí)時(shí)響應(yīng),并合理運(yùn)用Windows的搶占式、多線程機(jī)制有效地解決了開放式CNC系統(tǒng)的實(shí)時(shí)多任務(wù)問題。經(jīng)過在PⅢ866的CPU上對系統(tǒng)的實(shí)時(shí)性進(jìn)行測試,累計(jì)最遲中斷響應(yīng)速度為23.3μs,結(jié)果表明,完全能滿足強(qiáng)實(shí)時(shí)任務(wù)的要求。
3.1 利用硬件中斷實(shí)現(xiàn)實(shí)時(shí)控制
由于windows系統(tǒng)的控制實(shí)權(quán)由虛擬級(jí)管理器(XMM)和虛擬設(shè)備驅(qū)動(dòng)程序(VxD)實(shí)現(xiàn),通過編寫VxD虛擬設(shè)備驅(qū)動(dòng)程序來提供時(shí)鐘中斷,并通過時(shí)間回調(diào)函數(shù)來保證其實(shí)時(shí)性。
VMM和vxD的操作模式和真正的程序不同。在大多數(shù)時(shí)候,它們是潛伏的。當(dāng)應(yīng)用程序在系統(tǒng)中運(yùn)行時(shí),這些VxD程序沒有被激活。當(dāng)中斷/錯(cuò)誤/事件發(fā)生時(shí),它們才被喚醒。Windows系統(tǒng)為可編程中斷控制器8259安裝了驅(qū)動(dòng)程序VPICD,并通過相關(guān)服務(wù)達(dá)到允許其它V如利用硬中斷的目的。VPICD負(fù)責(zé)映射中斷信號(hào)到虛擬機(jī),并模擬相應(yīng)的I/O來識(shí)別虛擬機(jī)發(fā)出的中斷請求。
在虛擬設(shè)備驅(qū)動(dòng)程序中要完成以下工作:
3.1.1 初始化8253
該過程是完成適配卡上8253的初始化設(shè)置。使用通道o(方式0)。8253用來控制插補(bǔ)速度。8253的cLK信號(hào)輸入端為2MHz方波信號(hào)。當(dāng)8253的16位計(jì)數(shù)器將置入的值減為。則發(fā)一個(gè)正跳變的中斷請求信號(hào)給ISA插槽的IRQ3,即主板主8259的IRQ3。CPU響應(yīng)中斷后轉(zhuǎn)入中斷服務(wù)程序INT—SEV0。中斷服務(wù)程序根據(jù)插補(bǔ)的策略送出伺服電機(jī)的脈沖及方向信號(hào)并接收反饋信號(hào)自動(dòng)調(diào)整各坐標(biāo)值,然后繼續(xù)對8253進(jìn)行重新置數(shù),并開放中斷等待下一個(gè)中斷的發(fā)生,從而自動(dòng)完成插補(bǔ)的全過程。
3.1.2 初始化8259
軟件對PC機(jī)主板上的兩片8259進(jìn)行初始化,即將操作系統(tǒng)的中斷系統(tǒng)進(jìn)行重置,這樣做的主要目的是用以接管中斷向量B,即原串行口2,我們用它指向中斷服務(wù)程序。但這是一件比較危險(xiǎn)的操作,因?yàn)榻z毫錯(cuò)誤都會(huì)給PC機(jī)帶來系統(tǒng)崩潰的后果。這里我們使用驅(qū)動(dòng)程序開發(fā)包(DDK)在VC++6.0集成環(huán)境下經(jīng)過多次調(diào)試完成該項(xiàng)工作。同時(shí)還需說明的是,在使用適配卡時(shí),數(shù)控系統(tǒng)已經(jīng)占用了COM2,從而必須保證機(jī)箱的cOM2端口不能連接任何外部設(shè)備;另一方面,在運(yùn)行本軟件時(shí),若未插適配卡,則不會(huì)有中斷信號(hào)發(fā)至IRQ3,這樣系統(tǒng)軟件將無法運(yùn)行。
3.2 利用Visual C++6.0開發(fā)系統(tǒng)軟件
windows的多線程技術(shù)以“資源分時(shí)共享”為原則,在軟件設(shè)計(jì)時(shí),將有并行要求的模塊置于獨(dú)立的線程中,實(shí)現(xiàn)系統(tǒng)的多任務(wù)并行工作。由于Windows操作系統(tǒng)的設(shè)備無關(guān)性和高級(jí)語言良好的可移植性,在Windows環(huán)境下使用Ms Visual系列功能強(qiáng)大的編程語言來實(shí)現(xiàn)數(shù)控系統(tǒng),可以使系統(tǒng)的結(jié)構(gòu)組織得比較明晰有序,也便于功能的擴(kuò)充與剪裁,使數(shù)控系統(tǒng)能方便地與各種現(xiàn)有的CAD/CAM軟件、數(shù)據(jù)庫接口。
在軟件設(shè)計(jì)中,采用了模塊化結(jié)構(gòu),使得所有的數(shù)控核心功能軟件和附加的可選功能軟件在系統(tǒng)中易于集成,同時(shí)也可作為其他控制系統(tǒng)的二次開發(fā)調(diào)用,體現(xiàn)了數(shù)控系統(tǒng)軟件的開放性。系統(tǒng)加工程
序文件的讀寫采用軟件自帶的編輯窗口,也可以讀人外部的文本文件,該程序可自動(dòng)格式化輸人的程序,并檢查語法錯(cuò)誤,能在線編輯c代碼程序,并以文本文檔的格式保存。系統(tǒng)主功能鍵為主界面上的各個(gè)按鈕和選擇框,全部運(yùn)行用鼠標(biāo)點(diǎn)擊操作。
由于篇幅所限,只對軟件中涉及的幾個(gè)關(guān)鍵問題進(jìn)行闡述。
3.2.1 線程的應(yīng)用
在手動(dòng)運(yùn)行和自動(dòng)運(yùn)行中都用到了線程技術(shù)。
3.2.2 對注冊表操作的應(yīng)用
由于數(shù)控系統(tǒng)要求有坐標(biāo)記憶的功能,也就是說在系統(tǒng)再次啟動(dòng)時(shí),各軸坐標(biāo)值應(yīng)該為上一次系統(tǒng)退出前的坐標(biāo)值。為了實(shí)現(xiàn)這一個(gè)功能,比較便捷的方法就是對注冊表進(jìn)行讀寫操作。在系統(tǒng)退出之前,把各軸坐標(biāo)值寫入注冊表,在系統(tǒng)啟動(dòng)時(shí),把坐標(biāo)值從注冊表中取出。
3.2.3 加工程序的編譯與診斷
在編譯程序時(shí),基于DOS的數(shù)控系統(tǒng)主要是經(jīng)過多次掃描,將數(shù)控加工程序存入緩沖區(qū),最后再次掃描編譯緩沖區(qū),根據(jù)各功能代碼轉(zhuǎn)入相應(yīng)的子程序。進(jìn)行插補(bǔ)運(yùn)算,完成程序加工。
在編寫這套軟件時(shí),加工代碼只經(jīng)過一次掃描。在掃描過程中,對代碼按照字符逐個(gè)識(shí)別就把程序中的各種代碼元素存放在不同的數(shù)組中,其中包含絕對坐標(biāo)值、相對坐標(biāo)值、正反轉(zhuǎn)標(biāo)志位等等。在輸出脈沖程序模塊中,按照這些數(shù)組中的值分別向各軸送出相應(yīng)的脈沖及方向信號(hào)。
3.2.4 插補(bǔ)程序
插補(bǔ)程序采用比較積分法,插補(bǔ)算法基于伸雄式函數(shù)發(fā)生器?;驹頌椋喝绻o定了直線的終點(diǎn)坐標(biāo)(xo,yo)、圓弧的起點(diǎn)坐標(biāo)(xo,-yo)、或者其它二次曲線的參數(shù)(A,B)和公差(α,β),就可以通過判別函數(shù)△的計(jì)算來實(shí)現(xiàn)這些函數(shù)曲線的脈沖分配。△為x軸脈沖總時(shí)間間隔和y軸脈沖總時(shí)間間隔之差,用來決定兩軸進(jìn)給脈沖的配合關(guān)系。運(yùn)算過程說明如下:
(1)比較x軸和y軸的脈沖間隔A和B(對直線而言,A、B的初始值A(chǔ)0=ye,B0=xe;對圓則A0=x0,B0=y0)。插補(bǔ)時(shí)取脈沖間隔小的軸作基礎(chǔ)軸,此處設(shè)A<B,取戈為基礎(chǔ)軸。
(2)脈沖源每發(fā)一個(gè)脈沖,基礎(chǔ)軸都走一步。非基礎(chǔ)軸,則根據(jù)判別函數(shù)△來決定是否走一步。
當(dāng)△≤0時(shí),x、y都走一步。
當(dāng)△<0時(shí),只戈走一步,y不動(dòng)。
為方便計(jì),其中A、B取絕對值進(jìn)行運(yùn)算,而α、β取相對值運(yùn)算??凇⒈R取值不同就可以得到不同的曲線形式。
采用此算法實(shí)現(xiàn)多坐標(biāo)直線插補(bǔ)插補(bǔ)原理清晰,插補(bǔ)計(jì)算比較簡單,而且由于這種方法是在基礎(chǔ)軸上走步,脈沖發(fā)生是不間斷的,而且是均勻的,故機(jī)床的長軸運(yùn)行很平穩(wěn)。
4 結(jié)束語
在機(jī)械制造加工中,數(shù)控軟件不僅要有一個(gè)友好的人機(jī)界面,更重要的是實(shí)現(xiàn)加工控制的實(shí)時(shí)性。我們設(shè)計(jì)了這種前后臺(tái)結(jié)構(gòu)的全軟件開放式數(shù)控系統(tǒng),以visual C++6.0作為開發(fā)工具,在windows2000平臺(tái)下,充分利用PC的硬件功能,通過編寫VPICD虛擬設(shè)備驅(qū)動(dòng)程序來提供實(shí)時(shí)中斷以實(shí)現(xiàn)實(shí)時(shí)控制;采用windows多線程機(jī)制來實(shí)現(xiàn)多任務(wù)調(diào)度。下一步我們將在不斷完善系統(tǒng)自身功能的同時(shí),進(jìn)一步開發(fā)出該數(shù)控系統(tǒng)的網(wǎng)絡(luò)功能。
(審核編輯: 智匯胡妮)
分享