王 浩,江衛(wèi)華,余睿民,李涵嫣
(1.武漢工程大學(xué)電氣信息學(xué)院,湖北 武漢 430205;2.北京服裝學(xué)院信息工程學(xué)院,北京 100029)
軌跡控制,又稱輪廓控制,主要應(yīng)用于傳統(tǒng)的數(shù)控系統(tǒng)、切割系統(tǒng)的運動輪廓控制[1],如氣動標(biāo)記機、銑床、切割機等.目前連續(xù)軌跡控制系統(tǒng)多采用單板機控制[2],其操作復(fù)雜、程序修改不便.隨著市場全球化的發(fā)展,市場對適合中小批量加工、具有良好柔性和多功能的制造系統(tǒng)的需求已超過對大型單一功能的制造系統(tǒng)的需求[3].本文介紹一種基于Windows XP平臺并口的三軸軌跡控制系統(tǒng).
通過計算機的控制,步進電機的脈沖、方向信號和刀具的控制信號經(jīng)并口向下位機接口模塊發(fā)送.下位機接口模塊對信號進行抗干擾處理后,將脈沖和方向信號發(fā)送至步進電機驅(qū)動器,同時將控制信號發(fā)送至輔助設(shè)備.系統(tǒng)采用三軸控制.其中X、Y軸電機帶動刀具在水平面運動,Z軸在豎直方向運動.三軸到位信號通過并口送回上位機,上位機捕獲到位信號后及時動作.系統(tǒng)組成框圖如圖1所示.
圖1 接口模塊框圖
X、Y和Z軸到位信號的檢測由接近開關(guān)完成.X軸到位信號的處理電路圖如圖2所示.
以X軸為例,圖2中IN與接近開關(guān)的輸出端連接,OUT與光耦的輸入端連接.電機回原點時,接近開關(guān)的信號線為高電平,開關(guān)管的基極為高電平,開關(guān)管導(dǎo)通,其集電極被拉低為低電平,該低電平信號經(jīng)阻容濾波后送至光耦輸入端,光耦輸出端與并口的狀態(tài)端口連接,計算機讀取到位信號.根據(jù)計算機狀態(tài)端口的TTL電平標(biāo)準(zhǔn),反相器輸出端接上10 kΩ的上拉電阻.Y軸和Z軸類似.此外,下位機接口模塊還包含電平轉(zhuǎn)換電路,分別為步進電機驅(qū)動器、接近開關(guān)和反相器提供+36 V、+12 V和+5 V電壓.
圖2 到位信號處理電路
并行接口,簡稱并口,又稱LPT接口,是采用并行通信協(xié)議的擴展接口.一般用于連接打印機、掃描儀等外部設(shè)備.其工作模式包括標(biāo)準(zhǔn)并行口(SPP)模式、雙向模式、增強型半行接口(EPP)模式、擴展并行接口(ECP)模式等.以標(biāo)準(zhǔn)SPP模式為例,它使用三個8位的端口寄存器,即數(shù)據(jù)寄存器、狀態(tài)寄存器和控制寄存器.計算機就是通過對這些寄存器的讀寫操作訪問并口.該系統(tǒng)的并口工作在雙向模式下.
與Windows 9X環(huán)境不同,在Windows NT環(huán)境下,應(yīng)用程序不能使用Win 32 API函數(shù)直接操作端口,為此微軟提出了一種全新的Windows驅(qū)動程序模型,即Windows Driver Model(WDM).WDM旨在通過提供一種靈活的方式來簡化驅(qū)動程序的開發(fā),在實現(xiàn)對新硬件支持的基礎(chǔ)上減少并降低所必須開發(fā)的驅(qū)動程序的數(shù)量和復(fù)雜性[4].它實現(xiàn)了模塊化、分層次類型的驅(qū)動程序結(jié)構(gòu).本系統(tǒng)驅(qū)動的主要例程包括:DefaultPnpHander、DriverEntry、HandleRemoveDevice、HandleStartDevice、AddDevice、DeviceIOControl、DispatchRoutine、Pnp、Unload等部分.
應(yīng)用程序與底層硬件的通信可分解為應(yīng)用程序與驅(qū)動程序的通信和驅(qū)動程序與底層硬件的通信.應(yīng)用程序與驅(qū)動程序通信前必需先建立兩者之間的聯(lián)系,即應(yīng)用程序獲取驅(qū)動程序的設(shè)備句柄,如圖3所示[5].
驅(qū)動程序創(chuàng)建設(shè)備時,調(diào)用IoRegisterDeviceInterface(函數(shù))為設(shè)備創(chuàng)建設(shè)備鏈接,該設(shè)備鏈接暴露給應(yīng)用程序.應(yīng)用程序通過設(shè)備鏈接獲取設(shè)備信息,并調(diào)用Win 32子系統(tǒng)中的CreatFile API.CreatFile函數(shù)調(diào)用Ntdll.dll庫中的NtCreatFile函數(shù).NtCreatFile穿過用戶模式和內(nèi)核模式之間的界面,到達內(nèi)核模式,并調(diào)用同名的系統(tǒng)服務(wù)NtCreateFile.NtCreateFile系統(tǒng)服務(wù)通過I/O管理器創(chuàng)建請求包(IRP_MJ_CREAT)并傳輸至設(shè)備的驅(qū)動程序,驅(qū)動程序處理該IRP并返回.CreateFile調(diào)用成功后的返回值為設(shè)備句柄.在調(diào)用其它Win32函數(shù)訪問該設(shè)備時,只需將該句柄作為函數(shù)的設(shè)備名參數(shù)可實現(xiàn)對設(shè)備驅(qū)動程序的操作,即完成應(yīng)用程序與驅(qū)動程序的通信.
圖3 應(yīng)用程序獲取設(shè)備句柄
應(yīng)用程序獲取設(shè)備句柄后,對端口的讀寫操作通過調(diào)用端口操作函數(shù)(DeviceIOControl)實現(xiàn).調(diào)用該函數(shù)前需用CTL_CODE宏定義來定義操作碼(IOCTL),定義時需指定操作模式,如定義采用緩沖區(qū)方式讀端口的IOCTL碼為:
#define IOCTL_READ_PORT CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 0X800, METHOD_BUFFERED, FILE_ANY_ACCESS)
為使Windows操作系統(tǒng)易于移植到不同的硬件平臺的上,微軟提出并使用了硬件抽象層(HAL).設(shè)備驅(qū)動程序可直接調(diào)用硬件抽象層提供的函數(shù)實現(xiàn)對底層硬件的操作,通過修改抽象層程序可實現(xiàn)多硬件平臺移植[6].如對于32位的X86系列CPU中的Windows,驅(qū)動程序調(diào)用硬件抽象層的讀端口函數(shù)(READ_PORT_UCHAR)和寫端口函數(shù)(WRITE_PORT_UCHAR)可完成對端口數(shù)據(jù)的八位讀寫操作,即完成驅(qū)動程序與底層數(shù)據(jù)的通信.
以讀取并口八位數(shù)據(jù)為例,函數(shù)調(diào)用如圖4所示[5].
圖4 應(yīng)用程序讀端口
處理過程為:應(yīng)用程序調(diào)用DeviceIOControl函數(shù)后,相應(yīng)控制碼和請求同時傳遞給驅(qū)動程序,且I/O管理器會創(chuàng)建一個IRP_MJ_DEVICE_CONTROL類型的IRP,用戶提供的輸入緩沖區(qū)的內(nèi)容被復(fù)制到內(nèi)核模式中,其地址由IRP的AssociatedIrp.SystemBuffer子域記錄.然后驅(qū)動程序會將創(chuàng)建的IRP轉(zhuǎn)發(fā)至DeviceIOControl派遣函數(shù)中;派遣函數(shù)讀取IRP的內(nèi)存地址,獲得輸入緩沖區(qū)數(shù)據(jù)及IOCTL_READ_PORT操作碼,并調(diào)用READ_PORT_UCHAR函數(shù);READ_PORT_UCHAR函數(shù)從端口讀取八位數(shù)據(jù),并將該數(shù)據(jù)存放在IRP提供的內(nèi)存地址中;在IRP返回時,這段內(nèi)存地址的數(shù)據(jù)被復(fù)制到DeviceIOControl提供的輸出緩沖區(qū)中;應(yīng)用程序獲取緩沖區(qū)中的數(shù)據(jù),端口完成讀操作.其中,用戶層與內(nèi)核層之間的數(shù)據(jù)復(fù)制由操作系統(tǒng)完成.
系統(tǒng)應(yīng)用程序的開發(fā)采用模塊化程序設(shè)計方法,即將整個軟件逐步細分為樹形結(jié)構(gòu),直至所有子過程都能用編程語言直接實現(xiàn)[7].函數(shù)之間的參數(shù)采用指針傳遞.整個并口驅(qū)動程序為子函數(shù),供應(yīng)用程序調(diào)用.
軌跡控制系統(tǒng)的核心問題是如何控制刀具的運動.下位機接口模塊雖為三軸設(shè)計,但設(shè)計軟件時,Z軸并不參與插補.它主要用于銑床中的出刀和回刀操作.在應(yīng)用于氣動標(biāo)記機系統(tǒng)時,將Z軸出刀位移設(shè)置為零即可實現(xiàn)兩軸單平面運動.因此該軌跡控制主要針對平面曲線的運動軌跡.而平面曲線的軌跡需要兩個坐標(biāo)軸的協(xié)調(diào)運動才能形成.在兩軸聯(lián)動的數(shù)控機床中廣泛應(yīng)用逐點比較法.系統(tǒng)采用逐點比較法的直線插補方式.在步進電機驅(qū)動器高細分度的配合下,系統(tǒng)輪廓的加工精度能得到有效保證.該軌跡控制系統(tǒng)在氣動標(biāo)記機系統(tǒng)中的應(yīng)用效果圖如圖5所示.
圖5 在氣動標(biāo)記機系統(tǒng)中的應(yīng)用
整個系統(tǒng)采用模塊化設(shè)計方法,且同時適用于多種小型數(shù)控機床.目前該系統(tǒng)已在氣動標(biāo)記機和銑床上使用.實踐證明,該系統(tǒng)具有許多優(yōu)點:①數(shù)據(jù)處理能力強、速度快;②抗外界干擾能力強、可在惡劣環(huán)境下作業(yè);③有效節(jié)約產(chǎn)品成本、提高系統(tǒng)的可靠性;④可加工任意字符、商標(biāo)、圖形和圖案等,操作和維護方便.
參考文獻:
[1]莊文波.連續(xù)軌跡運動控制系統(tǒng)的研究與應(yīng)用[D].哈爾濱:哈爾濱工程大學(xué),2008.
[2]陳慶,熊瑞平,袁中凡,等.基于PC機并口的線切割數(shù)控系統(tǒng)[J].機械與電子,2006(11):44-46.
[3]蔡曉雯.基于MCX314的運動控制器的研究與設(shè)計[D].湘潭:湘潭大學(xué),2008.
[4]楊珺.基于WIN2000下的WDM驅(qū)動程序探究[D].天津:天津大學(xué),2005.
[5]張帆,史彩成.Windows驅(qū)動開發(fā)技術(shù)詳解[M].北京:電子工業(yè)出版社,2008.
[6]冉全,陳為,趙世平.事件馬飛動編程機制在嵌入式GUI系統(tǒng)中的實現(xiàn)[J].武漢工程大學(xué)學(xué)報,2009,31(7):84-87.
[7]江衛(wèi)華.基于PC計算機并行口氣動標(biāo)記機系統(tǒng)的設(shè)計[J].電氣傳動自動化,2002,24(1):44-46.