李 芃
(四川大學(xué)錦城學(xué)院,四川 成都 610000)
電機協(xié)同控制系統(tǒng)在實際生產(chǎn)過程中的應(yīng)用相當(dāng)廣泛,如配料、工業(yè)切割、機械手臂、傳動等生產(chǎn)過程必須多臺電機協(xié)同控制。尤其是在大工件切割加工過程中,由于電機比較多、分布比較廣,采用傳統(tǒng)的控制器與電機驅(qū)動器一對一的脈沖控制模式,不僅控制線路復(fù)雜,抗干擾能力差,且在控制過程中脈沖容易丟失或引進干擾脈沖、可靠性低。
現(xiàn)場總線打破了傳統(tǒng)控制系統(tǒng)一對一的結(jié)構(gòu)形式,采用智能現(xiàn)場設(shè)備,把傳統(tǒng)的脈沖傳送改為智能型總線數(shù)據(jù)傳送并具有數(shù)據(jù)完整性校驗和重發(fā)機制等糾錯功能。近年來利用現(xiàn)場總線實現(xiàn)電機群控制有了較多的研究,本設(shè)計利用CAN 總線通信方式靈活,通信速率高,可靠性、實時性和抗干擾能力強[1],且低成本的優(yōu)點,探索基于CAN 總線的電機群控制系統(tǒng),通過編制控制協(xié)議改善電機群的協(xié)同控制性能。
本系統(tǒng)設(shè)計分為硬件設(shè)計、CAN 通信網(wǎng)絡(luò)應(yīng)用層協(xié)議設(shè)計、軟件設(shè)計三個部分。
基于CAN 總線的電機群控制系統(tǒng)的由運動控制器、步進電機或伺服電機(4 臺)及相應(yīng)帶CAN 總線的電機驅(qū)動器等組成。通過CAN 總線連接成一個完整的通訊網(wǎng)絡(luò),實時傳輸各運行參數(shù)、控制命令。系統(tǒng)的控制對象主要是4 臺電機,即M1:X 軸向運動電機、M2:Y 軸方向運行電機、M3:刀頭上下移動電機(Z 軸電機),M4:刀頭旋轉(zhuǎn)電機(U 軸)。電機群控制系統(tǒng)結(jié)構(gòu)圖如圖1 所示:
圖1 基于CANopen 協(xié)議的電機群控制系統(tǒng)框圖
1.1.1 運動控制模塊
本系統(tǒng)的主控制CPU 及各個??炜刂艭PU 均選用的基于ARM Cortex-M3 內(nèi)核的STM32F103RBT6 嵌入式處理器。該處理器帶有64KB 的Flash 和20KB 的SRAM 資源,主頻為72MHz,信號處理最高可達1.25DMips/MHz,運算速度快,非常符合電機群控制系統(tǒng)數(shù)據(jù)計算量大的需求。因該芯片內(nèi)部帶有2 .0A 和2 .0B 的CAN 控制器,不再需要另加CAN 控制器,給CAN 通訊外圍電路設(shè)計帶來了便捷。主控制器負(fù)責(zé)位置、速度數(shù)據(jù)的運算,將數(shù)據(jù)指令通過CAN 總線發(fā)送各分布式控制模塊。各節(jié)點運動控制模塊接到命令后,進行相應(yīng)的操作,驅(qū)動各自所帶電機運動。
1.1.2 電機驅(qū)動模塊
下位節(jié)點接收主控制器發(fā)送的數(shù)據(jù),并對數(shù)據(jù)進行分析處理,將其轉(zhuǎn)成脈沖信號送入步進電機驅(qū)動器。由于數(shù)據(jù)計算量大,且要求運算速度快,故下位機同樣采用STM32 芯片作為CPU。步進電機的驅(qū)動選用LV8731V 芯片。LV8731V 是2ch H 橋驅(qū)動,內(nèi)置1ch PWM 電流控制步進電機驅(qū)動,能設(shè)定2 相/1-2 相/W1-2 相/4W1-2 相勵磁模式,只要輸入STEP 信號、勵磁STEP 就可以進行,非常適合帶動步進電機,并且內(nèi)置輸出短路保護電路,無需控制電源。切割機電機系統(tǒng)采用激光切割,只需要一般的步進電機帶動激光探頭即可。所以這樣的組合不需要額外的驅(qū)動設(shè)備,結(jié)構(gòu)簡單,性價比高,非常適合切割機電機系統(tǒng)。
LV8731V 的OUTA1,OUTA2,OUTB1,OUTB2 管腳,直接連接步進電機。LV8731V 的DC12 管腳與stm32 PA7 管腳(TIM1)相連,通過設(shè)置TIM1 來調(diào)節(jié)輸出的PWM 波控制速度。勵磁模式設(shè)定為8 細分4W1-2 相勵磁模式,通過stm32 PA6,PA7 管腳來控制。設(shè)定DM 接地,使端子為STM 模式,能控制CLK—IN 輸入的1ch 步進電機。
CAN 總線是一種有效支持分布式控制或?qū)崟r控制的串行通信局域網(wǎng)絡(luò)[2]。從OSI 網(wǎng)絡(luò)模型的角度來看[1],CAN 現(xiàn)場總線僅僅定義了第1 層即物理層、第2 層即數(shù)據(jù)鏈路層(見ISO11898 標(biāo)準(zhǔn));沒有規(guī)定應(yīng)用層,需要一個高層協(xié)議來定義CAN 報文中的11/29 位標(biāo)識符、8 字節(jié)數(shù)據(jù)的使用。目前占領(lǐng)市場主流的應(yīng)用層協(xié)議是:DeviceNet 協(xié)議和CANopen 協(xié)議[5]。但是DeviceNet 和CANopen 協(xié)議難度大、規(guī)范復(fù)雜,開發(fā)周期長、成本高。針對本控制系統(tǒng)的控制對象為4 臺電機的情況,根據(jù)CAN 總線的要求,必須研究一套簡單而有效的高層通信協(xié)議。
1.2.1 CAN 報文的分配
CAN 一個數(shù)據(jù)幀[3]包括了幀起始、仲裁場(標(biāo)識符+RTR)、控制場、數(shù)據(jù)場(0-8bytes)、CRC、應(yīng)答場、幀結(jié)束。用戶協(xié)議需要自行設(shè)計的為仲裁場、控制場和數(shù)據(jù)場。在本電機群控制系統(tǒng)中,每一個節(jié)點有且只有一個其專屬的地址,地址碼和系統(tǒng)中各電機模塊對應(yīng),總線上按照地址來傳送數(shù)據(jù)。電機控制系統(tǒng)中主控節(jié)點為1,X 軸、Y 軸、Z 軸、U軸電機節(jié)點依次為2、3、4、5。由于系統(tǒng)規(guī)模比較小,節(jié)點數(shù)少于16個,地址碼設(shè)定為4 位,同一系統(tǒng)中地址碼不能重復(fù)。目的地址的標(biāo)識符定為ID3-ID0,源地址標(biāo)識符定ID7-ID4[5]。ID9-ID8 定義為功能碼,用于表示報文所要實現(xiàn)的功能。兩位標(biāo)識符定義了4 個功能碼,分別是:0X00 表示對單個或多個節(jié)點寫入數(shù)據(jù);0X01 表示斷開與電機控制系統(tǒng)從節(jié)點的通訊連接;0X10 表示和電機控制系統(tǒng)從節(jié)點建立通訊連接;0X11 表示檢測網(wǎng)絡(luò)上的ID 從節(jié)點是否存在[2]。ID10 位定義為ACK 響應(yīng)位[4],該位用來區(qū)分幀的類型。當(dāng)響應(yīng)標(biāo)志位為0 時,表示發(fā)送的是命令幀,節(jié)點需要應(yīng)答??刂茍鲇? 個位組成,標(biāo)準(zhǔn)格式里的幀包括數(shù)據(jù)長度代碼、IDE 位、保留位r0[5]。數(shù)據(jù)場由數(shù)據(jù)幀里的發(fā)送數(shù)據(jù)組成。它可以為0~8 個字節(jié),每個字節(jié)包含了8 位。第一個字節(jié)為命令,接下來字節(jié)都為具體要發(fā)送的數(shù)據(jù)。發(fā)送的優(yōu)先級由節(jié)點的ID 決定,ID 越小[4],優(yōu)先級越高。
1.2.2 數(shù)據(jù)通訊的實現(xiàn)
數(shù)據(jù)通訊定義了網(wǎng)絡(luò)中傳輸數(shù)據(jù)的內(nèi)容和傳輸?shù)姆绞?。電機群控制系統(tǒng)的CAN 用戶層協(xié)議通訊模式由主從方式和事件觸發(fā)方式構(gòu)成。兩種模式搭配使用,增強了通訊協(xié)議的靈活性。主從通訊模式用于CAN 網(wǎng)絡(luò)中的主站對于從站的訪問。事件觸發(fā)通訊模式用于從站主動向主站傳送數(shù)據(jù)報文。
1.2.3 網(wǎng)絡(luò)管理
網(wǎng)絡(luò)管理的對象是于網(wǎng)絡(luò)中節(jié)點和報文發(fā)送狀態(tài)。對于CAN 網(wǎng)絡(luò)管理,其主要任務(wù)是處理網(wǎng)絡(luò)中的錯誤,協(xié)調(diào)各個節(jié)點的狀態(tài),監(jiān)控報文的發(fā)送情況??梢苑譃楣?jié)點控制和通訊控制兩部分。節(jié)點管理[5]是指對總線上所有應(yīng)用節(jié)點進行初始化,讓每個節(jié)點在通訊前處于準(zhǔn)備狀態(tài)并排除總線上是否存在相同的節(jié)點。通訊管理是管理網(wǎng)絡(luò)中通訊的報文,保證報文能夠正常地接受發(fā)送。
1.2.4 電機設(shè)備協(xié)議的原則
電機設(shè)備協(xié)議是網(wǎng)絡(luò)中電機設(shè)備的描述規(guī)則,在本系統(tǒng)中對CAN 應(yīng)用層協(xié)議的電機描述設(shè)備以及要執(zhí)行的命令參數(shù)定義見表1。
表1 命令類型表
部分主要代碼如下:
void CAN1_Init(void),在此函數(shù)中設(shè)置過濾器,波特率以及管腳配置、中斷配置;
void Init_RxMes(CanRxMsg *RxMessage),初始化接收幀;
void CAN_SendInit (u8 addr),初始化節(jié)點,addr 為目標(biāo)地址,當(dāng)addr 值取0X00 時,表示廣播,各節(jié)點都收到信息;
void CANSetCo(u8 addr,s32 co),設(shè)置坐標(biāo),addr 為目標(biāo)地址,co 為設(shè)置的坐標(biāo);
void CANSetSpeed(u8 addr,s32 speed),設(shè)置速度,addr為目標(biāo)地址,speed 為設(shè)置的速度;
void USB_LP_CAN1_RX0_IRQHandler(void),下 位 機CAN1 接 收中斷處理函數(shù),更新線圈和寄存器。通過swtich 語句來實現(xiàn)不同信息的處理。
圖2 系統(tǒng)軟件流程圖
在電機群控制系統(tǒng)中,系統(tǒng)軟包括主控制器發(fā)送接收模塊、運動控制器發(fā)送接收模塊、CAN 通訊模塊。主控制器發(fā)送接收模塊向各個電機的運動控制器發(fā)送運動信息(設(shè)定位置、速度等),等待來自各運動控制器的反饋信息;運動控制器發(fā)送接收模塊接收到來自主控制器的命令后,對命令進行解析,執(zhí)行相應(yīng)的操作控制電機,并將電機的狀態(tài)信息反饋給主控制器。CAN 通訊模塊負(fù)責(zé)主控制器與各運動控制器之間數(shù)據(jù)通訊。系統(tǒng)軟件流程圖如圖2 所示。本設(shè)計采用美國Keil Software 公司出品的Keil uVision4 軟件開發(fā)系統(tǒng),使用C 語言來開發(fā)。
在試驗中,用2 個電機進行模擬測試,主控制器(節(jié)點1)向X 軸(節(jié)點2)和Y 軸(節(jié)點3)兩個電機的控制器發(fā)送指令,將LA1032 邏輯分析儀直接接入節(jié)點2 和節(jié)點3 的控制芯片的TIM1 上,同時測量節(jié)點2 和節(jié)點3 的脈沖波形,通過對比分析兩電機的協(xié)同工作情況及CAN 通訊協(xié)議的通信效果。
按編制的CAN 通訊協(xié)議,節(jié)點1 先發(fā)送一個廣播幀對各站點進行初始化,再向節(jié)點2、節(jié)點3 同時發(fā)送周期為140us,占空比為50%的脈沖;1ms 以后,向節(jié)點2、節(jié)點3 發(fā)送周期為14us,占空比為50%的脈沖,兩種頻率不同的脈沖交替發(fā)送,相隔時間為1ms。邏輯分析儀觀察到節(jié)點2 和節(jié)點3 的波形圖如圖3。從圖3 可以看出,兩節(jié)點電機的執(zhí)行命令的時間差在20us 左右。表明通信協(xié)議是可行的,兩電機的同步控制誤差比較小。
圖3 邏輯分析儀顯示的節(jié)點2 和節(jié)點3 的波形圖
以STM32RBT6 ARM 芯片為主、從控制器,通過CAN 總線利用總線廣播模式實現(xiàn)電機群協(xié)同控制,其CAN 總線通信協(xié)議比較簡單,電機群的協(xié)同控制效果好,且成本低,可靠性高,響應(yīng)速度快,該系統(tǒng)可實際應(yīng)用于工件切割、數(shù)控鉆孔。
[1]鄔寬明.CAN 總線原理和應(yīng)用的系統(tǒng)設(shè)計[M].北京:北京航空航天大學(xué)出版社,1996.
[2]麥毅強,倪文秀,王仁龍.基于DSP 的CAN 總線通信技術(shù)研究[J].微計算機信息,2010,8-2:111-113.
[3]彭剛.基于ARMCortex-M3 的STM32 系列嵌入式微控制器應(yīng)用實踐[M].北京:電子工業(yè)出版社,2011.
[4]劉濤,王宗義,孔慶磊,武光田.基于CAN 總線的多電機協(xié)調(diào)運動控制系統(tǒng)研究[J].機床與液壓,2010:38-3.
[5]佟為明,李鳳閣,林景波.基于CAN 總線的電力監(jiān)控器的研究[J].電工技術(shù)雜志,2004,8:68-71.