Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >KUKA子程序/函数怎么建立和使用方法

KUKA子程序/函数怎么建立和使用方法

作者头像
用户4442670
发布于 2022-06-29 08:29:06
发布于 2022-06-29 08:29:06
4.1K01
代码可运行
举报
文章被收录于专栏:机器人小农机器人小农
运行总次数:1
代码可运行

HI各位小伙伴你们好,又到了小农说机器人的时间了。前段时间有人反映说小农越来越懒了,推文也不写技术文章了。听得我是十分的惭愧。所以今天必须来点没啥技术含量的。

kuka

子程序和函数

任何一个程序猿在头发掉光以前都应该学过了什么是子程序和函数。在机器人领域这个概念其实没那么的清晰,kuka机器人当中任何一个程序都可以调用其它的程序,或者这里我们叫做模块,编程人员可以设置一个模块为主程序,哪怕他的名字叫做子程序。

当然还区分全局子程序和局部子程序

全局顾名思义就是谁都能调用的程序叫全局子程序。

局部就是指写在某个模块下面的程序,叫做局部子程序,这个程序只能在该模块下使用。

那么函数这里可以叫做功能块,就是不能执行运动指令的模块并且不能单独运行的功能块。或者简单点叫功能。它没有dat文件,而且会有一个返回值给调用它的程序。

当然也分为全局函数和局部函数啦。

1

子程序/函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEF mainPROG( )
;此为主程序
...
END
_______________________________________
DEF PROG1( )
;此为局部子程序 1
...
END
_______________________________________
DEF PROG2( )
;此为局部子程序 2
...
END
_______________________________________
DEF PROG3( )
;此为局部子程序 3
...
END

先来看看局部子程序,写在模块END行后面的就是局部子程序啦,在整个文件中子程序是可以被主程序调用的。并且可以互相调用。还可以进行参数的传递。

再来看看局部函数其实就是在DEF后面加上了FCT,并且给予这个函数的返回类型。你可以把他想象成一个会运算的变量。

因为使用的时候需要用一个同类型的变量接收它的返回值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEF mainPROG( )
;此为主程序
INT I
I = PROG2( )
END
_______________________________________
DEFFCT BOOL PROG1( )
;此为局部子程序 1
...
ENDFCT
_______________________________________
DEFFCT INT PROG2( )
;此为局部子程序 2
...
ENDFCT
_______________________________________
DEFFCT REAL PROG3( )
;此为局部子程序 3
...
ENDFCT

了解了局部子程序在看全局子程序就想到容易了。把每个独立的模块直接当成子程序就噢可了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEF 子程序( )
;这是主程序
主程序( )
END
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEF 主程序( )
;这是子程序
END

所以全局子程序可以很自由的进行调用了。那么在看看全局函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEF MAINPROG( )
BOOL B1
B1 = FUNC1( )
END
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEFFCT BOOL FUNC1()

ENDFCT

1

子程序和函数的使用

好像很多朋友更喜欢实例演示,所以话不多说,直接上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEF MAIN1( )
;这是一个相机的拍照抓取程序
PTP HOME
LOOP  ;主循环
PICK1();调用抓取程序1
DROP1();调用放置程序1
PICK2();调用抓取程序2
DROP1();调用放置程序1
ENDLOOP
END
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEF PICK1( )
;这是抓取程序1
PTP P1
POS_N = CAMERA1;调用相机拍照,传入拍照程序号,返回位置信息
XPN = PDATPOS_N);调用计算程序,传入相机获取的位置信息,返回给xpn
PTP XPN;运行到xpn(计算完成的位置)进行抓取工作 
GRIP(#CLO)
。。。
END  ;完成后返回主程序
_______________________________________ 
DEFFCT POS PDATN);每个程序的计算不同因此建立局部。。。
P.X = N.X + P.X
P.Y = N.Y + P.Y
P.Z = N.Z + P.Z
P.A = N.A + P.A
P.B = N.B + P.B
P.C = N.C + P.C

RETURN P
ENDFCT
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEF PICK2( )
;这是抓取程序2
PTP P1
POS_N = CAMERA2;调用相机拍照,传入拍照程序号,返回位置信息
XPN = PDATPOS_N);调用计算程序,传入相机获取的位置信息,返回给xpn
PTP XPN;运行到xpn(计算完成的位置)进行抓取工作 
GRIP(#CLO)
。。。
END  ;完成后返回主程序
_______________________________________ 
DEFFCT POS PDAT( );每个程序的计算不同因此建立局部
。。。
RETURN P
ENDFCT
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEF DROP1()
;这是放置程序1
PTP P1
XPN = DDAT( )根据抓取得便宜计算放置的便宜量
PTP XPN
GRIP(#OPN) 
。。。
END ;放置完成回到主程序
_______________________________________ 
DEFFCT POS DDAT( );每个程序的计算不同因此建立局部
。。。
RETURN P
ENDFCT
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEFFCT POS CAMERAN:IN);为更多程序使用所以建立为全局
;这是相机触发程序
$OUT[N] = TRUE
WAIT FOR $IN[N]==TRUE
RETURN SIGNAL_N
ENDFCT
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEF GRIPNINSWITCH N
  CASE #OPN
    OPEN( )
  CASE #CLO
    CLOS( )
ENDSWITCH
END
DEF OPEN( )
$OUT[2]=TRUE
WAIT FOR $IN[2]
END
DEF CLOS( )
$OUT[2]=FALSE
WAIT FOR NOT $IN[2]
END

1

程序解释

洋洋洒洒写了一堆代码,不过聪明的你应该能看出来这是一个程序的框架,所以该如何解释你看着来吧

另外KUKA是有很多的系统函数的,这些函数不需要我们来写,直接拿来用就是了

绝对值ABS(x)

根SQRT(x)

正弦SIN(x)

余弦COS(x)

正切TAN(x)

反余弦ACOS(x)

反正切ATAN2(y,x)

声明时确定字符串长度StrDeclLen(x)

初始化后的字符串变量长度StrLen(x)

删除字符串变量的内容StrClear(x)

扩展字符串变量StrAdd(x,y)

比较字符串变量的内容StrComp( x,y,z)

复制字符串变量StrCopy(x,y)

生成信息Set_KrlMsg(a,b,c,d)

生成对话Set_KrlDLg(a,b,c,d)

检查信息Exists_KrlMsg(a)

检查对话Exists_KrlDlg(a,b)

删除信息Clear_KrlMsg(a)

读取信息缓存器Get_MsgBuffer(a)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器人小农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
子程序
HELLO 各位小伙伴,今天我们来聊聊基础概念,子程序和函数。kuka的编程语言和C很像,也能写出不少功能,所以子程序和函数是我们做机器人的工程师基础技能,所以我们今天来探讨一下子程序和函数,并聊聊它有没有什么高级的用法。
用户4442670
2022/12/05
7300
子程序
全国二级C知识点总结5-函数
l C源程序是由函数组成的,函数由函数首部与函数体组成,函数体包括声明部分和执行语句部分组成。
用户6755376
2019/11/21
2.1K0
小题大做—TCP
TCP是机器人位置运算的一个非常重要的因素,机器人所记录的位置都是记录TCP点在基坐标或者世界坐标系中的位置。 所以tcp的位置至关重要。
用户4442670
2022/06/29
7400
小题大做—TCP
Q&A怎么回HOME
HELLO 各位小伙伴,再来更新一篇Q&A,对了留言的时候还请大家描述相信点,不然我可能不好回答。
用户4442670
2022/06/29
7780
Q&A怎么回HOME
提升Python程序性能的7个习惯
使用局部变量替换模块名字空间中的变量,例如 ls = os.linesep。一方面可以提高程序性能,局部变量查找速度更快;另一方面可用简短标识符替代冗长的模块变量,提高可读性。
小小科
2018/07/31
5870
Python基础3 函数、递归、内置函数
哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。一般用于快速查找和加密算法
py3study
2020/01/08
5200
python装饰器大详解
一.作用域 在python中,作用域分为两种:全局作用域和局部作用域。 全局作用域是定义在文件级别的变量,函数名。而局部作用域,则是定义函数内部。  关于作用域,我们要理解两点: a.在全局不能访问到局部定义的变量     b.在局部能够访问到全局定义的变量,但是不能修改全局定义的变量(当然有方法可以修改)  下面我们来看看下面实例: x = 1 def funx(): x = 10 print(x) # 打印出10 funx() print(x) # 打印出1   如果局部没有定
用户1214487
2018/01/24
6670
Python贪吃蛇小游戏_Python贪吃蛇代码
为了初步学习Python更有兴趣,决定做个学编程大多都会做的小游戏—贪吃蛇,因为是刚刚开始学习,不足之处,希望大家多多指正。
全栈程序员站长
2022/10/04
2K0
Python贪吃蛇小游戏_Python贪吃蛇代码
perf和火焰图使用方法
perf是linux上的性能分析工具,perf可以对event进行统计得到event的发生次数,或者对event进行采样,得到每次event发生时的相关数据(cpu、进程id、运行栈等),利用这些数据来对程序性能进行分析。
嵌入式与Linux那些事
2023/03/24
3.9K0
perf和火焰图使用方法
宏程序的调用方法
② 当 M98 程序段包含其他 NC 指令(如:G01 X100.0 M98 P )时,在该指令执行完后调用子程序,而 G65 则无条件调用宏程序。
lrglu
2022/05/16
2.5K0
宏程序的调用方法
Python函数与码复用
函数是一段代码的表示,它对应了一段具有特定功能的、可重用的语句组,它是一种功能的抽象,它表达特定的含义。在一般编程中,函数有两个作用,它通过函数定义一段功能,可以降低编码难度,同时也可以对一段代码进行复用。
Python学习者
2023/04/28
3890
【重拾C语言】九、再论函数(指针、数组、结构体作参数;函数值返回指针、结构体;作用域)
【重拾C语言】五、模块化程序设计——函数(定义、调用、参数传递、结果返回、函数原型;典例:打印字符图形、验证哥德巴赫猜想)_QomolangmaH的博客-CSDN博客
Qomolangma
2024/07/30
1630
【重拾C语言】九、再论函数(指针、数组、结构体作参数;函数值返回指针、结构体;作用域)
【Python 初级函数详解】—— 参数沙漠与作用域丛林的求生指南
我们知道数学中的函数,我们输入一个数,在通过对应的映射关系得到另一个数,如下图给出了两个简单的数学函数:
换一颗红豆
2025/03/03
700
【Python 初级函数详解】—— 参数沙漠与作用域丛林的求生指南
Q&A-2022/1/25
HELLO 各位小伙伴,看来我们的Q&A还算受欢迎,所以马上来更新一篇,对了留言的时候还请大家描述相信点,不然我可能不好回答。
用户4442670
2022/06/29
8740
Q&A-2022/1/25
【V-REP自学笔记(八)】控制youBot抓取和移动物体
在这一系列的V-REP自学笔记中,我们定了一个小目标,完成一个Demo。使用官方提供的KUKA公司的YouBot机器人模型来实验机器人的感知和控制过程,控制机器人从A点抓取物品,然后移动到B点将物品放置在B点的工作台上,这其中涉及到V-REP环境中的机器人感知和控制过程。没有看过前期学习笔记的读者,可以在文末找到往期文章地址。
博士的沙漏
2020/10/26
2.2K0
【V-REP自学笔记(八)】控制youBot抓取和移动物体
BPF数据传递的桥梁——BPF Map(一)
https://github.com/nevermosby/linux-bpf-learning/tree/master/bpf/bpf-maps
nevermosby
2020/08/25
4.6K0
BPF数据传递的桥梁——BPF Map(一)
python文档:控制流(if,for,函数,lambda等)
可以有零个或多个 elif 部分,以及一个可选的 else 部分。 关键字 ‘elif’ 是 ‘else if’ 的缩写,适合用于避免过多的缩进。 一个 if … elif … elif … 序列可以看作是其他语言中的 switch 或 case 语句的替代。
川川菜鸟
2021/10/18
9080
Python模块化编程-函数#学习猿地
> 函数就是把代码进行封装,以提高代码的重用性,提高开发效率,并且降低了后期的维护成本
学习猿地
2020/03/17
5420
细说Python中的函数不同使用方法
 从程序中我们可以看到其实一个函数是可以有多个返回值的,只要有足够的变量去存储即可
Gorit
2021/12/09
1.3K0
细说Python中的函数不同使用方法
详解Python闭包与装饰器
首先闭包并不仅是一个Python中的概念,在函数式编程语言中应用较为广泛。理解Python中的闭包一方面是能够正确的使用闭包,另一方面可以好好体会和思考闭包的设计思想。
PayneWu
2020/12/18
8480
相关推荐
子程序
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验