PAC9300 運動控制器與 機器視覺的綜合應(yīng)用
文:深圳市雷賽控制技術(shù)有限公司 左力2020年第三期
雷賽PAC9300運動控制器外形如圖1所示,它本質(zhì)為一臺專用的嵌入式工業(yè)計算機,其CPU為4核1.99GHz主頻、內(nèi)存為2GB、固態(tài)硬盤為60GB,操作系統(tǒng)為Windows7,運動控制軟件獨占一個CPU核,另外3核運行其他軟件。
圖1 雷賽PAC9300運動控制器外觀
PAC9300運動控制器有1路EtherCAT總線接口,可連接128個節(jié)點;控制32個電機時通訊周期可達1ms。PAC9300運動控制器有1個VGA顯示器接口、4個USB接口,可用于連接顯示器、鍵盤和鼠標等設(shè)備;有2個Ethernet網(wǎng)絡(luò)接口,用于連接上位機、網(wǎng)口相機等設(shè)備;還有2路RS232接口和2路RS485接口,可與其他擴展設(shè)備連接。
PAC9300運動控制器具有多軸直線插補、空間圓弧插補、螺旋線插補、樣條曲線插補、電子齒輪、電子凸輪等運動控制功能,可采用符合IEC61131-3標準的5種編程方式編寫程序,5種編程方式分別為:梯形圖(LD)、指令表(IL)、順序功能圖表(SFC)、功能塊圖(FBD)、結(jié)構(gòu)化文本(ST)。
下面通過一個實驗由三軸平臺模擬點膠機結(jié)合機器視覺,給工件定位,實現(xiàn)工件點膠的過程,以展示PAC9300運動控制器優(yōu)異的性能。
視覺點膠機模擬實驗裝置及動作流程
1 實驗系統(tǒng)硬件
實驗系統(tǒng)的照片如圖2所示。三軸平臺上有一個雷賽L7總線型交流伺服電機、二個DM系列總線型步進電機以及一些IO器件,電路圖詳見圖3。三軸平臺上安裝了一個總線接口相機,并連接在PAC9300上,用于拍攝工件照片、通過圖像處理獲取工件位置。
圖2 雷賽PAC9300運動控制器實驗系統(tǒng)
圖3 EtherCAT總線三軸運動平臺電路圖
2 實驗系統(tǒng)的軟件結(jié)構(gòu)
如圖4所示,視覺點膠機模擬實驗系統(tǒng)的軟件由運動控制程序和機器視覺程序2部分組成。2個相對獨立的程序通過讀寫共享內(nèi)存交換信息。運動控制程序采用結(jié)構(gòu)化文本語言編寫;機器視覺程序采用C#語言編寫。
圖4 視覺點膠機模擬實驗系統(tǒng)軟件結(jié)構(gòu)
3 動作流程
(1)運動控制程序用Jog運動調(diào)整平臺位置,使相機能完整拍攝工裝位置;
(2)在界面上按PositionReset鍵,設(shè)置平臺當前位置為加工原點。
(3)圖像處理程序初始化相機;
(4)標定相機,計算像素長度系數(shù)kx,ky;
(5)運動控制程序用Jog運動調(diào)整平臺位置,使點膠針頭到達工裝位置的左上角。按Getoffset鍵,得到加工原點與加工原點的偏差dx,dy,dz;
(6)按Home鍵,點膠頭回到加工原點;
(7)放置工件后,點擊Dispense鍵,開始點膠加工;
(8)運動控制程序給圖像處理程序發(fā)送指令;
(9)圖像處理程序接收到指令后,控制相機給工裝拍照,獲取0~9號工件的位置;
(10)為了能以較短的時間完成10個工件的點膠動作,圖像處理程序優(yōu)化點膠路徑,并將點膠路徑發(fā)送給運動控制程序;
(11)運動控制程序按規(guī)劃路徑點膠,完成后自動回到加工原點;
(12)轉(zhuǎn)至流程7。
視覺點膠機模擬實驗系統(tǒng)的軟件
1 點膠過程的主要算法
在工裝上任意擺放了10個工件,如圖5所示。圖像處理程序?qū)?yōu)化處理后數(shù)據(jù)傳送給運動控制程序。點膠頭從起點出發(fā),依次對#7、#0、#9、#3、#5、#2、#8、#4、#1、#6工件點膠,為最后返回原點。每個工件的點膠時間長為0.5秒。
圖5 工裝上任意擺放的10個工件及點膠軌跡
為了讓點膠過程運動平穩(wěn)、快速,點膠頭在工件之間的運動軌跡如圖6所示。采用樣條曲線插補函數(shù)控制軌跡運動,可保證矢量速度連續(xù)平穩(wěn)。樣條曲線共8個點;但從原點出發(fā)的樣條曲線P0~P2三個點的Z軸坐標和P3點的相同;最后回原點的樣條曲線P5~P7三個點的Z軸坐標和P4點的相同。
圖6點膠頭從一個工件移動到另一個工件的運動軌跡
在調(diào)用樣條曲線插補函數(shù)前,必須計算樣條曲線各點的坐標;還要計算點與點之間距離,得到點與點之間的運動時間。
P0~P7的坐標計算公式如下:
起點為:P0(0,0,0);
終點為:P7(x1,y1,0);
P1、P6點的高度設(shè)為h1,其坐標為:P1(0,0,h1)、P6(x1,y1,h1);
P3、P4點的高度設(shè)為h1+r,其坐標為:P3(p,q,h1+r)、P4(x1-p,y1-q,h1+r);
其中:q=kp
k=y1/x1
p2+q2=r2
p=(r2/(1+k2))0.5,如果x1小于0,則p為負P2、P5點為圓弧的中點,其坐標為:
P2(m,n,h2)、P5(x1-m,y1-n,h2);
其中:h2=h1+r*sin(PI/4)
m2+n2=L2
L=r-r*cos(PI/4)
n=k*m
m=(L2/(1+k2))0.5,如果x1小于0,則m為負如果x1=0,則:m=0
n=r-r*cos(PI/4),如果y1小于0,則n為負
p=0
q=r,如果y1小于0,則q為負計算樣條曲線各段運動時間的公式如下:
設(shè)樣條曲線插補速度為v,則:
P0~P1點的時間為t1=h1/v
P1~P2點的時間為t2=PI*r/4/v
P2~P3點的時間為t3=t2
P3~P4點的時間為t4=(P4(x1-2p)2+(y1-2q)2)0.5/v
P4~P5點的時間為t5=t2
P5~P6點的時間為t6=t2
P6~P7點的時間為t6=t1
圖7 點膠過程的位移曲線和速度曲線
圖8 局部放大圖
圖7為樣條曲線插補運動的位移與速度曲線。圖8是曲線的放大圖。由圖可看出:樣條曲線插補的位移曲線十分平滑;速度曲線也很連續(xù)。
2 運動控制程序的框圖
PAC9300運動控制器采用循環(huán)掃描方式執(zhí)行結(jié)構(gòu)化文本編寫的程序。這和C#由事件觸發(fā)執(zhí)行程序的方式完全不同。
點膠機的運動控制主程序框圖如圖9所示。程序首先進行共享內(nèi)存初始化工作。完成后,將變量initMem設(shè)為FALSE。電機可運動鍵按下后,可進行手動控制平臺運動、也可進行自動點膠。
圖9 點膠機的運動控制主程序框圖
圖10 手動控制平臺運動子程序框圖
手動控制平臺運動子程序框圖如圖10所示。
該子程序可進行X軸、Y軸和Z軸的回原點(Home)運動;可控制3個軸的點動(Jog運動),且點動的速度有高、中、低三檔可選;可控制3軸進行點位運動;還可加工原點與相機原點的偏移量。
圖11 點膠子程序框圖
點膠子程序框圖如圖11所示。其中有3個狀態(tài):splineBusy、PVTBusy、DelayOff2(定時器2時間到)。
當splineBusy=TRUE時,進行樣條曲線各點坐標和時間的計算、樣條曲線插補函數(shù)參數(shù)的設(shè)置、啟動樣條曲線插補運動。
當PVTBusy=TRUE時,等待樣條曲線插補運動結(jié)束。若運動結(jié)束,就開啟點膠閥。
當DelayOff2=TRUE時,等待定時器時間到。若時間到,關(guān)閉點膠閥;為運動到下一個點做準備。
PAC的運動控制程序原代碼請見附錄。
3 運動控制程序的界面
圖12 PAC9300運動控制器的操作界面
雷賽PAC9300運動控制器可以在顯示器上顯示優(yōu)美的操作界面,如圖12所示。
JOG分組框(GroupBox)中6個按鍵可控制運動平臺3個軸朝正、負方向點動。運動平臺上的2、4、6、8和1、7號鍵也可以控制相應(yīng)的軸點動。
Movedistance分組框中3個文本框可輸入3個軸的運動距離,后面3個按鍵是點位運動的啟動按鍵。
Position分組框在3個文本框顯示的是3個軸的位置。
Select Speed下拉列表框(ComboBox)可選擇種速度:Low、Middle、High。
Inputs分組框中為9個復(fù)選框(Checkbox),用于指示運動平臺上9個按鍵的狀態(tài)。當有鍵按下時,框中顯示有一個“√”。速度表為BarDisplay控件。
Output按鍵是PushSwitchLed控件;當按鍵按下左邊的指示燈變綠,按鍵抬起指示燈變紅。
雷賽PAC運動控制器的軟件中還有很多實用的控件,在此不一一列舉。
視覺點膠機模擬實驗系統(tǒng)的圖像處理程序
1 相機像素點尺寸的標定
要從圖像中獲取物體的位置,首先要標定圖像的像素點的尺寸。
圖13 圖像坐標與加工坐標的關(guān)系
如圖13所示,在相機拍攝范圍內(nèi),分別放置2個用于測量距離的標記:Mark點1和Mark點2。已知2個標記的相對距離為dx和dy。
相機拍攝照片,通過圖像處理,得到Mark點1和Mark點2在照片中的位置坐標,分別為(x1,y1),(x2,y2)。該坐標的單位為像素。則像素點x和y方向的尺寸分別為:
kx=dx/(x2-x1)
ky=dy/(y1-y2),單位:mm/像素
圖14 標定結(jié)果
標定結(jié)果如圖14所示,一個像素的長和寬約為0.012mm。
2 圖像坐標與加工坐標的關(guān)系
相機是固定在運動平臺的機座上,不隨X、Y、Z軸一起運動。在工裝位置畫一個圖像坐標X’Y’,如圖13所示。圖像坐標系中Y’軸方向和我們習慣采用的Y軸方向相反。
調(diào)整相機位置和平臺位置,使圖像的左上角與圖像坐標原點重合,如圖14所示,將此時X、Y軸的位置設(shè)為加工原點。
手動調(diào)節(jié)X、Y軸,使點膠頭移動到圖像坐標原點。此時X、Y軸的移動距離即為點膠頭的加工坐標與圖像坐標的偏移量:Xoffset、Yoffset,如圖13所示。該方法比較簡單,但精度不是太高。
通過圖像處理得到工件位置坐標(x’,y’)轉(zhuǎn)換至加工坐標(x,y)的關(guān)系式如下:
x=x’+Xoffset
y=-y’+Yoffset
3 圖像處理程序框圖
圖像處理程序主程序框圖如圖15所示。完成相機初始化后,定時器控制相機每100ms拍照一次,并將圖像顯示在界面上。在開始對工件進行位置識別之前,要進行相機的標定,計算像素點的尺寸。
圖15 圖像處理程序主程序框圖
當Start按鍵按下后,打開線程1。線程1的程序框圖如圖16所示。
圖16 線程1的程序框圖
初始化共享內(nèi)存后,線程1等待運動控制程序發(fā)來的指令。當接受到一個新指令,且指令代碼為22時,線程1開始進行工件位置識別。
如果識別成功,將對工件坐標數(shù)據(jù)進行路徑優(yōu)化,使點膠時間最短。
圖17 圖像識別及數(shù)據(jù)優(yōu)化結(jié)果
如圖17所示,接受到第22號指令,指令代碼為22,圖像識別成功。如果按0~9的順序?qū)ぜc膠,路徑長為115.1mm,經(jīng)過優(yōu)化計算后,點膠路徑為#7、#0、#9、#3、#5、#2、#8、#4、#1、#6,路徑長為66.4mm。圖像識別、路徑優(yōu)化共耗時986ms。
運動控制程序與圖像處理程序之間的數(shù)據(jù)交換
運動控制程序與圖像處理程序之間的數(shù)據(jù)交換通過讀寫共享內(nèi)存得以實現(xiàn)。
圖18 2個進程通過共享內(nèi)存通信
共享內(nèi)存是內(nèi)存映射文件的一種特殊形式。如圖18所示,共享內(nèi)存映射的是一塊物理內(nèi)存,而非磁盤上的文件。2個進程通過虛擬地址空間及用戶級頁表可以讀、寫物理內(nèi)存中的同一塊區(qū)域,從而實現(xiàn)進程間的通信。該方式通訊效率高。
1 圖像處理程序中有關(guān)共享內(nèi)存的代碼
存放在共享內(nèi)存的數(shù)據(jù)為結(jié)構(gòu)類數(shù)據(jù)。因此,在使用共享內(nèi)存前,要定義自己的結(jié)構(gòu)體。詳細代碼如下:
//實例化3個結(jié)構(gòu)體
DataExchangeCommanddataExchangeR;//存放指令
DataExchangeResult1dataExchangeW1;//存放指令執(zhí)行結(jié)果
DataExchangeResult2dataExchangeW2;//存放優(yōu)化后的軌跡數(shù)據(jù)
intdataSizeR=Marshal.SizeOf(typeof(DataExchangeCommand));//給結(jié)構(gòu)體分配空間
intdataSizeW1=Marshal.SizeOf(typeof(DataExchangeResult1));
intdataSizeW2=Marshal.SizeOf(typeof(DataExchangeResult2));
using(varcommandRead=MemoryMappedFile.CreateOrOpen("SharedMemory_Command",dataSizeR))
using(varresultWrite1=MemoryMappedFile.CreateOrOpen("SharedMemory_Result1",dataSizeW1))
using(varresultWrite2=MemoryMappedFile.CreateOrOpen("SharedMemory_Result2",dataSizeW2))
//在系統(tǒng)內(nèi)存中創(chuàng)建或打開具有指定容量的內(nèi)存映射文件
{
using(varaccessorRead=commandRead.CreateViewAccessor(0,dataSizeR,MemoryMappedFileAccess.Read))
using(varaccessorWrite1=resultWrite1.CreateViewAccessor(0,dataSizeW1,MemoryMappedFileAccess.Write))
using(varaccessorWrite2=resultWrite2.CreateViewAccessor(0,dataSizeW2,MemoryMappedFileAccess.Write))
//創(chuàng)建View對象:指定內(nèi)存映射文件的偏移量、大小和訪問限制
{
………
while(true)//循環(huán)查詢由運動控制程序發(fā)來的指令
{
accessorRead.Read(0,outdataExchangeR); //讀共享內(nèi)存
commandNo=dataExchangeR.Noi; //將結(jié)構(gòu)體的數(shù)據(jù)賦值給變量
commandValue=dataExchangeR.command;
………
dataExchangeW1.Noi=commandNo; //給結(jié)構(gòu)體的數(shù)據(jù)賦值
dataExchangeW1.picOK=pictureOK;
accessorWrite1.Write(0,refdataExchangeW1); //寫入共享內(nèi)存
………
dataExchangeW2.x0=OPx[0]; //給結(jié)構(gòu)體的數(shù)據(jù)賦值
dataExchangeW2.y0=OPy[0];
dataExchangeW2.x1=OPx[1];
dataExchangeW2.y1=OPy[1];
………
accessorWrite2.Write(0,refdataExchangeW2); //寫入共享內(nèi)存
………
if(Job1Stop==1) //結(jié)束通信
{
accessorRead.Dispose(); //關(guān)閉共享內(nèi)存
accessorWrite1.Dispose();
accessorWrite2.Dispose();
commandRead.Dispose();
resultWrite1.Dispose();
resultWrite2.Dispose();
}
}
}
}
………
用Memory Mapped File.Create Or Open和Create View Accessor函數(shù)初始化共享內(nèi)存后,就可以反復(fù)讀寫共享內(nèi)存了。在退出程序前要釋放共享內(nèi)存空間。
2 運動控制程序中有關(guān)共享內(nèi)存的代碼
結(jié)構(gòu)化文本語言有關(guān)共享內(nèi)存的函數(shù),與C#的類似,但沒有創(chuàng)建View對象的函數(shù)。在創(chuàng)建內(nèi)存映射文件時,文件名要和C#的一樣。詳細代碼如下:
//定義共享內(nèi)存的變量:
hShMemRead1:RTS_IEC_HANDLE;
ResultRead1:RTS_IEC_RESULT;
deInstRead1:DataExchangeResult1;
ReadResult1:RTS_IEC_RESULT;
iRead1:__UXINT;
ulSizeR1:UDINT:=SIZEOF(DataExchangeResult1);
hShMemRead2:RTS_IEC_HANDLE;
ResultRead2:RTS_IEC_RESULT;
deInstRead2:DataExchangeResult2;
ReadResult2:RTS_IEC_RESULT;
iRead2:__UXINT;
ulSizeR2:UDINT:=SIZEOF(DataExchangeResult2);
hShMemWrite:RTS_IEC_HANDLE;
ResultWrite:RTS_IEC_RESULT;
deInstWrite:DataExchangeCommand;
WriteResult:RTS_IEC_RESULT;
iWrite:__UXINT;
ulSizeW:UDINT:=SIZEOF(DataExchangeCommand);
……
//在共享內(nèi)存內(nèi)寫、讀數(shù)據(jù):
hShMemWrite:=SysSharedMemoryCreate('SharedMemory_Command',0,ADR(ulSizeW),ADR(ResultWrite));
//在系統(tǒng)內(nèi)存中創(chuàng)建或打開具有指定容量的內(nèi)存映射文件
deInstWrite.Noi:=1; //給結(jié)構(gòu)體賦值,指令編號
deInstWrite.command:=22; //指令代碼
iWrite:=SysSharedMemoryWrite(hShMemWrite,0,ADR(deInstWrite),SIZEOF(deInstWrite),ADR(WriteResult));
//將結(jié)構(gòu)體寫入共享內(nèi)存
……
hShMemRead1:=SysSharedMemoryCreate('SharedMemory_Result1',0,ADR(ulSizeR1),ADR(ResultRead1));
hShMemRead2:=SysSharedMemoryCreate('SharedMemory_Result2',0,ADR(ulSizeR2),ADR(ResultRead2));
//在系統(tǒng)內(nèi)存中創(chuàng)建或打開具有指定容量的內(nèi)存映射文件
iRead1:=SysSharedMemoryRead(hShMemRead1,0,ADR(deInstRead1),SIZEOF(deInstRead1),ADR(ReadResult1));
iRead2:=SysSharedMemoryRead(hShMemRead2,0,ADR(deInstRead2),SIZEOF(deInstRead2),ADR(ReadResult2));
//讀共享內(nèi)存的數(shù)據(jù)
Px[1]:=deInstRead2.x0; //共享內(nèi)存的數(shù)據(jù)賦值給變量
Px[2]:=deInstRead2.x1;
Px[3]:=deInstRead2.x2;
Px[4]:=deInstRead2.x3;
……
RTRIGcloseM(CLK:=ButtonCloseM); //獲取CloseM按鍵按下的上升沿
IFRTRIGcloseM.Q=TRUETHEN
iWrite:=SysSharedMemoryClose(hShm:=hShMemWrite);//關(guān)閉共享內(nèi)存
iRead1:=SysSharedMemoryClose(hShm:=hShMemRead1);
iRead2:=SysSharedMemoryClose(hShm:=hShMemRead2);
END_IF
……
小結(jié)
用結(jié)構(gòu)化文本語言編寫的運動控制程序和用C#語言編寫的圖像處理程序在PAC9300運動控制器上同時運行,一個負責運動平臺的控制,一個負責圖像處理和數(shù)據(jù)優(yōu)化;各司其職,發(fā)揮出各自的優(yōu)勢;同時通過共享內(nèi)存交換信息,又相互協(xié)作,使PAC運動控制器強大的性能得到充分的體現(xiàn)。
圖19 2個程序同時運行時占用PAC資源的情況
如圖19所示,PAC9300運動控制器在運行這2個程序時,CPU使用率在40%左右。在“CPU使用記錄”第3個圖形中(即CPU的第3個核),有一個小波峰,是圖像處理程序在進行圖像識別,持續(xù)時間不到1秒,物理內(nèi)存使用率在50%左右,說明PAC9300運行這2個程序還比較輕松。
本實驗結(jié)果表明:
(1)雷賽PAC9300運動控制器不但具有優(yōu)秀的運動控制功能,其人機界面也十分優(yōu)美,用鼠標、鍵盤操作方便。
(2)PAC9300的CPU性能很好,完全可以同時運行圖像處理程序。
(3)使用共享內(nèi)存,可以使2個相對獨立的程序進行快速的信息交換。
(4)采用本實驗的硬件結(jié)構(gòu),比工控機+運動控制卡、運動控制器+觸摸屏這兩種方案的性價比都更好。
中傳動網(wǎng)版權(quán)與免責聲明:
凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.wangxinlc.cn)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

關(guān)注伺服與運動控制公眾號獲取更多資訊

關(guān)注直驅(qū)與傳動公眾號獲取更多資訊

關(guān)注中國傳動網(wǎng)公眾號獲取更多資訊

掃碼關(guān)注小程序
時刻關(guān)注行業(yè)動態(tài)


填寫郵件地址,訂閱更多資訊:
撥打電話咨詢:13751143319 余女士
郵箱:chuandong@chuandong.cn
- 運動控制
- 伺服系統(tǒng)
- 機器視覺
- 機械傳動
- 編碼器
- 直驅(qū)系統(tǒng)
- 工業(yè)電源
- 電力電子
- 工業(yè)互聯(lián)
- 高壓變頻器
- 中低壓變頻器
- 傳感器
- 人機界面
- PLC
- 電氣聯(lián)接
- 工業(yè)機器人
- 低壓電器
- 機柜