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