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