PAC9300 運(yùn)動(dòng)控制器與 機(jī)器視覺的綜合應(yīng)用

文:深圳市雷賽控制技術(shù)有限公司 左力2020年第三期

雷賽PAC9300運(yùn)動(dòng)控制器外形如圖1所示,它本質(zhì)為一臺(tái)專用的嵌入式工業(yè)計(jì)算機(jī),其CPU為4核1.99GHz主頻、內(nèi)存為2GB、固態(tài)硬盤為60GB,操作系統(tǒng)為Windows7,運(yùn)動(dòng)控制軟件獨(dú)占一個(gè)CPU核,另外3核運(yùn)行其他軟件。

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用1.jpg

圖1 雷賽PAC9300運(yùn)動(dòng)控制器外觀

PAC9300運(yùn)動(dòng)控制器有1路EtherCAT總線接口,可連接128個(gè)節(jié)點(diǎn);控制32個(gè)電機(jī)時(shí)通訊周期可達(dá)1ms。PAC9300運(yùn)動(dòng)控制器有1個(gè)VGA顯示器接口、4個(gè)USB接口,可用于連接顯示器、鍵盤和鼠標(biāo)等設(shè)備;有2個(gè)Ethernet網(wǎng)絡(luò)接口,用于連接上位機(jī)、網(wǎng)口相機(jī)等設(shè)備;還有2路RS232接口和2路RS485接口,可與其他擴(kuò)展設(shè)備連接。

PAC9300運(yùn)動(dòng)控制器具有多軸直線插補(bǔ)、空間圓弧插補(bǔ)、螺旋線插補(bǔ)、樣條曲線插補(bǔ)、電子齒輪、電子凸輪等運(yùn)動(dòng)控制功能,可采用符合IEC61131-3標(biāo)準(zhǔn)的5種編程方式編寫程序,5種編程方式分別為:梯形圖(LD)、指令表(IL)、順序功能圖表(SFC)、功能塊圖(FBD)、結(jié)構(gòu)化文本(ST)。

下面通過一個(gè)實(shí)驗(yàn)由三軸平臺(tái)模擬點(diǎn)膠機(jī)結(jié)合機(jī)器視覺,給工件定位,實(shí)現(xiàn)工件點(diǎn)膠的過程,以展示PAC9300運(yùn)動(dòng)控制器優(yōu)異的性能。

視覺點(diǎn)膠機(jī)模擬實(shí)驗(yàn)裝置及動(dòng)作流程

1 實(shí)驗(yàn)系統(tǒng)硬件

實(shí)驗(yàn)系統(tǒng)的照片如圖2所示。三軸平臺(tái)上有一個(gè)雷賽L7總線型交流伺服電機(jī)、二個(gè)DM系列總線型步進(jìn)電機(jī)以及一些IO器件,電路圖詳見圖3。三軸平臺(tái)上安裝了一個(gè)總線接口相機(jī),并連接在PAC9300上,用于拍攝工件照片、通過圖像處理獲取工件位置。

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用2.jpg

圖2 雷賽PAC9300運(yùn)動(dòng)控制器實(shí)驗(yàn)系統(tǒng)

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用3.jpg

圖3 EtherCAT總線三軸運(yùn)動(dòng)平臺(tái)電路圖

2 實(shí)驗(yàn)系統(tǒng)的軟件結(jié)構(gòu)

如圖4所示,視覺點(diǎn)膠機(jī)模擬實(shí)驗(yàn)系統(tǒng)的軟件由運(yùn)動(dòng)控制程序和機(jī)器視覺程序2部分組成。2個(gè)相對獨(dú)立的程序通過讀寫共享內(nèi)存交換信息。運(yùn)動(dòng)控制程序采用結(jié)構(gòu)化文本語言編寫;機(jī)器視覺程序采用C#語言編寫。

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用4.jpg

圖4 視覺點(diǎn)膠機(jī)模擬實(shí)驗(yàn)系統(tǒng)軟件結(jié)構(gòu)

3 動(dòng)作流程

(1)運(yùn)動(dòng)控制程序用Jog運(yùn)動(dòng)調(diào)整平臺(tái)位置,使相機(jī)能完整拍攝工裝位置;

(2)在界面上按PositionReset鍵,設(shè)置平臺(tái)當(dāng)前位置為加工原點(diǎn)。

(3)圖像處理程序初始化相機(jī);

(4)標(biāo)定相機(jī),計(jì)算像素長度系數(shù)kx,ky;

(5)運(yùn)動(dòng)控制程序用Jog運(yùn)動(dòng)調(diào)整平臺(tái)位置,使點(diǎn)膠針頭到達(dá)工裝位置的左上角。按Getoffset鍵,得到加工原點(diǎn)與加工原點(diǎn)的偏差dx,dy,dz;

(6)按Home鍵,點(diǎn)膠頭回到加工原點(diǎn);

(7)放置工件后,點(diǎn)擊Dispense鍵,開始點(diǎn)膠加工;

(8)運(yùn)動(dòng)控制程序給圖像處理程序發(fā)送指令;

(9)圖像處理程序接收到指令后,控制相機(jī)給工裝拍照,獲取0~9號工件的位置;

(10)為了能以較短的時(shí)間完成10個(gè)工件的點(diǎn)膠動(dòng)作,圖像處理程序優(yōu)化點(diǎn)膠路徑,并將點(diǎn)膠路徑發(fā)送給運(yùn)動(dòng)控制程序;

(11)運(yùn)動(dòng)控制程序按規(guī)劃路徑點(diǎn)膠,完成后自動(dòng)回到加工原點(diǎn);

(12)轉(zhuǎn)至流程7。

視覺點(diǎn)膠機(jī)模擬實(shí)驗(yàn)系統(tǒng)的軟件

1 點(diǎn)膠過程的主要算法

在工裝上任意擺放了10個(gè)工件,如圖5所示。圖像處理程序?qū)?yōu)化處理后數(shù)據(jù)傳送給運(yùn)動(dòng)控制程序。點(diǎn)膠頭從起點(diǎn)出發(fā),依次對#7、#0、#9、#3、#5、#2、#8、#4、#1、#6工件點(diǎn)膠,為最后返回原點(diǎn)。每個(gè)工件的點(diǎn)膠時(shí)間長為0.5秒。

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用5.jpg

圖5 工裝上任意擺放的10個(gè)工件及點(diǎn)膠軌跡

為了讓點(diǎn)膠過程運(yùn)動(dòng)平穩(wěn)、快速,點(diǎn)膠頭在工件之間的運(yùn)動(dòng)軌跡如圖6所示。采用樣條曲線插補(bǔ)函數(shù)控制軌跡運(yùn)動(dòng),可保證矢量速度連續(xù)平穩(wěn)。樣條曲線共8個(gè)點(diǎn);但從原點(diǎn)出發(fā)的樣條曲線P0~P2三個(gè)點(diǎn)的Z軸坐標(biāo)和P3點(diǎn)的相同;最后回原點(diǎn)的樣條曲線P5~P7三個(gè)點(diǎn)的Z軸坐標(biāo)和P4點(diǎn)的相同。

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用6.jpg

圖6點(diǎn)膠頭從一個(gè)工件移動(dòng)到另一個(gè)工件的運(yùn)動(dòng)軌跡

在調(diào)用樣條曲線插補(bǔ)函數(shù)前,必須計(jì)算樣條曲線各點(diǎn)的坐標(biāo);還要計(jì)算點(diǎn)與點(diǎn)之間距離,得到點(diǎn)與點(diǎn)之間的運(yùn)動(dòng)時(shí)間。

P0~P7的坐標(biāo)計(jì)算公式如下:

起點(diǎn)為:P0(0,0,0);

終點(diǎn)為:P7(x1,y1,0);

P1、P6點(diǎn)的高度設(shè)為h1,其坐標(biāo)為:P1(0,0,h1)、P6(x1,y1,h1);

P3、P4點(diǎn)的高度設(shè)為h1+r,其坐標(biāo)為: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為負(fù)P2、P5點(diǎn)為圓弧的中點(diǎn),其坐標(biāo)為:

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為負(fù)如果x1=0,則:m=0

n=r-r*cos(PI/4),如果y1小于0,則n為負(fù)

p=0

q=r,如果y1小于0,則q為負(fù)計(jì)算樣條曲線各段運(yùn)動(dòng)時(shí)間的公式如下:

設(shè)樣條曲線插補(bǔ)速度為v,則:

P0~P1點(diǎn)的時(shí)間為t1=h1/v

P1~P2點(diǎn)的時(shí)間為t2=PI*r/4/v

P2~P3點(diǎn)的時(shí)間為t3=t2

P3~P4點(diǎn)的時(shí)間為t4=(P4(x1-2p)2+(y1-2q)2)0.5/v

P4~P5點(diǎn)的時(shí)間為t5=t2

P5~P6點(diǎn)的時(shí)間為t6=t2

P6~P7點(diǎn)的時(shí)間為t6=t1

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用7.jpg

圖7 點(diǎn)膠過程的位移曲線和速度曲線

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用8.jpg

圖8 局部放大圖

圖7為樣條曲線插補(bǔ)運(yùn)動(dòng)的位移與速度曲線。圖8是曲線的放大圖。由圖可看出:樣條曲線插補(bǔ)的位移曲線十分平滑;速度曲線也很連續(xù)。

2 運(yùn)動(dòng)控制程序的框圖

PAC9300運(yùn)動(dòng)控制器采用循環(huán)掃描方式執(zhí)行結(jié)構(gòu)化文本編寫的程序。這和C#由事件觸發(fā)執(zhí)行程序的方式完全不同。

點(diǎn)膠機(jī)的運(yùn)動(dòng)控制主程序框圖如圖9所示。程序首先進(jìn)行共享內(nèi)存初始化工作。完成后,將變量initMem設(shè)為FALSE。電機(jī)可運(yùn)動(dòng)鍵按下后,可進(jìn)行手動(dòng)控制平臺(tái)運(yùn)動(dòng)、也可進(jìn)行自動(dòng)點(diǎn)膠。

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用9.jpg

圖9 點(diǎn)膠機(jī)的運(yùn)動(dòng)控制主程序框圖

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用10.jpg

圖10 手動(dòng)控制平臺(tái)運(yùn)動(dòng)子程序框圖

手動(dòng)控制平臺(tái)運(yùn)動(dòng)子程序框圖如圖10所示。

該子程序可進(jìn)行X軸、Y軸和Z軸的回原點(diǎn)(Home)運(yùn)動(dòng);可控制3個(gè)軸的點(diǎn)動(dòng)(Jog運(yùn)動(dòng)),且點(diǎn)動(dòng)的速度有高、中、低三檔可選;可控制3軸進(jìn)行點(diǎn)位運(yùn)動(dòng);還可加工原點(diǎn)與相機(jī)原點(diǎn)的偏移量。

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用11.jpg

圖11 點(diǎn)膠子程序框圖

點(diǎn)膠子程序框圖如圖11所示。其中有3個(gè)狀態(tài):splineBusy、PVTBusy、DelayOff2(定時(shí)器2時(shí)間到)。

當(dāng)splineBusy=TRUE時(shí),進(jìn)行樣條曲線各點(diǎn)坐標(biāo)和時(shí)間的計(jì)算、樣條曲線插補(bǔ)函數(shù)參數(shù)的設(shè)置、啟動(dòng)樣條曲線插補(bǔ)運(yùn)動(dòng)。

當(dāng)PVTBusy=TRUE時(shí),等待樣條曲線插補(bǔ)運(yùn)動(dòng)結(jié)束。若運(yùn)動(dòng)結(jié)束,就開啟點(diǎn)膠閥。

當(dāng)DelayOff2=TRUE時(shí),等待定時(shí)器時(shí)間到。若時(shí)間到,關(guān)閉點(diǎn)膠閥;為運(yùn)動(dòng)到下一個(gè)點(diǎn)做準(zhǔn)備。

PAC的運(yùn)動(dòng)控制程序原代碼請見附錄。

3 運(yùn)動(dòng)控制程序的界面

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用12.jpg

圖12 PAC9300運(yùn)動(dòng)控制器的操作界面

雷賽PAC9300運(yùn)動(dòng)控制器可以在顯示器上顯示優(yōu)美的操作界面,如圖12所示。

JOG分組框(GroupBox)中6個(gè)按鍵可控制運(yùn)動(dòng)平臺(tái)3個(gè)軸朝正、負(fù)方向點(diǎn)動(dòng)。運(yùn)動(dòng)平臺(tái)上的2、4、6、8和1、7號鍵也可以控制相應(yīng)的軸點(diǎn)動(dòng)。

Movedistance分組框中3個(gè)文本框可輸入3個(gè)軸的運(yùn)動(dòng)距離,后面3個(gè)按鍵是點(diǎn)位運(yùn)動(dòng)的啟動(dòng)按鍵。

Position分組框在3個(gè)文本框顯示的是3個(gè)軸的位置。

Select Speed下拉列表框(ComboBox)可選擇種速度:Low、Middle、High。

Inputs分組框中為9個(gè)復(fù)選框(Checkbox),用于指示運(yùn)動(dòng)平臺(tái)上9個(gè)按鍵的狀態(tài)。當(dāng)有鍵按下時(shí),框中顯示有一個(gè)“√”。速度表為BarDisplay控件。

Output按鍵是PushSwitchLed控件;當(dāng)按鍵按下左邊的指示燈變綠,按鍵抬起指示燈變紅。

雷賽PAC運(yùn)動(dòng)控制器的軟件中還有很多實(shí)用的控件,在此不一一列舉。

視覺點(diǎn)膠機(jī)模擬實(shí)驗(yàn)系統(tǒng)的圖像處理程序

1 相機(jī)像素點(diǎn)尺寸的標(biāo)定

要從圖像中獲取物體的位置,首先要標(biāo)定圖像的像素點(diǎn)的尺寸。

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用13.jpg

圖13 圖像坐標(biāo)與加工坐標(biāo)的關(guān)系

如圖13所示,在相機(jī)拍攝范圍內(nèi),分別放置2個(gè)用于測量距離的標(biāo)記:Mark點(diǎn)1和Mark點(diǎn)2。已知2個(gè)標(biāo)記的相對距離為dx和dy。

相機(jī)拍攝照片,通過圖像處理,得到Mark點(diǎn)1和Mark點(diǎn)2在照片中的位置坐標(biāo),分別為(x1,y1),(x2,y2)。該坐標(biāo)的單位為像素。則像素點(diǎn)x和y方向的尺寸分別為:

kx=dx/(x2-x1)

ky=dy/(y1-y2),單位:mm/像素

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用14.jpg

圖14 標(biāo)定結(jié)果

標(biāo)定結(jié)果如圖14所示,一個(gè)像素的長和寬約為0.012mm。

2 圖像坐標(biāo)與加工坐標(biāo)的關(guān)系

相機(jī)是固定在運(yùn)動(dòng)平臺(tái)的機(jī)座上,不隨X、Y、Z軸一起運(yùn)動(dòng)。在工裝位置畫一個(gè)圖像坐標(biāo)X’Y’,如圖13所示。圖像坐標(biāo)系中Y’軸方向和我們習(xí)慣采用的Y軸方向相反。

調(diào)整相機(jī)位置和平臺(tái)位置,使圖像的左上角與圖像坐標(biāo)原點(diǎn)重合,如圖14所示,將此時(shí)X、Y軸的位置設(shè)為加工原點(diǎn)。

手動(dòng)調(diào)節(jié)X、Y軸,使點(diǎn)膠頭移動(dòng)到圖像坐標(biāo)原點(diǎn)。此時(shí)X、Y軸的移動(dòng)距離即為點(diǎn)膠頭的加工坐標(biāo)與圖像坐標(biāo)的偏移量:Xoffset、Yoffset,如圖13所示。該方法比較簡單,但精度不是太高。

通過圖像處理得到工件位置坐標(biāo)(x’,y’)轉(zhuǎn)換至加工坐標(biāo)(x,y)的關(guān)系式如下:

x=x’+Xoffset

y=-y’+Yoffset

3 圖像處理程序框圖

圖像處理程序主程序框圖如圖15所示。完成相機(jī)初始化后,定時(shí)器控制相機(jī)每100ms拍照一次,并將圖像顯示在界面上。在開始對工件進(jìn)行位置識別之前,要進(jìn)行相機(jī)的標(biāo)定,計(jì)算像素點(diǎn)的尺寸。

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用15.jpg

圖15 圖像處理程序主程序框圖

當(dāng)Start按鍵按下后,打開線程1。線程1的程序框圖如圖16所示。

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用16.jpg

圖16 線程1的程序框圖

初始化共享內(nèi)存后,線程1等待運(yùn)動(dòng)控制程序發(fā)來的指令。當(dāng)接受到一個(gè)新指令,且指令代碼為22時(shí),線程1開始進(jìn)行工件位置識別。

如果識別成功,將對工件坐標(biāo)數(shù)據(jù)進(jìn)行路徑優(yōu)化,使點(diǎn)膠時(shí)間最短。

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用17.jpg

圖17 圖像識別及數(shù)據(jù)優(yōu)化結(jié)果

如圖17所示,接受到第22號指令,指令代碼為22,圖像識別成功。如果按0~9的順序?qū)ぜc(diǎn)膠,路徑長為115.1mm,經(jīng)過優(yōu)化計(jì)算后,點(diǎn)膠路徑為#7、#0、#9、#3、#5、#2、#8、#4、#1、#6,路徑長為66.4mm。圖像識別、路徑優(yōu)化共耗時(shí)986ms。

運(yùn)動(dòng)控制程序與圖像處理程序之間的數(shù)據(jù)交換

運(yùn)動(dòng)控制程序與圖像處理程序之間的數(shù)據(jù)交換通過讀寫共享內(nèi)存得以實(shí)現(xiàn)。

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用18.jpg

圖18 2個(gè)進(jìn)程通過共享內(nèi)存通信

共享內(nèi)存是內(nèi)存映射文件的一種特殊形式。如圖18所示,共享內(nèi)存映射的是一塊物理內(nèi)存,而非磁盤上的文件。2個(gè)進(jìn)程通過虛擬地址空間及用戶級頁表可以讀、寫物理內(nèi)存中的同一塊區(qū)域,從而實(shí)現(xiàn)進(jìn)程間的通信。該方式通訊效率高。

1 圖像處理程序中有關(guān)共享內(nèi)存的代碼

存放在共享內(nèi)存的數(shù)據(jù)為結(jié)構(gòu)類數(shù)據(jù)。因此,在使用共享內(nèi)存前,要定義自己的結(jié)構(gòu)體。詳細(xì)代碼如下:

//實(shí)例化3個(gè)結(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)查詢由運(yùn)動(dòng)控制程序發(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 運(yùn)動(dòng)控制程序中有關(guān)共享內(nèi)存的代碼

結(jié)構(gòu)化文本語言有關(guān)共享內(nèi)存的函數(shù),與C#的類似,但沒有創(chuàng)建View對象的函數(shù)。在創(chuàng)建內(nèi)存映射文件時(shí),文件名要和C#的一樣。詳細(xì)代碼如下:

//定義共享內(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)化文本語言編寫的運(yùn)動(dòng)控制程序和用C#語言編寫的圖像處理程序在PAC9300運(yùn)動(dòng)控制器上同時(shí)運(yùn)行,一個(gè)負(fù)責(zé)運(yùn)動(dòng)平臺(tái)的控制,一個(gè)負(fù)責(zé)圖像處理和數(shù)據(jù)優(yōu)化;各司其職,發(fā)揮出各自的優(yōu)勢;同時(shí)通過共享內(nèi)存交換信息,又相互協(xié)作,使PAC運(yùn)動(dòng)控制器強(qiáng)大的性能得到充分的體現(xiàn)。

PAC9300運(yùn)動(dòng)控制器與機(jī)器視覺的綜合應(yīng)用19.jpg

圖19 2個(gè)程序同時(shí)運(yùn)行時(shí)占用PAC資源的情況

如圖19所示,PAC9300運(yùn)動(dòng)控制器在運(yùn)行這2個(gè)程序時(shí),CPU使用率在40%左右。在“CPU使用記錄”第3個(gè)圖形中(即CPU的第3個(gè)核),有一個(gè)小波峰,是圖像處理程序在進(jìn)行圖像識別,持續(xù)時(shí)間不到1秒,物理內(nèi)存使用率在50%左右,說明PAC9300運(yùn)行這2個(gè)程序還比較輕松。

本實(shí)驗(yàn)結(jié)果表明:

(1)雷賽PAC9300運(yùn)動(dòng)控制器不但具有優(yōu)秀的運(yùn)動(dòng)控制功能,其人機(jī)界面也十分優(yōu)美,用鼠標(biāo)、鍵盤操作方便。

(2)PAC9300的CPU性能很好,完全可以同時(shí)運(yùn)行圖像處理程序。

(3)使用共享內(nèi)存,可以使2個(gè)相對獨(dú)立的程序進(jìn)行快速的信息交換。

(4)采用本實(shí)驗(yàn)的硬件結(jié)構(gòu),比工控機(jī)+運(yùn)動(dòng)控制卡、運(yùn)動(dòng)控制器+觸摸屏這兩種方案的性價(jià)比都更好。

中傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:

凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(www.connectcrack.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

伺服與運(yùn)動(dòng)控制

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

直驅(qū)與傳動(dòng)

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

中國傳動(dòng)網(wǎng)

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

2020年第三期

2020年第三期

圖片閱讀

掃碼關(guān)注小程序

時(shí)刻關(guān)注行業(yè)動(dòng)態(tài)

雜志訂閱

填寫郵件地址,訂閱更多資訊:

撥打電話咨詢:13751143319 余女士
郵箱:chuandong@chuandong.cn

熱搜詞
  • 運(yùn)動(dòng)控制
  • 伺服系統(tǒng)
  • 機(jī)器視覺
  • 機(jī)械傳動(dòng)
  • 編碼器
  • 直驅(qū)系統(tǒng)
  • 工業(yè)電源
  • 電力電子
  • 工業(yè)互聯(lián)
  • 高壓變頻器
  • 中低壓變頻器
  • 傳感器
  • 人機(jī)界面
  • PLC
  • 電氣聯(lián)接
  • 工業(yè)機(jī)器人
  • 低壓電器
  • 機(jī)柜
回頂部
點(diǎn)贊 0
取消 0
往期雜志
  • 2025年第一期

    2025年第一期

    伺服與運(yùn)動(dòng)控制

    2025年第一期

  • 2024年第六期

    2024年第六期

    伺服與運(yùn)動(dòng)控制

    2024年第六期

  • 2024年第五期

    2024年第五期

    伺服與運(yùn)動(dòng)控制

    2024年第五期

  • 2024年第四期

    2024年第四期

    伺服與運(yùn)動(dòng)控制

    2024年第四期

  • 2024年第三期

    2024年第三期

    伺服與運(yùn)動(dòng)控制

    2024年第三期