KUKA EKI功能Socket通讯
Posted 东莞机器人之家
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KUKA EKI功能Socket通讯相关的知识,希望对你有一定的参考价值。
淘宝搜索工业机器人1号店,获取更多机器人实用资料
点击蓝色字体加关注,猩猩用心分享每一篇好文
通过KUKA机器人的EtherNetKRL软件功能包实现同外界智能设备或者上位机进行基于TCP/IP的Socket通讯,以便进行数据交互处理。
必备的软件选项
1,特性:
KUKA机器人相对于其他机器人socket不同的是,无论收发数据均是将.XML文件进行发送并且也是由XML进行配置连接的。
2,可连接数量
3,开始配置XML连接文件
KUKA手册带有5个示例的XML文件模板,作为应用阶段不做过多的说明。选取其中的BinaryStream.xml文件来进行修改使用。此文件需要放在指令目录,具体如下:
添加随机附带的程序示例BinaryStream.src程序到KRC TP文件夹中,当然可以随意放置在其他程序文件夹中,便于项目规范以及自己查找。
常用指令:
RET=EK1_Init(CHAR[]) -----初始化连接
RET=EK1_Open(CHAR[]) -----打开连接
RET=EK1_Close(CHAR[]) -----关闭连接
RET=EK1_Clear(CHAR[]) -----清空连接数据,退出连接
RET=EK1_Send(CHAR[],CHAR[],INT)-----发送数据
参数CHAR[]1:连接通道名称
参数CHAR[]2:定义发送数据的范围
INT:最大发送数据数量
RET=EK1_GetString(CHAR[],CHAR[],CHAR[])-----从存储器读取字符串
参数CHAR[]1:连接的通道名称
参数CHAR[]2:XML结构中的位置名称或原始数据中的元素名称
参数CHAR[]3:从存储器中读取的字符串最大字符数量
Strfind:搜素字符串功能函数
StrToReal:字符转实数
以下是实际的同视觉项目示例代码,仅供参考:
&ACCESS RV
&REL 1
&PARAM DISKPATH = KRC:\R1\Program
&PARAM SensorITMASK = *
&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
DEF BinaryStream( )
;FOLD Declaration
;变量声明,注意此处 CHAR Bytes[]需要和XML文件中的变量想对应
INT i
DECL EKI_STATUS RET
CHAR Bytes[64]
;此处定义声明至全局变量中$config.dat
DECL INT CL1
DECL INT CL2
DECL CHAR CCD_X[20]
DECL CHAR CCD_Y[20]
DECL REAL VISION_XX
DECL REAL VISION_YY
;**********************************
;ENDFOLD (Declaration)
;FOLD INI
;FOLD BASISTECH INI
BAS (#INITMOV,0 )
;ENDFOLD (BASISTECH INI)
;FOLD USER INI
;Make your modifications here
;ENDFOLD (USER INI)
;ENDFOLD (INI)
;FOLD Initialize sample data
FOR i=(1) TO (64)
Bytes[i]=0
ENDFOR
;ENDFOLD (Initialize sample data)
RET=EKI_Init("BinaryStream")
;初始化连接“BinaryStream”
RET=EKI_Open("BinaryStream")
;打开连接“BinaryStream”
Bytes[]="Stream ends with CR,LF"
;将需要发送的字符串写入到Bytes[]中
RET = EKI_Send("BinaryStream",Bytes[])
;将Bytes[]中的内容通过“BinaryStream”连接的XML结构文件发送出去
;并且返回出RET的状态(也就是True或者FALSE)
WAIT FOR $FLAG[1]
;等待接收数据标志(视觉发送数据需要“+CRLF”结尾)
RET=EKI_GetString("BinaryStream","Buffer",Bytes[])
;将接收到的字符串数据存入到Bytes[]
$FLAG[1]=FALSE
;清除接收数据后的标志
RET=EKI_Close("BinaryStream")
;关闭连接“BinaryStream”
RET=EKI_Clear("BinaryStream")
;清空连接“BinaryStream”
CL1=STRFIND(1,Bytes[],"1",#CASE_SENS)
;对Bytes[]字符串进行搜索,从第1个字节开始截止到搜索到“1”并且返回为“1”的字节数位置CL1
FOR i=1 To (CL1-1)
CCD_X[i]=Bytes[i]
ENDFOR
;通过循环赋值,从第1个字节到搜索到的位数CL1-1的字节转存到CCD_X[]字符串中
CL2=STRFIND(CL1+1,Bytes[],"1",#CASE_SENS)
;对Bytes[]字符串进行搜索,从第CL1+1个字节开始截止到搜索到“1”并且返回为“1”的字节数位置CL2
FOR i=1 To (CL2-1)
CCD_Y[i]=Bytes[i+CL1]
ENDFOR
;通过循环赋值,将CL1+1开始到CL2-1的字节数据转存到CCD_Y[]字符串中
OK=STRTOREAL(CCD_X[],VISION_XX)
OK=STRTOREAL(CCD_Y[],VISION_YY)
;将字符串数据转换成实数缓存至变量VISION_XX
;将字符串数据转换成实数缓存至变量VISION_YY
END
小编太懒了,内容缓慢更新中.....
对于工业机器人感兴趣的小伙伴,可以扫描下方二维码进入微信群聊......
文章都看完了不点个 吗
以上是关于KUKA EKI功能Socket通讯的主要内容,如果未能解决你的问题,请参考以下文章