KUKA堆放件控制USER说明

控制/MCU

1878人已加入

描述

KUKA堆放件控制USER说明:

plc

PTP VB=100% VE=0% ACC=100% RobWzg=1 Base=0 SPSTrig=5[1/100s] PU

1: FB PSPS = EIN

2: A23 = AUS

3: A18 = EIN

4: GOTO SPSLabel 3 = F940 F940如果抓手上没件

5: SPSLabel 2

6: WARTE BIS (E61 + E213) & M2 +M1 & F940

7: --重置为容器1-在容器为空时重置--

8: i51 ( E59 ) = 1   E59容器1内没有件,没有件就重置I51

9: --重置为容器2-在容器为空时重置-- -

10: i52 ( E209 ) = 1  E209容器2内没有件, 没有件就重置I52

11: i31 ( E61 ) = i51 E61料架1是否合格,可以进入,i31总计数,i51料架1计数器.

plc

12: i31 ( E213 ) = i52 E213料架是否合格,可以进入,i31总计数,i52料架2计数器.

plc

13: bin20 ( EIN ) = i31 反馈上一次计数值给PLC用于比较

14: A61 = E61 & !E213   机器人去料架1-A61

15: A213 = !E61 & E213  机器人去料架2-A213

16: --从PLC读取计数器状态--

17: i31 ( EIN ) = binin20   PLC将数值发给I31

18: bin20 ( EIN ) = i31   反馈计数值给PLC用于比

---下面的F916和F917是用来判断计数器I31的计数是否正确-----

19: F916  = i31 = 0   i31计数值=0就激活F916

20: F917  = i31 > 9   i31计数值>9就激活F917

-----------------

21: F918 = (F916 & !E917) +(!F916 & F917) F918是计数数值不正确

22: GOTO SPSLabel 2 = F918 计数数值不正确就再回第2步

23: SPSLabel 3

24: F901 = M2 & !E15 + F941& E15   M2/F901抓持上有件

25: WARTE BIS E63 & F901 &!E18 + E212 & F901 & !E18 + F940 & !F901

E63往鼠笼1放件,E212往鼠笼2放件, F940 & !F901抓持器上没有件

26: A18 = AUS

27: F902  = i51 < 10  鼠笼1数量在小于10以内

28: F903  = i52 < 10  鼠笼2数量在小于10以内

29: WARTE BIS F901 & (F902 +F903) + F940

等待F901抓持器上有件,F902/F903计数器在正常范围内或者F940抓持器上没有件

30: WARTE BIS E23

31: A23 = EIN

32: FB PSPS = M30

UP14 = E63 & F901 & F902   去鼠笼1放件

UP15 = E212 & F901 & F903    去鼠笼2放件

-------------------------

UP14 放件程序分析:

通过USE程序和计数器I31结合改变BASE值实现向鼠笼料架进行堆放件的程序编写.

PTP VB=100% VE=0% ACC=100% RobWzg=1 Base=3 SPSTrig=5[1/100s] P

Tech_T_Speicher Platz=Base+i31 FRG S-Platz = 63 EIN

VW_USR_R (#USR_ADV,107,2,1,1,1,63,1,TRUE)

开始放件步

LIN VB=250[mm/s] VE=100% ACC=100% RobWzg=1 Base=31 SPSTrig=0[1/100s] P

LIN VB=250[mm/s] VE=10% ACC=100% RobWzg=1 Base=31 SPSTrig=0[1/100s] P

放件点轨迹

LIN VB=250[mm/s] VE=0%ACC=100% RobWzg=1 Base=31 SPSTrig=5[1/100s] P

LIN VB=250[mm/s] VE=0% ACC=100% RobWzg=1 Base=31 SPSTrig=0[1/100s] P

ADV

CASE 107 ;

; VW_USR_R (#USR_ADV,107,2,1,1,1,63,1,TRUE)

P1 =2 偏移模式

P5 =63 与PLC进行IO通讯反馈

P7 = TRUE 激活USER

零件存放

IF(PAR7==TRUE)THEN 激活位置计算功能

  CONTINUE

  IF(PAR5>0)THEN 如果 PAR5有值

    IF NOT $IN[PAR5] THEN 如果没有E63

      CONTINUE

      $OUT[PAR5] = TRUE 发出A63给PLC提示机器人开始进行偏移放件

      nRintMsgNr[10] = 0

      WHILE NOT $IN[PAR5]

     当指令:当没有E63 时发出提示信息

        IF(exists_krlMsg(nRintMsgNr[10])== FALSE)THEN

          MLD(40,#StateMsg);零件编号 PLC中缺少

        ENDIF 

      ENDWHILE

      MSG_DEL = Clear_KrlMsg (nRintMsgNr[10])删除状态消息

    ENDIF

  ENDIF 

  CONTINUE

  $COUNT_I[i_T_Speicher]=$B_IN[Binin_T_Sp]  BIN20的数给I31

  CONTINUE

  WHILE($COUNT_I[i_T_Speicher]<1) OR ($COUNT_I[i_T_Speicher]>254)

  当指令:  当I31 小于1,或大于254 发出提示信息

    MLD(14,#QuitMsg);PLC存储器位置无效

     $COUNT_I[i_T_Speicher]=$B_IN[Binin_T_Sp] I31 =Bin20

  ENDWHILE

  $B_OUT[Binout_T_Sp]=$B_IN[Binin_T_Sp] 

  将个给入的Bin20再发出去BINout20给PLC

  设置零件存储位置1-254

  CONTINUE

  IF(BASE_TYPE[VW_MPARA_ACT.BASE_NO]==#BASE)THEN

  只有当BASE_TYPE[1]被设置成#BASE时执行

    CONTINUE

WHILE(T_Speicher[$COUNT_I[i_T_Speicher]].Z==0.0)

当T_Speicher的Z方向是0时提示信息

      MLD(15,#QuitMsg);存储位置的坐标无效

    ENDWHILE

    SWITCH Par1 Par1=2

    CASE 1

     CONTINUE

     BASE_DATA[31]=T_Speicher[$COUNT_I[i_T_Speicher]]

   当 Par1=1时 BASE_DATA[31]直接由变量T_Speicherge[]给赋值

    CASE 2 Par1=2时

     CONTINUE  改变$BASE31的坐标值:当前使用的BASE值与T_Speicher的计算

BASE_DATA[31]=BASE_DATA[VW_MPARA_ACT.BASE_NO]:T_Speicher[$COUNT_I[i_T_Speicher]]

    DEFAULT P1要是其他的值

MLD(20,#QuitMsg);选择错误

ENDSWITCH

  ELSE  BASE_TYPE[1]没有设置成#BASE需要提示报警

    MLD(31,#QuitMsg);基本类型无效

  ENDIF

;

ENDIF

FRAME T_Speicher[300] 程序中使用了9个空位

T_Speicher[1]={X 0.0,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}

T_Speicher[2]={X -180.300003,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}

T_Speicher[3]={X -360.600006,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}

T_Speicher[4]={X -540.900024,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}

T_Speicher[5]={X -721.200012,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}

T_Speicher[6]={X -901.5,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}

T_Speicher[7]={X -1081.80005,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}

T_Speicher[8]={X -1262.09998,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}

T_Speicher[9]={X -1442.40002,Y 0.0,Z 0.100000001,A 0.0,B 0.0,C 0.0}






审核编辑:刘清

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

全部0条评论

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

×
20
完善资料,
赚取积分