摘 要:根據(jù)機(jī)器人控制性能的要求,設(shè)計(jì)了一個(gè)基于CAN總線的分布式機(jī)器人控制系統(tǒng),該控制系統(tǒng)由上位主控計(jì)算機(jī)、通訊部分和下位各關(guān)節(jié)控制器組成,具有連線簡(jiǎn)單,擴(kuò)充方便,通訊穩(wěn)定可靠,控制實(shí)時(shí)性高等特點(diǎn)。并對(duì)機(jī)器人關(guān)節(jié)控制器的硬件電路設(shè)計(jì)和控制軟件設(shè)計(jì)作了詳細(xì)闡述。該控制系統(tǒng)已用于研制的6DOF機(jī)械手,控制效果良好。
關(guān)鍵詞:CAN總線;Motorola DSP;分布式控制;機(jī)器人控制器
Abstract: According to the requirements of robot control performance, a distributed robot control system based on CAN bus is designed, which is composed of computer, communication module and joint controllers .The control system has many features, including simple connection, convenient extension, reliable communication and good real-time, and so on. Besides these, it mainly describes the design of hardware circuit and control software of joint controller. A 6DOF robot has been controlled by the control system, and the good control result has been gotten.
Key words: CAN bus; Motorola DSP; distributed control; robot controller
0 引言
機(jī)器人控制系統(tǒng)是機(jī)器人信息處理和控制的主體,其設(shè)計(jì)好壞將決定機(jī)器人系統(tǒng)的整體行為和性能。機(jī)器人控制系統(tǒng)結(jié)構(gòu)一般可分為三種類型:(1)集中控制方式,利用一臺(tái)微型計(jì)算機(jī)實(shí)現(xiàn)全部功能,這種方式具有結(jié)構(gòu)簡(jiǎn)單、經(jīng)濟(jì)的特點(diǎn),但處理能力有限,難以滿足高性能控制要求并且控制風(fēng)險(xiǎn)高度集中。(2)主從控制方式,用主從兩個(gè)CPU進(jìn)行控制,主CPU擔(dān)當(dāng)系統(tǒng)管理,機(jī)器人語(yǔ)言編譯和人機(jī)接口功能,同時(shí)也利用它的運(yùn)算能力完成坐標(biāo)變換、軌跡插補(bǔ);從CPU完成全部關(guān)節(jié)位置數(shù)字控制,主從CPU間通過(guò)公用內(nèi)存交換數(shù)據(jù),對(duì)采用更多的CPU進(jìn)一步分散功能比較困難。(3)分布式控制,普遍采用上、下位機(jī)二級(jí)分布式結(jié)構(gòu),上位機(jī)負(fù)責(zé)整個(gè)系統(tǒng)管理以及運(yùn)動(dòng)學(xué)計(jì)算、軌跡規(guī)劃等,下位機(jī)由多個(gè)CPU組成,每個(gè)CPU控制一個(gè)關(guān)節(jié)運(yùn)動(dòng),這些CPU和上位機(jī)通過(guò)總線形式相聯(lián)系。這種結(jié)構(gòu)的控制器工作速度和控制性能明顯提高,是一種比較理想的機(jī)器人控制方式[1]。傳統(tǒng)的機(jī)器人控制器采用MCU作為控制芯片,其運(yùn)算速度和處理能力難以滿足日益復(fù)雜的機(jī)器人控制。在通訊方式上,常用的是RS422或RS485通訊,通訊的實(shí)時(shí)性較差,故障率較高,出現(xiàn)故障時(shí),不容易排查[2]。本文所設(shè)計(jì)的機(jī)器人控制系統(tǒng)采用分布式控制方式,上位機(jī)采用高性能的工業(yè)PC機(jī),下位關(guān)節(jié)控制器選用集成DSP的高速運(yùn)算處理能力和MCU的控制特性于一體的Motorola DSP56F807作為控制芯片,上位機(jī)和下位各關(guān)節(jié)控制器之間采用了有效地支持分布式控制和實(shí)時(shí)控制的CAN(Controller Area Network)總線通訊方式,既能快速地實(shí)現(xiàn)機(jī)器人控制的復(fù)雜算法,又具有較高的控制實(shí)時(shí)性,是一個(gè)高性能的機(jī)器人控制系統(tǒng)。
1 控制系統(tǒng)結(jié)構(gòu)
機(jī)器人是一個(gè)多自由度系統(tǒng)。機(jī)器人控制本質(zhì)上是對(duì)各個(gè)關(guān)節(jié)的運(yùn)動(dòng)進(jìn)行控制,使其協(xié)調(diào)運(yùn)動(dòng),從而完成一些相對(duì)復(fù)雜的動(dòng)作。該控制系統(tǒng)采用分布式控制方式,由上位主控計(jì)算機(jī)模塊、通訊模塊和下位關(guān)節(jié)控制器模塊組成,如圖1 所示。上位主控計(jì)算機(jī)負(fù)責(zé)整個(gè)系統(tǒng)的調(diào)度管理、在線運(yùn)動(dòng)規(guī)劃、故障診斷和人機(jī)交互等功能;通訊模塊負(fù)責(zé)上位計(jì)算機(jī)與下位各關(guān)節(jié)控制器之間的實(shí)時(shí)信息交換;各關(guān)節(jié)控制器和驅(qū)動(dòng)直流無(wú)刷電機(jī)集成在一起,各個(gè)關(guān)節(jié)的運(yùn)動(dòng)由各關(guān)節(jié)控制器發(fā)出PWM信號(hào)驅(qū)動(dòng)直流無(wú)刷電機(jī)實(shí)現(xiàn)。
[align=center]

圖1控制系統(tǒng)簡(jiǎn)圖[/align]
1.1 上位主控計(jì)算機(jī)模塊
上位計(jì)算機(jī)是控制系統(tǒng)的中樞,要求體積小,運(yùn)算速度快,滿足機(jī)器人實(shí)時(shí)控制的要求,通常采用高性能工業(yè)控制計(jì)算機(jī)。上位機(jī)應(yīng)用程序在可視化編程環(huán)境VC++6.0下編制,分為程序界面、通訊初始化部分和控制部分??刂撇糠质钦麄€(gè)上位機(jī)軟件控制的核心,可實(shí)現(xiàn)單關(guān)節(jié)控制和多關(guān)節(jié)協(xié)調(diào)控制,圖2為單關(guān)節(jié)控制部分流程圖,單關(guān)節(jié)控制是從上位機(jī)輸入關(guān)節(jié)應(yīng)該運(yùn)動(dòng)的期望位置值,然后向下位關(guān)節(jié)控制器發(fā)送單關(guān)節(jié)控制指令,并從下位關(guān)節(jié)控制器接受關(guān)節(jié)實(shí)際位置信息;下位關(guān)節(jié)控制器從上位機(jī)接收位置信息并加以運(yùn)算處理,輸出PWM信號(hào)驅(qū)動(dòng)直流無(wú)刷電機(jī)運(yùn)動(dòng)到期望位置。上位計(jì)算機(jī)的控制周期為20ms,它通過(guò)CAN總線接口卡連接到通訊總線上,與通訊總線上的各關(guān)節(jié)控制器交互信息。
[align=center]

圖2上位機(jī)單關(guān)節(jié)控制程序流程圖[/align]
1.2 通訊模塊
機(jī)器人的分布式控制系統(tǒng)中,對(duì)通信方式的選擇至關(guān)重要,上位計(jì)算機(jī)和下位各關(guān)節(jié)控制器間的通信既要滿足硬件連接簡(jiǎn)單,擴(kuò)充方便,又要滿足通信的高可靠性和實(shí)時(shí)性。本設(shè)計(jì)采用CAN總線作為通信標(biāo)準(zhǔn),CAN總線是一種有效支持分布式控制和實(shí)時(shí)控制的串行通訊網(wǎng)絡(luò),與一般的通信網(wǎng)絡(luò)相比具有可靠性高、實(shí)時(shí)性和靈活性好的優(yōu)點(diǎn),非常適合作為機(jī)器人控制系統(tǒng)中的通訊方式[3]。
本控制系統(tǒng)中,上位計(jì)算機(jī)通過(guò)周立功單片機(jī)公司的USBCAN-II智能CAN接口卡連接到CAN網(wǎng)絡(luò),在上位機(jī)中調(diào)用隨卡提供的ZLGVCI驅(qū)動(dòng)庫(kù)函數(shù),來(lái)實(shí)現(xiàn)CAN通信的管理和監(jiān)控。CAN網(wǎng)絡(luò)各設(shè)備間通過(guò)雙絞線連接,因?yàn)殡p絞線的特性阻抗為120歐,為了增強(qiáng)CAN通信的可靠性和抗干擾性,在CAN網(wǎng)絡(luò)的兩個(gè)端點(diǎn)加入120歐的抑制反射的終端匹配電阻。
1.3 下位關(guān)節(jié)控制器模塊
下位關(guān)節(jié)控制器模塊是整個(gè)控制系統(tǒng)的底層,與各關(guān)節(jié)驅(qū)動(dòng)電機(jī)集成在一起,實(shí)際上是一個(gè)單關(guān)節(jié)運(yùn)動(dòng)控制和驅(qū)動(dòng)模塊,主要用來(lái)控制各個(gè)關(guān)節(jié)運(yùn)動(dòng)具體執(zhí)行過(guò)程。關(guān)節(jié)控制器接收主控計(jì)算機(jī)的控制命令,對(duì)各個(gè)關(guān)節(jié)的運(yùn)動(dòng)進(jìn)行控制,同時(shí)把底層信息反饋給上位計(jì)算機(jī),便于上位計(jì)算機(jī)協(xié)調(diào)規(guī)劃,統(tǒng)一管理。所有的下位關(guān)節(jié)控制器在硬件結(jié)構(gòu)上完全相同,根據(jù)各關(guān)節(jié)運(yùn)動(dòng)控制的差異,內(nèi)部灌注的軟件程序有所不同。關(guān)節(jié)控制器是整個(gè)控制系統(tǒng)的核心,也是本文研究的重點(diǎn),它的性能好壞直接關(guān)系到機(jī)器人的整體性能。
2 控制器硬件系統(tǒng)設(shè)計(jì)
控制器硬件系統(tǒng)按結(jié)構(gòu)和功能可分為主處理器單元、電源電路、電機(jī)驅(qū)動(dòng)電路、CAN接口電路、欠壓保護(hù)電路、過(guò)流檢測(cè)電路等模塊,具體電路如圖3所示。
[align=center]

圖3控制器硬件電路原理簡(jiǎn)圖[/align]
2.1 主處理器芯片
本設(shè)計(jì)核心控制芯片采用Motorola DSP56F807,該芯片混合了DSP 的高速運(yùn)算能力與MCU 的控制特性于一體,提供了許多專用于電動(dòng)機(jī)控制的外設(shè),包括兩個(gè)脈寬調(diào)制模塊(PWMA、PWMB)、2個(gè)相位檢測(cè)器模塊(quadrature decoder)、12位精度的模數(shù)轉(zhuǎn)換模塊(ADC)、4個(gè)定時(shí)器模塊、通訊外設(shè)模塊(SCI、SPI、CAN)等,因此非常適合于對(duì)實(shí)現(xiàn)機(jī)器人各關(guān)節(jié)運(yùn)動(dòng)的直流無(wú)刷電機(jī)進(jìn)行數(shù)字控制[4]。
2.2 CAN接口電路
DSP56F807芯片內(nèi)集成了CAN控制器,要完成數(shù)據(jù)幀的收發(fā)還需外加CAN驅(qū)動(dòng)器芯片,本設(shè)計(jì)采用Philips公司的PCA82C250為CAN驅(qū)動(dòng)器。為了增強(qiáng)抗外部干擾,在DSP56F807的MSCAN_TX和MSCAN_RX引腳與CAN驅(qū)動(dòng)器之間加兩個(gè)高速光電耦合器6N137。
2.3 電機(jī)驅(qū)動(dòng)電路
電機(jī)驅(qū)動(dòng)采用Motorola公司的MPM3003,它內(nèi)部由上橋臂的3個(gè)P-溝道功率型MOSFET 和下橋臂的3個(gè)N-溝道功率型MOSFET組成三相橋式電路,是理想的伺服電機(jī)驅(qū)動(dòng)集成電路芯片[5]。因PWM輸出電壓不能直接推動(dòng)MPM3003,在PWM輸出口和MPM3003之間加一個(gè)TTL到CMOS轉(zhuǎn)換芯片MC14504B。
2.4 電源電路
控制器上同時(shí)需要5.0V 和3.3V 兩種電源。外部采用的是直流24V電源,通過(guò)MAX724將24V 穩(wěn)壓到5.0V,再通過(guò)MAX604將5.0V穩(wěn)壓到3.3V。為了減少電磁干擾,使用磁珠隔離3.3V 的數(shù)字電源和模擬電源。
因篇幅有限,其它的電路模塊不再一一介紹。
3 控制器軟件設(shè)計(jì)
控制器軟件設(shè)計(jì)是在Codewarrior6.0集成開(kāi)發(fā)環(huán)境下進(jìn)行的,采用模塊化設(shè)計(jì),可分為初始化模塊、主循環(huán)模塊和中斷子程序模塊,整個(gè)控制功能由各中斷子程序?qū)崿F(xiàn),如圖4所示。初始化模塊的作用是初始化DSP 及控制參數(shù),主循環(huán)模塊是一個(gè)死循環(huán),主要是查詢是否有中斷產(chǎn)生,如果有中斷則轉(zhuǎn)而去執(zhí)行相應(yīng)的中斷服務(wù)子程序。數(shù)字PID控制子程序是實(shí)現(xiàn)控制功能的主體,完成對(duì)關(guān)節(jié)的位置、速度PID控制,通過(guò)定時(shí)器中斷實(shí)現(xiàn)。
[align=center]

圖4控制器軟件結(jié)構(gòu)簡(jiǎn)圖[/align]
對(duì)于數(shù)字PID控制子程序中的PID算法,采用了一種改進(jìn)的變速積分PID算法,有效地克服了常規(guī)PID算法中出現(xiàn)積分飽和時(shí),造成超調(diào)量增加,使調(diào)節(jié)品質(zhì)變壞的缺點(diǎn)。變速積分法的基本思想是設(shè)法改變積分項(xiàng)的累加速度,使其與偏差大小相對(duì)應(yīng),偏差大時(shí),減弱積分作用,反之則加強(qiáng)。
常規(guī)PID算法數(shù)字離散化為:

式中,KP,KI,KD分別為調(diào)節(jié)器的比例、積分和微分系數(shù);E(k),E(k-1)分別為第k次和k-1次的期望偏差值;U(k)為第k次的調(diào)節(jié)器輸出。
改進(jìn)后的變速積分PID算法為:

f[E(k)]是E(k)的函數(shù),當(dāng)|E(k)|≤B時(shí),進(jìn)行常規(guī)的PID控制;當(dāng)|E(k)|>(A+B)后,不再進(jìn)行積分項(xiàng)的累加;而當(dāng)B<|E(k)|>(A+B)時(shí),f[E(k)]隨E(k)的減小而增大,累加速度加快。其中,A,B為分離區(qū)間。
4 結(jié)論
本文設(shè)計(jì)的機(jī)器人分布式控制系統(tǒng),采用CAN總線作為通信方式,和過(guò)去機(jī)器人控制中常用的RS485總線相比具有通訊穩(wěn)定可靠、實(shí)時(shí)性高等優(yōu)點(diǎn)。在下位關(guān)節(jié)控制器中選用了Motorola DSP56F807作為控制芯片,既能方便地利用豐富的外圍模塊實(shí)現(xiàn)控制功能,又能以較快的運(yùn)算速度實(shí)現(xiàn)復(fù)雜的控制算法,克服了過(guò)去利用MCU作為控制芯片時(shí),難以實(shí)現(xiàn)復(fù)雜的控制算法的缺點(diǎn)。在控制器軟件中采用了改進(jìn)的變速積分PID算法,對(duì)關(guān)節(jié)位置、速度進(jìn)行數(shù)字PID控制。該控制系統(tǒng)即插即用,功能擴(kuò)展和故障處理方便;連線簡(jiǎn)單,過(guò)去對(duì)6DOF的機(jī)械手進(jìn)行控制,需118根線纜(包括電機(jī)線、傳感器線和其它開(kāi)關(guān)量控制線),現(xiàn)在只需一根雙絞線,外觀也很美觀;另外,各關(guān)節(jié)控制器直接分布在控制現(xiàn)場(chǎng),使模擬信號(hào)傳輸距離明顯縮短,有效地改善了抗干擾能力。
參考文獻(xiàn):
[1] 范永,譚民. 機(jī)器人控制器的現(xiàn)狀及展望. 機(jī)器人. 1999,21
[2] 劉華,程莉等. 機(jī)器人控制器與被控機(jī)器人的通訊方法研究. 機(jī)器人技術(shù)與應(yīng)用.2002,4
[3] 鄔寬明. CAN總線原理和應(yīng)用系統(tǒng)設(shè)計(jì). 北京:北京航空航天大學(xué)出版社,1996
[4] DSP56F800 User Manual. Rev.6.0 Motorola Inc,2004
[5] 陳粵初. Motorola 單片機(jī)及專用集成芯片應(yīng)用系統(tǒng)設(shè)計(jì). 北京:北京航空航天大學(xué)出版社,1994
[6] 楊飛,鄭貴林. 基于CAN總線的監(jiān)控系統(tǒng)設(shè)計(jì). 微計(jì)算機(jī)信息.2005,21(7)