摘? 要: 一種基于PC機(jī)的開(kāi)放式四軸運(yùn)動(dòng)控制平臺(tái)的軟、硬件組成及設(shè)計(jì)方法。采用CPLD簡(jiǎn)化了平臺(tái)硬件結(jié)構(gòu),利用PC機(jī)的資源實(shí)現(xiàn)了“軟運(yùn)動(dòng)控制”功能。系統(tǒng)具有結(jié)構(gòu)開(kāi)放、使用方便、成本低廉、性能可靠等特點(diǎn),可以靈活地實(shí)現(xiàn)定制應(yīng)用。?
關(guān)鍵詞: 開(kāi)放式系統(tǒng)? 運(yùn)動(dòng)控制器? CPLD?
?
作為運(yùn)動(dòng)控制的核心部件,運(yùn)動(dòng)控制器普遍采用16位或32位微控制器,其靈活的系統(tǒng)集成方式和高速的指令執(zhí)行速度提高了運(yùn)動(dòng)控制性能、改善了控制系統(tǒng)的精度、增強(qiáng)了系統(tǒng)構(gòu)造的靈活性。如DeltaTau公司的PMAC系列、MEI公司的XMP系列的產(chǎn)品,均采用了高速數(shù)字信號(hào)處理器(DSP)和現(xiàn)場(chǎng)可編程門陣列(FPGA)技術(shù),一般可以控制1~8個(gè)軸。這些基于PC機(jī)總線的運(yùn)動(dòng)控制器,雖然因采用高性能微處理器在信息處理速度方面有較大的提高,并在實(shí)際應(yīng)用中提供了靈活的接口,但在使用以及系統(tǒng)集成的時(shí)候,仍然有很多不便,如價(jià)格比較高、應(yīng)用非常復(fù)雜等。并且在結(jié)構(gòu)上是封閉的,只能針對(duì)某一類型的應(yīng)用,控制策略單一,很難同時(shí)滿足控制系統(tǒng)在多種應(yīng)用場(chǎng)合中的要求,實(shí)現(xiàn)定制應(yīng)用。?
過(guò)去,受計(jì)算機(jī)處理能力的限制,高性能的運(yùn)動(dòng)控制技術(shù)需要在板處理器如單片機(jī)或DSP上實(shí)現(xiàn),一般PC機(jī)中的微處理器很難同時(shí)完成如軌跡插補(bǔ)運(yùn)算和伺服控制運(yùn)算等任務(wù)。目前PC機(jī)微處理器已經(jīng)采用了更先進(jìn)的工藝技術(shù),信息處理能力明顯提高,可以滿足高速實(shí)時(shí)運(yùn)動(dòng)控制的要求,硬件支持能力大大增強(qiáng),并且PC機(jī)良好的軟件開(kāi)發(fā)環(huán)境使構(gòu)造開(kāi)放式運(yùn)動(dòng)控制平臺(tái)成為可能。本文提出了一種不采用在板處理器而以PC機(jī)微處理器為控制核心的開(kāi)放式四軸運(yùn)動(dòng)控制器,該運(yùn)動(dòng)控制器采用ALTERA公司的復(fù)雜可編程門陣列(CPLD)EPF6016實(shí)現(xiàn)硬件管理功能,硬件的功能可以通過(guò)軟件配置,而應(yīng)用層的功能如運(yùn)動(dòng)軌跡規(guī)劃和伺服控制等均由PC機(jī)完成。?
1 系統(tǒng)硬件結(jié)構(gòu)?
開(kāi)放式四軸運(yùn)動(dòng)控制器的硬件結(jié)構(gòu)如圖1所示。其中,虛線框內(nèi)的部分由ALTERA公司的復(fù)雜可編程門陣列EPF6016實(shí)現(xiàn)。FLEX6000系列器件EPF6016是ALTERA公司為大容量設(shè)計(jì)提供的一種低成本可編程交織式門陣列,共有16000個(gè)可用門,1320個(gè)邏輯單元,117個(gè)I/O引腳,每個(gè)I/O引腳都有獨(dú)立的三態(tài)輸出使能控制。該器件采用OPEFLEX結(jié)構(gòu),能在最小的芯片尺寸上保持高性能和高布線率。器件的基本組成是邏輯單元(LE)。每個(gè)邏輯單元由一個(gè)4輸入查找表、一個(gè)寄存器以及作為進(jìn)位鏈和級(jí)連鏈功能的專用通道。每十個(gè)邏輯單元組成一個(gè)邏輯陣列塊(LAB)。器件采用SRAM構(gòu)造,可以通過(guò)外部EEPROM或控制器實(shí)現(xiàn)在線配置,能使設(shè)計(jì)者在設(shè)計(jì)初期以及設(shè)計(jì)測(cè)試過(guò)程中對(duì)設(shè)計(jì)作靈活的修改,同時(shí)也能夠通過(guò)在線重新配置來(lái)改變其內(nèi)部功能。運(yùn)動(dòng)控制器的硬件功能編程由ALTERA公司提供的MAX+PLUSII開(kāi)發(fā)系統(tǒng)支持,設(shè)計(jì)采用了原理圖輸入方式,設(shè)計(jì)和調(diào)試比較直觀、簡(jiǎn)便。?
?
?
該運(yùn)動(dòng)控制器的硬件結(jié)構(gòu)分為以下幾部分:?
(1)主機(jī)接口電路:運(yùn)動(dòng)控制器采用了ISA-AT總線接口,同時(shí)設(shè)計(jì)了PC-104接口。數(shù)據(jù)總線寬度為16位,接口功能在EPF6016內(nèi)部實(shí)現(xiàn),其中包括總線地址譯碼、數(shù)據(jù)和命令鎖存、中斷及復(fù)位等功能。?
(2)光電編碼器接口電路:運(yùn)動(dòng)控制器接收四路光電編碼器差分輸入信號(hào)作為位置反饋,最高輸入頻率為1MHz,輸入的A、B相信號(hào)經(jīng)過(guò)差動(dòng)接收后,在EPF6016內(nèi)部經(jīng)過(guò)數(shù)字濾波處理后進(jìn)行倍頻和辨向,產(chǎn)生的方向信號(hào)和脈沖信號(hào)進(jìn)入16位加減計(jì)數(shù)器。系統(tǒng)軟件可以讀取計(jì)數(shù)而獲得實(shí)際的位置變化。?
(3)模擬量輸出電路:高性能的運(yùn)動(dòng)控制器應(yīng)采用高分辨率的D/A轉(zhuǎn)換器。為了保證模擬量控制信號(hào)的精度,并考慮到模擬量信號(hào)在線上傳輸引起的漂移和電壓降落,運(yùn)動(dòng)控制器和伺服驅(qū)動(dòng)器之間的模擬控制接口信號(hào)至少應(yīng)有12位以上的精度。本文中的運(yùn)動(dòng)控制器采用了低成本、小封裝體積的雙16位串行輸入D/A轉(zhuǎn)換器AD1866,構(gòu)成雙極性電壓輸出方式。在 EPF6016內(nèi)部設(shè)計(jì)了控制4路并發(fā)式并行/串行數(shù)據(jù)轉(zhuǎn)換以及4路D/A地址選擇電路,運(yùn)動(dòng)控制器的模擬量電壓輸出范圍為±10V。?
(4)數(shù)字量輸入輸出電路:運(yùn)動(dòng)控制的所有I/O信號(hào)均采用光電隔離處理,考慮到I/O開(kāi)關(guān)信號(hào)可能產(chǎn)生的信號(hào)抖動(dòng)現(xiàn)象,對(duì)每一路I/O信號(hào)都進(jìn)行了相應(yīng)的數(shù)字濾波處理以消除噪聲信號(hào)??刂破髟O(shè)計(jì)了40路I/O信號(hào),其中包括16路專用輸入信號(hào)、2路特殊開(kāi)關(guān)輸入信號(hào)(用于坐標(biāo)測(cè)量或定位的接觸式測(cè)頭信號(hào)和急停開(kāi)關(guān)信號(hào)),另外還設(shè)計(jì)了16路可編程通用I/O信號(hào)(8路輸入/8路輸出)。實(shí)際上,所有的I/O信號(hào)除個(gè)別信號(hào)具有獨(dú)特的功能外,都是開(kāi)放的,可以根據(jù)應(yīng)用的特點(diǎn)設(shè)計(jì)具體的功能。?
(5)模擬量輸入電路:對(duì)于一些控制場(chǎng)合,需要檢測(cè)或控制外部狀態(tài)量的變化,運(yùn)動(dòng)控制器也設(shè)計(jì)了相應(yīng)的單端或差動(dòng)式模擬量反饋輸入通道。系統(tǒng)采用MAXIM公司的8通道、12位轉(zhuǎn)換精度、150kHz采樣頻率的A/D轉(zhuǎn)換器MAX197。各模擬量通道可以獨(dú)立編程選擇輸入范圍:±10V、±5V、0~10V、0~5V,A/D轉(zhuǎn)換器的轉(zhuǎn)換基準(zhǔn)采用內(nèi)部基準(zhǔn)。?
(6)可編程定時(shí)器:由于在開(kāi)放式運(yùn)動(dòng)控制系統(tǒng)中,插補(bǔ)運(yùn)算和伺服控制都由PC機(jī)完成,這兩個(gè)控制任務(wù)通常不在一個(gè)任務(wù)循環(huán)中處理。一般而言,插補(bǔ)運(yùn)算的周期要比伺服控制的周期長(zhǎng),因此兩個(gè)任務(wù)需要占用不同的系統(tǒng)資源。由于插補(bǔ)運(yùn)算通常占用PC機(jī)的定時(shí)中斷資源,而伺服控制也是一個(gè)需要精確定時(shí)的任務(wù),因此在EPF6016內(nèi)部設(shè)計(jì)了可編程16位定時(shí)器。該定時(shí)器可采用不同的時(shí)鐘源,定時(shí)范圍為0~300ms,最小分辨率為70ns,定時(shí)器產(chǎn)生的溢出動(dòng)作可以向PC機(jī)申請(qǐng)中斷。?
(7)同步工作電路:在運(yùn)動(dòng)控制系統(tǒng)中,各控制軸同步運(yùn)行是一個(gè)很重要的要求,因此在EPF6016內(nèi)部設(shè)計(jì)了同步控制電路和專門的控制字,支持多塊運(yùn)動(dòng)控制器控制輸出同步刷新、反饋計(jì)數(shù)值同步讀取等操作。?
(8)硬件看門狗電路:在運(yùn)動(dòng)控制器中采用了DALLAS公司的看門狗復(fù)位及電壓監(jiān)控芯片DS1232,以監(jiān)測(cè)系統(tǒng)的軟硬件運(yùn)行情況。當(dāng)系統(tǒng)軟件運(yùn)行死機(jī)的時(shí)候,看門狗電路產(chǎn)生信號(hào)復(fù)位系統(tǒng),保證整個(gè)系統(tǒng)的可靠性??撮T狗定時(shí)時(shí)間可以編程設(shè)置為300ms、600ms、1.2s。?
從硬件結(jié)構(gòu)的組成特點(diǎn)可以看出,系統(tǒng)的組成核心是具有可重新配置特點(diǎn)的CPLD EPF6016,它實(shí)現(xiàn)了幾乎所有的外圍電路管理功能,而其它的電路都屬于標(biāo)準(zhǔn)的輔助電路。因此系統(tǒng)在結(jié)構(gòu)上具有典型的開(kāi)放性,這對(duì)實(shí)現(xiàn)軟件的開(kāi)放是一個(gè)很好的支持。?
2 運(yùn)動(dòng)控制器軟件設(shè)計(jì)?
運(yùn)動(dòng)控制器的軟件采用Borland C++語(yǔ)言編寫,可以按照庫(kù)函數(shù)的方式調(diào)用。根據(jù)實(shí)時(shí)運(yùn)動(dòng)控制的特點(diǎn)和硬件資源的結(jié)構(gòu),函數(shù)庫(kù)分為兩類:?
(1)控制運(yùn)動(dòng)控制器硬件操作的函數(shù)庫(kù)。包括針對(duì)運(yùn)動(dòng)控制器硬件基本操作的函數(shù),通過(guò)調(diào)用這些函數(shù)可以充分利用硬件資源,實(shí)現(xiàn)定制的應(yīng)用。運(yùn)動(dòng)控制器上的各個(gè)硬件功能的存取操作是通過(guò)一組讀寫控制命令實(shí)現(xiàn)的,每一個(gè)控制命令占用一個(gè)PC機(jī)I/O空間地址,對(duì)每一個(gè)地址分別進(jìn)行讀或?qū)懖僮鲗a(chǎn)生不同的功能。硬件操作函數(shù)庫(kù)按照C++語(yǔ)言類的方式構(gòu)造,每個(gè)命令都是以運(yùn)動(dòng)控制器硬件操作類的公有成員函數(shù)形式存在。這些命令主要實(shí)現(xiàn)以下功能:?
?、倏刂乒怆娋幋a器脈沖計(jì)數(shù)器,讀取或清除計(jì)數(shù)值;?
?、谠O(shè)置運(yùn)動(dòng)控制器的工作方式以及配置系統(tǒng)的各個(gè)硬件資源;?
?、坶_(kāi)關(guān)量輸入輸出操作,實(shí)現(xiàn)包括通用I/O和專用I/O的查詢和設(shè)置、控制器硬件資源工作狀態(tài)查詢等功能;?
?、苣M量控制命令,用于控制D/A轉(zhuǎn)換器和A/D轉(zhuǎn)換器實(shí)現(xiàn)模擬量輸出和模擬信號(hào)采集等。?
(2)定制應(yīng)用算法函數(shù)庫(kù)。根據(jù)實(shí)際應(yīng)用的要求,以控制運(yùn)動(dòng)控制器硬件操作的函數(shù)庫(kù)為基礎(chǔ),可以有針對(duì)性地設(shè)計(jì)應(yīng)用算法函數(shù)。本文以運(yùn)動(dòng)控制為例設(shè)計(jì)了針對(duì)運(yùn)動(dòng)控制的算法函數(shù)庫(kù),實(shí)現(xiàn)運(yùn)動(dòng)規(guī)劃、伺服控制等功能。其它控制算法和功能也可以在此基礎(chǔ)上進(jìn)一步擴(kuò)展。運(yùn)動(dòng)控制算法函數(shù)庫(kù)的各個(gè)命令也采用C++語(yǔ)言類的方式進(jìn)行封裝,控制算法類是運(yùn)動(dòng)控制器硬件操作類的繼承,調(diào)用和修改都十分方便,因而在結(jié)構(gòu)上具有很好的開(kāi)放性。?
在伺服運(yùn)動(dòng)控制算法上,控制器將當(dāng)前規(guī)劃的運(yùn)動(dòng)位置、進(jìn)給速度送入伺服控制器與反饋的實(shí)際位置進(jìn)行比較,得到位置跟蹤誤差,經(jīng)過(guò)位置控制器后,送到D/A轉(zhuǎn)換器,輸出伺服驅(qū)動(dòng)器的控制信號(hào)。位置控制算法可以根據(jù)實(shí)際的要求采用多種控制策略。?
本文的運(yùn)動(dòng)控制器控制算法采用PID+速度前饋方式。通過(guò)調(diào)節(jié)各參數(shù),這種控制算法能對(duì)大多數(shù)系統(tǒng)實(shí)現(xiàn)精確而穩(wěn)定的控制。其控制結(jié)構(gòu)如圖2所示。?
?
?
伺服控制器輸出計(jì)算公式為:?
?
3 系統(tǒng)應(yīng)用及實(shí)驗(yàn)結(jié)果?
從運(yùn)動(dòng)控制器的軟硬件結(jié)構(gòu)可以看出,這種設(shè)計(jì)具有比較好的開(kāi)放性,便于在軟硬件方面進(jìn)行功能擴(kuò)展和重新配置,同時(shí)應(yīng)用系統(tǒng)的構(gòu)造也比較靈活。圖3為開(kāi)放式運(yùn)動(dòng)控制平臺(tái)應(yīng)用于伺服電機(jī)控制的結(jié)構(gòu)圖。它由三部分組成:采用PENTIUM200 CPU的 IBM PC機(jī);四軸開(kāi)放式運(yùn)動(dòng)控制器;交流伺服電機(jī)和驅(qū)動(dòng)器(采用松下MINAS-A系列100W伺服驅(qū)動(dòng)器;位置伺服控制周期分別為250μs和1ms)。圖4和圖5分別是不同伺服控制周期時(shí)位置控制器采用PID控制算法的正弦位置跟蹤曲線,其中,θr表示幅值為2500個(gè)脈沖、頻率為4Hz的正弦給定信號(hào),θf(wàn)表示實(shí)際位置反饋,E表示位置跟蹤誤差。結(jié)果表明,系統(tǒng)可以方便地實(shí)現(xiàn)控制設(shè)置,具有較強(qiáng)的軟件擴(kuò)展能力。?
?
?
?
?
本文設(shè)計(jì)的開(kāi)放式四軸運(yùn)動(dòng)控制平臺(tái),由于采用了高容量低成本的CPLD EPF6016,將運(yùn)動(dòng)控制器所需的硬件資源進(jìn)行了整合集成,提高了系統(tǒng)硬件的配置能力和可靠性,并且充分利用PC機(jī)軟件資源方面的優(yōu)勢(shì),采用C++語(yǔ)言“類”的結(jié)構(gòu)對(duì)運(yùn)動(dòng)控制算法進(jìn)行封裝,使系統(tǒng)軟件也具有很好的開(kāi)放性和集成性,可以方便地設(shè)計(jì)多種控制算法,實(shí)現(xiàn)“軟運(yùn)動(dòng)控制”功能。這種設(shè)計(jì)不僅降低了成本,而且控制算法對(duì)使用者開(kāi)放,便于根據(jù)實(shí)際對(duì)象采用不同的控制算法定制應(yīng)用。?
參考文獻(xiàn)?
1 富歷新.基于PC總線的四軸電機(jī)運(yùn)動(dòng)控制器. 電氣傳動(dòng),1998(5):35~37?
2 Frohlish.P. New Trends in Automation:Concepts of PCBased Controllers. Real Time Magazine (Belgium),1997(4):67~70