李宏宇 李茂月 劉獻禮
(哈爾濱理工大學機械動力工程學院,黑龍江哈爾濱150080)
基于PC機的開放式數控系統,是由運動控制器、邏輯控制器、傳感器信息采集器配以應用軟件的形式實現對機床的加工過程控制.開放式數控系統的構成是以工業控制計算機硬件體系和實時系統為基礎,同時安裝擴展相應板卡及軟件.而不同的硬件設備在Windows系統下存在軟件版權許可、不兼容或地址沖突等問題,導致開放式數控系統在應用上受到一定限制[1].為了解決開放式數控系統中多硬件同時工作時的兼容匹配問題,實現高質量、高可靠的實時性要求,實現開放式數控系統相應的實時控制功能,利用Ardence公司開發的基于Windows操作系統的實時解決方案RTX(real-time extension),通過在硬件抽象層增加實時擴展來實現基于優先級的實時任務管理,提升系統實時性能,增強實時控制能力.硬件抽象層是Windows系統提供的、可被用來進行修改和擴展的資源的一部分[2-3].開放式數控系統在加工過程中完成對機床各種輸入信號的采集和對機床動作進行控制的輸出信號的發送,整個加工過程需要保證系統數據信號的高質量、高可靠的實時輸入、輸出.由于完成對各種數字信號、直流信號的采集,伺服控制信號、開關邏輯信號的輸出等工作的是各種特定功能的板卡,因此,需要重新開發各種板卡在RTX環境下的驅動程序.
本文以課題組自主開發的開放式數控系統中用于數據采集的Advantech PCI-1710高速數據采集卡和PCI-1758UDIO控制卡為例,研究了RTX實時系統環境下多PCI設備驅動程序的開發方法和步驟,同時在開放式數控系統實驗運動平臺上通過對RTX環境下與Windows系統環境下的板卡控制功能的實時性能進行的比較分析實驗,測試了RTX環境下PCI硬件設備驅動程序的性能.
在開放式數控系統體系結構中,安裝有不同功能的PCI板卡的工控機作為主體,其系統結構如圖1所示.工作過程為板卡通過在工控機上的PCI(peripheral component interconnect)卡槽與工控機相連,工控機電纜線與機床設備相連,通過電纜線采集輸入設備信號、輸出控制信號.系統工作過程中,工控機及板卡通訊接口的初始化、自動掃描通道、采集數據及發送控制信號等均通過上位機軟件編程實現.

PCI-1710高速數據采集卡負責數字信號的采集和與傳感器、機床的通訊.PCI-1758UDIO控制卡以數字開關量的形式對機床進行邏輯功能控制.
RTX通過對 Windows操作系統的擴展,使Windows操作系統成為即時操作系統[4].不同功能的板卡工作在RTX實時系統環境下,為使板卡在RTX實時系統環境下工作,應將板卡導入RTX環境,在RTX Properties控制面板的Hardware菜單中,分布選中PCI-1710高速數據采集卡和PCI-1758UDIO控制卡,右鍵單擊點擊Add RTX INF Support,再單擊apply以使RtxPnp.inf文件支持選擇的設備,如圖2所示.
然后,在Windows設備管理器中更新所選擇的設備,即將其轉換成一個RTX設備,如圖3所示.此操作將RTX實現為一套動態與靜態庫的集合,實現Windows的內核設備驅動與實時硬件抽象層的擴展.


驅動程序是直接控制硬件設備進行工作的軟件程序.對于不同的PCI總線設備,需要CPU通過某段范圍的地址訪問.因此開發驅動程序只需對不同板卡數據偏移寄存器進行配置,獲得每個PCI板卡的映射基地址,然后根據PCI板卡硬件手冊中的寄存器偏移量和數據位置位方式對寄存器進行讀寫[5-6].
開發RTX環境下多PCI板卡驅動程序首先要遍歷操作系統上所有的PCI板卡,獲取需要驅動的板卡總線號、中斷向量以及映射基地址等信息.根據板卡制造商提供的硬件內部寄存器資料及VendorID和DeviceID確定需要驅動的具體設備.所有信息獲取到以后,以結構體形式存儲不同板卡信息.遍歷板卡部分程序如下:
for(bus=0; flag; bus++)//總線循環
{
for(i=0; i<PCI_MAX_DEVICES && flag; i++) //設備循環
{SlotNumber.u.bits.DeviceNumber = i;
for(f=0; f<PCI_MAX_FUNCTION; f++) //功能循環
{SlotNumber.u.bits.FunctionNumber = f; bytesWritten =RtGet-
BusDataByOffset(
PCIConfiguration,
bus,
…
PCI_COMMON_HDR_LENGTH
);//獲取總線數據
if(PciData->VendorID&&PciData->DeviceID) //找到設備
{bus,InterruptLine…;
//得到板卡總線號和中斷向量等信息
}
通過遍歷總線上所有設備,獲得PCI-1710高速數據采集卡與PCI-1758UDIO控制卡的總線號、中斷向量以及映射基地址等信息.具體流程如圖4所示.

通過RtGetBusDataByOffset()接口函數對PCI總線上的設備進行枚舉,獲得所要驅動的PCI板卡設備信息后.利用以獲取不同板卡設備的總線號、中斷向量、映射基地址等信息的結構體變量,程序可直接定位到相應板卡進行初始化配置、邏輯地址映射、板卡的采集、控制等I/O端口功能的啟動、停止操作.板卡定位及使能部分程序如下:
PCI_SLOT_NUMBER SlotNumber;
PPCI_COMMON_CONFIG PciData;
//板卡信息結構體
PciData->Command=PCI_ENABLE_IO_SPACE|PCI_ENABLE_
MEMORY_SPACE|PCI_ENABLE_BUS_MASTER;//使能寄存器
使用RtEnablePortIO()函數,將函數參數設置為PCI-1710數據采集卡或PCI-1758UDIO控制卡存儲在板卡信息結構體PciData中相應的基地址,即可分別或同時使能相應板卡I/O端口控制寄存器.
在使能相應板卡I/O端口控制寄存器之后,就可以根據PCI板卡硬件手冊進行端口信號的采集、發送操作.如表1所示,為PCI-1758UDIO控制卡數字輸出寄存器端口偏移地址及相應位輸出規則.
其中0x08為PCI-1758UDIO控制卡數字輸出端口Port0-Port1偏移地址,0x0E為輸出端口Port6-Port7偏移地址.Base為板卡基地址.
根據PCI板卡硬件手冊確定I/O端口偏移地址,加上PciData中的PCI板卡基地址,利用RTX端口操作函數對板卡I/O端口進行讀寫操作:
RtReadUchar(addrBase+0x08,0x200);//讀 Port1端口2位
addrbase是PCI-1758UDIO板卡I/O端口基地址,后面為操作寄存器的偏移地址.同樣,要實現PCI-1710高速數據采集卡功能,按照硬件手冊里相應的寄存器地址說明,利用RtWriteUchar(addrBase+0x,0x)對其進行相應的配置即可.操作完畢之后,關閉板卡,用RtDisablePortIO()函數關閉板卡I/O端口.
Windows系統環境與RTX系統環境的本質區別是能否在預定的短時間內得到正確的邏輯結果,要求系統具備多任務處理的實時相應機制[7].利用課題組自主開發的開放式數控系統實驗運動平臺結合RTX測試工具驗證了PCI-1758UDIO控制板卡在RTX環境下驅動程序的性能.

表1 PCI-1758UDIO數字輸出寄存器地址
開放式數控系統實驗運動平臺如圖5所示,系統硬件由安裝了Sercos通訊卡、PCI-1758UDIO板卡、PCI-1710高速數據采集卡的工業控制計算機與伺服運動機構、邏輯功能實現機構、傳感機構等組成,其中,與Sercos通訊卡結合的旋轉伺服電動機實現了X軸單自由度伺服運動,與PCI-1758UDIO板卡及PCI-1710高速數據采集卡分別連接的推拉式電磁鐵、接近開關實現了邏輯控制功能的輸出與數據采集功能的實現.

如圖6所示.實驗通過開發的RTX環境下板卡驅動程序,控制推拉式電磁鐵的伸縮,通過RTX測試工具,測試板卡驅動程序性能.

為了動態地標識板卡運行狀態,采用MFC定時器與RTX定時器實時性能進行對比,定時周期最大值設置為1 000 μs,通過開放式數控系統實驗平臺人機界面軟件,分別通過調用Windows下板卡驅動以及已開發的RTX環境下板卡驅動程序,驅動板卡工作,有序地進行推拉式電磁鐵的伸縮運動,利用RTX工具PerformanceView和PlatformEvaluator對推拉式電磁鐵的工作過程中驅動程序執行響應進行監控,包括Windows與RTX在1 000 μs定時周期響應時間比較,程序運行時工控機CUP性能,RTX一周期內最大持續執行時間.如圖7所示,可以看出RTX運行時對CPU的占用率小于10%,有效節省了CPU處理時間,提高了板卡控制精確度.

由執行動作過程監控結果(如圖8所示)可以看出,Windows對1 000 μs定期周期響應平均時間在接近1 000 μs處波動,雖然滿足控制要求,但是對于實際加工過程中對實時性的要求,在Windows環境下的板卡驅動性能不能滿足高速高精度控制要求.而在RTX下板卡的驅動性能卓越,穩定在300 μs左右,這樣的實時性會給整個開放式數控系統實時性提供保障.

本文以Advantech PCI-1710高速數據采集卡和PCI-1758UDIO控制卡為例,研究了RTX實時環境下PCI設備驅動程序的開發方法和步驟.該方法的優點在于:
(1)以實際應用為背景,針對開放式數控系統的實時性要求采用RTX實時系統,具有實時性強、通用性強、擴展性強的特點.
(2)結合實際加工過程中對實時性的要求,給出了一種基于RTX的PCI硬件設備驅動程序開發方法、開發過程.為解決Windows環境下硬件設備兼容性的問題.提供了重要的參考方式.
(3)在開放式數控系統實驗運動平臺上對Windows系統環境下與RTX環境下的板卡驅動程序的實時性能進行比較分析,驗證了PCI板卡驅動的有效性和穩定性.該RTX環境下的驅動程序,充分發揮了PCI板卡和RTX實時系統的優點,節省了主處理器的占用時間,提高了I/O控制的精確度.為實現智能切削加工做出了基礎性研究工作.