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