KUKA机械臂submit解释器将当前位置发送给C#上位机
KUKA机械臂submit解释器将当前位置发送给C#上位机
一、先安装好EthernetKRL选项包,并配置完成
KUKA机械臂使用EthernetKRL配置与C#上位机实现TCP通讯
二、新建一个.sub程序文件
使用WorkVisual或者示教器新建一个.sub程序文件,程序文件位于C:\KRC\ROBOTER\KRC\R1\System此目录下。如下图所示:

ACT_X…ACT_C是定义在**$config.dat**的全局变量,文件目录为C:\KRC\ROBOTER\KRC\R1\System。如下图所示:
ACT_X = $POS_ACT.XACT_Y = $POS_ACT.YACT_Z = $POS_ACT.ZACT_A = $POS_ACT.AACT_B = $POS_ACT.BACT_C = $POS_ACT.C

我这里初始化和打开连接,添加了一个WAIT FOR $IN[1],作为一个外部信号去触发连接服务器。在想要开启通信的时候打开通信并连接。
WAIT FOR ( $IN[1] )RET=EKI_Init("BinaryStream")RET=EKI_Open("BinaryStream")
当$IN[2]为True的时候或者通信状态为False的时候关闭连接,并清理通道。当机器人程序一直运行,服务器关闭的情况下,目的是为了跳出循环,避免出现报连接不上的错误。
IF ( $IN[2] ) OR (NOT RET.Connected) THENRET=EKI_Close("BinaryStream")RET=EKI_Clear("BinaryStream")EXIT
ENDIF
在程序里我加了一个0.2秒的等待,避免数据下发过快。
WAIT SEC 0.2
三、提交submit解释器
SYS是系统默认的一个,EX1所选的是自己编写的.sub程序文件。如下图所示:

启动submit解释,会发现musps.sub程序一直停留在24行,此时程序处于WAIT FOR $IN[1]的语句行,当条件满足的时候,程序就会进入loop循环一直循环,直到$IN[2]为True的时候或者通信状态为False的时候,循环就会退出,然后程序结束。如下图所示:

四、测试
1.运行运动程序
随便写了一个运动主程序,如下图所示:

2.初始化并打开链接
当将$IN[1]置为true时,服务器端显示客户端已连接,并连续接收到客户端发过来的数据。

3.关闭连接
当将$IN[2]置为true时,服务器端显示客户端断开连接,mysps.sub程序运行结束。如下图所示:

