ProEasy机器人:运动+通讯相关说明

----------------机械手运动-------

--常用指令:MovP弧线运动、MovL直线运动

MovP(1) --弧线轨迹运动到一号点

MovP(2) --弧线轨迹运动到二号点

MovL(1) --直线轨迹运动到一号点

MovL(2) --直线轨迹运动到二号点

-----拱形运动

MovP(1 .. P.Z(-3000)) --弧线轨迹移动到1号点安全高度上方

MovP(1) --弧线轨迹移动到1号点

MovP(1 .. P.Z(-3000))

MovP(2 .. P.Z(-3000)) --弧线轨迹移动到2号点安全高度上方

MovP(2) --弧线轨迹移动到2号点

MovP(2 .. P.Z(-3000))

MovL(1 .. P.Z(-3000)) --直线轨迹移动到1号点安全高度上方

MovL(1) --直线轨迹移动到1号点

MovL(1 .. P.Z(-3000))

MovL(2 .. P.Z(-3000)) --直线轨迹移动到2号点安全高度上方

MovL(2) --直线轨迹移动到2号点

MovL(2 .. P.Z(-3000))

--拱形指令函数封装

--MovP拱形

function Arch_P(Point,Height) --Point:要移动的点位,Height:拱形最高安全高度

_,Here = motion.GetFeedbackPosition(1) --获取当前位置

MovP(Here .. P.Z(Height)) --当前位置抬高到安全高度

MovP(Point .. P.Z(Height)) --移动到目标点安全位置

MovP(Point) --移动到目标点

end

Arch_P(1,-3000) --拱形弧线移动到1号点,安全高度为-3000

Arch_P(2,-3000)

--MovL拱形

function Arch_L(Point,Height) --Point:要移动的点位,Height:拱形最高安全高度

_,Here = motion.GetFeedbackPosition(1) --获取当前位置

MovL(Here .. P.Z(Height)) --当前位置抬高到安全高度

MovL(Point .. P.Z(Height)) --移动到目标点安全位置

MovL(Point) --移动到目标点

end

Arch_L(1,-3000) --拱形直线移动到1号点,安全高度为-3000

Arch_L(2,-3000)

--动作轨迹优化,在运动指令中可以加PASS指令来平滑过渡运动轨迹,对于机械手运动效果和CT时间都有明显的提升,例如:

MovP(1 .. P.Z(-3000),"PASS") --弧线轨迹移动到1号点安全高度上方

MovP(1) --弧线轨迹移动到1号点

MovP(1 .. P.Z(-3000),"PASS")

MovP(2 .. P.Z(-3000),"PASS") --弧线轨迹移动到2号点安全高度上方

MovP(2) --弧线轨迹移动到2号点

MovP(2 .. P.Z(-3000),"PASS")

--注意: MovP与MovL之间是不同运动指令,不能加PASS,机械手左右手的时候,只能用MovP,不能用MovL

MovP(1 .. P.Z(-3000),"PASS") --弧线轨迹移动到1号点安全高度上方

MovP(1) --弧线轨迹移动到1号点

MovP(1 .. P.Z(-3000)) --MovP与MovL之间不能加PASS

MovL(2 .. P.Z(-3000),"PASS") --直线轨迹移动到2号点安全高度上方

MovL(2) --直线轨迹移动到2号点

MovL(2 .. P.Z(-3000),"PASS")

----------------机械手通讯-------

--常用通讯:IO通讯、TCP------MODBUS通讯、TCP------Socket(无协议)通讯、232/485通讯

--IO通讯,相关指令:User_DI()、User_DO

repeat until User_DI(1) == 1 --等待取料信号

MovP(1 .. P.Z(-3000))

MovP(1)

User_DO(1,1) --关闭夹爪

DELAY(0.2)

MovP(1 .. P.Z(-3000))

User_DO(2,1) --发送取料完成

repeat until User_DI(2) == 1 --等待放料信号

MovP(2 .. P.Z(-3000))

MovP(2)

User_DO(1,0) --打开夹爪

DELAY(0.2)

MovP(2 .. P.Z(-3000))

User_DO(3,1) --发送放料完成

--TCP------MODBUS通讯,相关指令:ModbusRead16()、ModbusWrite16()

repeat until ModbusRead16(0x2000) == 1 --等待取料信号

MovP(1 .. P.Z(-3000))

MovP(1)

User_DO(1,1) --关闭夹爪

DELAY(0.2)

MovP(1 .. P.Z(-3000))

ModbusWrite16(0x2001,1) --发送取料完成

repeat until ModbusRead16(0x2003) == 1 --等待放料信号

MovP(2 .. P.Z(-3000))

MovP(2)

User_DO(1,0) --打开夹爪

DELAY(0.2)

MovP(2 .. P.Z(-3000))

ModbusWrite16(0x2004,1) --发送放料完成

--TCP------Socket(无协议)通讯,相关指令:FreePort.ECM_OpenAsClient()、FreePort.ECM_Tx()、FreePort.ECM_Rx()、FreePort.ECM_CloseAll()、FreePort.ECM_ChkConnect()、FreePort.ECM_Clear()

function open_client_Vision() --连接视觉服务器 打开以太网作为客户端

repeat

FreePort.ECM_CloseAll() --关闭所有链接

FreePort.ECM_Clear(1) --清楚端口数据

DELAY(0.2)

open_result = FreePort.ECM_OpenAsClient(1,"192.168.1.11",6000,nil,nil) --识别号:1,链接ip:192.168.1.11,端口号:6000,开始符与结束符:nil

DELAY(0.2)

open_result = FreePort.ECM_ChkConnect(1) --检查链接状态

until open_result == 0

print("Link OK" .. "\n")

end

function Send_Out_Vision(value) --发送内容给视觉

repeat

send_result = FreePort.ECM_Tx(1,value) --发送value到识别号1的服务器

until send_result == 0

print("SendPC:" .. value .. '\n')

end

function Receive_Vision() --接收视觉发过来的内容

repeat

c_status_pc,return_text_pc,text_l_pc = FreePort.ECM_Rx(1) ---接收PC发送过来的分BIN结果

until return_text_pc ~= "" --CMD_L>0

print("ReceivePC:" .. return_text_pc .."\n") ---------------打印接收到的消息

return return_text_pc

end

open_client_Vision() --连接视觉服务器 打开以太网作为客户端

MovP(1 .. P.Z(-3000))

MovP(1)

User_DO(1,1) --关闭夹爪

DELAY(0.2)

MovP(1 .. P.Z(-3000))

::AA:: --NG跳转标签

Send_Out_Vision("A1") --发送拍照信号给视觉

Data1 = Receive_Vision() --接收视觉发过来的内容(带有分隔符字符串类型)

Data = string.split(Data1,",") --以指定的分隔符","来分割字符串,返回的是数组

if Data1 == "NG" then

goto AA

end

X_Vision = Data2*1000 --X坐标

Y_Vision = Data3*1000 --Y坐标

C_Vision = Data4*1000 --C坐标

Point = P.new(X_Vision,Y_Vision,-10000,0,0,C_Vision,0,0,0,0,0,0,0) --创建新点位

MovP(Point .. P.Z(-3000))

MovP(Point)

User_DO(1,0) --打开夹爪

DELAY(0.2)

MovP(Point .. P.Z(-3000))

相关推荐
江畔柳前堤35 分钟前
roLabelImg 详细安装教程
开发语言·人工智能·后端·云原生
阿里云大数据AI技术44 分钟前
分链路差异化设计的DSP准实时数仓|钛动科技基于阿里云实时计算 Flink 版 + DLF Paimon + EMR Serverless StarRocks 的实践
人工智能·flink
陕西企来客44 分钟前
2026年7月AI智能搜索曝光趋势研判
大数据·人工智能·机器学习·ai智能搜索曝光
阿里云大数据AI技术2 小时前
从算力到智能体,面向 Agentic AI 的基础设施演进
人工智能·agent
hangyuekejiGEO2 小时前
GEO技术服务选型指南
大数据·人工智能·python
阿里云大数据AI技术2 小时前
EMR Serverless Spark AI Function 的双维降本实践
人工智能·sql·spark
维基框架3 小时前
GitHub源码处理提速 一趟扫描反而更慢
人工智能·github
冬奇Lab3 小时前
代码库知识库系列(05):向量检索 vs 知识图谱——加了调用图并没有变更好
人工智能
AKAMAI3 小时前
你的源服务器可能是你做出的最昂贵决定
运维·人工智能·云计算
冬奇Lab3 小时前
【无标题】
人工智能·开源