当前位置:网站首页>KUKA子程序/函数怎么建立和使用方法
KUKA子程序/函数怎么建立和使用方法
2022-06-29 17:02:00 【用户4442670】
HI各位小伙伴你们好,又到了小农说机器人的时间了。前段时间有人反映说小农越来越懒了,推文也不写技术文章了。听得我是十分的惭愧。所以今天必须来点没啥技术含量的。
kuka
子程序和函数
任何一个程序猿在头发掉光以前都应该学过了什么是子程序和函数。在机器人领域这个概念其实没那么的清晰,kuka机器人当中任何一个程序都可以调用其它的程序,或者这里我们叫做模块,编程人员可以设置一个模块为主程序,哪怕他的名字叫做子程序。
当然还区分全局子程序和局部子程序
全局顾名思义就是谁都能调用的程序叫全局子程序。
局部就是指写在某个模块下面的程序,叫做局部子程序,这个程序只能在该模块下使用。
那么函数这里可以叫做功能块,就是不能执行运动指令的模块并且不能单独运行的功能块。或者简单点叫功能。它没有dat文件,而且会有一个返回值给调用它的程序。
当然也分为全局函数和局部函数啦。
1
子程序/函数
DEF mainPROG( )
;此为主程序
...
END
_______________________________________
DEF PROG1( )
;此为局部子程序 1
...
END
_______________________________________
DEF PROG2( )
;此为局部子程序 2
...
END
_______________________________________
DEF PROG3( )
;此为局部子程序 3
...
END先来看看局部子程序,写在模块END行后面的就是局部子程序啦,在整个文件中子程序是可以被主程序调用的。并且可以互相调用。还可以进行参数的传递。
再来看看局部函数其实就是在DEF后面加上了FCT,并且给予这个函数的返回类型。你可以把他想象成一个会运算的变量。
因为使用的时候需要用一个同类型的变量接收它的返回值
DEF mainPROG( )
;此为主程序
INT I
I = PROG2( )
END
_______________________________________
DEFFCT BOOL PROG1( )
;此为局部子程序 1
...
ENDFCT
_______________________________________
DEFFCT INT PROG2( )
;此为局部子程序 2
...
ENDFCT
_______________________________________
DEFFCT REAL PROG3( )
;此为局部子程序 3
...
ENDFCT了解了局部子程序在看全局子程序就想到容易了。把每个独立的模块直接当成子程序就噢可了
DEF 子程序( )
;这是主程序
主程序( )
ENDDEF 主程序( )
;这是子程序
END所以全局子程序可以很自由的进行调用了。那么在看看全局函数
DEF MAINPROG( )
BOOL B1
B1 = FUNC1( )
ENDDEFFCT BOOL FUNC1()
ENDFCT1
子程序和函数的使用
好像很多朋友更喜欢实例演示,所以话不多说,直接上
DEF MAIN1( )
;这是一个相机的拍照抓取程序
PTP HOME
LOOP ;主循环
PICK1();调用抓取程序1
DROP1();调用放置程序1
PICK2();调用抓取程序2
DROP1();调用放置程序1
ENDLOOP
ENDDEF PICK1( )
;这是抓取程序1
PTP P1
POS_N = CAMERA(1);调用相机拍照,传入拍照程序号,返回位置信息
XPN = PDAT(POS_N);调用计算程序,传入相机获取的位置信息,返回给xpn
PTP XPN;运行到xpn(计算完成的位置)进行抓取工作
GRIP(#CLO)
。。。
END ;完成后返回主程序
_______________________________________
DEFFCT POS PDAT(N);每个程序的计算不同因此建立局部。。。
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
ENDFCTDEF PICK2( )
;这是抓取程序2
PTP P1
POS_N = CAMERA(2);调用相机拍照,传入拍照程序号,返回位置信息
XPN = PDAT(POS_N);调用计算程序,传入相机获取的位置信息,返回给xpn
PTP XPN;运行到xpn(计算完成的位置)进行抓取工作
GRIP(#CLO)
。。。
END ;完成后返回主程序
_______________________________________
DEFFCT POS PDAT( );每个程序的计算不同因此建立局部
。。。
RETURN P
ENDFCTDEF DROP1()
;这是放置程序1
PTP P1
XPN = DDAT( )根据抓取得便宜计算放置的便宜量
PTP XPN
GRIP(#OPN)
。。。
END ;放置完成回到主程序
_______________________________________
DEFFCT POS DDAT( );每个程序的计算不同因此建立局部
。。。
RETURN P
ENDFCTDEFFCT POS CAMERA(N:IN);为更多程序使用所以建立为全局
;这是相机触发程序
$OUT[N] = TRUE
WAIT FOR $IN[N]==TRUE
RETURN SIGNAL_N
ENDFCTDEF GRIP(N:IN)
SWITCH 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)
边栏推荐
- How to configure logback? 30 minutes for you to thoroughly learn the code to stay up late and knock
- Inheritablethreadlocal resolves message loss during message transmission between parent and child threads in the thread pool
- Solid state storage manufacturer Yilian joins dragon dragon community to build a new open source ecosystem
- C语言微博用户管理系统
- Comprehensive analysis of Seata distributed transaction at and XA
- Actual combat | magical conic gradient
- [untitled]
- STM32 key chattering elimination -- Thinking of entry state machine
- 【Oracle】基础知识面试题
- Subgraphs in slam
猜你喜欢

GNN notes: message propagation model

Comment configurer logback? 30 minutes pour apprendre à coder et à frapper tard.

「科普大佬说」AI与创造力

@Component与@Configuration区别

A user level thread library based on C language

可转债策略之---(摊饼玩法,溢价玩法,强赎玩法,下修玩法,双低玩法)

C winfrom chart chart control bar chart and line chart

In depth analysis of Monai (I) data and transforms

Tencent cloud released the upgraded version of CDW Clickhouse to provide a fast experience for massive data real-time analysis scenarios

【 OpenGL 】 Random Talk 1. The camera rotates around a point in the space by dragging the mouse
随机推荐
Paper notes: e (n) equivariant graph neural networks
Why is informatization ≠ digitalization? Finally someone made it clear
有遇到用flink-cdc采集MySQL-RDS的时候,datetime类型的字段,采集过来后和源表
线段树、树状数组模板(复制粘贴确实好用)
Summary of problems during xampp Apache installation
知道创宇为能源行业资产管理助力,入选工信部2021物联网示范项目
A user level thread library based on C language
机器学习7-支持向量机
mysql数据库扫盲,你真的知道什么是数据库嘛
【Oracle】基础知识面试题
NVIDIA安装最新显卡驱动
英联邦国家有哪些
What is the follow-up plan of infotnews | meta in the metauniverse?
Simulink仿真模式
C language microblog user management system
An error is reported in the Flink SQL rownumber. Who has met him? How to solve it?
curl: (56) Recv failure: Connection reset by peer
如何利用OpenMesh实现不同格式的3D文件间的转换
Flutter technology and Practice (1)
6.26CF模拟赛D:黑白条题题解