KUKA外部自动配置(上)

        通过外部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)传递程序号并处理应用程序

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探索YOLO v11:3D人工智能的RGB-D视觉革命

哈喽,各位OAK中国的朋友们! 大家好我是张伯生 今天,我想给大家演示一下最新发布的Yolo V11神经网络 下面我将演示的一个程序是:同时在我们的OAK相机上跑Yolo V11和RGB-D,也就是彩色相机和深度图的一个叠加的一个效果 RGB-D和Yo…

uniapp uni.uploadFile errMsg: “uploadFile:fail

uniapp 上传后一直显示加载中 1.检查前后端上传有无问题 2.检查失败信息 await uni.uploadFile({url,filePath,name,formData,header,timeout: 30000000, // 自定义上传超时时间fail: async function(err) {$util.hideAll()// 失败// err 返回 {errMsg: "uploadFile:fai…

【中国象棋】unity中国象棋自我对弈

中国象棋 一级目录二级目录三级目录 棋类游戏的难度等级自我对弈代码游戏管理器棋子和格子棋子移动类棋子规则类检测将军类悔棋UI类 一级目录 二级目录 三级目录 棋类游戏的难度等级 1、跳棋、五子棋:一星 2、中国象棋、国际象棋:三星 3、围棋&#…

分享一套SpringBoot+Vue民宿(预约)系统

大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue民宿(预约)系统,分享下嘿嘿。 项目介绍 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难&#xff0c…

如何使用Jconsole查看进程里面的多线程的情况

1.代码分析 下面的这个就是使用的我们的start创建新的线程,然后让两个线程交叉运行(这个其实是通过我们的结果打印看出来的),我们可以看到这个hello main和这个hello thread是交叉显示打印输出的; 2.JDK软件包 因为上…

IP地理位置定位系统之应用场景划分

IP地理位置定位系统是一个街道级别的、实时的IP地理位置查询系统。该系统采用超高精度IP实时定位技术,通过网络测量和大数据挖掘,对IP的地理位置和相关属性进行测量,在无需硬件支持的条件下,即可对被探测目标终端IP完成定位。 应…

二叉树刷题(JAVA)

引入: 递归是一种在函数定义中使用函数自身的方法。它是一种常见的编程技巧,用于解决可以被分解为相同问题的子问题的问题。 递归函数通常包含两个部分:基本情况和递归情况。 基本情况是指递归函数停止调用自身的条件。当满足基本情况时&a…

流体力学笔记

目录 1、名词2、湍流与涡流3 涡激振动4 压力面与吸力面参考:[空气动力学的“他山之石”](https://zhuanlan.zhihu.com/p/412542513) 1、名词 转列:transition 涡脱落:vortex shedding 涡分离:vortex rupture 气动噪声&#xff1a…

代码训练营 day39|0-1背包问题,LeetCode 416

前言 这里记录一下陈菜菜的刷题记录,主要应对25秋招、春招 个人背景 211CS本CUHK计算机相关硕,一年车企软件开发经验 代码能力:有待提高 常用语言:C 系列文章目录 第九章 动态规划part03 文章目录 前言系列文章目录第九章 动态…

GDAL+C#实现矢量多边形转栅格

1. 开发环境测试 参考C#配置GDAL环境,确保GDAL能使用,步骤简述如下: 创建.NET Framework 4.7.2的控制台应用 注意: 项目路径中不要有中文,否则可能报错:can not find proj.db 在NuGet中安装GDAL 3.9.1和G…

达梦数据库性能优化

1、SQL执行计划 拿到一条SQL的时候,首先要下达梦手册中提出的有效SQL规范,及是否命中了特殊OR子句的不规范,是否用了复杂的正则表达式,避免重复很高的索引,UINON ALL 是否可以替换UNION操作等,某些场景INSTR函数导致的…

ParallelsDesktop20最新版本虚拟机 一键切换系统 游戏娱乐两不误

让工作生活更高效:Parallels Desktop 20最新版本虚拟机的神奇之处 大家好!👋 今天我要跟大家安利一款让我工作效率飞升的神器——Parallels Desktop 20最新版本虚拟机。作为一个日常需要在不同操作系统间来回穿梭的人,这款软件简直…

【升华】python基础包NumPy学习

NumPy是使用Python进行科学计算的基础软件包。除其他外,它包括: 功能强大的N维数组对象。精密广播功能函数。集成 C/C和Fortran 代码的工具。强大的线性代数、傅立叶变换和随机数功能。 # 1、安装包 $ pip install numpy# 2、进入python的交互式界面 $…

从零开始学PHP之helloworld

前言 每一门编程语言的第一个程序就是输出hell world(别杠,杠就是你对) 开始 上一篇讲完了开发环境的安装,这次讲编辑器的安装,顺带完成上一篇的作业(输出hello world) 安装PHPstorm 我用的…

前端布局与响应式设计综合指南(末)

​🌈个人主页:前端青山 🔥系列专栏:Css篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Css篇专栏内容:前端布局与响应式设计综合指南(末) 目录 61、为什么要初始化CSS样式 62、CSS3 有哪些新特性 63、…

【python】NumPy(三):文件读写

目录 ​前言 NumPy 常见IO函数 save()和load() savez() loadtxt()和savetxt() 练习 前言 在数据分析中,我们经常需要从文件中读取数据或者将数据写入文件,常见的文件格式有:文本文件txt、CSV格式文件(用逗号分隔&#xff…

vue-router钩子中调用ElMessage等样式出错

升级 vue3.5 时遇到奇怪的问题, 页面点击离开没反应 经过排查, 是以下几点相互作用导致此问题 vue 有应用上下文的概念, 例如 runWithContext API,vue-router 在调用钩子时会获取 vue 的应用上下文element-plus 在唤起弹窗时会从 parent 或 应用上下文上拿到 config 信息eleme…

大数据环境 hbase+ phoenix idea

1、选择jdk 2、添加驱动 3、添加数据源

【精选】基于javaweb的流浪动物领养系统(源码+定制+开发)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

《重置MobaXterm密码并连接Linux虚拟机的完整操作指南》

目录 引言 一、双击MobaXterm_Personal_24.2进入,但是忘记密码。 那么接下来请跟着我操作。 二、点击此链接,重设密码。 三、下载完成后,现在把这个exe文件解压。注意解压要与MobaXterm_Personal_24.2.exe在同一目录下哦,不然…