首页 > 其他分享 >ABB 机械手模板二

ABB 机械手模板二

时间:2022-08-24 13:35:22浏览次数:58  
标签:ABB isAtHomePos WaitTime 机械手 PLC D2 actualPos 模板

这种模板适合把机器人当作一套运动控制单元,顺控逻辑放在PLC里,机器人只做动作逻辑。机器人和PLC通讯可以用profinet,或直接用电缆连接。

下面是PLC和机械手通讯用到的两个任务信号:

信号 说明
D2_Gi_5_8_TaskReceive 机械手从PLC接收的任务号
D2_Go5_8_TaskReceived 机械手发给PLC当前完成的任务号

机械手在接受D2_Gi_5_8_TaskReceive任务号后,执行动作,完成后把D2_Go5_8_TaskReceived的值设置成刚执行的任务号,告诉PLC,任务已完成。PLC判断发送任务号和接受任务号相等,知道任务已完成,置D2_Gi_5_8_TaskReceive为零,机械手执行D2_Go5_8_TaskReceived置零,这一步其实是多余的,主要是保证安全。机械手再次等待PLC的下次任务号。

机械手程序比较简单,大部分工作在PLC侧。PLC侧的顺控程序可以看我以前的博客。在此不再赘述。

MODULE MainModule
    PROC main()

        Init;
        WHILE TRUE DO
            WaitUntil D2_Gi_5_8_TaskReceive<>0;
            WaitTime 0.1;
            TEST D2_Gi_5_8_TaskReceive
            CASE 1:
                WaitTime 1;
                ! 这些为子程序,需要在后面实现机器人动作
                PickButtomCover;   
            CASE 2:
                WaitTime 1;
                PutButtomCover;  
            CASE 3:
                WaitTime 1;
                PickTopCover;    
            CASE 4:
                WaitTime 1;
                PutTopCover;   
            CASE 5:
                WaitTime 1;
                PickEndIterms;    
            CASE 6:
                WaitTime 1;
                PutOk;           
            CASE 7:
                WaitTime 1;
                PutNG;            
            DEFAULT:
                TPWrite "wrong task step";
                WaitTime WAIT_MAX;
            ENDTEST
            SetGO D2_Go5_8_TaskReceived, D2_Gi_5_8_TaskReceive;
            WaitGI D2_Gi_5_8_TaskReceive, 0;
            SetGO D2_Go5_8_TaskReceived, 0;
        ENDWHILE

    ENDPROC

    PROC Init()

        Reset do_01;
        Reset do_02;
        SetGO D2_Go5_8_TaskReceived,0;
        GoHome;
        
    ENDPROC

    PROC GoHome()
        VAR robtarget pactualPos;
        IF NOT CheckAtHomePos(pHome,Tool_Sucker) THEN
            pactualPos:=CRobT(\Tool:=Tool_Sucker\WObj:=wobj0);
            MoveL Offs(pactualPos,0,0,100),v200,z10,Tool_Sucker;
            MoveJ pHome,v1000,fine,Tool_Sucker;
        ENDIF
    ENDPROC

    FUNC bool CheckAtHomePos(robtarget comparePos,INOUT tooldata TCP)
        VAR robtarget actualPos;
        VAR bool isAtHomePos:=TRUE;
        actualPos:=CRobT(\Tool:=TCP\Wobj:=wobj0);

        IF actualPos.trans.x<comparePos.trans.x-200 OR actualPos.trans.x>comparePos.trans.x+200 THEN
            isAtHomePos:=FALSE;
        ELSEIF actualPos.trans.y<comparePos.trans.y-200 OR actualPos.trans.y>comparePos.trans.y+200 THEN
            isAtHomePos:=FALSE;
        ELSEIF actualPos.trans.z<comparePos.trans.z-200 OR actualPos.trans.z>comparePos.trans.z+200 THEN
            isAtHomePos:=FALSE;
        ELSEIF actualPos.rot.q1<comparePos.rot.q1-200 OR actualPos.rot.q1>comparePos.rot.q1+200 THEN
            isAtHomePos:=FALSE;
        ELSEIF actualPos.rot.q2<comparePos.rot.q2-200 OR actualPos.rot.q2>comparePos.rot.q2+200 THEN
            isAtHomePos:=FALSE;
        ELSEIF actualPos.rot.q3<comparePos.rot.q3-200 OR actualPos.rot.q3>comparePos.rot.q3+200 THEN
            isAtHomePos:=FALSE;
        ELSEIF actualPos.rot.q4<comparePos.rot.q4-200 OR actualPos.rot.q4>comparePos.rot.q4+200 THEN
            isAtHomePos:=FALSE;
        ENDIF

        RETURN isAtHomePos;

    ENDFUNC

ENDMODULE

标签:ABB,isAtHomePos,WaitTime,机械手,PLC,D2,actualPos,模板
From: https://www.cnblogs.com/TomDing/p/16619502.html

相关文章

  • RabbitMQ 入门系列:5、基础编码:交换机的进阶介绍及编码方式。
    系列目录RabbitMQ入门系列:1、MQ的应用场景的选择与RabbitMQ安装。RabbitMQ入门系列:2、基础含义:链接、通道、队列、交换机。RabbitMQ入门系列:3、基础含义:持久化、......
  • linux中jar包启动sh命令模板
    #!/bin/shcd/usr/xxx/xxx/xxx/pid=`ps-ef|grep'xxxx.jar*'|grep-vgrep|awk'{print$2}'`if[-n"${pid}"];thenkill-9${pid}echo"Process[WS]ki......
  • 【Vue模板报错】关于 The template root requires exactly one element 报错的解决方
    报错内容  报错原因Vue只允许模板里存在一个根节点。解决方案在<template>中添加一个<div>标签,之后所有的组件全部加在<div>即可解决。 ......
  • java通过模板生成word文档
    工具库:https://github.com/Sayi/poi-tl中文文档:http://deepoove.com/poi-tl/pom依赖<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artif......
  • .Net Core&RabbitMQ消息转发可靠机制
    前言生产者发送消息到了队列,队列推送数据给了消费者,这里存在一些问题需要思考下生产者如何确保消息一定投递到了队列中RabbitMQ丢失了消息(下文暂不涉及这块)队列如......
  • zabbix基础
    zabbix监控入门为什么做监控企业中:1.系统的监控:实际上是对系统不间断的实时监控2.实时反馈系统当前状态:我们监控某个硬件、或者某个系统,都是需要能实时看到当前系统......
  • docker之rabbitmq delayed message exchange
    创建dockerfileFROMrabbitmq:3.9.11-management-alpineCOPYrabbitmq_delayed_message_exchange-3.9.0.ez/pluginsRUNrabbitmq-pluginsenablerabbitmq_delayed_me......
  • XPAND模板语言语法1.0
    XPAND模板语言语法1.0Xpand模板语言一般写在以.xpt为结尾的文本文件中,以“«»”作为开头和结尾 。Xpand语言主要包括以下几个标签:«IMPORT»,«DEFINE»,«EXPAN......
  • RabbitMQ消息重复消费场景及解决方案
    消息重复消费MQ的一条消息被消费者消费了多次重复消费场景重现测试如何解决消息重复消费的问题编码解决消息重复消费测试消息重复消费什么是消息重复消费?首......
  • 该博客的CSS代码模板
    【页面定制CSS代码】记得勾选【禁用模板默认CSS】!*,.Cal{padding:0}::-moz-selection{background:#807dd4;color:#FFF}::selection{background:#807dd4;color:#FFF}::-we......