type
Post
status
Published
date
Jul 2, 2021
slug
estun8
summary
tags
category
icon
password
estun8
Link
Description
这里写文章的前言:
利用机器人的远程模式,软plc进行的二次开发的高阶功能。可脱离示教器,进行新界面的开发。本人测试EIP和modbus。威纶通触摸屏、上位机软件。unity的二次开发进行中。。。本内容为高阶内容,为本人调试经验总结,仅供参考,内部资料仅供客户及内部人士学习使用,能力有限,本内容仅供参考,实际以埃斯顿官方为准,下面内容,调试的风险站长不承担任何后果,谨慎使用。未经站长本人允许禁止转发泄露。
📝 注意
首先要注意机器人的版本
1、机器人电柜的版本、机器人内部的版本

二次开发要查看对应的plc版本,要一一对应。
软plc使用安装要严格按照文件要求
EIP通讯测试
对应版本的示例注意要对应版本更换环境
modbus通讯测试
注意事项
测试程序
testFB();
Demo_ER_SIM_IO_1();
(*掉使能)
ER_RobotPowerOff_2(Enable:=SIMDI_BYTE_01_32[1].X1);
TESTAAA:=ER_RobotPowerOff_2.Error;
TEST123:=ER_RobotPowerOff_2.ErrorID;
(上使能**)
ER_RobotPowerOn_2(Enable:=SIMDI_BYTE_01_32[1].X0);
SIMDO_BYTE_01_32[27].X0:=ER_RobotPowerOn_2.Busy;
TESTBBB:=ER_RobotPowerOn_2.Error;
TEST456:=ER_RobotPowerOn_2.ErrorID;
(ER_GetRobPowerOnState_1(Enable:=TRUE);
POWER_STATE:=ER_GetRobPowerOnState_1.robPowerOnState;)
(获取当前笛卡尔坐标实时值**)
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]);
(点位的赋值程序名的赋值**)
(proname:=DWORD_TO_STRING(DWORD1_32[13],'%x');)
P_NUM :=REAL_TO_INT( SIM_AI_01_32[16]);
pronname1:=REAL_TO_INT(SIM_AI_01_32[13]);
proname:=INT_TO_STRING(pronname1,'%d');
(proname:=REAL_TO_STRING(SIM_AI_01_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 );
SIMDO_BYTE_01_32[27].X3:=ER_TeachPosVar_1.Busy;
SIMDO_BYTE_01_32[27].X3:=ER_TeachPosVar_1.Done;
SIMDO_BYTE_01_32[27].X7:=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[27].X2:=ER_GetAposData_1.Busy;
SIMDO_BYTE_01_32[27].X2:=ER_GetAposData_1.Done;
SIMDO_BYTE_01_32[27].X6:=ER_GetAposData_1.Error;
error1:=ER_GetAposData_1.ErrorID;
CUSA:=ER_GetAposData_1.Apos_Data;
(*R_TRIG_1(CLK:=DONE);
SIMDO_BYTE_01_32[27].X1:=R_TRIG_1.Q;*)
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_LoadProgram_1(Enable:=SIMDI_BYTE_01_32[31].X3,PrjAndProgName:=project);
SIMDO_BYTE_01_32[27].X4:=ER_LoadProgram_1.Done;
SIMDO_BYTE_01_32[27].X5:=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;
(点动机器人的坐标系**)
CoordType:=REAL_TO_USINT(SIM_AI_01_32[10]);
ER_SetRobJogCoord_1(Enable:=SIMDI_BYTE_01_32[2].X1,CoordType:=CoordType);
(* BOOL :=ER_SetRobJogCoord_1.Busy;)
( BOOL :=ER_SetRobJogCoord_1.Done;)
( BOOL :=ER_SetRobJogCoord_1.Error;*)
error9:=ER_SetRobJogCoord_1.ErrorID;
(点动机器人**)
jnumb:=REAL_TO_USINT(SIM_AI_01_32[11]);
Direction:=REAL_TO_INT(SIM_AI_01_32[12]);
ER_JogMotion_1(Enable:=SIMDI_BYTE_01_32[2].X0,JointID:=jnumb,JogDirection:=Direction);
(* BOOL :=ER_JogMotion_1.Jogging;)
( BOOL :=ER_JogMotion_1.JogEnd;)
( BOOL :=ER_JogMotion_1.Error;*)
error8:=ER_JogMotion_1.ErrorID;
(全局速度**)
speed:=REAL_TO_LREAL(SIM_AI_01_32[9]);
ER_SetOveride_1(Enable:=SIMDI_BYTE_01_32[1].X7,OverrideFactor:=speed);
(* BOOL :=ER_SetOveride_1.Busy;)
( BOOL :=ER_SetOveride_1.Done;)
( BOOL :=ER_SetOveride_1.Error;*)
error7:=ER_SetOveride_1.ErrorID;
(设置机器人模式)
RobSysMode:=REAL_TO_INT(SIM_AI_01_32[15]);
ER_SetRobotMode_1(Enable:=SIMDI_BYTE_01_32[2].X2,ERC_RobSysMode:=RobSysMode);
(* BOOL :=ER_SetRobotMode_1.Busy;)
( BOOL :=ER_SetRobotMode_1.Done;)
( BOOL :=ER_SetRobotMode_1.Error;*)
error71:=ER_SetRobotMode_1.ErrorID;
🤗 总结归纳
总结文章的内容
📎 参考文章
- 一些引用
- 引用文章
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~






