陳玉林
(上海電機(jī)學(xué)院機(jī)械學(xué)院,上海 201306)
兩維運(yùn)動(dòng)平臺(tái)具有兩個(gè)沿正交方向的線性運(yùn)動(dòng)軸,其中Z軸整體安裝于X軸的滑臺(tái)之上。由于X軸和Z軸相互獨(dú)立,平臺(tái)運(yùn)動(dòng)學(xué)方程簡(jiǎn)單,控制容易;因此兩維運(yùn)動(dòng)平臺(tái)在機(jī)床十字工作臺(tái)、直角坐標(biāo)機(jī)器人、天線平面近場(chǎng)測(cè)量等領(lǐng)域得到廣泛應(yīng)用。
兩維運(yùn)動(dòng)平臺(tái)可采用單片機(jī)、PLC或運(yùn)動(dòng)控制卡等作為主控制器,其在實(shí)現(xiàn)難易、功能復(fù)雜程度和多軸聯(lián)動(dòng)控制等方面各不相同。在天線平面近場(chǎng)測(cè)量中,一方面要求圖1所示平面掃描架具有圖2所示路徑[1],X軸和Z軸先后運(yùn)動(dòng),無(wú)復(fù)雜的兩軸聯(lián)動(dòng)控制要求;另一方面又需要進(jìn)行大量的數(shù)據(jù)處理和良好的人機(jī)操作界面。因此本文作者采用計(jì)算機(jī)加PLC的主從式控制結(jié)構(gòu)[2-3]。在該控制系統(tǒng)中,計(jì)算機(jī)作為上位機(jī)和人機(jī)交互的主要接口,負(fù)責(zé)處理數(shù)據(jù)、參數(shù)設(shè)定和狀態(tài)監(jiān)控等;PLC作為下位機(jī)對(duì)天線掃描架進(jìn)行運(yùn)動(dòng)控制。
圖1 天線平面掃描架
由于天線掃描架采用圖2所示運(yùn)行路徑,其X軸和Z軸沒(méi)有聯(lián)動(dòng)控制要求,考慮到其他I/O需求,采用三菱FX5U PLC作為掃描架的運(yùn)動(dòng)控制器。FX5U系列PLC除了具有比FX3U系列更快的處理速度和更多的控制軸數(shù)外,還具有內(nèi)置的以太網(wǎng)端口,方便了PLC與其它設(shè)備間的信息交互[4]。通過(guò)以太網(wǎng)口和三菱通訊協(xié)議,計(jì)算機(jī)可直接解析協(xié)議幀或借助于MX組件完成對(duì)三菱FX5U PLC軟元件的訪問(wèn)[5]。采用直接解析SLMP協(xié)議幀的方法來(lái)訪問(wèn)PLC的軟元件進(jìn)而實(shí)現(xiàn)對(duì)掃描架運(yùn)動(dòng)參數(shù)的設(shè)定和狀態(tài)監(jiān)控。SLMP協(xié)議是用于外部設(shè)備(計(jì)算機(jī)或顯示器等)使用以太網(wǎng)對(duì)SLMP對(duì)應(yīng)設(shè)備進(jìn)行訪問(wèn)的協(xié)議,其3E幀與三菱MC協(xié)議的QnA系列3E幀具有相同的報(bào)文格式,可以以ASCII或二進(jìn)制代碼進(jìn)行通信,以ASCII代碼進(jìn)行通信時(shí)報(bào)文格式如表1和表2所示[6]。
圖2 掃描架運(yùn)行路徑
表1 SLMP協(xié)議3E幀ASCII代碼通信請(qǐng)求報(bào)文格式
表2 響應(yīng)報(bào)文格式
計(jì)算機(jī)通過(guò)SLMP協(xié)議與PLC通訊,以PLC作為服務(wù)器,需在GX Works3中針對(duì)以太網(wǎng)端口進(jìn)行參數(shù)設(shè)置。根據(jù)需要將PLC IP地址設(shè)置為192.168.3.38,通信數(shù)據(jù)代碼設(shè)定為ASCII,在詳細(xì)設(shè)置中選擇以太網(wǎng)設(shè)備中的SLMP連接設(shè)備,并將其協(xié)議設(shè)置為TCP,端口號(hào)設(shè)置為8000。
采用SLMP協(xié)議可以訪問(wèn)FX5U PLC中絕大多數(shù)軟元件,根據(jù)掃描架控制要求,確定PLC參數(shù)與軟元件如表3所示。SLMP協(xié)議以位或字為單位訪問(wèn)PLC中的軟元件,因此在表3中需要兩個(gè)連續(xù)的D寄存器來(lái)存儲(chǔ)位置、速度之類的浮點(diǎn)數(shù)據(jù)。
表3 參數(shù)及軟元件分配
計(jì)算機(jī)對(duì)PLC軟元件的訪問(wèn)是借用SLMP協(xié)議通過(guò)Vi?sual C++編程來(lái)實(shí)現(xiàn)的。計(jì)算機(jī)程序除了提供良好的人機(jī)操作界面,還具有掃描架運(yùn)動(dòng)參數(shù)設(shè)定和狀態(tài)監(jiān)控的功能。對(duì)于浮點(diǎn)型和布爾型參數(shù),計(jì)算機(jī)程序采用不同的指令和數(shù)據(jù)處理方法。
對(duì)于掃描架運(yùn)動(dòng)啟動(dòng)或停止這類控制操作,可采用批量寫入(讀?。┗螂S機(jī)寫入(讀?。┪粏挝粊?lái)直接訪問(wèn)PLC中的M寄存器。以ASCII碼方式,批量寫入位單位來(lái)啟動(dòng)X軸運(yùn)動(dòng)為例,其報(bào)文格式如表4所示,其中數(shù)據(jù)長(zhǎng)度為其后所有內(nèi)容的字節(jié)數(shù),以十六進(jìn)制表示,1401表征批量寫入指令,M*代表訪問(wèn)PLC中M寄存器,訪問(wèn)起始地址用6個(gè)字節(jié)表示,由于只訪問(wèn)寄存器M100,因此點(diǎn)數(shù)用4個(gè)字節(jié)表示為0001,值1表示啟動(dòng)X軸運(yùn)動(dòng)。
表4 批量寫入位單位報(bào)文
掃描架的目標(biāo)位置和速度等參數(shù)可采用32位浮點(diǎn)數(shù)來(lái)表示,而PLC內(nèi)部為兩個(gè)連續(xù)的D寄存器。在SLMP協(xié)議中,沒(méi)有針對(duì)浮點(diǎn)數(shù)存取的專用語(yǔ)句,需將浮點(diǎn)轉(zhuǎn)換成對(duì)應(yīng)的4個(gè)字節(jié)表示,然后再其三菱PLC浮點(diǎn)數(shù)表示格式寫入兩個(gè)D寄存器[7]。浮點(diǎn)數(shù)轉(zhuǎn)換為兩個(gè)D寄存器的函數(shù)為:
void FloatToDReg(float fInput,unsigned char*szDReg)
{
unsingned char szTemp[4];
char*pChar=(char*)&fInput;
for(int i=0;i<sizeof(float);i++)
{
*szTemp=*pchar;
pchar++;
szTemp++;
}
sprintf(szDReg,"%02X%02X%02X%02X",szTemp[1],szTemp[0],szTemp[3],szTemp[2]);
}
例如,如果需將X軸目標(biāo)位置設(shè)定為50.5mm處,則調(diào)用FloatToDReg函數(shù)得到D1004和D1005的值分別0000H和424AH,采用批量寫入字單位的報(bào)文如表5所示,其D*代表訪問(wèn)PLC中D寄存器,訪問(wèn)起始地址用6個(gè)字節(jié)表示,由于一個(gè)32位浮點(diǎn)數(shù)需用兩個(gè)D寄存器來(lái)表示,因此點(diǎn)數(shù)用4個(gè)字節(jié)表示為0002,值0000424A表示X軸目標(biāo)位置設(shè)定為50.5 mm。
表5 批量寫入字單位報(bào)文
在掃描架控制系統(tǒng)中,上位機(jī)程序除了需要設(shè)定設(shè)備的運(yùn)動(dòng)參數(shù),還需實(shí)時(shí)監(jiān)控設(shè)備的運(yùn)行狀態(tài),獲取實(shí)時(shí)位置、速度等信息。設(shè)備的狀態(tài)監(jiān)控在計(jì)算機(jī)程序中通過(guò)多線程技術(shù)來(lái)實(shí)現(xiàn),以避免大量數(shù)據(jù)交換占用過(guò)多CPU時(shí)間,從而提高程序?qū)τ脩繇憫?yīng)的靈敏性[8]。用戶界面線程作為主線程,能夠及時(shí)響應(yīng)用戶操作,掃描架的狀態(tài)監(jiān)控設(shè)計(jì)為工作線程,對(duì)設(shè)備狀態(tài)進(jìn)行實(shí)時(shí)查詢。
掃描架計(jì)算機(jī)控制程序用戶界面如圖3所示,具有PLC連接、斷開(kāi)、軸運(yùn)動(dòng)參數(shù)設(shè)定、位置速度顯示、單軸啟動(dòng)、停止、掃描架流程啟動(dòng)、停止等功能。
本文作者設(shè)計(jì)的天線掃描架控制系統(tǒng)采用主從式控制結(jié)構(gòu),充分發(fā)揮上下位機(jī)的控制優(yōu)點(diǎn)。針對(duì)設(shè)備人機(jī)交互、參數(shù)設(shè)置和狀態(tài)監(jiān)控的需求,設(shè)計(jì)計(jì)算機(jī)監(jiān)控程序。通過(guò)分析三菱FX5U PLC的SLMP協(xié)議,實(shí)現(xiàn)對(duì)PLC布爾型和浮點(diǎn)型數(shù)據(jù)的讀寫,相比直接設(shè)定電機(jī)脈沖數(shù)更加直觀。經(jīng)長(zhǎng)時(shí)間實(shí)際運(yùn)行證明,該控制系統(tǒng)具有友好的人機(jī)操作接口,控制效果良好。
圖3 掃描架用戶界面