0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

KUKA的程序调用--VSS版本解析

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 作者:机器人及PLC自动化 2021-03-18 10:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

UP/MAKRO程序调用

该指令可用于调用子程序并将子程序调用链接到条件(布尔操作数)。如果需要,可以链接多个操作数(最多11个)。

子程序的调用次数没有限制。

o4YBAGBSttGAZkwZAAA54XUv0yw847.png

UP101 = F78 + F79 激活条件UP101

;%{SE}%MKUKATPVW %CVW_SPS %VUP %P 2:UP101 = F78 + F79,3:UP

;ENDFOLDSEL_RES=SELECT(#UP,101,$FLAG[78] OR $FLAG[79])

REPEAT UP101 N= 999 STOP= !F298 条件满足停止循环调用UP101

SEL_RES=SELECT (#CYC_UP,101,TRUE,#NUM,999,#NOT_F,298,FALSE)

;ENDFOLD

;ENDFOLD

DEFFCT INT SELECT

(SUB :IN,NO :IN,CALL_CND :IN,ARI_OP :IN,ARI_NUM :IN,BOOL_OP :IN,BOOL_NUM :IN,MAKRO_ADV :IN)

SUB : 选择调用的类型UP/makro

NO : 程序号

CALL_CND : 激活条件

ADV_RESULT = 0

IF NOT CALL_CND THEN ---如果不激活就跳步到最后

GOTO PEXIT -----跳步到退出

ENDIF

SWITCH SUB

CASE #UP 使用调用UP

CALLBYSELECT=TRUE

SWITCH NO ;调用UP程序号

CASE 101 ---程序号

UP101( ) 调用UP程序号

CASE 102

UP102( )

CASE 103

UP103( )

CASE 112

UP112( )

CASE 201

UP201( )

CASE 206

UP206( )

DEFAULT

$LOOP_MSG[]=" "

OFFSET = 0

---程序号不能被调用---

SWRITE($LOOP_MSG[],STATE,OFFSET,"UP%D ist nicht vorhanden",NO)

HALT ---程序号不能被调用---使得程序停止

$LOOP_MSG[]=" "

ENDSWITCH

CALLBYSELECT=FALSE

CASE #MAKRO

SWITCH NO ;开始调用MAKRO程序号 --

CASE 0 要激活的程序号

ADV_RESULT= MAKRO0 (MAKRO_ADV) 激活MAKRO0程序

CASE 1

ADV_RESULT= MAKRO1 (MAKRO_ADV) 激活MAKRO1程序

CASE 2

ADV_RESULT= MAKRO2 (MAKRO_ADV)

CASE 3

ADV_RESULT= MAKRO3 (MAKRO_ADV)

CASE 4

ADV_RESULT= MAKRO4 (MAKRO_ADV)

CASE 5

ADV_RESULT= MAKRO5 (MAKRO_ADV)

CASE 6

ADV_RESULT= MAKRO6 (MAKRO_ADV)

CASE 7

ADV_RESULT= MAKRO7 (MAKRO_ADV)

CASE 8

ADV_RESULT= MAKRO8 (MAKRO_ADV)

CASE 9

ADV_RESULT= MAKRO9 (MAKRO_ADV)

CASE 10

ADV_RESULT= MAKRO10 (MAKRO_ADV)

CASE 11

ADV_RESULT= MAKRO11 (MAKRO_ADV)

CASE 12

ADV_RESULT= MAKRO12 (MAKRO_ADV)

CASE 13

ADV_RESULT= MAKRO13 (MAKRO_ADV)

CASE 14

ADV_RESULT= MAKRO14 (MAKRO_ADV)

CASE 15

ADV_RESULT= MAKRO15 (MAKRO_ADV)

CASE 20

ADV_RESULT= MAKRO20 (MAKRO_ADV)

CASE 50

ADV_RESULT= MAKRO50 (MAKRO_ADV)

CASE 57

ADV_RESULT= MAKRO57 (MAKRO_ADV)

CASE 80

ADV_RESULT= MAKRO80 (MAKRO_ADV)

CASE 81

ADV_RESULT= MAKRO81 (MAKRO_ADV)

CASE 82

ADV_RESULT= MAKRO82 (MAKRO_ADV)

CASE 83

ADV_RESULT= MAKRO83 (MAKRO_ADV)

CASE 89

ADV_RESULT= MAKRO89 (MAKRO_ADV)

DEFAULT

$LOOP_MSG[]=" "

-------没有建立的Makro号被调用

OFFSET = 0

SWRITE($LOOP_MSG[],STATE,OFFSET,"Makro%D ist nicht vorhanden",NO)

用来模拟显示: 没有建立的Makro号被调用

HALT -----如果没有号需要停止

$LOOP_MSG[]=" "

ENDSWITCH 结束了MAKRO选择

CASE #CYC_UP -----循环执行UP程序

NR=0

WHILE NOT (CHECK_BOOL(BOOL_OP,BOOL_NUM) OR CHECK_ARI(NR,ARI_OP,ARI_NUM)) CHECK_BOOL/ CHECK_ARI启动功能条件开启

NR=NR+1 从0开始计数大于给定值将不执行循环程序

CALLBYSELECT=TRUE

SWITCH NO ; UP程序号调用

CASE 101

UP101( )

CASE 102

UP102( )

CASE 103

UP103( )

CASE 112

UP112( )

CASE 201

UP201( )

CASE 206

UP206( )

DEFAULT

$LOOP_MSG[]=" "

UP程序号没有被激活的程序号

OFFSET = 0

SWRITE($LOOP_MSG[],STATE,OFFSET,"UP%D ist nicht vorhanden",NO)

HALT 程序号没有使用程序停止

$LOOP_MSG[]=" "

ENDSWITCH

CALLBYSELECT=FALSE

ENDWHILE

CASE #CYC_MAKRO -----循环执行MAKRO程序

NR=0

WHILE NOT (CHECK_BOOL(BOOL_OP,BOOL_NUM) OR CHECK_ARI(NR,ARI_OP,ARI_NUM)) 大于给定值将不执行循环程序

NR=NR+1 从0开始计数大于给定值将不执行循环程序

SWITCH NO -----调用的程序号

CASE 0

ADV_RESULT= MAKRO0 (MAKRO_ADV) 调用执行MAKRO程序

CASE 1

ADV_RESULT= MAKRO1 (MAKRO_ADV)

CASE 2

ADV_RESULT= MAKRO2 (MAKRO_ADV)

CASE 3

ADV_RESULT= MAKRO3 (MAKRO_ADV)

CASE 4

ADV_RESULT= MAKRO4 (MAKRO_ADV)

CASE 5

ADV_RESULT= MAKRO5 (MAKRO_ADV)

CASE 6

ADV_RESULT= MAKRO6 (MAKRO_ADV)

CASE 7

ADV_RESULT= MAKRO7 (MAKRO_ADV)

CASE 8

ADV_RESULT= MAKRO8 (MAKRO_ADV)

CASE 9

ADV_RESULT= MAKRO9 (MAKRO_ADV)

CASE 10

ADV_RESULT= MAKRO10 (MAKRO_ADV)

CASE 11

ADV_RESULT= MAKRO11 (MAKRO_ADV)

CASE 12

ADV_RESULT= MAKRO12 (MAKRO_ADV)

CASE 13

ADV_RESULT= MAKRO13 (MAKRO_ADV)

CASE 14

ADV_RESULT= MAKRO14 (MAKRO_ADV)

CASE 15

ADV_RESULT= MAKRO15 (MAKRO_ADV)

CASE 20

ADV_RESULT= MAKRO20 (MAKRO_ADV)

CASE 50

ADV_RESULT= MAKRO50 (MAKRO_ADV)

CASE 57

ADV_RESULT= MAKRO57 (MAKRO_ADV)

CASE 80

ADV_RESULT= MAKRO80 (MAKRO_ADV)

CASE 81

ADV_RESULT= MAKRO81 (MAKRO_ADV)

CASE 82

ADV_RESULT= MAKRO82 (MAKRO_ADV)

CASE 83

ADV_RESULT= MAKRO83 (MAKRO_ADV)

CASE 89

ADV_RESULT= MAKRO89 (MAKRO_ADV)

DEFAULT

$LOOP_MSG[]=" "

Makro程序号没有被激活的程序号

OFFSET = 0

SWRITE($LOOP_MSG[],STATE,OFFSET,"Makro%D ist nicht vorhanden",NO)

HALT -----程序号没有使用程序停止

$LOOP_MSG[]=" "

ENDSWITCH ---结束选择程序

ENDWHILE ---结束条件

DEFAULT --- 没有UP,MAKRO,CYC_MAKRO,CYC_UP

ENDSWITCH ---结束选择程序

PEXIT: -------跳步退出

RETURN ADV_RESULT

ENDFCT

---检查位用于循环调用---

DEFFCT BOOL CHECK_BOOL(BOOLOP :IN,BOOLOP_NUM :IN)

INT BOOLOP_NUM 位号,数字

DECL BOOL_TYP BOOLOP 各种类型

BOOL STOP_BOOL

SWITCH BOOLOP

CASE #EIN

STOP_BOOL=TRUE ---激活

CASE #AUS

STOP_BOOL=FALSE ---关闭

CASE #E

STOP_BOOL=$IN[BOOLOP_NUM] ---用输入激活

CASE #NOT_E

STOP_BOOL= NOT $IN[BOOLOP_NUM] ---输入取反激活

CASE #A

STOP_BOOL=$OUT[BOOLOP_NUM] ---用输出激活

CASE #NOT_A

STOP_BOOL= NOT $OUT[BOOLOP_NUM] ---用输出的非激活

CASE #M

STOP_BOOL=$CYCFLAG[BOOLOP_NUM] ---用M量激活

CASE #NOT_M

STOP_BOOL= NOT $CYCFLAG[BOOLOP_NUM] ---用M量的非激活

CASE #F

STOP_BOOL=$FLAG[BOOLOP_NUM] 用F量激活

CASE #NOT_F

STOP_BOOL= NOT $FLAG[BOOLOP_NUM] 用F量的非激活

CASE #T

STOP_BOOL=$TIMER_FLAG[BOOLOP_NUM] 用时间量激活

CASE #NOT_T

STOP_BOOL= NOT $TIMER_FLAG[BOOLOP_NUM] 用时间量的非激活

CASE #S

STOP_BOOL=S[BOOLOP_NUM] S量一般不用

CASE #NOT_S

STOP_BOOL= NOT S[BOOLOP_NUM]

ENDSWITCH

RETURN (STOP_BOOL) 条件满足反馈

ENDFCT

-----用于输入数---

DEFFCT BOOL CHECK_ARI(ACT_NR :IN, ARIOP :IN ,ARIOP_NUM :IN)

INT ACT_NR, ARIOP_NUM, MAX_NR

DECL ARI_TYP ARIOP

SWITCH ARIOP

CASE #NUM 直接给入数

MAX_NR=ARIOP_NUM

CASE #COUNT 计数器

MAX_NR=$COUNT_I[ARIOP_NUM]

CASE #BIN 二进制

MAX_NR=$B_OUT[ARIOP_NUM]

CASE #BININ 二进制输入

MAX_NR=ARIOP_NUM

CASE #ANA 模拟量输出

MAX_NR=$ANOUT[ARIOP_NUM]*1000

CASE #ANAIN 模拟量输入

MAX_NR=$ANIN[ARIOP_NUM]*1000

CASE #TIMER 时间控制

MAX_NR=$TIMER[ARIOP_NUM]*0.01

CASE #PROCPAR P值控制

MAX_NR=PROCPAR[ARIOP_NUM]

ENDSWITCH

RETURN (ACT_NR>=MAX_NR) 计数大于给定值.

ENDFCT

;ENDFOLD

;ENDFOLD

编辑:jq

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

    关注

    5045

    文章

    14439

    浏览量

    483511
  • KUKA
    +关注

    关注

    3

    文章

    218

    浏览量

    17356

原文标题:KUKA的程序调用--VSS版本解析

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    VCC、VDD、VEE、VSS对比分析

    =device,表示器件的意思,即器件内部的工作电压。   VSS:S=series,表示公共连接的意思,通常指电路公共接地端电压。  另一种解释:   Vcc和Vdd是器件的电源端
    发表于 12-04 06:28

    淘宝商品详情API接口技术解析与实战应用

    出发,系统解析淘宝商品详情API接口的调用机制、数据结构及典型应用场景,并附上基于Python的完整调用示例,助力开发者高效集成商品数据服务。 关键词 淘宝开放平台;商品详情API;RESTful接口;数据
    的头像 发表于 11-04 09:50 123次阅读

    深入了解系统调用API:探索操作系统底层的关键接口

    一、前言 为什么用户程序不能直接访问系统内核模式提供的服务? 在linux中,将程序的运行空间分为内核空间与用户空间(内核态和用户态),在逻辑上它们之间是相互隔离的,因此用户程序不能访问内核数据
    的头像 发表于 11-03 09:20 428次阅读

    京东商品详情接口实战解析:从调用优化到商业价值挖掘(附避坑代码)

    本文深入解析京东商品详情接口jd.union.open.goods.detail.query,涵盖核心特性、权限限制、关键参数及调用避坑指南。通过实战代码演示数据采集、促销解析与商业分析,助力开发者高效获取价格、库存、评价等全维
    的头像 发表于 10-10 09:28 517次阅读
    京东商品详情接口实战<b class='flag-5'>解析</b>:从<b class='flag-5'>调用</b>优化到商业价值挖掘(附避坑代码)

    VVIC 平台商品详情接口高效调用方案:从签名验证到数据解析全流程

    本文详解VVIC平台商品详情接口调用全流程,涵盖参数配置、签名生成、异常处理与数据解析,提供可复用的Python代码及避坑指南,助力开发者高效实现安全、稳定的数据对接。
    的头像 发表于 09-23 10:28 385次阅读

    在Vivado调用MIG产生DDR3的问题解析

    下面是调用的DDR3模块的,模块的倒数第二行是,模块的时钟输入,时钟源来自PLL产生的系统时钟的倍频。
    的头像 发表于 05-03 10:21 1215次阅读
    在Vivado<b class='flag-5'>调用</b>MIG产生DDR3的问题<b class='flag-5'>解析</b>

    KUKA机器人使用说明书

    电子发烧友网站提供《KUKA机器人使用说明书.pdf》资料免费下载
    发表于 04-17 14:07 1次下载

    库卡KUKA机器人常见故障维修

    1、KUKA机器人伺服电机维修过热原因 ①电源电压过高; ②电源电压过低,电机在额定负载下运行,电流过大使线圈发热; ①修理和拆卸线圈时,热拆卸方法不正确,会烧坏铁芯; ①发动机过载或频繁启动
    的头像 发表于 03-08 09:16 1465次阅读

    KUKA机器人编程说明(英文)

    电子发烧友网站提供《KUKA机器人编程说明(英文).pdf》资料免费下载
    发表于 03-07 14:05 0次下载

    总结篇—VCC、VDD、VSS、GND等是什么意思?(含27条助记口诀)

    1. 含义 VCC:C=circuit 表示电路的意思, 即接入电路的电压; VDD:D=device 表示器件的意思, 即器件内部的工作电压; VSS:S=series 表示公共连接的意思,通常
    发表于 03-06 16:26

    【教程】DNS域名解析服务systemd-resolved使用指南

    客户端•DNS服务器•域名对应的IP地址DNS解析大致过程:•用户在应用程序中使用域名•应用程序调用DNS客户端申请域名解析•DNS客户端向
    的头像 发表于 01-09 19:34 2104次阅读
    【教程】DNS域名<b class='flag-5'>解析</b>服务systemd-resolved使用指南

    DAC7614 vss电压工作异常的原因?

    最近在使用DAC7614时发现如下现象: 供给IC的-5V VSS电压会变成 -1.8V 请问这个现象正常么?如果不正常一般是由哪些原因引起的呢?-5V由LM2776提供.
    发表于 01-06 07:39

    VSS的工作原理解析

    VSS(Visual SourceSafe)是微软公司开发的一款版本控制系统,主要用于软件开发过程中的代码管理。 1. VSS概述 Visual SourceSafe(VSS)是一个基
    的头像 发表于 12-13 16:09 2864次阅读

    VSS遇到的常见错误及解决方法

    Visual SourceSafe(VSS)是一个版本控制系统,由微软开发,用于跟踪文件和项目的历史记录。尽管VSS已经有些过时,但仍有一些团队在使用它。以下是一些VSS用户可能遇到的
    的头像 发表于 12-13 16:08 1829次阅读

    VSS在数据备份中的作用 VSS技术的优势与劣势

    的一项服务,它允许用户创建文件和文件系统的快照,即影子副本。这些快照可以用于数据备份、恢复和分析,而不需要中断当前的文件系统操作。 2. VSS在数据备份中的作用 一致性备份 :VSS能够创建应用程序
    的头像 发表于 12-13 16:03 1652次阅读