機電系統(tǒng)執(zhí)行部件包括電機、舵機、液壓缸、液壓馬達等,傳感部分有接觸和非接觸的接近傳感器(光電傳感器)、圖像傳感器(CCD、辨色傳感器)、聲音傳感器(麥克風)等,如果采用集中式的設計方式,不僅提高了對設計者的要求,而且難以適應控制要求不斷變化的情況。軟件設計方面,集中式的硬件設計會使得軟件構架十分繁瑣,無法多人協(xié)同工作,維護困難??刂葡到y(tǒng)硬件安裝方面,集中式的硬件構架很可能增加線束方面的困難。綜上所述,采用分布式的設計可以減小設計風險,提高設計效率,增加系統(tǒng)柔性。
控制系統(tǒng)分為三部分:信號輸入部分、中央處理部分和信號輸出驅(qū)動部分。信號輸入部分包括數(shù)字信號輸入和模擬信號輸入,信號輸出驅(qū)動部分根據(jù)不同的驅(qū)動部件設計相應的驅(qū)動電路。學生常用的執(zhí)行部件包括直流伺服電機、直流電機、氣動控制閥等,后兩者同屬于一種控制模式,故驅(qū)動部分主要為直流伺服驅(qū)動和閥驅(qū)動。因此分布式控制模塊可以分為:信號輸入模塊、主控模塊、直流伺服電機驅(qū)動模塊、氣動閥驅(qū)動模塊等。
信號輸入模塊主要是傳感器信號的輸入和編碼,分為數(shù)字信號輸入和模擬信號輸入;主控模塊是信息的處理、決策和人機交互的平臺,包括鍵盤輸入和LCD輸出;直流伺服電機控制驅(qū)動模塊,采用LM629作為電機控制芯片,通過H橋驅(qū)動完成直流電機的PID控制;閥驅(qū)動模塊用于氣動閥的開啟、關閉以及直流電機的驅(qū)動,故同樣通過H橋驅(qū)動模式。各個模塊之間采用CAN總線構架(如圖1)??刂菩酒捎肞89C58X2,用KeilC和CSOS系統(tǒng)進行算法設計,系統(tǒng)硬件和軟件構架清晰,具有良好的擴展性。
1 硬件電路構架
1.1 直流伺服電機控制
P89C58X2與LM629之間采用總線方式連接,即單片機的P0口通過上拉電阻之后接LM629的數(shù)據(jù)輸入位,HI連接單片機的外部中斷口,編碼盤輸入A、B和IN口分別連接上拉電阻之后接電機的編碼盤,而LM629的輸出口PWM MAG和PWM SIG分別連接H橋電機驅(qū)動的PWM和DIR、編碼盤和LM629,H橋與LM629之間均采用高速光隔6N137隔離,如圖2。
在單板上集成兩塊LM629,能使結構更緊湊,算法更簡單,通過軟件可以方便地設定LM629工作在速度模式或者位移模式。
1.2 CAN總線硬件設計
CAN總線是一種具有國際標準的性價比較高的現(xiàn)場總線,其最高傳輸速度可達1Mb/s,最遠傳輸距離可達10km,性能穩(wěn)定,十分適合可靠性要求高的分布式系統(tǒng)。
本系統(tǒng)CAN總線控制芯片采用飛利浦公司的SJA1000,其支持CAN2.0B的標準協(xié)議,并且芯片可以工作在BasicCAN和PeliCAN兩種模式下??偩€收發(fā)器采用飛利浦公司的TJA1050,它符合ISO11898標準,實現(xiàn)CAN控制器和通信線路的物理連接,提高CAN總線的驅(qū)動能力和可靠性。
SJA1000和P89C58X2之間同樣采用總線方式連接,連接方法同LM629,而SJA1000和TJA1050之間連接如下:SJA1000的TX0連接TJA1050的TXD,RX0連接RXD,RX1接Vref輸出,SJA1000的TX1下拉電阻接地,TJA1050的CANL和CANH就是CAN總線輸出。當多節(jié)點連接時,CANL和CANH之間需要加1~2個阻值為120Ω的端接電阻,能有效防止通訊總線上產(chǎn)生的信號反射(如圖3)。在軟件設計中,通過修改SJA1000的寄存器使CAN工作在PeliCAN、單濾波器、正常模式和擴展幀模式下。
2 CAN應用層協(xié)議
為了讓各個分布式模塊之間能協(xié)同高效工作,對數(shù)據(jù)傳輸之間的格式和意義做一個規(guī)定,這就是應用層協(xié)議。
2.1 CAN總線的應用層協(xié)議
控制系統(tǒng)之間需要一定的協(xié)議支持,本系統(tǒng)采用一主多從的控制模式,主控模塊作為傳感信號的接受者、處理者和驅(qū)動信號的發(fā)布者;信號輸入模塊作為信息的采集者和過濾者;而伺服控制模塊和閥驅(qū)動模塊作為動作的執(zhí)行者(如圖4)。
在信息控制面,主控模塊要向其他控制模塊發(fā)送“建立連接”請求,在收到所有模塊的“連接應答”之后才開始工作,否則發(fā)出連接錯誤信息,并指出沒有連接的模塊。主控模塊可以通過“數(shù)據(jù)上報”命令和“數(shù)據(jù)停止上報”命令打開和關閉主控模塊與信號輸入模塊之間的鏈路?!皥?zhí)行器開始”命令和“執(zhí)行器停止”命令用于開始或停止驅(qū)動器,這里可以指直流電機或者氣動閥。
2.2 CAN總線的數(shù)據(jù)幀結構
CAN接受一幀最多為8字節(jié),本文規(guī)定了應用層協(xié)議,如表1。
源地址是指命令的發(fā)起者;數(shù)據(jù)/命令表示本幀是命令面信息還是數(shù)據(jù)面信息;功能則表示本幀的作用,比如“建議連接”請求;數(shù)據(jù)位數(shù)表示數(shù)據(jù)的字節(jié)數(shù),最多四位,對于命令幀則忽略該位。
3 軟件開發(fā)平臺
根據(jù)不同機械系統(tǒng)的要求,設計人員可以選擇不同的硬件組合。為了方便軟件設計,本控制器采用了筆者開發(fā)的CSOS操作系統(tǒng),該操作系統(tǒng)基于時間片輪換算法,支持多任務操作,各任務之間的數(shù)據(jù)通過全局變量傳遞,占用系統(tǒng)資源少、易學、易用,適合本控制系統(tǒng)的要求。
3.1 控制器的多任務操作
信息接受任務,包括外部傳感器的信號,或者總線上的命令信息和數(shù)據(jù)信息,將信息解包之后獲得有用的數(shù)據(jù)(如CAN協(xié)議幀中的有用信息段)扔向數(shù)據(jù)通道,提供其他任務調(diào)用。
算法處理任務,從數(shù)據(jù)通道獲取信息字段,經(jīng)過計算將結果扔向數(shù)據(jù)通道。
信息輸出任務,對算法任務數(shù)據(jù)結果進行打包向驅(qū)動器或者CAN總線發(fā)送,用于驅(qū)動控制器或者向CAN總線投放數(shù)據(jù)包。
LCD顯示任務和鍵盤輸入任務,這兩個任務分別負責數(shù)據(jù)顯示和鍵盤的輸入。
3.2 多任務分配實例
以主控制模塊的軟件為例對上述構架進行說明,如圖5。
每個任務獨自運行,將各自的計算數(shù)據(jù)放入數(shù)據(jù)通道中,或者從數(shù)據(jù)通道中獲得相應數(shù)據(jù)進行計算,這樣的構架結構清晰,柔性強。
4 控制器應用實例
筆者將該控制系統(tǒng)應用于輪系機器人的尋線控制上,即讓機器人跟蹤地面上一定寬度的引導線。
4.1 硬件選擇
根據(jù)控制要求,硬件上需要信號輸入模塊,主控模塊和伺服驅(qū)動模塊。
4.2 傳感器安置和信號輸入模塊
筆者采用光電傳感器,利用不同顏色對于光的反射效果不同的原理,區(qū)分出地面的指引線,光電傳感器布局如圖6。
機器人采用14個光電傳感器(數(shù)字量),黑色點表示在引導線上為0,白色點表示在引導線外為1,并且通過光電傳感器間距和引導線寬度之間的關系,保證最多只有3個光電傳感器在引導線內(nèi),從這樣的一系列邏輯組合就可以知道機器人現(xiàn)在的姿態(tài)。信號輸入模塊中的算法任務對采集信號做濾波,過濾誤信號,之后將數(shù)據(jù)傳輸給信息輸出任務,打包后發(fā)向總線。
4.3 尋線算法和主控模塊
主控模塊的信息接受任務獲得上述信息后,解包并將相關的數(shù)據(jù)扔向數(shù)據(jù)通道,算法任務獲得數(shù)據(jù)進行運算。
由圖6可知,7個光電傳感器和引導線之間有9種狀態(tài),上下兩組狀態(tài)就可以確定目前機器人的姿態(tài),其構成一個9×9的二維矩陣,易知共有81種不同的組合。通過這個二維矩陣可獲得機器人現(xiàn)在的狀態(tài),用左極偏、左大偏、左中偏、左小偏、正常、右小偏、右中偏、右大偏和右極偏九種狀態(tài)來表示,對應整數(shù)-4~+4。
給出機器人尋線控制PID表達式:
其中ΔVk是第k時刻需要的左右輪速度差,即在總線上傳輸?shù)碾姍C速度參數(shù);e表示偏移狀態(tài)和正常狀態(tài)之間的差,在這里就是狀態(tài)所對應的整數(shù);kp,kI,kD分別為比例、積分和微分常數(shù)。
算法任務將ΔVk扔到數(shù)據(jù)通道中,由信息輸出任務將其打包后發(fā)送給CAN總線。
4.4 輸出驅(qū)動和伺服驅(qū)動模塊
該模塊接收到ΔVk之后采用“均分原理”,把差速均分增加在左右輪電機上,即:
VL和VR分別為左右輪的輸出轉(zhuǎn)速,Vm為無偏移情況下的左右輪輸出。
算法任務將VL和VR變?yōu)榉螸M629的參數(shù)格式之后發(fā)送到數(shù)據(jù)通道,信息輸出任務獲得該數(shù)據(jù)之后直接對LM629進行驅(qū)動。
整個基于CAN總線多任務構架的控制系統(tǒng)信息流圖如圖7所示。
CAN總線在多任務操作系統(tǒng)的構架下可以看成是透明的,模塊之間的通訊可以簡單地看成各個任務之間的通訊,做到了各個模塊之間的無縫連接。在用該控制器進行機電系統(tǒng)設計時,設計者的注意力只需要放在各模塊的算法任務部分。本系統(tǒng)可以很好地滿足在校生科技創(chuàng)新的需求,方便學生構架機電系統(tǒng)或者機器人的控制器,讓設計者把更多的精力放在機電控制算法上面。