《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于DSP和CPLD的運(yùn)動控制器的研究
基于DSP和CPLD的運(yùn)動控制器的研究
摘要: 目前,以DSP為核心的嵌入式運(yùn)動控制器已經(jīng)成為開放式運(yùn)動控制器的發(fā)展主流,并獲得廣泛的應(yīng)用。本文通過對運(yùn)動控制器基本功能的研究,在分析、消化已有的基于DSP的運(yùn)動控制器硬件資源基礎(chǔ)上,開發(fā)了運(yùn)動控制器的軟件系統(tǒng),詳細(xì)介紹了運(yùn)動控制器的軟件設(shè)計。
Abstract:
Key words :

  由于DSP將超強(qiáng)的高速實時處理能力和豐富的外設(shè)功能集于一身,目前,以DSP為核心的嵌入式運(yùn)動控制器已經(jīng)成為開放式運(yùn)動控制器的發(fā)展主流,并獲得廣泛的應(yīng)用。本文通過對運(yùn)動控制器基本功能的研究,在分析、消化已有的基于DSP的運(yùn)動控制器硬件資源基礎(chǔ)上,開發(fā)了運(yùn)動控制器的軟件系統(tǒng),詳細(xì)介紹了運(yùn)動控制器的軟件設(shè)計。

  1 運(yùn)動控制器硬件結(jié)構(gòu)

  本運(yùn)動控制器的硬件結(jié)構(gòu)主要分為如下幾個模塊:DSP+CPLD 主控模塊,包括 DSP 核心 模塊和 CPLD 驅(qū)動與擴(kuò)展模塊;通信接口模塊,包括 PCI 總線、USB 總線和串口;I/O 輸入輸 出接口模塊以及外圍存儲器模塊,包括 SRAM 和 FLASH。本運(yùn)動控制器的硬件結(jié)構(gòu)如圖 1 所示。

          

               圖1 運(yùn)動控制器硬件結(jié)構(gòu)圖

  1.1 DSP+CPLD 主控模塊

  本系統(tǒng)采用了 TI 公司的 TMS320F2812 DSP 為控制核心,這是工業(yè)界首批 32 位的控制 專用、內(nèi)含 FLASH 以及高達(dá) 150MHz 主頻的數(shù)字信號處理器,專門為工業(yè)自動化、光學(xué)網(wǎng)絡(luò)及自動化控制等應(yīng)用而設(shè)計的。TMS320F2812  采用哈佛總線結(jié)構(gòu),有獨(dú)立的程序和數(shù)據(jù)空間;具有很強(qiáng)的運(yùn)算能力,能夠?qū)崟r地處理許多復(fù)雜的控制算法;片上內(nèi)存豐富,可支持45 個外設(shè)級中斷和 3 個外部中斷,提取中斷向量和保存現(xiàn)場只需 9 個時鐘周期,響應(yīng)迅速; 片上集成了多種先進(jìn)的外設(shè),包括兩個事件管理器(EV)、12  位  A/D、兩個串行通信接口(SCI)、一個串行外圍接口(SPI)以及一個多通道緩沖串行接口(McBSP)等;其通用輸 入/輸出多路復(fù)用器(GPIO)擁有多達(dá) 56 個 I/O 口,在系統(tǒng)的軟件開發(fā)中正是利用了這些豐富的內(nèi)外設(shè)資源,才實現(xiàn)了系統(tǒng)要求的各種功能。

  本系統(tǒng)中選用的 CPLD 是 Altera 公司 MAX3000A 系列的 EPM3128,這是一款高性能、 低功耗的基于 EEPROM 的 PLD。由于本系統(tǒng)的控制對象是步進(jìn)電機(jī),所以設(shè)計中主要利用TMS320F2812 的 GPIO 口進(jìn)行電機(jī)控制接口與 I/O 接口的輸入輸出,但是由于 TMS320F2812是低功耗處理器,其 GPIO 引腳的輸出驅(qū)動能力有限,而且由于 DSP 是主控核心,負(fù)載比 較多,所以將所有輸出信號都經(jīng)過 CPLD 驅(qū)動后輸出,提高信號的驅(qū)動能力。此外,CPLD還用于系統(tǒng)電路的譯碼,增加系統(tǒng)設(shè)計的靈活性和可擴(kuò)展性。

  1.2 通信接口模塊

  本系統(tǒng)在用作插卡式運(yùn)動控制時利用 PCI 總線實現(xiàn) DSP 與 PC 的通信。PCI(PeripheralComponent Interconnect 外圍部件互聯(lián))總線是 Intel 公司聯(lián)合其他 100 多家公司于 1992 年推 出的基于新一代處理器的一種局部總線,是一種高性能  32/64  位數(shù)據(jù)/地址復(fù)用總線,能為 CPU 及外設(shè)提供高性能數(shù)據(jù)。PCI 總線具有嚴(yán)格的規(guī)范,目前已經(jīng)發(fā)布了 PCI V1.0 和 V2.1規(guī)范,保證了其良好的兼容性;PCI 總線與 CPU 無關(guān),與時鐘頻率也無關(guān),可適用于各種平臺,支持多處理器和并發(fā)工作;PCI 總線可以提供極高的數(shù)據(jù)傳輸速率,還具有良好的擴(kuò) 展性。因此,PCI 總線在基于計算機(jī)總線的運(yùn)動控制系統(tǒng),即“PC+運(yùn)動控制器”的結(jié)構(gòu)中應(yīng)用十分廣泛。

  本系統(tǒng)選用 CYPRESS 公司的 CY7C68001 芯片實現(xiàn) PC 機(jī)和 DSP 之間的 USB 通信。CY7C68001 是通用 USB2.0 接口控制器,它是基于應(yīng)用層編程的接口器件,相對于其它基于 鏈路層編程的接口器件,使用和開發(fā)都很方便。本系統(tǒng)采用 DSP 片上的 SCI 串行通信模塊以及 MAX232 芯片轉(zhuǎn)換成標(biāo)準(zhǔn) RS-232 的通 信信號,實現(xiàn)正常的串口通信。

  1.3 I/O 輸入輸出接口模塊

  本系統(tǒng)的輸入/輸出是通過 CPLD 的邏輯控制來實現(xiàn)的,以提高系統(tǒng)的工作可靠性和設(shè) 計柔性??紤]到運(yùn)動控制器的可擴(kuò)展性以及 DSP 的 GPIO 引腳的數(shù)量,共設(shè)計了 16 路數(shù)字量輸出通道和 16 路數(shù)字量輸入通道。數(shù)字量輸出通道主要用于各軸方向、脈沖信號的輸出以及一些外部設(shè)備的啟??刂?,如主軸及冷卻液的開關(guān)控制等;數(shù)字量輸入通道可根據(jù)用戶 具體要求來定義其用途,如作為傳感器接口,用于零點(diǎn)、限位信號的輸入等。為提高系統(tǒng)應(yīng)用的靈活性,系統(tǒng)輸出采用了普通輸出和差分輸出兩種方式,具體使用可由用戶自行設(shè)定。

  1.4 外圍存儲器模塊

  TMS320F2812 芯片內(nèi)部包括 128KB 的 FLASH 和 18KB 的 SARAM,其中 128KB 的FLASH  用來存儲系統(tǒng)軟件程序已經(jīng)足夠,但是在實際使用中,考慮到運(yùn)動控制指令和加工程序需要通過 USB 總線或 PCI 總線下載到運(yùn)動控制器中,且 DSP 在工作過程中需要處理大 量的數(shù)據(jù),僅依靠 DSP  芯片內(nèi)部的存儲空間遠(yuǎn)遠(yuǎn)不夠,所以考慮外擴(kuò)一片 FLASH  和一片SRAM 作為用戶加工程序存儲器和系統(tǒng)的工作存儲器,它們通過 CPLD 完成與 DSP 之間的讀寫操作。

  本系統(tǒng)選用了 Intel 公司的 E28F128 FLASH 和 ISSI 公司的 IS61LV51216SRAM。E28F128 是一種采用 CMOS 工藝制成的 8MB  FLASH,其讀寫訪問時間為 150ns,此讀寫周期已經(jīng) 大于 DSP 對外部端口的讀寫周期,為了能夠和 DSP 的讀寫周期進(jìn)行匹配,在對 FLASH 進(jìn) 行讀寫操作過程中必須插入等待周期。IS61LV51216 是一種高速異步靜態(tài) 512KB 的 SRAM, 其讀寫周期為 10ns,與 DSP 之間可以無需插入等待周期便可以進(jìn)行讀寫操作,并可以直接映射到 DSP 外部存儲接口的 Zone2 或者 Zone6 區(qū)域。

  2 運(yùn)動控制器軟件結(jié)構(gòu)

  2.1 系統(tǒng)軟件功能設(shè)計

  運(yùn)動控制器通常作為一個獨(dú)立的過程控制單元用于工業(yè)自動化生產(chǎn)中,它的功能是由硬件和軟件共同實現(xiàn)的硬件為軟件運(yùn),行提供了支撐環(huán)境,軟件負(fù)責(zé)實現(xiàn)系統(tǒng)要求的所有功能。本系統(tǒng)軟件需要完成控制和管理兩大任務(wù),圖 2 表示的是其軟件功能結(jié)構(gòu)。

          

              圖2 運(yùn)動控制器軟件功能結(jié)構(gòu)圖

  其中,系統(tǒng)的控制包括位置控制、插補(bǔ)、速度處理和開關(guān)量 I/O 控制等,這類任務(wù)的實 時性很強(qiáng),所以軟件程序的優(yōu)先級也較高;系統(tǒng)的管理包括人機(jī)界面顯示、參數(shù)設(shè)置和程序 下載等,這類任務(wù)的實時性要求不高,所以軟件程序的優(yōu)先級也相對較低??梢哉f,一個運(yùn) 動控制系統(tǒng)的基本功能均由上述功能的子程序?qū)崿F(xiàn),通過增加子程序可進(jìn)一步增加系統(tǒng)的功 能。

  要實現(xiàn)這些功能,必須做好運(yùn)動控制器的軟件規(guī)劃,劃分各個功能模塊,才能在  DSP 芯片上設(shè)計運(yùn)行程序。本系統(tǒng)軟件主要分為兩個層次,包括 PC 層軟件和 DSP 層軟件,其中PC  層軟件在單板式運(yùn)動控制中主要實現(xiàn)加工程序的傳輸和下載等功能;在插卡式運(yùn)動控制中,除此之外,還需實現(xiàn)加工情況顯示、加工命令發(fā)送等人機(jī)交互界面的功能。 運(yùn)動控制器的主要功能由 DSP 層完成,本課題的主要任務(wù)也是 DSP 層軟件的程序?qū)崿F(xiàn),具體包括:

  1.運(yùn)動控制 運(yùn)動控制功能是運(yùn)動控制器的主要功能,包括位置控制、插補(bǔ)和輔助功能的輸入輸出I/O 控制。本系統(tǒng)基本功能是實現(xiàn) XYZ 三軸的運(yùn)動控制,包括三軸聯(lián)動的直線插補(bǔ)運(yùn)動和任意兩軸圓弧插補(bǔ)運(yùn)動,可以實現(xiàn)步進(jìn)電機(jī)的運(yùn)動控制,提供單脈沖(即脈沖+方向)和雙脈 沖(即脈沖+脈沖)兩種控制方式。

  2.速度控制 速度控制即調(diào)速,利用加減速算法,實現(xiàn)系統(tǒng)的平穩(wěn)運(yùn)動。系統(tǒng)設(shè)計空行程時的運(yùn)動速度不小于 100KHz,加工過程中的插補(bǔ)運(yùn)動速度不小于 40KHz;當(dāng)脈沖當(dāng)量為 2.5 微米時可達(dá)到的空行程和加工的最高速度分別為 15m/min 和 6m/min。

  3.通信功能 運(yùn)動控制器不是一個孤立封閉的系統(tǒng),它必須和外界交換數(shù)據(jù),主機(jī)通信主要完成兩個 任務(wù):一個是程序的下載,另一個是控制指令的發(fā)送和加工狀態(tài)的反饋。根據(jù)單板式控制和插卡式控制兩種不同的應(yīng)用,分別有不同的通信方式。其中,在單板式控制中,通過  USB總線進(jìn)行程序下載而通過串口進(jìn)行控制指令的發(fā)送和加工狀態(tài)的反饋;在插卡式控制中,兩種任務(wù)都是由  PCI  總線來完成。本系統(tǒng)的多用性特點(diǎn)主要體現(xiàn)在通信方式的不同上,支持PCI 總線方式、USB 總線方式以及異步串行總線方式,供用戶自由選擇。

  4.參數(shù)設(shè)置 作為開放式運(yùn)動控制器,應(yīng)該允許用戶對控制系統(tǒng)的各運(yùn)動參數(shù)進(jìn)行實時調(diào)整與修改。

  本系統(tǒng)設(shè)計將各參數(shù)存放在 FLASH 中,允許用戶通過人機(jī)界面對參數(shù)進(jìn)行修改,修改后的參數(shù)將在下次操作中起作用。

  2.2 系統(tǒng)軟件層次設(shè)計

  DSP軟件采用模塊化和層次化的設(shè)計思路,為使結(jié)構(gòu)清晰,整個系統(tǒng)軟件按功能群分割為多個文件分別處理和完成相應(yīng)的任務(wù),主要分為三個層次:

  1 主控層:不涉及具體操作,只負(fù)責(zé)各個任務(wù)調(diào)度、中斷安排、時間和優(yōu)先級處理等, 主控層只有一個文件  main.c,包括主函數(shù)和中斷函數(shù),在主函數(shù)和中斷函數(shù)中調(diào)用算法層的函數(shù)來實現(xiàn)系統(tǒng)的各個功能。

  2 算法層:負(fù)責(zé)具體任務(wù)執(zhí)行,控制算法實現(xiàn),系統(tǒng)的主要功能都在算法層實現(xiàn),包 含的模塊由系統(tǒng)要求的各個功能來決定,算法層主要用以實現(xiàn)運(yùn)動控制、速度控制和系統(tǒng)管理等功能,各模塊之間通過標(biāo)志位來聯(lián)系,不互相調(diào)用。

  3 接口層:負(fù)責(zé)與硬件的接口,所有與外設(shè)有關(guān)的操作都在該層進(jìn)行處理,接口層中 包括 DSP 硬件資源的定義、系統(tǒng)硬件的驅(qū)動等。除接口層外,系統(tǒng)其它層的程序禁止直接對外設(shè)進(jìn)行操作,接口層直接對外設(shè)進(jìn)行操作的函數(shù)盡可能做到功能完善。 綜上所述,本系統(tǒng)根據(jù)以上功能和層次進(jìn)行軟件設(shè)計并遵循以下原則:

 ?。?)全局性:盡量保證系統(tǒng)各模塊負(fù)載均衡;

 ?。?)正確性:數(shù)學(xué)推導(dǎo)嚴(yán)密,盡可能利用試驗驗證;

 ?。?)結(jié)構(gòu)化:軟件設(shè)計做到層次化、模塊化、封裝化;

 ?。?)規(guī)范性:保證程序的易讀性、移植性和可維護(hù)性。

  3 小結(jié):

  本文作者創(chuàng)新點(diǎn)是運(yùn)動控制是數(shù)控技術(shù)的核心,近年來,隨著開放式數(shù)控系統(tǒng)的發(fā)展, 開放式運(yùn)動控制器也得到了前所未有的發(fā)展。運(yùn)動控制器作為一個獨(dú)立的工業(yè)自動化控制類標(biāo)準(zhǔn)部件,已經(jīng)被越來越多的產(chǎn)業(yè)領(lǐng)域接受,并形成了令人矚目的市場規(guī)模。本文介紹了運(yùn)動控制器的總體設(shè)計方案,包括運(yùn)動控制器的硬件平臺以及軟件設(shè)計思路。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。