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
|