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 Data[1] == "NG" then

    goto AA

end

X_Vision = Data[2]*1000            --X坐标
Y_Vision = Data[3]*1000            --Y坐标
C_Vision = Data[4]*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))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/142806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode——链表(Java)

链表 简介[简单] 203. 移除链表元素[中等] 707. 设计链表[简单] 206. 反转链表[简单] 24. 两两交换链表中的节点[简单] 19. 删除链表的倒数第 N 个结点 简介 记录一下自己刷题的历程以及代码。写题过程中参考了 代码随想录。会附上一些个人的思路,如果有错误&#…

VB生成UTF-8的URL编码

最近在研发股票软件,涉及到URL字符串的处理。贴出以下代码。 Function GBtoUTF8(szInput) Dim wch, uch, szRet Dim x Dim nAsc, nAsc2, nAsc3 如果输入参数为空,则退出函数 If szInput "" Then GBtoUTF8 szInput Exit Function End If 开始…

前、后端程序员开发常用api接口

顺丰速运开放平台:可以查询顺丰速运的快递信息。京东物流开放平台:可以查询京东物流的快递信息。全国快递物流查询:1.提供包括申通、顺丰、圆通、韵达、中通、汇通等600快递公司在内的快递物流单号查询。2.与官网实时同步更新。3.自动识别快递…

【C++】join ()和detach ()函数详解和示例

简单的来说,join ()方法建立的线程具有阻碍作用,该线程不结束,另一些函数就无法运行。detach ()方法建立的线程,可以和另一些函数同时进行。下面以示例进行详细说明,以帮助大家理解和使用。 目录 join ()detach () jo…

PHP使用文件缓存实现html静态化

<?php // 动态生成的内容 $content "<html><body><h1>time:".date("Y-m-d H:i:s")."</h1></body></html>"; // 静态文件保存路径和文件名 $staticFilePath "file.html"; if(file_exists($s…

Ladybug 全景相机, 360°球形成像,带来全方位的视觉体验

360无死角全景照片总能给人带来强烈的视觉震撼&#xff0c;有着大片的既视感。那怎么才能拍出360球形照片呢&#xff1f;它的拍摄原理是通过图片某个点位为中心将图片其他部位螺旋式、旋转式处理&#xff0c;从而达到沉浸式体验的效果。俗话说“工欲善其事&#xff0c;必先利其…

java实现计数排序

图解 计数排序是一种线性时间复杂度的排序算法&#xff0c;它不基于比较排序&#xff0c;而是根据待排序序列中元素的值来进行排序。 具体的过程如下&#xff1a; 统计序列中每个元素出现的个数&#xff0c;得到一个计数数组count。其中&#xff0c;count[i]表示待排序序列中值…

pandas读写json的知识点

pandas对象可以直接转换为json&#xff0c;使用to_json即可。里面的orient参数很重要&#xff0c;可选值为columns,index,records,values,split,table A B C x 1 4 7 y 2 5 8 z 3 6 9 In [236]: dfjo.to_json(orient"columns") Out[236]: {"A":{"x&qu…

Centos 7rc.local脚本命令开机不执行及指定用户启动的方法

1.开机不启动 在实际生产场景中&#xff0c;我们喜欢在安装了一些软件服务后&#xff0c;将软件设置为开机自启动 配置在/etc/rc.local文件中。直接将软件服务的启动命令写在rc.local文件 注意&#xff1a;编辑完rc.local文件后&#xff0c;一定要给rc.local文件执行权限&#…

exit与return的区别 exit(1)、exit(-1)和exit(0)区别

目录 exit(); 是整个程序的结束。 exit(1)、exit(-1)和exit(0)区别 return();是某个函数的结束&#xff0c;并返回结果。 exit和_exit exit(); 是整个程序的结束。 exit&#xff08;0&#xff09;&#xff1a;正常运行程序并退出程序&#xff1b; exit&#xff08;1&am…

AIGC:使用bert_vits2实现栩栩如生的个性化语音克隆

1 VITS2模型 1.1 摘要 单阶段文本到语音模型最近被积极研究&#xff0c;其结果优于两阶段管道系统。以往的单阶段模型虽然取得了较大的进展&#xff0c;但在间歇性非自然性、计算效率、对音素转换依赖性强等方面仍有改进的空间。本文提出VITS2&#xff0c;一种单阶段的文本到…

Xilinx Kintex7中端FPGA解码MIPI视频,基于MIPI CSI-2 RX Subsystem架构实现,提供工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 MIPI 编解码方案3、本 MIPI CSI2 模块性能及其优缺点4、详细设计方案设计原理框图OV5640及其配置权电阻硬件方案MIPI CSI-2 RX SubsystemSensor Demosaic图像格式转换Gammer LUT伽马校正VDMA图像缓存AXI4-Stream toVideo OutHDMI输出 5、…

Java安全架构 JCA、JCE、JSSE、JAAS

Java语言拥有三大特征&#xff1a;平台无关性、网络移动性和安全性&#xff0c;而Java安全体系结构对这三大特征提供了强大的支持和保证&#xff0c; Java安全体系结构总共分为4个部分&#xff1a; &#xff08;1&#xff09;JCA&#xff08; Java Cryptography Architecture…

工具及方法 - 手机扫条码工具: SCANDIT APP

一般扫个链接使用微信扫一扫即可。扫具体条码&#xff0c;可以在微信里搜索小程序&#xff0c;打开也能扫&#xff0c;得到条码内容。 还有其他方式&#xff0c;比如使用淘宝、百度等APP也可以直接扫码条码&#xff0c;还能得到更多的信息。 使用百度的话&#xff0c;不扫条码…

【洛谷算法题】P5711-闰年判断【入门2分支结构】

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5711-闰年判断【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格式&a…

诡异的bug之dlopen

序 本文给大家分享一个比较诡异的bug&#xff0c;是关于dlopen的&#xff0c;我大致罗列了我项目中使用代码方式及结构&#xff0c;更好的复现这个问题&#xff0c;也帮助大家进一步理解dlopen. 问题复现 以下是项目代码的文件结构&#xff1a; # tree . ├── file1 │ …

2023-11-15 LeetCode每日一题(K 个元素的最大和)

2023-11-15每日一题 一、题目编号 2656. K 个元素的最大和二、题目链接 点击跳转到题目位置 三、题目描述 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。你需要执行以下操作 恰好 k 次&#xff0c;最大化你的得分&#xff1a; 从 nums 中选择一个元素 m 。将选中…

【已解决】ModuleNotFoundError: No module named ‘timm‘

问题描述 Traceback (most recent call last): File "main.py", line 48, in <module> import utils File "/media/visionx/monica/project/stable_signature/hidden/utils.py", line 26, in <module> import timm ModuleNotFound…

C语言从入门到精通之【概述】

#include指令和头文件 例如#include <stdio.h>&#xff0c;我们经常看到C文件最上面会有类似这样的语句&#xff0c;它的作用相当于把stdio.h文件中的所有内容都输入该行所在的位置。实际上&#xff0c;这是一种“拷贝-粘贴”的操作。 #include这行代码是一条C预处理器…

STM32中使用看门狗实现系统自动复位

STM32中的看门狗(Watchdog)是一种用于监控系统运行状态并在系统故障或死锁时执行自动复位的硬件功能。在本文中&#xff0c;我将介绍如何在STM32微控制器中使用看门狗来实现系统的自动复位。下面是详细的解释&#xff1a; 一、看门狗原理简介 看门狗是一种独立的硬件计时器&am…