劉學鵬,張東升,欒宗濤
(1.中山職業技術學院 機電工程學院,廣東 中山 528404,2.西安交通大學 機械工程學院,西安710049)
當前數控機床主要發展方向之一就是高速、高精度,這要求在單位時間內能夠采集和處理大量數據,具有較好的實時性,因此,對于位置檢測系統的數據傳輸帶寬有著較高的要求[1-6]。PMAC 運動控制器采用ISA總線,導致上位機通過它讀取位置信息的采樣周期較長,在實際應用中,高速進給狀態下會丟失大量采樣點,使檢測到的數據沒有實際意義。同時,為了實現復雜曲面的運動和造型,數控設備需要實現多軸的協調運動,這就需要能夠同時采集多個軸的位置,以進行分析和反饋處理。
整個系統分為兩個層次,即硬件層和軟件層。計算機為了方便擴展,在主板上一般都留有計算機總線擴展插槽,擴展的嵌入式板卡就插在擴展插槽里。同步位置檢測卡主要實現了兩個功能,一個是總線接口,一個是同步位置檢測功能。
總線的接口和檢測電路的交互是通過共享空間來完成的,命令字節和數據都存放在共享空間里。為了實現對共享空間的友好訪問,防止沖突,設計了握手電路。
現在的計算機操作系統的主流是具有良好人機界面的Windows 操作系統。在Windows 操作系統下,屏蔽了普通應用程序對硬件的操作。實現屏蔽功能的主要是靠Windows 設備驅動程序和操作系統來完成。因此,必須設計的擴展板卡設計設備驅動程序和應用程序,主要功能是在Windows 應用層獲取硬件設備,為二次開發留出良好接口。
同步位置檢測模塊所要檢測的信息主要來自于位置檢測傳感器。傳感器分為模擬量傳感器和數字量傳感器。對于數字傳感器,采取必要的抗干擾措施以后,可以直接處理其輸入的信號。對于模擬量傳感器,必須先通過A/D 轉換器件對其輸入的信號進行數字化處理,然后再傳送到檢測電路。本文使用的編碼器是典型的數字量傳感器,沒有使用A/D 轉換器件。

圖1 同步位置檢測卡總體結構圖
同步位置檢測模塊能同步檢測多個通道的信息(圖1),這就要求檢測電路對于多路數據能夠同時鎖存處理,針對每個通道都有一套相類似的處理電路,這些電路組合在一起就組成檢測電路。當數據被鎖存以后,還要能夠被讀取,讀取的工作主要是由控制電路來完成的。控制電路是以AT89C51 型單片機為核心的單片機及其擴展電路。單片機按照設計的次序從檢測電路讀取數據,然后把這些數據放到存儲器件里,等待計算機通過PCI 總線來讀取。存儲器件是一個雙端口RAM,存儲空間實際上也就是共享空間,能夠被控制電路和PCI 接口同時操作。
共享空間有兩個作用,一個作用是存儲從檢測電路讀取的數據,另一個作用是存儲計算機發送的命令字節。本文雙端口RAM 為地址空間為2K,范圍從0000h~3FFFh,雙端口RAM 的同一個地址不能同時被控制電路和PCI 接口操作,因此,數據存儲區劃在邏輯上被劃分為四個部分,見圖2。由于分為上下兩個半區。當控制電路向其中一個半區寫入數據時,PCI接口只能從另一個半區讀取數據,只有當控制電路完成對該半區的操作并通知PCI 接口時,PCI 接口才能采取相應的操作。命令字節存儲區也被分為上下兩個半區,這一方面保持了數據存儲區兩個部分的空間大小相等,簡化了控制程序的編寫,另一方面也有利于命令字節的擴展。

圖2 共享空間邏輯劃分
根據同步位置檢測卡PCI 接口的功能需求,整個PCI 接口內部規劃為六大模塊,即狀態機模塊、奇偶校驗模塊、配置邏輯單元、配置寄存器空間、支持狀態機的邏輯控制單元和I/O 控制模塊等。
同步位置檢測卡PCI 接口狀態機模塊:與PCI 總線的控制信號交互,根據不通的信號組合,負責交易的啟動和轉換,與其它模塊配合實現PCI 總線配置、奇偶校驗、I/O 操作等功能,并產生相應的本地總線控制信號,與本地器件交互。
位置檢測卡PCI 接口奇偶校驗模塊:與PCI 總線的奇偶校驗信號交互,實現數據、地址的奇偶校驗,保證信號的正確性,以及在發生校驗錯誤時,報告奇偶校驗錯誤。
同步位置檢測卡PCI 接口邏輯配置單元:與PCI總線的接口地址和數據信號交互,在初始化時期,與PCI 總線控制器配合,實現PCI 總線的硬件資源的配置功能,實現資源的可配置,以及在配置交易和數據交易時,實現地址解碼。
同步位置檢測卡PCI 接口配置寄存器空間:主要儲存的是用戶配置的PCI 總線的原始硬件信息,在上電初始化最初期,這里的信息被加載到邏輯配置單元。
同步位置檢測卡PCI 接口支持狀態機的邏輯控制單元:根據PCI 協議為狀態機產生輸入信號,主要由定時器組成。定時器產生定時信號,限制設備交易延時。
同步位置檢測卡PCI 接口I/O 控制模塊:與PCI總線接口地址和數據信號交互,實現了命令、地址位的解碼,在PCI 數據/地址多路復用總線上進行數據交換。另外,配置空間中的只讀寄存器也將在這部分根據譯碼結果,被強制轉換到響應的地址。
在這六個模塊中間,狀態機就好比是大腦,它與其它模塊的正確配合才能使整個接口正常工作。
根據狀態細分表和控制信號圖,得出狀態機的狀態轉換圖如圖3 所示。

圖3 同步位置檢測卡PCI 接口狀態機狀態
在圖中,主要有兩個主線,左邊的讀操作和右邊的寫操作。現在以正常讀操作為例加以說明。總線首先處于IDLE——閑置狀態,當PCI 主設備請求交易時,從設備發現并不是訪問自己,則總線處于BUS_BUZY狀態,因為這時主設備占用總線,在和別的從設備交易,知道恢復閑置狀態。而如果主設備請求交易時,自己本身忙于其它交易,處于RETRY 狀態,直到恢復IDLE狀態。如果設備正常啟動一個讀交易,則首先到SWAIT 狀態,等待被讀的數據放到總線上,然后到SREAD 狀態,讀走數據。如此這樣交易,直到最后主設備發出信號,準備正常結束交易,則進入FINISH 狀態。當所有的信號回復初始狀態,于是總線又回到IDLE態。其它五個模塊的實現方法類似,以同步位置檢測卡PCI 接口I/O 控制模塊為例說明。
在圖4 中,編碼器安裝在絲杠伺服電機的尾部,根據絲杠的旋轉角度發出脈沖信號,限位開關是光柵尺的一部分,發出零點定位信號,這些信號通過IO 口發送到嵌入在PC 機里的位置檢測卡里。為了減少現場的噪聲和干擾,使用了光耦器件,把采集到的信號與檢測卡將要處理的信號隔離。通過對編碼器的A、B 兩相信號和限位開關的電平信號的處理,可以判定絲杠是正向旋轉還是反向旋轉,或是到達零點位置,從而發出相應的控制信號。采樣電路主要是兩個可逆計數器,分別對X、Y軸計數。通過預處理電路發出的控制信號,控制計數器遞增計數或者遞減計數。通過讀取計數器的具體數值,就可以知道工作臺的具體位置。

圖4 數據采集圖
AT89C51 型單片機具有很好的擴展性,內部自帶有4k 的程序存儲器,并且有4 個8 位的IO 口用于擴展,還帶有一個全雙工的串口。圖5 實現以單片機為核心的控制電路。

圖5 同步位置檢測卡控制電路原理
在位置檢測卡上,晶振給單片機提供了工作時鐘。為了配合單片機的串行通信,采用的是11.0592 MHz的晶振。位置檢測卡使用單片機的P0 口作為地址和數據線的復用通道。當在地址周期時,與控制信號線配合,通過CPLD 中設計的鎖存器鎖存地址。在數據周期時,直接通過P0 口從雙端口RAM 中讀取或者寫入數據。控制信號線主要是以單片機的P1 口的為基礎擴展的。
計算機通過PCI 接口INT0 中斷給單片機。同時,單片機也可以給外部發送中斷,通過擴展P1 口的信號線的功能來實現。
為了檢驗計算機從雙端口RAM 中讀取數據的正確與否,使用單片機的串行通信功能。在設置時,用到了定時器1 作為波特率發生器。波特率是9600bps。
為位置檢測卡開發的一個完整的WDM 驅動程序可以被看作是一個容器,它包含許多例程,當操作系統遇到一個IRP 時,它就調用這個容器中的例程來執行該IRP 的各種操作。有些例程,例如DriverEntry 和AddDevice,還有與幾種IRP 對應的派遣函數將出現在每一個這樣的容器中。需要對IRP 排隊的驅動程序一般都有一個StartIo 例程。執行DMA 傳輸的驅動程序應有一個AdapterControl 例程。大部分能生成硬件中斷的設備,其驅動程序都有一個中斷服務例程(ISR)和一個推遲過程調用(DPC)例程。
為了使同步位置檢測卡能夠被Win32 用戶訪問,在Windows 2000 系統里,同步位置檢測卡的驅動程序使硬件設備像一個文件,對其的操作像是對文件的操作。用戶態應用程序使用Win32 函數CreateFile 訪問驅動程序。使用CreateFile 訪問一個文件的時候,需要知道具體文件的名稱,因此,訪問驅動程序的時候,也必然要有一個唯一設備名稱以供函數調用。這個唯一的設備名稱就是該設備的符號鏈接名。每個設備使一個定義的應用程序編程接口(API)可用,全局唯一標識符(GUID)用于標示這個接口。應用程序為了訪問位置檢測卡,必須首先得到卡的接口名,取得該設備對象的句柄。在取得了同步位置檢測卡的設備句柄以后,就像訪問普通的文件一樣,可以調用Win32 API 函數訪問設備,實現I/O 操作。完成操作以后,要調用CloseHandle 關閉句柄。
(1)分析了位置檢測卡的功能要求。分析了同步位置檢測卡的整體功能需求,按照檢測原理對同步位置檢測功能模塊進行了功能細分,確定了PCI 總線接口模塊的方案。
(2)設計了位置檢測卡硬件線路。首先根據功能要求,分析了電路原理,并選用合適的電子器件,繪制了電路原理圖。其次,按照抗干擾原則,在雙層PCB板上布置了電子元件并進行了布線。
[1]Mei XS,Tsitsimi M,Yamazaki,T.,Sun NG. Study of the Friction Error for a High-speed High Precision Table[J].International Journal of Machine tools and manufacture,2001,141:1405 -1415.
[2]堤正臣,大友誠司,摩擦を考慮したCNC 工作機械の送り驅動系の數學モテル[J],精密工學會志,1995,61:1458 -1465.
[3]榮盤祥,劉楠,曲崢敏.開放式數控系統運動控制器的設計[J].哈爾濱理工大學學報,2010 (3):36 -39.
[4]唐建生,劉云豫,王宏穎.數控機床檢測元件故障診斷及維修實例[J].機床與液壓,2008 (10):290 -291.
[5]Rafiq Ahmad ,Stephane Tichadou ,Jean-Yves Hascoet,3D safe and intelligent trajectory generation for multi-axis machine tools using machine vision[J].International Journal of Computer Integrated Manufacturing, 2013,26 (4 ):365 -385.