作者:許春康,黃筱調,洪榮晶
1 引言
隨著 DSP 技術的飛速發展,以其為核心的多軸運動控制卡越來越廣泛的應用在運動控制系統中。上位機只需對被控對象實施總體的控制和管理,而位置反饋信號的采集、閉環控制的計算和控制量的輸出均由運動控制卡完成,這極大地提高了運算速度和控制響應速度。本文設計的運動控制卡以TI 公司的32 位定點DSP TMS320F2812 為核心處理器,輔以運動控制器LM628,通過PCI 總線專用接口芯片PCI9052 與上位機通信,實現3 軸(可擴成多軸)伺服電機的控制,完成位置、速度控制以及直線、圓弧插補功能。本文將對運動控制卡的硬件設計進行詳細的介紹。
2 運動控制卡的硬件結構
TMS320F2812 是基于TI 公司最新的C28x 內核而設計的。與其他的處理器相比,其具有如下一些特點:采用低功耗設計,核心電壓僅1.8V“1.9V,顯著降低了功耗,指令周期可達6.67ns;新增了擴展控制寄存器以實現各種增強功能;多達128K×16 位的Flash 存儲器,足夠用于存儲程序和數據變量;56 個可編程或復用的通用I/O。
LM628 是NSC 公司專為使用增量式編碼器作為位置反饋的伺服機構而設計的一種芯片,其集成度高,需要外圍部件少,易于調試。主要特點如下:具有32 位位置、速度和加速度寄存器;帶有16 位參數的可編程數字PID 控制器;可編程微分采樣間隔;運動過程中可改變速度、預期位置和PID 控制器參數;實時可編程的主機中斷。
PCI9052 是PLX 公司推出的低成本、低功耗、32 位PCI 總線專用目標接口芯片。其兼容PCI V2.1 協議特性,可與多種局部總線相連;支持復用或非復用的8/16/32 位局部總線;支持4 個局部片選信號和5 個局部地址空間;支持兩個來自局部總線的中斷,可生成一個PCI 中斷;支持局部總線等待狀態,附加的LRDYi#握手信號可用于產生各種等待狀態。運動控制卡的總體硬件結構如圖 1 所示。其中,DB 為數據總線,AB 為地址總線,CB為控制總線,CS-1”CS-4 為片選信號,XA0 為DSP 經電平轉換后的最低位地址線。
從圖中可以看出 PCI 接口芯片的PCI 總線端直接與金手指相連,局部總線端則通過雙端口RAM 與DSP 相連,構成16 位存儲轉換電路。DSP 分別與三片LM628 相連,與其配合以實現3 軸運動控制。這樣既解決了DSP 因系統資源不足不能控制多軸的問題,又彌補了LM628 單獨控制時總線傳輸延時的缺點。LM628 的數字量輸出經數/模轉換和電壓放大后轉換為交流伺服驅動器可以接收的模擬電壓信號(-10V“+10V)。而伺服電機增量式光電編碼器的反饋經差分電路濾波并合成單端信號接入到LM628 中,以構成位置閉環控制。
2.1 PCI 總線接口
PCI 總線是一種高性能、32 位地址/數據復用總線,數據傳輸速率高達132MB/s。目前實現PCI 接口的有效方案有使用可編程邏輯器件和使用專用接口芯片兩種。前者實現PCI接口比較靈活,但是設計難度很高。后者雖沒有前者那么靈活,但其優越性非常明顯:能夠有效降低接口設計的難度,縮短開發時間,同時其還具有較低的成本和通用性,并能夠優化數據傳輸,提供配置空間等。這里采用PCI9052 實現PCI 總線接口,并選用EEPROM93LC46B 對其進行配置,電路框圖如圖2 所示。中斷信號這里只用到一條中斷線INTA#。
2.2 局部總線接口
為了滿足DSP 與上位機之間大量數據的高速交換,這里采用主從式共享雙口RAM 的通信方案,接口電路如圖3 所示。由于IDT7133 是2K×16 位的SRAM,因此將PCI9052的局部總線設置為16 位寬的數據總線,即將LBE1#單獨接到IDT7133 的A0L 端。BUSYL經非門接到PCI9052 的LRDYi#端,這是因為當BUSYL 為高時才允許外部設備訪問,而局部總線準備好信號LRDYi#為低電平有效。BUSYR 經電平轉換后直接接到TMS320F2812 的READY 端。當BUSYL 或BUSYR 任何一個引腳被置低,其所屬設備就等待一個訪問周期,直到BUSY 被拉高,即雙口RAM 不再忙,這樣便保證了數據傳輸的準確性和可靠性。因此,采用雙口RAM 通信不但簡化了接口電路的設計,而且提高了上下位機數據交換的速度。
2.3 LM628 伺服控制單元
控制卡共有 3 路輸出,其中一路如圖4 中虛線框(1)所示,其余兩路與此類似。XD0”XD7為DSP 的低八位數據線,LM628 所需的32 位數據由其經總線驅動芯片SN74LVC4245 分四個寫周期寫入。DSP 經CS-1 選通LM628 后,再結合XA0 就可實現對其讀寫。為了提高控制精度,這里采用12 位輸出模式,即在每一個采樣周期,LM628 的18“23 腳輸出兩個周期,前一個輸出低6 位數據,后一個輸出高6 位數據。為了讓12 位數據能同時輸入到后續的DAC芯片中,這里采用了一片6 位數據鎖存器74LS378。當LM628 輸出低6 位時,DA0 是輸入觸發器的時鐘信號,DA1 是觸發器的允許信號,此時,鎖存器的G 端為高,數據鎖存,接著LM628 輸出高6 位數據,此時DA0 是給DAC 芯片的寫信號,DA1 是片選信號,鎖存器的G 端為低,數據不鎖存。這樣便從8 位輸出合成了12 位的DAC 輸入信號DAC0”DAC11。
2.4 數/模轉換和放大電路
如圖 4 中虛線框(2)所示,DAC 參考電壓Vref 由Maxim 公司的MAX680 提供,而LM358的±12V電源則可直接從PCI 插槽獲得。LM628 輸出的12 位數字量經AD7545A 轉換為相應的模擬量,再由LM358 兩級運算放大成-10V“+10V 電壓信號送往交流伺服驅動器,從而驅動電機運轉。電阻R26 和R27 用來調整滿刻度輸出電壓和抑制零點漂移,電容C38 則用來加快DAC變換速度和對其輸出進行頻率補償。最終輸出電壓Vout1 可由式(1)計算得出:
2.5 差分電路
在噪聲比較大的環境中,為了解決干擾和遠距離傳輸等問題,通常采用差動信號傳輸,如圖4 中虛線框(3)所示。為了進一步消除干擾,在每個輸入端都接入一個濾波電容,同時在每一對差動信號輸入線之間接一個用于線路阻抗匹配的電阻。差動信號(IN+、IN-、A+、A-、B+、B-)經差動線路接收器SN75175 和高速光電耦合器6N137 轉換為單端信號(IN、A、B)輸入到LM628 中,以實現閉環控制。
2.6 譯碼電路
如圖 4 中虛線框(4)所示,采用一片3/8 譯碼器74LS138 對地址譯碼,實現對控制卡3路伺服單元的片選,而XA0 則專門用于對LM628 進行讀寫控制,這樣得出的地址信號是連續的(0XF60”0XF65)。另外,采用一片四位二進制碼比較器74LS85 實現DSP 對雙口RAM的讀寫片選。片選地址信號范圍為0“7FF,這剛好尋址雙口RAM 2K 范圍內的所有空間。
此外,由于TMS320F2812 要從雙口RAM 讀出大量的運動軌跡數據并存儲,而其片內只有18KB 的空間,遠不能滿足要求,同時為了方便程序調試和修改,均需要DSP 擴展一片存儲器。這里選用CYPRESS 公司的256K×16 位的SRAM CY7C1041CV33,其讀寫周期時鐘最快可達12ns,因此可與DSP 進行零等待狀態接口,保證了DSP 的運算速度。
3 運動控制卡的配置
配置空間是 PCI 總線所特有的一個空間,其通常與接口芯片相關,包括一系列的PCI配置寄存器。PCI9052 的配置寄存器分為PCI 配置寄存器和局部配置寄存器,兩者都可以由PCI 總線和串行EEPROM 訪問。
3.1 PCI 配置寄存器及其配置
在 PCI 配置寄存器中的設備ID、制造商ID、版本號、首區類代碼、類別代碼、指令寄存器和狀態寄存器等在所有的PCI 設備中都必須實現。操作系統通常使用其內容來決定為該PCI 設備加載驅動程序。此外,PCI 配置寄存器還提供6 個基地址寄存器,其中BASE0 和BASE1 是分別映射到內存和I/O 的基地址,可固定用于對PCI9052 的寄存器操作。而BASE2”BASE5 最多可訪問局部端所接的4 個設備,實現其局部地址空間的訪問。PCI 總線對局部端設備的局部地址映射是通過1 個寄存器組(包括PCI 基地址寄存器、局部范圍寄存器、局部基地址寄存器和局部總線區域描述符)來實現的。它定義了每個空間及其特性,并將局部端設備通過局部端地址翻譯為PCI 總線地址,即將本地設備映射到系統的內存或I/O端口。而片選信號寄存器則用來選定這些設備。這樣,用程序操作這一段內存(或I/O)實際上就是對本地設備的操作。這些寄存器的內容必須在設備復位時通過串行EEPROM 加載。
3.2 局部配置寄存器及其配置
在這里,選取 LAS0(Local Address Space 0)訪問局部端雙口RAM,與其相關的寄存器為LAS0 范圍寄存器、LAS0 局部基地址寄存器、LAS0 局部總線區域描述符和片選0 基地址寄存器。LAS0 范圍寄存器用于定義板卡上資源所占地址空間的大小。由于板卡需要2KB的內存空間,而計算機預留了32KB 空間(即8000H),因此寫入寄存器的值為0xFFFF8000H;LAS0 局部基地址寄存器用來定義板卡資源所占的基地址,它將其重新映射到PCI 地址空間中,以使PC 機能對板卡進行訪問。由于基地址必須是地址空間范圍的整數倍,又因局部地址空間位0 為使能位,因此,寫入寄存器的值為00008001H;LAS0 局部總線區域描述符用來定義地址空間0 的具體工作特性。由于板卡數據總線采用16 位,工作方式定義為不使能突發和不可預取,因此寫入寄存器的值為4043A1C0H;片選0 基地址寄存器用來確定片選信號有效的地址范圍,其既確定了片選信號的基地址又確定了片選信號的地址范圍。
這里控制卡采用PCI9052 的CS0#作為雙口RAM 的片選信號,則其起始地址和地址范圍都可由片選0 基地址寄存器設置。由于雙口RAM 容量為2KB,因此設置CS0#基地址寄存器的第11位為1,又局部總線端空間0 的基地址是0x00008000H,為方便尋址,將CS0#的基地址和局部總線端空間0 的基地址設為同一值。由于基地址(8000H)是CS0#地址范圍的16 倍,所以將CS0#基地址寄存器的第16 位設為1,再將位0 設為1 使能,這樣寫入片選0 基地址寄存器的值為0x00008401H。當PC 機尋址時,地址映射到局部總線端的空間0,從其基地址開始的2K 空間落在CS0#基地址寄存器所設置的范圍內,CS0#端則有效,可對雙口RAM各單元進行讀寫,這樣就不必根據地址譯碼得到片選邏輯,簡化了硬件設計。此外,PCI9052提供兩種中斷源,即硬件和軟件中斷。這里板卡使用其提供的2 個局部中斷中的一個,即LINTi1 引腳,通過設置中斷控制/狀態寄存器(INTCSR)實現,并生成PCI 中斷INTA#方式。
4 驅動程序的開發
為了從 PCI 總線配置寄存器中獲得上位機動態分配的映射基地址,并對映射端口進行讀寫,必須編寫驅動程序。編寫時可以使用DDK,但是難度較大,需要做很多通用的基礎性工作。為簡化驅動程序開發,可以采用NuMega 公司開發的DriverStudio 中的DriverWorks工具包進行WDM 驅動程序設計。由于其被嵌入到VC 中,因此可更方便的用于開發和調試驅動程序。實踐表明,DriverStudio 并沒有通過犧牲系統性能來換取驅動程序的快速開發。
責任編輯:gt
評論
查看更多