摘 要:針對七自由度機械臂遠程控制的需要,構(gòu)建了基于TCP/IP網(wǎng)絡(luò)的控制系統(tǒng)。首先通過設(shè)計單片機系統(tǒng)實現(xiàn)本地端控制,然后運用WinSockets類創(chuàng)建基于TCP/IP的遠程控制程序,使連接在Internet網(wǎng)絡(luò)上的任意客戶端均可實現(xiàn)對機械臂的遠程控制。結(jié)合視頻網(wǎng)絡(luò)服務(wù)器,實現(xiàn)了對機械臂的實時監(jiān)控操作。
關(guān)鍵詞:機械臂;TCP/IP;遠程控制;視頻服務(wù)器
Abstract: A tele-control system for a 7-dof robot arm based on TCP/IP network is created. AVR singlechip is adopted to build a local control system. In order to link clients and the server in the Internet web, WinSockets class is applied to program using Visual c++. It is convenience to real-time observe tele-operation combined with video network server.
KeyWords: Robot arm; TCP/IP; Tele-control; video network server
Rhino XR-2機器人[1]是一個典型的機電一體化產(chǎn)品,它模擬人的上肢,肩關(guān)節(jié)可從-45到+135度旋轉(zhuǎn);肘關(guān)節(jié)可從-135到90 度旋轉(zhuǎn);手腕可以上下90度旋轉(zhuǎn),左右170度旋轉(zhuǎn),是一個具有7個自由度的機械臂系統(tǒng)。通過適當(dāng)調(diào)節(jié)各關(guān)節(jié),該機器人能夠從指定位置抓取較小物體。為了實現(xiàn)遠程控制,構(gòu)建了基于TCP/IP網(wǎng)絡(luò)的七自由度機械臂遠程控制系統(tǒng),如圖1所示。通過該系統(tǒng),連接在Internet網(wǎng)絡(luò)上的任意客戶端均可登錄指定服務(wù)器獲取操作權(quán)限實現(xiàn)對七自由度機械臂的遠程控制,并通過視頻網(wǎng)絡(luò)服務(wù)器實時監(jiān)控機械臂操作結(jié)果。

圖1 七自由度機械臂遠程控制系統(tǒng)
1.本地端控制系統(tǒng)設(shè)計
首先設(shè)計本地端控制器,由于每個關(guān)節(jié)單獨由一個Brevel電機驅(qū)動,因此只要在本地端實現(xiàn)對各個電機的單獨控制包括啟動、停止、調(diào)速即可。
1.1基于 ZLG7289B的本地控制
ZLG7289B[2] 是周立功單片機發(fā)展有限公司自行設(shè)計的數(shù)碼管顯示驅(qū)動及鍵盤掃描管理芯片,可直接驅(qū)動8 位共陰式數(shù)碼管(或64 只獨立LED),同時還可以掃描管理多達64 只按鍵。ZLG7289B 內(nèi)部含有顯示譯碼器,可直接接收BCD 碼或16 進制碼,并同時具有2 種譯碼方式。ZLG7289B 采用SPI 串行總線與微控制器接口,僅占用少數(shù)幾根I/O 口線。
本例中采用AVRmega128單片機作為微控制器,通過ZLG7289B實現(xiàn)對鍵盤的操作,從而觸發(fā)8個電機的不同動作,實現(xiàn)對機械臂的控制。AVR高端芯片MEGA128擁有53個IO口輸出,8個PWM輸出口,8個外部中斷,16位定時器與8位定時器各兩個。它采用單指令周期,處理速度快,在滿足I/O的情況下,足以滿足電機控制的運算要求。利用該單片機產(chǎn)生8路PWM信號通過兩個L298N驅(qū)動模塊實現(xiàn)8個電機的驅(qū)動。每個L298N驅(qū)動模塊包含2塊電機驅(qū)動芯片L298N、16個保護二極管、4個電源濾波穩(wěn)定電容、2個輸入信號邏輯處理單元、4個控制電機輸出插座。由于每個L298N芯片控制2個電機,則每個驅(qū)動模塊可以控制4個電機,其實物圖如圖2所示。

圖2 L298N驅(qū)動模塊
為方便操作,使用了液晶顯示模塊LCMxxZK,其繪圖顯示畫面提供一個64*256 點的繪圖區(qū)域,電源操作范圍寬(2.7V to 5.5V),此外,低功耗設(shè)計可滿足產(chǎn)品的省電要求同時與單片機的接口界面非常靈活。如圖3所示,利用設(shè)計的單片機控制系統(tǒng),根據(jù)液晶顯示屏的提示通過鍵盤操作可以實現(xiàn)對機械臂的控制,同時操作結(jié)果通過液晶顯示屏反饋給操作者。

圖3 液晶屏與鍵盤
1.2基于串口通信的上位機控制
為了構(gòu)建基于TCP/IP網(wǎng)絡(luò)的遠程控制系統(tǒng),需要在本地建立服務(wù)器端控制器。本例中采用PC機作為遠程控制的服務(wù)器,同時作為單片機控制系統(tǒng)的上位控制器。
該上位機系統(tǒng)采用DB9-RS232串口線作為數(shù)據(jù)總線,通過串行通信與下位機建立聯(lián)系。PC機通過數(shù)據(jù)總線把位選、轉(zhuǎn)向、轉(zhuǎn)速等信息傳遞給下位單片機AVR Mega128,通過對I/O口置1或清零來控制相應(yīng)電機的轉(zhuǎn)向,并通過改變PWM信號占空比來控制轉(zhuǎn)速。
由于數(shù)據(jù)總線的使用,各部分都相互獨立,只需要遵守相同的數(shù)據(jù)傳輸協(xié)議即可工作,使得擴展功能變得十分容易。有時候甚至不需對芯片進行重編程或電路板進行大幅度修改,只需要更換部分模塊就可以實現(xiàn)功能升級。在Visual C++ 6.0環(huán)境下運用串口類編寫了上位機控制程序[3],通過該程序,可利用個人PC實現(xiàn)對機械臂的控制。
2.基于TCP/IP網(wǎng)絡(luò)的遠程控制
通過設(shè)計本地端控制系統(tǒng)后,可以在本地端實現(xiàn)七自由度機械臂的各關(guān)節(jié)速度控制,從而實現(xiàn)機械手運動到適當(dāng)位置抓取物體,并傳送到另一位置。為了實現(xiàn)異地遠程控制,需要設(shè)計遠程控制系統(tǒng)。基于TCP/IP的以太網(wǎng)絡(luò)進行遠程控制是一個好的選擇。本例中構(gòu)建了一個基于C/S(Client/Server)結(jié)構(gòu)的遠程控制體系,該體系包含服務(wù)器端和客戶端,服務(wù)器端接收到客戶端程序發(fā)來的數(shù)據(jù)后,對數(shù)據(jù)進行處理,進而發(fā)出相應(yīng)的指令通過串口通信控制主控單片機,從而控制各關(guān)節(jié)的相應(yīng)動作。
服務(wù)器端程序功能如下:
(1)創(chuàng)建監(jiān)聽Socket進行監(jiān)聽,當(dāng)有客戶端請求連接時建立一個新的接收Socket處理這個客戶的數(shù)據(jù)發(fā)送與接收;
(2)接收客戶端發(fā)來的數(shù)據(jù)并向客戶端返回相應(yīng)信息;
(3)對接收到的數(shù)據(jù)進行處理,然后向下位單片機發(fā)送控制命令。
客戶端程序功能如下:
(1)建立與服務(wù)器程序的連接
(2)向服務(wù)器程序發(fā)送數(shù)據(jù)信息,接收從服務(wù)器程序返回的信息
(3)關(guān)閉與服務(wù)器程序的連接
在Visual C++ 6.0環(huán)境下運用WinSockets類來編寫基于TCP/IP的遠程控制程序,其中服務(wù)器端監(jiān)聽程序如下。
if(Accept(*pSocket))
{ pDlg->m_pAcceptList.AddTail(pSocket);
CString strAddr,strAddr1;
UINT unPort,unPort1; pSocket->GetPeerName(strAddr1,unPort1); //得到遠程IP地址和端口號 pSocket->GetSockName(strAddr,unPort); //得到本地IP地址和端口號
pDlg->m_strNetMsg.Format("本地IP%s端口%d連接上遠程客戶IP%s端口%d", strAddr,unPort,strAddr1,unPort1);
pDlg->UpdateMsgData();
}
else
{
delete pSocket;
}
CSocket::OnAccept(nErrorCode);
其部分界面如圖4所示: