FOR...TO...ENDFOR 循環(huán)計(jì)算。
Counter | INT | 循環(huán)計(jì)算使用整數(shù)變量 |
Start | INT | 表達(dá)式指定計(jì)算器最初的值。 |
End | INT | 表達(dá)式指定計(jì)算器最后的值。 |
Increment | INT |
算術(shù)表達(dá)式的計(jì)算器總量由每個(gè)執(zhí)行的循環(huán)增加: 增量可能是負(fù)數(shù) 增量可能是零 增量可能是變量 如果增量被指定,那么默認(rèn)值為1 。 |
指定運(yùn)行數(shù)能真正明確FOR循環(huán)被程序使用。循環(huán)運(yùn)行由計(jì)算器幫助計(jì)算。
執(zhí)行FOR的條件:
通過正增量:如果計(jì)算器的值比最后的值大,那么循環(huán)結(jié)束。
通過負(fù)增量:如果計(jì)算器的值比最后的值小,那么循環(huán)結(jié)束。
執(zhí)行的條件是在任何一個(gè)循環(huán)運(yùn)行之前選擇。在個(gè)別的情況下FOR循環(huán)不能完全執(zhí)行。
表達(dá)式類型的整數(shù)必須給出計(jì)算器的最初和最后的值。表達(dá)式求一次循環(huán)開始的值。計(jì)時(shí)器被最初的值調(diào)整和增加或在循環(huán)運(yùn)行后消耗。
增加可以不是0 。如果不指定增加,那么默認(rèn)的值是1 。負(fù)值也能被用于增加。
計(jì)數(shù)器的值能在循環(huán)語句的內(nèi)部和外部使用。在循環(huán)內(nèi)部,作為排列處理的最新的指數(shù),在循環(huán)外,計(jì)數(shù)器保留大部分新近來的值。
為了每個(gè)FOR語句都必須ENDFOR語句對(duì)應(yīng)。在循環(huán)執(zhí)行完成后,程序在 遇見ENDFOR后返回第一個(gè)指令。使用EXIT語句循環(huán)可以提前退出。
在10循環(huán)中變量B每次增加1 。
FOR A=1 TO 10
B=B+1
ENDFOR
在兩級(jí)FOR 循環(huán)中, 增加計(jì)數(shù)器A 后每次運(yùn)行通過計(jì)數(shù)器的值增加變量B。變量B達(dá)到10,循環(huán)提前退出。
FOR A=1 TO 15 STEP 2
B=B+A
IF B==10 THEN
EX
IT
ENDIF
ENDFOR
陣列
術(shù)語“陣列“指的是相同數(shù)據(jù)類型對(duì)象的組合產(chǎn)生的一個(gè)數(shù)據(jù)對(duì)象;通過下標(biāo)可以尋址陣列中的獨(dú)立的元素。聲明如下
DECL INT OTTO[7]
您可以存儲(chǔ),例如,7個(gè)不同的整數(shù)在陣列OTTO[]中。通過指定相關(guān)的下標(biāo)(第一個(gè)下標(biāo)永遠(yuǎn)是數(shù)字1),您可以訪問陣列中每個(gè)單獨(dú)的元素。
OTTO[1]=5: 數(shù)字5分配給第一個(gè)元素
OTTO[2]=10:數(shù)字10分配給第二個(gè)元素
OTTO[3]=15:數(shù)字15分配給第三個(gè)元素
OTTO[4]=20:數(shù)字20分配給第四個(gè)元素
OTTO[5]=25:數(shù)字25分配給第五個(gè)元素
OTTO[6]=30:數(shù)字30分配給第六個(gè)元素
OTTO[7]=35:數(shù)字35分配給第七個(gè)元素
可以將陣列OTTO[]想象為一個(gè)包含7個(gè)間隔的架子。根據(jù)以上的分配,填充元素如下:一維陣列的表示
如果陣列中的所有元素都初始化為同一個(gè)數(shù)字,例如0,您不必要編程每個(gè)分配,可以使用循環(huán)和一個(gè)計(jì)數(shù)變量 “自動(dòng)”分配。
FOR I=1 TO 7
OTTO[I]=0
ENDFOR
該情況下,計(jì)數(shù)變量為整數(shù)型變量I,該變量在作為整數(shù)使用前必須聲明。
陣列可能是任何數(shù)據(jù)類型。單獨(dú)的元素也可能有復(fù)雜的數(shù)據(jù)類型(例如,陣列組成的陣列)。
●僅整數(shù)型數(shù)據(jù)類型允許作為下標(biāo)。
●除常量和變量外,算術(shù)表達(dá)式也允許作為下標(biāo)。
●下標(biāo)起始值通常為1。
2維陣列
除已經(jīng)討論過的一維陣列,也就是說僅有一個(gè)下標(biāo),在KRL中還可以使用兩維或三維陣列。采用
DECL REAL MATRIX[7,3]
您可以聲明一個(gè)兩維5×4的陣列,包含5×4=20個(gè)實(shí)數(shù)元素。可以表達(dá)該陣列為5列和4行的矩陣。程序順序如下
I[3]=0
FOR COLUMN=1 TO 7
FOR ROW=1 TO 3
I[3]=I[3]+1
MATRIX[COLUMN,ROW]=I[3]
ENDFOR
ENDFOR
根據(jù)元素在矩陣中的順序分配值。得到下列矩陣分配:
3維陣列
三維陣列可以看作是一個(gè)接一個(gè)的一些兩維矩陣。第三維指示矩陣所處位置的級(jí)別。一個(gè)三維陣列可簡(jiǎn)單地聲明為一維或兩維陣列,例如:
DECL BOOL ARRAY_3D[5,3,4]
初始化順序如下:
FOR LEVEL=1 TO 3
FOR COLUMN=1 TO 5
FOR ROW=1 TO 4
ARRAY_3D[LEVEL,COLUMN,ROW]=FALSE
ENDFOR
ENDFOR
ENDFOR
三維陣列的表示
堆垛和卸垛練習(xí):
堆垛.........
PTP fa2 Vel=100 % PDAT3 Tool[1]:1 Base[10]:g
for n=1 to 4 計(jì)算出16個(gè)點(diǎn)的位置值
for m=1 to 4
tp1[n,m]=xfa1 提取放件位置的數(shù)據(jù)
tp2[n,m]=xfa1 提取預(yù)放件位置的數(shù)據(jù)
tp1[n,m].y=tp1[n,m].y+80*(n-1)
tp1[n,m].x=tp1[n,m].x+65*(m-1)
tp2[n,m].z=tp2[n,m].z+100 預(yù)放件位置的Z軸方向要抬高100mm
tp2[n,m].y=tp2[n,m].y+80*(n-1)
tp2[n,m].x=tp2[n,m].x+65*(m-1)
endfor
endfor
PTP fa3 Vel=20 % PDAT4 Tool[1]:1 Base[10]:g
for n=1 to 4
for m=1 to 4
zhua() 循環(huán)執(zhí)行抓件程序
PTP fa4 Vel=10 % PDAT5 Tool[1]:1 Base[10]:g
ptp tp2[n,m] 運(yùn)行到預(yù)放件位置
wait sec 0.5
lin tp1[n,m] 運(yùn)行到放件位置
wait sec 0.2
SET GRIPPER State= GDAT1 打開夾爪
lin tp1[n,m]
ptp tp2[n,m] 運(yùn)行到抬起位置
endfor
endfor
PTP P1 Vel=50 % PDAT1 Tool[1]:1 Base[10]:g
-
機(jī)器人
+關(guān)注
關(guān)注
210文章
28205瀏覽量
206532 -
計(jì)數(shù)器
+關(guān)注
關(guān)注
32文章
2253瀏覽量
94354 -
計(jì)算器
+關(guān)注
關(guān)注
16文章
437瀏覽量
37289
原文標(biāo)題:KUKA機(jī)器人中陣列的概念,通過FOR...TO...ENDFOR實(shí)現(xiàn)堆垛和卸垛
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論