type
status
date
slug
summary
tags
category
icon
password
Link
Description
前言:
搜集分享关于埃斯顿机器人的实战应用操作机器人
🧑💻软件
由于埃斯顿机器人更新较快本地址仅为个人使用如发生不匹配请联系官方。
虚拟离线示教器
2024年以后的机器人电柜
🕮说明书教学手册
埃斯顿基本指令快速上手手册
📽学习视频
埃斯顿自动化官方微信公众号学习平台点击跳转观看
我B站帐号的埃斯顿收藏夹搜罗了B站比较优秀的博主讲解埃斯顿课程
IP更改
第一步
第二步
第三步
第四步
第四步
📠通讯
⚠⚠⚠通讯部分操作复杂非专业认识请联系官方远程操作
EIP通讯(需要激活)
MULTIPROG示教点位案例
(*
Prog_State 1:运行 2:暂停 3:停止
SystemMode 1:手动 2:自动 3:远程
CurCoordType 当前坐标系 1:关节 2:世界 3:工具 4:用户
HMI_flag HMI控制权限
Enable_flag 上使能标志位
Err_flag 报警标志
MOVE_MODE 运动模式
P_NUM P变量序号
P_WRITE_DONE P变量写入成功
*)
(***PLC>>机器人)
ReadADATA:=INT_TO_STRING( P_NUM,'%d');
ReadName := CONCAT('P',ReadADATA);
(*自动示教整个点位)
IF P_NUM > 0 AND SystemMode =1 AND Prog_State <> 1 AND HMI_flag = TRUE AND Err_flag = FALSE THEN
ER_TeachPosVar_1(Enable:=EIP_READ_BYTE[2].X0,ERC_PosVarName:=ReadName,
ERC_VarScope:=INT#1);
END_IF;
(*写入CPOS点)
Cpos_Data_1[0]:= SIMAI_CONNECT[15];
Cpos_Data_1[1]:= SIMAI_CONNECT[16];
Cpos_Data_1[2]:= SIMAI_CONNECT[17];
Cpos_Data_1[3]:= SIMAI_CONNECT[18];
Cpos_Data_1[4]:= SIMAI_CONNECT[19];
Cpos_Data_1[5]:= SIMAI_CONNECT[20];
Cpos_CfgData_1[0]:= REAL_TO_DINT(SIMAI_CONNECT[8]);
Cpos_CfgData_1[1]:= REAL_TO_DINT(SIMAI_CONNECT[9]);
Cpos_CfgData_1[2]:= REAL_TO_DINT(SIMAI_CONNECT[10]);
Cpos_CfgData_1[3]:= REAL_TO_DINT(SIMAI_CONNECT[11]);
Cpos_CfgData_1[4]:= REAL_TO_DINT(SIMAI_CONNECT[12]);
Cpos_CfgData_1[5]:= REAL_TO_DINT(SIMAI_CONNECT[13]);
Cpos_CfgData_1[6]:= REAL_TO_DINT(SIMAI_CONNECT[14]);
IF P_NUM > 0 (AND SystemMode =1) AND Prog_State <> 1 AND HMI_flag = TRUE AND Err_flag = FALSE THEN
ER_SetCposData_1(Enable:=EIP_READ_BYTE[2].X1,ERC_CposName:=ReadName,ERC_VarScope:=INT#1,Cpos_Data:=Cpos_Data_1,Cpos_CfgData:=Cpos_CfgData_1);
END_IF;
(***机器人>>PLC)
(P变量写入成功)
P_WRITE_DONE := ER_SetCposData_1.DONE OR ER_TeachPosVar_1.Done;
EIP_WRITE_BYTE[2].X0 := P_WRITE_DONE;
(机器人当前位置)
ER_GetCurCpos_1(Enable:=TRUE);
CurCpos_1[0]:=ER_GetCurCpos_1.CPOS_X;
CurCpos_1[1]:=ER_GetCurCpos_1.CPOS_Y;
CurCpos_1[2]:=ER_GetCurCpos_1.CPOS_Z;
CurCpos_1[3]:=ER_GetCurCpos_1.CPOS_A;
CurCpos_1[4]:=ER_GetCurCpos_1.CPOS_B;
CurCpos_1[5]:=ER_GetCurCpos_1.CPOS_C;
ER_GetCurCposCfg_1(Enable:=TRUE);
CurCposCfg_1[0]:=ER_GetCurCposCfg_1.CPOS_CFG_mode;
CurCposCfg_1[1]:=ER_GetCurCposCfg_1.CPOS_CFG_cf1;
CurCposCfg_1[2]:=ER_GetCurCposCfg_1.CPOS_CFG_cf2;
CurCposCfg_1[3]:=ER_GetCurCposCfg_1.CPOS_CFG_cf3;
CurCposCfg_1[4]:=ER_GetCurCposCfg_1.CPOS_CFG_cf4;
CurCposCfg_1[5]:=ER_GetCurCposCfg_1.CPOS_CFG_cf5;
CurCposCfg_1[6]:=ER_GetCurCposCfg_1.CPOS_CFG_cf6;
ER_GetCurJpos_1(Enable:=TRUE);
CurJpos_1:=ER_GetCurJpos_1.Apos_Data;
IF CurCoordType = 1 THEN
SIMAO_CONNECT[8] := REAL#0.0;
SIMAO_CONNECT[9] := REAL#0.0;
SIMAO_CONNECT[10] := REAL#0.0;
SIMAO_CONNECT[11] := REAL#0.0;
SIMAO_CONNECT[12] := REAL#0.0;
SIMAO_CONNECT[13] := REAL#0.0;
SIMAO_CONNECT[14] := REAL#0.0;
SIMAO_CONNECT[15] := CurJpos_1[0];
SIMAO_CONNECT[16] := CurJpos_1[1];
SIMAO_CONNECT[17] := CurJpos_1[2];
SIMAO_CONNECT[18] := CurJpos_1[3];
SIMAO_CONNECT[19] := CurJpos_1[4];
SIMAO_CONNECT[20] := CurJpos_1[5];
ELSE
SIMAO_CONNECT[8] := DINT_TO_REAL(CurCposCfg_1[0]);
SIMAO_CONNECT[9] := DINT_TO_REAL(CurCposCfg_1[1]);
SIMAO_CONNECT[10] := DINT_TO_REAL(CurCposCfg_1[2]);
SIMAO_CONNECT[11] := DINT_TO_REAL(CurCposCfg_1[3]);
SIMAO_CONNECT[12] := DINT_TO_REAL(CurCposCfg_1[4]);
SIMAO_CONNECT[13] := DINT_TO_REAL(CurCposCfg_1[5]);
SIMAO_CONNECT[14] := DINT_TO_REAL(CurCposCfg_1[6]);
SIMAO_CONNECT[15] := CurCpos_1[0];
SIMAO_CONNECT[16] := CurCpos_1[1];
SIMAO_CONNECT[17] := CurCpos_1[2];
SIMAO_CONNECT[18] := CurCpos_1[3];
SIMAO_CONNECT[19] := CurCpos_1[4];
SIMAO_CONNECT[20] := CurCpos_1[5];
END_IF;
P_NUM :=REAL_TO_INT( SIM_AI_01_32[16]);
ReadADATA := INT_TO_STRING( P_NUM,'%d');
ReadName := CONCAT('P',ReadADATA);
ER_TeachPosVar_1(Enable:=(SIMDI_BYTE_01_32[31].X2),ERC_PosVarName:=(ReadName),ERC_VarScope:=vacscope );
tbusy :=ER_TeachPosVar_1.Busy;
tdone:=ER_TeachPosVar_1.Done;
terror :=ER_TeachPosVar_1.Error;
terrorid:=ER_TeachPosVar_1.ErrorID;
三菱MC通讯
基恩士上位链通讯
modbus通讯
👩🏼💻实际案例
🌐官方案例
跳转官方网页点击不同行业查看埃斯顿机器人相关案例👇👇
🌐官方资料下载
跳转官方网页搜索机器人型号即可下载相关模型说明书👇👇
👨💻程序案例
案例程序
程序软plc
(*
(获取当前笛卡尔坐标实时值**)
ER_GetCurCpos_1(Enable:=TRUE);
SIM_AO_01_32[11]:=ER_GetCurCpos_1.CPOS_X;
SIM_AO_01_32[12]:=ER_GetCurCpos_1.CPOS_Y;
SIM_AO_01_32[13]:=ER_GetCurCpos_1.CPOS_Z;
SIM_AO_01_32[14]:=ER_GetCurCpos_1.CPOS_A;
(获取当前关节坐标实时值**)
ER_GetCurJpos_1(Enable:=TRUE);
CUSAPOS:=ER_GetCurJpos_1.Apos_Data;
SIM_AO_01_32[7]:=MOVE(CUSAPOS[0]);
SIM_AO_01_32[8]:=MOVE(CUSAPOS[1]);
SIM_AO_01_32[9]:=MOVE(CUSAPOS[2]);
SIM_AO_01_32[10]:=MOVE(CUSAPOS[3]);
(点位的赋值程序名的赋值**)
P_NUM :=REAL_TO_INT( SIM_AI_01_32[16]);
proname:=DWORD_TO_STRING(DWORD1_32[13],'%x');
project := CONCAT('ESTUN.',proname);
ReadADATA := INT_TO_STRING( P_NUM,'%d');
ReadName := CONCAT('P',ReadADATA);
vacscope := 3 ;
(示教当前点**)
ER_TeachPosVar_1(Enable:=SIMDI_BYTE_01_32[31].X2,ERC_PosVarName:=ReadName,ERC_VarScope:=vacscope );
tbusy :=ER_TeachPosVar_1.Busy;
tdone:=ER_TeachPosVar_1.Done;
terror :=ER_TeachPosVar_1.Error;
terrorid:=ER_TeachPosVar_1.ErrorID;
(读取某点位的当前关节点坐标值**)
ER_GetAposData_1(Enable:=SIMDI_BYTE_01_32[31].X5,ERC_APosName:=ReadName,ERC_APosScope:=vacscope);
SIMDO_BYTE_01_32[1].X4:=ER_GetAposData_1.Busy;
(* :=ER_GetAposData_1.Done; )
( BOOL:=ER_GetAposData_1.Error; *)
error1:=ER_GetAposData_1.ErrorID;
CUSA:=ER_GetAposData_1.Apos_Data;
SIM_AO_01_32[1]:=MOVE(CUSA[0]);
SIM_AO_01_32[2]:=MOVE(CUSA[1]);
SIM_AO_01_32[3]:=MOVE(CUSA[2]);
SIM_AO_01_32[4]:=MOVE(CUSA[3]);
(读取某点位的当前笛卡尔坐标值**)
ER_GetCposData_1(Enable:=SIMDI_BYTE_01_32[31].X5,ERC_CPosName:=ReadName,ERC_CPosScope:=vacscope);
SIMDO_BYTE_01_32[1].X4:=ER_GetCposData_1.Busy;
error2:=ER_GetCposData_1.ErrorID;
CUSC:=ER_GetCposData_1.Cpos_Data;
SIM_AO_01_32[5]:=MOVE(CUSC[0]);
SIM_AO_01_32[6]:=MOVE(CUSC[1]);
SIM_AO_01_32[15]:=MOVE(CUSC[2]);
SIM_AO_01_32[16]:=MOVE(CUSC[3]);
(加载程序**)
ER_LoadProgram_1(Enable:=SIMDI_BYTE_01_32[31].X3,PrjAndProgName:=project);
SIMDO_BYTE_01_32[31].X0:=ER_LoadProgram_1.Done;
(* BOOL:=ER_LoadProgram_1.Error;*)
error3:=ER_LoadProgram_1.ErrorID;
ER_Reset_1(Enable:=SIMDI_BYTE_01_32[31].X6);
busy1:=ER_Reset_1.Busy;
done1:=ER_Reset_1.Done;
error18:=ER_Reset_1.Error;
error5:=ER_Reset_1.ErrorID;
👨💻故障排查
电池报警
本地版
网页版
编码器线的排查
其他应用
vnc软件改ip
单轴回零
点位就近规划路径
码垛万能程序公式(可用在所有机器人的程序套用)
floor:取整 %:取余数或fmod
put.x = P:base.x + ((P:IT0.value - 1)%4)*100
:这行代码在计算要放置箱子的x坐标。(P:IT0.value - 1)%4
计算的是当前箱子在单层中的列位置(范围从0到3)。然后乘以箱子的宽度(即100),得到箱子相对于基础点的x坐标。
put.y = P:base.y + (floor((P:INTO.value - 1)/4))*100
:这行代码在计算要放置箱子的y坐标。floor((P:INTO.value - 1)/4)
计算的是当前箱子在单层中的行位置。然后乘以箱子的长度(即100),得到箱子相对于基础点的y坐标。
put.z = P:base.z + (floor((P:INTO.value - 1)/16))*100
:这行代码在计算要放置箱子的z坐标。floor((P:INTO.value - 1)/16)
计算的是当前箱子所在的层数。然后乘以箱子的高度(即100),得到箱子相对于基础点的z坐标。
所以这段代码的目的是根据箱子的数量和位置,计算出每个箱子在堆垛中的坐标。每层有4x4,即16个箱子。每个箱子的尺寸为长100,宽100,高100。
P:IT0.value
和 P:INTO.value
是用来追踪当前箱子的位置和数量的关于埃斯顿机器人二次开发的高级功能
埃斯顿机器人需要利用软plc进行底层二次开发通讯。试用主流的绝大多数通讯,本人测试EIP和modbus的二次开发功能
本资料库为个人收藏整理使用,开源对外开放,仅供参考。。如有错误请下方留言指出一起学习进步。。
有错误的地方欢迎埃斯顿大佬底部评论区留言,相关机器人案例投稿可发我邮箱[email protected]一起交流,网站内容会持续丰富更新,欢迎收藏关注~
- 作者:Robot_Qu
- 链接:https://robotqu.com/article/estun
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。