KUKA外部自动配置(上)

news2024/10/19 21:52:41

        通过外部PLC对机器人自动运行进程进行控制,其控制原理是:外部PLC通过外部自动运行接口向机器人控制系统发出机器人进程的相关信号(如:运行许可、故障确认、程序启动等),机器人控制系统向外部PLC系统发送有关运行状态和故障状态的信息。

1. 基本流程

1.1 示教器操作(KUKA SmartPAD)

示教器用于切换模式、配置机械臂的状态和确认机械臂的操作权限。对于外部自动模式,示教器需要进行以下步骤操作:

步骤 1:启动和登录
  • 打开KUKA SmartPAD并登录管理员账户。
  • 确认机械臂已经启动并且处于待机状态。
步骤 2:切换到外部自动模式
  • 按下示教器上的“模式切换”按钮,选择外部自动模式(EXT模式)。此时,系统会将控制权移交给外部的控制器(如倍福PC)。
步骤 3:配置安全设置
  • 确保所有的安全设置和急停按钮功能正常,外部控制信号已配置好。这些安全设置可以通过示教器菜单中的安全设置选项进行检查。
步骤 4:启用驱动器
  • 按下启用驱动器按钮(通常是一个绿色的按钮),激活机械臂的运动驱动系统。此操作仅在外部自动模式选择后进行。
步骤 5:监控系统状态
  • 在外部自动模式下,示教器将主要用于监控机械臂的运行状态,包括报警、错误或状态信息。尽管操作由外部PC控制,但示教器仍可用于查看关节角度、状态日志等。

1.2 倍福PC操作(基于TwinCAT等控制软件)

倍福PC主要用于控制机械臂的外部信号、程序执行和逻辑控制。具体操作如下:

步骤 1:启动倍福PC和TwinCAT系统
  • 打开倍福PC并启动TwinCAT等控制软件。确保系统处于运行模式(RUN),并与KUKA机械臂的控制器建立通信。
步骤 2:建立通信
  • 确保倍福PC与KUKA控制器通过**工业以太网(EtherCAT)**或其他通讯协议连接。通信协议应该已经预先设置好,包括IP地址和端口号。
步骤 3:加载并配置PLC程序
  • 在TwinCAT中,加载控制KUKA机械臂的PLC程序。这些程序包含了运动逻辑和控制指令。
  • 配置好外部I/O信号,如启动信号、急停信号、机械臂准备好状态信号等,确保倍福PC能够接收来自KUKA控制器的反馈信号。
步骤 4:启动外部自动程序
  • 在TwinCAT的PLC界面中,启动已经编写的控制程序。这些程序应包含对机械臂的运动指令、路径规划以及传感器反馈的处理。
  • 通过倍福PC,向KUKA机械臂发送“启动”信号(EXT_START),此信号由倍福PC控制的PLC程序触发,以启动外部自动模式下的机械臂操作。
步骤 5:实时监控与调试
  • 使用倍福PC的调试和监控功能,实时查看机械臂的运动状态、传感器反馈和PLC逻辑执行情况。
  • 监控运行过程中的错误或异常信息,并根据需要进行程序调整或逻辑修改。

2. 示教器操作具体配置

2.1 配置外部自动输入端

 

        通过示教器进入外部自动输入输出的配置页面:

输入端需要配置以下十个信号:

PGNO_TYPE- 程序号类型:

        此变量确定了以何种格式来读取上级控制系统传送的程序编号。

说明实例
1以二进制数值读取。上级控制系统以二进制数值形式传递程序号。00100110
程序号是38
2以BCD 值读取。上级控制系统以BCD 值的形式传递程序号。00100110
程序号是26
3以N 选 1读取。上级控制系统以N 选 1的形式传递程序号。00000100
程序号是3

本系列文章PGNO_TYPE信号一般取值为1,即以二进制的编码形式传递程序号。

PGNO_LENGTH- 程序号长度:

        此变量确定了上级控制系统传送的程序编号的位宽。 值域: 1 … 16。

PGNO_PARITY- 程序号的奇偶位:

        上级控制系统传递奇偶位的输入端,没有特殊要求一般不设置校验。

输入端函数
负值奇校验
0无分析
正值偶校验

PGNO_VALID- 程序号有效:

        上级控制系统传送读取程序号指令的输入端,可以理解为传输程序号的时使能信号的形式。

输入端函数
负值在信号的脉冲下降沿应用编号。
0在线路EXT_START处随着信号的脉冲上升沿应用编号
正值在信号的脉冲上升沿应用编号。

$EXT_START- 外部启动:

        设定了该输入端后,输入/输出接口激活时将启动或继续一个程序 (一般为 CELL.SRC),该信号是个脉冲上升沿。

$MOVE_ENABLE- 运行开通:

        该信号确定了上级控制系统对机器人驱动器使能控制。

信号功能
TRUE可手动运行和执行程序
FALSE停住所有驱动装置并锁住所有激活的指令

$CONF_MESS- 确认信息提示:

        通过给该信号使能,当故障原因排除后,上级控制系统将确认机器人的故障信息。

$DRIVES_ON- 驱动装置接通:

        通过该信号给机器人伺服驱动装置上电,该信号触发至少持续20ms的高脉冲则上级控制系统会接通机器人驱动装置。

$DRIVES_OFF- 驱动装置关闭:

        如果在该输入端持续施加至少持续20 ms的低脉冲 ,则上级控制系统会关断机器人驱动装置。

$I_O_ACT -外部接口激活:

        示教器选择了外部自动运行这一运行方式并且输入端 $I_O_ACT 为 TRUE (一般 始终设为 $IN[1025])后,输出端$I_O_ACTCONF - 外部自动运行激活为 TRUE。

2.2 配置外部自动输出端

        输出信号总共4个菜单:

$ALARM_STOP - 紧急停止

        该信号在机器人自身急停和外部急停下触发时,会发出一个报警停机控制信号。

$USER_SAF - 操作人员防护装置 / 防护门

        该信号在外部自动模式时,防护装置(如安全门、卷帘门)被打开的时候,机器人会发出一个用户安全停止控制信号。

$PERI_RDY- 驱动装置处于待机状态

        通过设定此输出信号,机器人控制系统通知上级控制系统,机器人驱动装置已接通。

$STOPMESS- 停止信息

        该输出信号由机器人控制系统来设定,以向上级控制器显示出现了一条要求停住机器人的信息提示。
        例如,当按下紧急停止按键或运行开通、操作人员防护装置被打开等情况出现时,机器人会发出该信号。

$I_O_ACTCONF- 外部自动运行激活

        选择了外部自动运行这一运行方式并且输入端 $I_O_ACT 为 TRUE (默认为 $IN[1025])后,输出端为 TRUE。

$PRO_ACT- 程序激活/正在运行

        当机器人程序(CELL.SRC)启动运行后,始终给该输出端赋值。

$PGNO_REQ- 程序号问询

        该输出端信号变化时,要求上级控制器传送一个程序号。如果PGNO_TYPE值为3,则PGNO_REQ不被分析。

$APPL_RUN- 应用程序在运行中

        该信号是机器人通知上级控制器正在处理有关程序(CELL.SRC中的程序)。

$IN_HOME- 机器人位于起始位置 (HOME)

        该输出信号告知PLC,机器人正位于其起始位置(HOME)。

$ON_PATH- 机器人位于轨迹上

        只要机器人位于编程设定的轨迹上,此输出信号即被赋值。

$NEAR_POSRET 在路径附近

        精度可更改,默认 200MM。

$T1, T1 模式下即输出该信号

$T2, T2 模式下输出该信号

$AUT 内部自动模式下输出该信号

$ EXTERN 外部自动模式下输出该信号

2.3 CELL程序的结构和功能

        CELL程序是KUKA机械臂在外部自动模式下运行的重要组成部分,负责执行各种任务并确保与PLC的有效交互。

  • 初始化部分

    • 在程序开始时,通常会有初始化代码,用于设置必要的变量和状态,例如:
      • 设置运动参数(速度、加速度等)
      • 初始化IO信号
      • 设定安全状态
  • 主控制循环

    • 程序的主体通常是一个控制循环,该循环根据接收到的外部信号执行不同的操作。主要包括:
      • 监测PLC发来的信号
      • 根据外部输入信号控制机械臂的运动状态(如启动、停止、运动到指定位置等)
  • 信号处理

    • CELL程序中需要处理多种信号,包括但不限于:
      • sEXT_START: 启动信号
      • sDRIVERS_OFF: 关闭驱动器信号
      • PGNO_REQ: 程序号请求信号
      • sPGNO_VALID: 程序号有效信号
      • SMOVE_ENABLE: 移动使能信号
  • 任务执行部分

    • 根据PLC信号的状态,CELL程序会执行相应的动作,比如:
      • 移动到指定位置
      • 执行特定的操作(如夹持、放置等)
      • 监控任务状态并反馈给PLC
  • 异常处理

    • 在程序中,通常会添加异常处理机制,用于检测和应对各种潜在的错误情况,例如:
      • 检测信号丢失或超时
      • 根据情况采取相应的措施(如停机、报警等)
  • 结束部分

    • 程序结束时,会进行必要的收尾工作,例如清理状态、关闭驱动器、发送完成信号等。

在RAPID编程语言中,注释通常以分号(;)开始,RAPID解释器会忽略注释内容。

; CELL程序定义
; 这是外部自动模式下的主控程序,用于管理外部控制系统发送的程序号。
DEF Cell()
; 外部程序示例声明
;EXT EXAMPLE1()
;EXT EXAMPLE2()
;EXT EXAMPLE3()

; 初始化部分
INIT
  ; 初始化基础技术包
  BASICTECH INI
  ; 检查机器人是否在HOME位置
  CHECK HOME
  ; 以100%的速度移动到HOME位置
  PTP HOME Vel=100% DEFAULT
  ; 初始化外部自动模式
  AUTOEXT INI

; 主循环开始
LOOP
  ; 从外部控制系统获取程序号
  P00(#EXT_PGNO, #PGNO_GET, DMY[], 0)
  ; 根据接收到的程序号选择执行不同的子程序
  SWITCH PGNO
  ; 如果程序号为1,执行EXAMPLE1程序
  CASE 1
    ; 确认程序号已被接收
    P00(#EXT_PGNO, #PGNO_ACKN, DMY[], 0)
    ; 调用用户程序1
    EXAMPLE1()
  ; 如果程序号为2,执行EXAMPLE2程序
  CASE 2
    ; 确认程序号已被接收
    P00(#EXT_PGNO, #PGNO_ACKN, DMY[], 0)
    ; 调用用户程序2
    EXAMPLE2()
  ; 如果程序号为3,执行EXAMPLE3程序
  CASE 3
    ; 确认程序号已被接收
    P00(#EXT_PGNO, #PGNO_ACKN, DMY[], 0)
    ; 调用用户程序3
    EXAMPLE3()
  ; 如果程序号未定义,则发送故障信号
  DEFAULT
    ; 发送程序号故障信号
    P00(#EXT_PGNO, #PGNO_FAULT, DMY[], 0)
  ; 结束程序号选择
  ENDSWITCH
; 主循环结束
ENDLOOP
; CELL程序结束
END
; CELL程序示例
DEF CELL()
    ; 初始化
    DECL INT PGNO  ; 程序号
    DECL BOOL EXT_START  ; 外部启动信号
    DECL BOOL DRIVERS_OFF  ; 驱动器关闭信号
    DECL BOOL SMOVE_ENABLE  ; 移动使能信号

    ; 初始化信号
    EXT_START = FALSE
    DRIVERS_OFF = FALSE
    SMOVE_ENABLE = TRUE

    ; 等待外部启动信号
    WAIT FOR EXT_START

    ; 使能驱动器
    IF SMOVE_ENABLE THEN
        ; 启动机器人
        ; 这里可以添加运动指令,例如移动到起始位置
        PTP {X 100, Y 100, Z 200, A 0, B 0, C 0}  ; 移动到指定位置
        ; 发送程序号请求信号
        SendPGNO_REQ()
    ENDIF

    ; 等待接收程序号
    WAIT FOR PGNO_REQ
    PGNO = GetPGNO()  ; 获取程序号

    ; 程序号有效化
    WAIT 0.5  ; 等待0.5秒
    SendPGNO_VALID(PGNO)  ; 发送程序号有效信号

    ; 主循环
    WHILE TRUE
        ; 检测外部停止信号
        IF DRIVERS_OFF THEN
            ; 停止机器人
            StopRobot()
            EXIT ; 退出循环
        ENDIF
        
        ; 执行运动操作
        PerformTask(PGNO)
    ENDWHILE

    ; 程序结束
    SetIdleState()  ; 设置空闲状态
END

第一种风格

  1. 程序结构:这种风格使用了SWITCH语句来根据程序号选择执行不同的子程序。它适用于有固定数量的子程序,并且每个子程序都由外部控制系统通过程序号来选择。

  2. 信号处理:使用了P00系统程序来处理外部信号,如获取程序号(#PGNO_GET)、确认程序号(#PGNO_ACKN)和发送程序号故障信号(#PGNO_FAULT)。

  3. 循环机制:使用了一个LOOP...ENDLOOP循环来不断检查外部控制系统发送的程序号,并根据程序号执行相应的子程序。

  4. 注释:代码中包含了详细的注释,有助于理解每个步骤的作用。

第二种风格

  1. 程序结构:这种风格更加详细地展示了初始化、信号声明、等待外部启动信号、使能驱动器、发送程序号请求信号、获取程序号、程序号有效化以及主循环中的运动操作。

  2. 信号声明:明确声明了用于存储程序号、外部启动信号、驱动器关闭信号和移动使能信号的变量。

  3. 条件逻辑:使用了IF语句来检查移动使能信号,并在条件满足时启动机器人和发送程序号请求信号。

  4. 等待机制:使用了WAIT FOR语句来等待外部启动信号和程序号请求信号,这有助于同步机器人与外部控制系统的动作。

  5. 错误处理:包含了对外部停止信号的检测,并在检测到停止信号时停止机器人并退出循环。

  6. 任务执行:通过调用PerformTask(PGNO)函数来执行与程序号相关的任务,这提供了一种更灵活的方式来处理不同的程序号。

  7. 程序结束处理:在程序结束时调用SetIdleState()函数来设置机器人的空闲状态。

        第一种风格则更加简洁,适用于程序号较少且固定的情况。第二种风格提供了更多的细节和控制,使得程序的执行流程更加清晰。它适用于需要更精细控制机器人与外部控制系统交互的场景。

        在T1或T2模式下运行CELL.src程序,执行图3的①部分,KUKA机器人执行回HOME点,执行BCO运行,窗口显示“已达BCO”,BCO运行使KUKA机器人运行到轨迹上。
        在AUT_EXT(外部自动运行)模式下,图3的②部分指令LOOP和ENDLOOP之间循环执行程序。

2.4 外部自动启动时序

1)接通驱动装置

2)确认报警信息

3)外部启动cell程序

4)传递程序号并处理应用程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2218776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32 I2C通信协议详解

文章目录 STM32 I2C通信协议详解一、I2C协议概述二、物理层特性总线结构:引脚定义:电平特性:地址机制: 三、协议层机制起始信号:停止信号:数据有效性:应答信号(ACK)&…

机器学习|Pytorch实现天气预测

机器学习|Pytorch实现天气预测 🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 电脑系统:Windows11 显卡型号:NVIDIA Quadro P620 语言环境:python 3.9.7 编译器&#x…

【Python】selenium遇到“InvalidArgumentException”的解决方法

在使用try……except 的时候捕获到这个错误: InvalidArgumentException: invalid argument (Session info: chrome112.0.5614.0) 这个错误代表的是,当传入的参数不符合期望时,就会抛出这个异常: InvalidArgumentException: invali…

常见TCP/IP协议基础——计算机网络

目录 前言常见协议基础常见协议-基于TCP的应用层协议常见协议-基于UDP的应用层协议常见协议-网络层协议习题自测1.邮件发送协议2.接收邮件协议端口3.建立连接4.层次对应关系5.FTP服务器端口 前言 本笔记为备考软件设计师时的重点知识点笔记,关于常见TCP/IP协议基础…

Java【多线程】wait和notify

目录 wait / notify 由于线程之间是抢占式执⾏的, 因此线程之间执⾏的先后顺序难以预知. 但是实际开发中有时候我们希望合理的协调多个线程之间的执⾏先后顺序. wait / notify 等待/通知 协调线程之间的执行逻辑的顺序的 可以让后执行的逻辑等待先执行的逻辑 虽然无法直接…

缓存框架JetCache源码解析-缓存定时刷新

作为一个缓存框架,JetCache支持多级缓存,也就是本地缓存和远程缓存,但是不管是使用着两者中的哪一个或者两者都进行使用,缓存的实时性一直都是我们需要考虑的问题,通常我们为了尽可能地保证缓存的实时性,都…

word取消自动单词首字母大写

情况说明:在word输入单词后首字母会自动变成大写 (1)点击菜单栏文件 (2)点击“更多”——>“选项” (3)点击“校对”——>“自动更正选项” (4)取消“句首字母大写…

WPF样式详解:行内样式、模板样式和页面样式的全方位分析

Windows Presentation Foundation (WPF) 是微软推出的一种用于构建桌面应用程序的UI框架。WPF 提供了强大的样式和模板机制,允许开发人员以声明的方式定义和复用UI元素的视觉外观。本文将深入探讨WPF的行内样式、模板样式和页面样式,帮助您在实际开发中更…

大数据linux操作系统

第一关:Linux的初体验 答案: cd / ls -a / (里面有空格要注意) 第二关:Linux的常用命令 答案: touch newfile mkdir newdir cp newfile newdir/newfileCpy 第三关:Linux查询命令帮助语句…

我在自动化测试方面犯过的3个大错误

每个人都会犯错误,但不管错误看起来有多糟糕,你都可以恢复过来,更重要的是,从错误中学习。 在软件开发过程的任何领域,从编码到测试,我们都会时不时地犯一些错误。通常,这些错误都很小&#xf…

Linux kernel 堆溢出利用方法

前言 本文还是用一道例题来讲解几种内核堆利用方法,内核堆利用手段比较多,可能会分三期左右写。进行内核堆利用前,可以先了解一下内核堆的基本概念,当然更好去找一些详细的内核堆的基础知识。 概述 Linux kernel 将内存分为 页…

Leetcode 字符串解码

该代码的算法思想可以分为以下几个步骤: 1. 使用栈来处理嵌套结构: 我们需要处理像 k[encoded_string] 这种格式,其中的 encoded_string 可能是嵌套的,即像 3[a2[c]] 这样的输入。因此,我们可以借助 栈(S…

音视频基础知识分享

音视频基础知识分享 RKMedia的各个组件及其交互 首先上图: 考虑到公司业务主要是相机,所以,主要去关注图像数据流,对于音频数据流直接忽略。 图像数据流向: Camera Sensor将光信号转换成电信号(Raw数据&…

【大模型】AI视频课程制作工具开发

1. 需求信息 1.1 需求背景 讲师们在制作视频的过程中,发现录制课程比较麻烦,要保证环境安静,保证录制过程不出错,很容易反复重复录制,为了解决重复录制的工作量,想通过 ai 课程制作工具,来解决…

Rust引用与C++取地址、引用的区别(C++引用、Rust解引用、C++指针)

文章目录 Rust引用与C取地址和引用的比较一、内存安全与管理Rust的内存安全机制C的内存管理 二、引用和取地址Rust的引用C的引用和取地址 三、代码示例比较修改数据的安全性Rust示例C示例 四、结论 Rust引用与C取地址和引用的比较 在程序设计语言的世界里,Rust和C都…

【C++】string类(接口使用详解 下)

我们接着【C】string类(接口使用详解 上)-CSDN博客 继续介绍string的使用。 1.string类对象的修改操作 我们就说一下用的比较多的接口。 1.1 operator 这个接口可以尾插一个字符,或者一个字符串,或者一个对象。 string s1(&qu…

Java—类和对象习题讲解

如果您觉得这篇文章对您有帮助的话 欢迎您一键三连,小编尽全力做到更好 欢迎您分享给更多人哦 目录 习题一: 习题二: 习题三:.import static 能够导入一些静态方法 习题四: 习题五: 习题六&#xff1…

[LeetCode] 415.字符串相加

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。 示例 1: 输入&#xff…

SHELL脚本之数组介绍

shell数组 一.数组介绍 一段连续的内存空间,根据需要可以存多个数据。 变量定义:从内存中申请一段空间,用来存储数据。 如果同一种类型的数据,每一个数据都定义一个变量,当机器对这些变量进行寻址的时候&#xff0…

【Neo4j】- 轻松入门图数据库

文章目录 前言-场景一、Neo4j概述二、软件安装部署1.软件下载2.软件部署3.软件使用4.语法学习 总结 前言-场景 这里用大家都了解的关系数据与图数据据库对比着说,更加方便大家理解图数据库的作用 图形数据库和关系数据库均存储信息并表示数据之间的关系。但是,关系…