基于DSP和CAN的電機同步控制系統(tǒng)與通信
0 引言
傳統(tǒng)的多電機控制系統(tǒng)適用于要求不高、相對簡單、電機分布比較集中的場合。而對于運動控制中實時性、可靠性、可擴展性、傳輸距離、傳輸速度等要求較高的場合,需要采用高傳輸速度、遠傳輸距離、可靠性較高的通信方式和處理速度快、功能強大、能夠實現復雜控制策略的處理器。
控制器局域網CAN(Controller Area Network)是一種有效支持分布式控制和實時控制的串行通信網絡。它屬于現場總線范疇,與現有的其它總線相比,它是一種分散式、數字化、雙向、多站點的通信系統(tǒng),具有速率高、可靠性好、智能化高、連接方便等諸多優(yōu)點,在分布式測試和工業(yè)控制等相關領域的應用越來越廣泛[1]。
數字信號處理器(Digital Signal Processor,DSP)是一種高速專用微處理器,TMS320F2407A運算功能強大,能實現高速輸入和高速率傳輸數據,且?guī)AN總線接口。它專門處理以運算為主且不允許延遲的實時信號,可高效進行快速傅里葉變換運算。數字信號處理器的精度高,可靠性好,其先進的品質與性能可為電機控制提供高效可靠的平臺[2]。
鑒于CAN總線的通信優(yōu)勢和DSP的強大處理能力,利用二者完全可以設計完成要求較高的多電機控制網絡系統(tǒng)。這種功能強大、智能化和網絡化程度較高的網絡系統(tǒng)滿足了工藝復雜、要求較高的多電機控制,它正在興起并成為多電機控制網絡系統(tǒng)的發(fā)展趨勢[3]。
1 系統(tǒng)結構及其實現
基于CAN總線網絡的新型多電機同步控制系統(tǒng),采用總線式多主多從網絡拓撲結構。當系統(tǒng)中不僅有工程師層還包括管理層即多個主節(jié)點時,主主通信將實現不同功能主節(jié)點的交流(如圖1)。整個控制系統(tǒng)由三部分組成:CAN總線、上級PC機、DSP控制系統(tǒng)。系統(tǒng)采用PC 機作為監(jiān)控主機,實現對各節(jié)點的監(jiān)控和管理;CAN 總線接口卡完成CAN協(xié)議的物理層和數據鏈路層功能,實現PC 機與CAN 總線之間的通信;各從節(jié)點通過DSP完成數據的收發(fā)和對交流電機的控制[4]。
主節(jié)點采用PC微機(或其他兼容機),通過PCI總線雙路智能CAN網卡(通信適配器)與CAN總線相連,進行信息交換。CAN網卡電路共分為三大部分:由DS89C420微處理機、74LS373鎖存器、32KB的RAM 62256、32KB的EPROM 27256組成的主機部分;雙口RAMIDT7005S35PF及其控制電路;由SJA1000、光電隔離電路、82C250組成的CAN控制器和CAN總線接口電路。
從節(jié)點由兩部分構成:電機控制板和功率驅動板。從節(jié)點的基本框圖如圖2所示。電機控制板以TMS320LF2407A為核心,外圍采用各功能模塊。其中,PWM模塊用于驅動功率器件,A/D模塊用來把系統(tǒng)所需要的電流模擬量變換成數字量,實現電流環(huán)反饋控制。磁場平衡式霍爾電流傳感器(LEM模塊)把互感器、磁放大器、霍爾元件和電子線路集成在一起,具有測量、反饋、保護三種功能,LEM模塊的輸出輸入到DSP的三路A/D轉換口,轉換成數字信號后,再進行相應的處理。光電碼盤把檢測信息反饋到DSP的正交編碼脈沖電路(QEP),實現速度環(huán)反饋控制。當LF2407A的QEP被使能(禁止捕獲功能),定時器2對引腳CAP1/QEP1和CAP2/QEP2、定時器4對引腳CAP4/QEP3和CAP5/QEP4上的脈沖數目和頻率分別計數,可得到電機的角位移和轉速。功率驅動板由整流濾波、IGBT驅動、以及IGBT橋和反饋電路組成[5]。
2 軟件設計
2.1 CAN 總線網絡通信協(xié)議設計
CAN 總線采用一種串行數據通信協(xié)議,它能有效地支持具有較高安全等級的分布實時控制。根據CAN總線技術規(guī)范CAN2.0A、CAN2.0B,本文設計了用戶通信協(xié)議,各個節(jié)點都按此協(xié)議傳送信息。用戶通信協(xié)議的幀結構共10個字節(jié)(2個字節(jié)標識符、8個字節(jié)數據和變量),其定義如圖3所示。
PRI:1為低優(yōu)先級,0為高優(yōu)先級,而剩余的優(yōu)先級由源地址決定,低地址優(yōu)先級高。
幀類型:100為單幀廣播;000為單幀點對點。
命令或物理變量名:cmd0、cmd1的功能定義有很多,表1僅給出了幾種典型的定義。節(jié)點根據接收到的數據中兩個字節(jié)的內容來確定被傳送的內容。
物理變量序號:0~255。
Data3~Data0:定義為一個物理變量數據,4字節(jié)長整數,原碼表示。數據類型為整型、布爾型或浮點型。[!--empirenews.page--]
2.3軟件實現
本系統(tǒng)程序主要分為三部分:PC機人機交互程序、DS89C420作為CAN與PC機之間通信中介的程序、DSP作為CAN網絡節(jié)點和電機控制功能的程序。PC機人機交互軟件它以可視化界面顯示CAN網絡上各節(jié)點ID、控制命令、發(fā)送優(yōu)先級等。DS89C420的作用是將從CAN網絡上采集的數據傳送到PC機,并把PC機傳過來得數據發(fā)送到CAN網絡上,它實現的功能類似于協(xié)議轉換。DSP完成的功能包括:根據PC機發(fā)送過來的指令控制電機正轉、反轉和停止,以及將電機的相電流、運行速度等信息分別通過LF2407A的片上A/D轉換器、正交脈沖編碼電路等得到;對電機的控制通過LF2407A的事件管理器模塊EVA、EVB輸出具有適當占空比的PWM脈沖給大功率IGBT管來實現。
2.3.1主主通信
本設計為基于CAN總線的多主多從通信網絡系統(tǒng),主節(jié)點可以是工程師站,也可以是副工程師站或其它操作站,由于控制的需要,主節(jié)點之間需要傳送一些數據。主—主通信的軟件設計關鍵是掌握好CAN控制器的初始化設置例如ID的設置,數據的發(fā)送和接收。由于網卡具有接口函數庫及網卡的驅動程序,可以方便地進行主—主通信。通信軟件已測試成功,通信界面采用VC編寫,如圖4所示。
2.3.2主從通信
下面的程序是DSP平臺和上位機的通信,主節(jié)點CAN網卡中的CAN模塊初始化和發(fā)送子程序。調試過程中需要注意:通信節(jié)點的波特率要求一致;主從通信時要求CANMCR = 0x0480,使通信處于正常發(fā)送狀態(tài);CANH與CANL之間連接終端負載電阻抗干擾。
void CANInit()
{ asm(" SETC INTM "); /* 禁止中斷 */
IMR = IMR | 0x011; //使能CAN中斷
CANIMR = 0; //屏蔽所有中斷
CANIFR = 0xFFFF; //清除已掛號中斷
CANMCR = 0x0480; //CAN處于正常工作狀態(tài)
CANMCR = CANMCR | 0x1000; //設置CCR,改變配置請求;
While ( (CANGSR & 0x0010) == 0 ){} //設置CCE,更改配置啟用;
CANBCR2 = 0x027; //設置波特率50Kbps
CANBCR1 = 0x005E;
CANMCR = CANMCR & 0xEFFF; //清除CCR位;
While ( (CANGSR & 0x0010) == 1 ){} //清除CCE,禁止對配置寄存器進行操作;
CANMailBoxInit(); //初始化郵箱
asm(" CLRC INTM "); /* 開中斷 */
CANTCR =0x0080; //發(fā)送5號郵箱內容;
While ( (CANTCR & 0x8000) == 0 ){} //發(fā)送成功 }
3 同步措施及實現
在對多電機的同步控制中,解決電機的實時性問題十分重要。CAN總線具有點對點、一點對多點及全局廣播傳送數據的功能。雖然CAN總線的信息存取利用了廣播式的存取工作方式,信息可以在任何時候由任何節(jié)點發(fā)送到空閑的總線上,然后根據信息標文符決定是否讀取信息包中的數據以判斷是否使用這一信息,但是由于各電機的實際情況不同,即使命令同時傳送到節(jié)點,實際命令的實施時間也不能得到保證。筆者認為僅依靠CAN總線的廣播數據功能實現同步控制會產生誤差,可以通過軟件編程實現誤差較小的同步控制。采用兩次命令的方式,首先由主站給需要同步的從站用廣播的方式發(fā)送準備命令和同步速度,主站確認收到準備好命令之后發(fā)送第二次具體的命令即啟動同步命令。這樣可以使誤差相對減少。
4 結束語
本文研究了基于CAN總線的多電機同步控制網絡的組成和通信實現,設計有效的將DSP的高速處理能力和CAN(Controller Area Network)總線的高性能、高可靠性結合起來,具有很高的使用價值和廣闊的應用前景。以上代碼全部調試通過,實驗證明適用于多臺電機串行通信的實際應用以及可以根據實際的系統(tǒng)進行擴展和移植。
本文作者創(chuàng)新點:電機同步控制措施的提出。