上位机直接移动ABB机器人

[复制链接]
查看75837 | 回复0 | 2024-10-16 07:22:54 | 显示全部楼层 |阅读模式








1上位机希望实时获取当前机器人位置(笛卡尔坐标系或者关节坐标),如何实现?

可以通过pcsdk实现,如何获取pcsdk相关dll及添加dll,参考二次开发之安装pcsdk及加载dll

//获取world坐标系下的当前位置double rx;double ry;double rz;RobTarget aRobTarget = controller.MotionSystem.ActiveMechanicalUnit.GetPosition(CoordinateSystemType.World);txt1.Text = aRobTarget.Trans.X.ToString(format: "#0.00");txt2.Text = aRobTarget.Trans.Y.ToString(format: "#0.00");txt3.Text = aRobTarget.Trans.Z.ToString(format: "#0.00");
aRobTarget.Rot.ToEulerAngles(out rx, out ry, out rz);txt4.Text = rz.ToString(format: "#0.00");txt5.Text = ry.ToString(format: "#0.00");txt6.Text = rx.ToString(format: "#0.00");

2. 对于位置数据的赋值,可以使用如下代码
  using (Mastership.Request(controller.Rapid))     {      RapidData rd = controller.Rapid.GetRapidData("T_ROB1", "Module1", "ppos100");       //获取当前位置       RobTarget rbtar = (RobTarget)rd.Value;       rbtar.Trans.X = Convert.ToSingle(txt1.Text);       rbtar.Trans.Y = Convert.ToSingle(txt2.Text);       rbtar.Trans.Z = Convert.ToSingle(txt3.Text);       //对xyz赋值,对姿态数据赋值类似       rd.Value = rbtar;}
3. 机器人侧在自动模式并不直接提供JOG接口,可以在RAPID使用如下代码进行模块指针的移动并控制机器人运动。
    state:=0;        bAxis:=FALSE;        bCart:=FALSE;         ppos100:=pstart;WHILETRUEDO            TEST stateCASE1:                // move in axis coordinateif bAxis=TRUE then                    bAxis:=FALSE;                    MoveAbsJ jpos100\NoEOffs,v100,fine,tWeldGun\WObj:=wobj0;endifCASE2:                // move in Cartesian coordinateif bCart=TRUE THEN                    bCart:=FALSE;                    MoveL ppos100,v100,fine,tWeldGun\WObj:=wobj0;ENDIF            ENDTESTENDWHILE

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则