6.10.4      TCP/IP控制示例

TCP/IP控制即外部设备通过TCP/IP发送远程命令控制机械臂。外部设备作为客户端,机械臂控制器或机械臂控制器软件M1Studio作为服务端,且客户端和服务端的IP地址需在同一网段,如 6.50所示。

6.50  通信流程

 

本节描述如何使外部设备通过TCP/IP发送命令控制机械臂。

前提条件

Ÿ   已通过串口或网线将Dobot M1PC机连接,详细请参见5.2.3 串口连接 5.2.4 网线连接

如果Dobot M1控制器为服务端,则必须通过网线连接。

Ÿ   Dobot M1已上电。

Ÿ   已连接Dobot M1和急停开关。

操作步骤

步骤 1        配置服务端。

为了构建基于TCP/IP网络的远程控制系统,需要建立服务端,我们可以将Dobot M1控制器软件M1Studio所在的PC机作为服务端,也可将Dobot M1控制器作为服务端。服务端Script脚本程序示例如程序 6.1所示(假设脚本名称为“syncServer.script”)。其中,加粗部分是用户可自定义修改的。

Ÿ   如果以Dobot M1控制器软件M1Studio所在的PC机为服务端(假设IP地址为192.168.1.10),Dobot M1可通过串口或网线与PC连接,并将服务端IP地址和端口配置为PC机的IP地址和端口,即HOST, PORT = "192.168.1.10", 50030

其中,端口不能被占用。

Ÿ   如果以Dobot M1控制器为服务端(假设IP地址为192.168.1.20Dobot M1只能通过网线与PC连接,并将服务端IP地址和端口配置为Dobot M1IP地址和端口,例如HOST, PORT = "192.168.1.20", 50030

其中,端口不能被占用。

 

注意

服务端IP地址必须和客户端的IP地址在同一网段。否则,无法进行远程控制。

 

程序 6.1  服务端脚本示例

ssimport socket

import threading

import socketserver

import time

import math

 

class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):

def setup(self):

ip = self.client_address[0].strip()

port = self.client_address[1]

print(ip+":"+str(port)+" is connect!")

 

def handle(self):

while True: # add while for keep link

data = self.request.recv(1024)

if data:

data = str(data, encoding = 'ascii')

if data == 'exit':

break;

OperCMD(data)

#cur_thread = threading.current_thread()

 

#print what recieved

response = bytes("{}".format(data), 'ascii')

self.request.sendall(response)

 

def finish(self):

print("client is disconnect!")

print("stop")

server.shutdown()

exit(0)

class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):

pass

 

def OperCMD(strCMD):

print(strCMD)

 

#decode command type

commandtype = strCMD[ : 3]

print(commandtype)

 

#get the value of command

#    index = strCMD.find(',')

#    tempStr1 = str[index+1 : ]

 

#get X coord

#    index = tempStr1.find(',')

#    tempStr2 = tempStr1[:index]

#    PosX = tempStr2

#    print(PosX)

#    tempStr1 = tempStr2

 

#get Y coord

 

if (strCMD == "exit"):

print("stop")

server.shutdown()

exit(0)

elif (strCMD == "MoveP1" or strCMD == "p1"):      //在客户端输入“MoveP1”或“p1”字符,

则机械臂根据以下运动指令运动

dType.SetArmOrientation(api, 1, 1)

dType.SetPTPCmd(api, 0, 229, 212, 120, 0, 1)

dType.SetARCCmd(api, [62,265,120,50], [-58,266,120,76], 1)

elif (strCMD == "MoveP2" or strCMD == "p2"):       //在客户端输入“MoveP2”或“p2”字符,

则机械臂根据以下运动指令运动

dType.SetArmOrientation(api, 1, 1)

dType.SetPTPCmd(api, 0, 229, 212, 120, 0, 1)

dType.SetARCCmd(api, [62,265,120,50], [-58,266,120,76], 1)

 

HOST, PORT = "192.168.1.10", 50030                 //服务端IP地址和端口

socketserver.TCPServer.allow_reuse_address = True

server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)

ip, port = server.server_address

server_thread = threading.Thread(target=server.serve_forever)

server_thread.daemon = True

server_thread.start()

server.serve_forever()

 

步骤 2        导入Script脚本。

&说明

使用不同的服务端,导入Script脚本的方式不同。请根据实际情况选择。

 

Ÿ   如果以M1Studio所在的PC机作为服务端,则执行以下步骤。

1.         M1Studio界面的串口下拉菜单选择Dobot M1对应串口或IP地址,单击“连接”。

2.         M1Studio的“脚本控制”界面导入服务端的Script脚本,并单击“开始”。

Ÿ   如果以Dobot M1控制器作为服务端,则执行以下步骤。

1.         M1Studio界面的串口下拉菜单选择Dobot M1对应IP地址,单击“连接”。

2.         单击“工具 > 脱机管理 > 上传脱机脚本”,将服务端Script脚本上传至Dobot M1控制器,如 6.51所示。

6.51  上传Script脚本

3.         在“脱机脚本管理”界面选中已上传的Script脚本(syncServer.script),单击“离线运行”,使Script脚本处于离线运行的状态,如 6.36所示。

6.52  脚本状态

 

4.         在脱机管理主界面的“DobotM1模式切换控制”面板下拉菜单选择“脱机模式”,并单击“启动脱机”,如 6.53所示,使Dobot M1处于“脱机模式”状态。

此时机械臂底座蓝色指示灯闪烁。

6.53  Dobot M1状态切换控制

 

步骤 3        配置客户端。

在客户端需输入服务端的IP地址和端口,并单击“连接”,如 6.54所示。

&说明

不同的应用场中,控制机械臂的外部设备不同。在本节示例中,以调试助手作为客户端进行描述,请根据实际情况替换。

 

6.54  配置客户端

 

步骤 4        在客户端的发送区输入“MoveP1”字符串,如 6.55所示。

此时,机械臂会按照Script脚本中设置的指令运动。

6.55  客户端发送指令控制机械臂

 














文档版本V1.2.12019-04-10         用户手册              版权所有 © 越疆科技有限公司