KUKA机器人中阵列的概念计算

描述

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

  
      审核编辑:彭静
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分