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)行其他軟件。
圖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上,用于拍攝工件照片、通過圖像處理獲取工件位置。
圖2 雷賽PAC9300運(yùn)動(dòng)控制器實(shí)驗(yàn)系統(tǒng)
圖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#語言編寫。
圖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秒。
圖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)的相同。
圖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
圖7 點(diǎn)膠過程的位移曲線和速度曲線
圖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)膠。
圖9 點(diǎn)膠機(jī)的運(yùn)動(dòng)控制主程序框圖
圖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)的偏移量。
圖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)控制程序的界面
圖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)的尺寸。
圖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/像素
圖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)的尺寸。
圖15 圖像處理程序主程序框圖
當(dāng)Start按鍵按下后,打開線程1。線程1的程序框圖如圖16所示。
圖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í)間最短。
圖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)。
圖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)。
圖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)利。

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

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

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

掃碼關(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ī)柜