一、安装机械手软件
如图所示,安装顺序为:先安装第一个,再安装第二个
二、快速认识学习掌握机械手软件重要功能
1.连接机械手
机械手默认出厂的ip为:“192.168.1.1”,在初次连接机械手前,必须把使用连接的电脑修改同一网段,以win11操作系统为例,操作如下
修改完电脑ip后,打开机械手软件,连接机械手,上述提过,机械手默认ip为:“192.168.1.1”,连接方法如图:
2.项目建立
连接好机械手之后,先建立一个新项目,如图
项目创建好之后就是如图下所示
3.机械手寸动与点位表
寸动功能就是用软件手动移动机械手的XYZC空间坐标,并保存相对应的工作点位,以及移动到已保存的点位,如图
上面详细介绍了能够寸动机械手的功能说明,现在我们尝试寸动机械手,以当前的位置保存到1号点,保存功能如图
系统提供的点位数量总共有1024个点,点位的名称与中文描述可以选择不填写,只需要选择好对应的点位编号就行
在保存诸多个点位之后,如果想复查一下之前保存的点位的位置是否正确,就可以使用指令型寸动的功能,总共有四种运动轨迹可以到达目标点,如图
需要注意,MovP/MovL都是XYCZ四个轴同时运动,在移动的过程中谨防撞到其他机构或障碍物,MovArchP/MovArchL指令移动之前,得需要设置拱形的最高位置,这个位置数据也就是机械手绝对位置,如图,以MovArchP为例
上图中-1000(单位um),也就是机械手在移动的时候,先Z轴抬高到-1000um的位置,然后弧形移动到目标点-1000um的上方,最后轴下降到目标点示教的高度,这个移动的轨迹和拱形一样,所以就叫拱形移动
选择好移动指令之后,就开始选择要移动的目标点编号,然后点击移动开关,如图
移动按钮1:鼠标左键长按时机械手移动,松开机械手停止,推荐大家在移动过程中使用此按钮,在机械手过程中如果快要撞机,就可以松开按钮,大大减少撞机风险
移动按钮2:鼠标左键点击一下,机械手直接执行完全部移动过程,不建议新手使用
运动停止按钮:经常搭配移动按钮2使用,谨防移动过过程中撞机,点击直接停止机械手移动动作
最后四个指令的移动速度也可以直接去点击上方速度百分比的滑动开关,如图
点位表是记录每个点XYZC数据与机械手其他数据,如图
除了记录点位数据,也可以修改单个点信息与批量修改多个点信息
修改单个点位信息,如图
批量修改点位信息,比如将图中1-10点位中的Z轴数据统一改为-2504,如图
以上就是寸动与点位表的功能描述,一般两者都是搭配使用
4.IO编辑
IO全程叫做 input output 也就是输入输出,功能就是控制机械手启动停止急停等状态,外部信号交互,控制气缸夹爪等机构,IO分为两块:系统IO和标准IO,
系统DI有8个输入通道,DO8个输出通道,其中9-12通道没有,如图
标准DI有24个输入通道,DO12个输出通道,如图
系统IO中的系统DI是控制机械手启动、停止、暂停、继续、急停、报警清除这些状态,启动就是把程序从OFF状态拉起来变成ON;停止也就是把程序ON变成OFF状态;暂停和继续就是字面意思;急停功能触发后,机械手断掉伺服打开刹车,并停止程序;报警清除也就是清除急停和其他等报警
正常就是启动对应停止,暂停对应继续,急停对应报警清除,这几个信号都是读上升沿信号,只有急停是读状态;机械手复位是一个组合信号:先触发停止保持200ms——关闭延时200ms——其次触发报警清除保持200ms——关闭延时200ms——最后触发启动
系统IO中的系统DO是机械手输出程序运行中、程序暂停中、控制器报警这三个状态
我们先看一下IO接线表
图中DI分别对应六个功能,DO对应三个功能,机械手出厂时,这些功能都没有配置,方便客户自定义,按上图功能配置的方法步骤如下图,先进入工程师模式
有些电脑键盘四个快捷键同事按没反应,第二种方法如图
进入工程师模式后,就可以开始配置系统DIO了,方法如图
对应系统IO接线表中的软件IO功能配置,把系统IO项目功能选择好之后,再次点击DIO功能编辑就行了,需要注意的是所有的接点都是A,也就是常闭,只有急停的接点是B,也就是常开,因为设备通常的急停功能都是常开,如图
标准DIO用来与外部进行信号交互,一般不用配置,都是默认选择使用者规划,直接拿来使用就行了,比如说标准DI有取料信号、放料信号、感应器到位信号等,标准DO有取料完成信号、放料完成信号,控制夹爪气缸等
最后我们了解一下机械手IO接线,接线方式我们常用的都是PNP接线方法,以系统DIO举例
DI公共端接24V,其他针脚接0V
DO中SDO_1+与SDO_1-是对应关系,都要接0V,如果DO输出要控制电磁阀,必须中间转接一个继电器,因为DO自身输出的功率太小,最大才40mA,所以需要一个继电器转接
重要功能就 连接机械手、寸动、点位表、IO编辑,学习掌握这几个功能就够了
三、机械手编程
接下来的机械手编程,会从一些简单的运动和通讯来进行学习,机械手编程语言用的是C语言的衍生语言:Lua语言, 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,变量也不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。
先看一下编写程序的界面长这样
1.简单运动指令编写
—————-机械手运动——-
–速度相关:MovP、MovL
MaxSpdL(2000) –movl最大速度
MaxAccL(20000) –movl最大加速度
SetMovL_MODE(1) –movl运动的速度参数模式
AccL(num) –movl加速度
DecL(num) –movl减速度
SpdL(num) –movl速度
MaxSpdJ(9000) –movp最大速度
MaxAccJ(300) –movp最大加速度
AccJ(num) –movp加速度
DecJ(num) –movp减速度
SpdJ(num) –movp速度
–速度指令封装
function Speed(num) –速度设置
MaxSpdL(2000) –movl最大速度
MaxAccL(20000) –movl最大加速度
SetMovL_MODE(1) –movl运动的速度参数模式
AccL(num) –movl加速度
DecL(num) –movl减速度
SpdL(num) –movl速度
MaxSpdJ(9000) –movp最大速度
MaxAccJ(300) –movp最大加速度
AccJ(num) –movp加速度
DecJ(num) –movp减速度
SpdJ(num) –movp速度
end
–常用指令:MovP弧线运动、MovL直线运动
MovP(1) –弧线轨迹运动到一号点
MovP(2) –弧线轨迹运动到二号点
MovL(1) –直线轨迹运动到一号点
MovL(2) –直线轨迹运动到二号点
以MovP指令为例,我们来简单让机械手动起来,先复制速度参数与运动指令
演示效果如下
下面提供了更多的一些编程程序案例,供大家学习
—–拱形运动
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”)
2.机械手常用通讯
–常用通讯:IO通讯、TCP——MODBUS通讯(0x2000-0x8FFF)、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,1,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))
今天的文章机器人编程软件_机器人视觉要学什么软件分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/83814.html