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