线程评级:
  • 0票(s) - 0平均
  • 1
  • 2
  • 3.
  • 4
  • 5
利用RoboDK对发那科CR-15iA / R-30iB控制器的IO进行编程
# 1
你好,

我正试图弄清楚如何解决FANUC R-30iB Plus控制器盒控制的FANUC CR-15iA上的末端执行器(EE) I/O端口。我将使用RoboDK网站上提供的FANUC/RoboDK驱动程序,但似乎没有一个库列出可以调用的各种方法。我希望能遇到一个像“setRO[x]=1”这样的命令,可以在RoboDK流进机器人的KAREL代码中执行。我想在特定的机器人运动中注入这些命令,使KAREL代码看起来像:

J1 xxx J2 xxx J3 xxx
J4 xxx J5 xxx J6 xxx
seto [x] = 1;
等等……

此外,我已经做了一些挖掘后处理方面的事情,并找到了“setDO(io_var, io_value)”命令。我想知道我是否将此函数称为“setDO(1,1)”,如果这会将机器人输出引脚1 (RO[1])设置为EE I/O端口上的1。

关于如何通过RoboDK代码编程FANUC CR-15iA / R-30iB plus控制器的任何信息将不胜感激。

谢谢你!
# 2
(05-04-2022, 07:53 pm)RobotOverlord写道:你好,

我正试图弄清楚如何解决FANUC R-30iB Plus控制器盒控制的FANUC CR-15iA上的末端执行器(EE) I/O端口。我将使用RoboDK网站上提供的FANUC/RoboDK驱动程序,但似乎没有一个库列出可以调用的各种方法。我希望能遇到一个像“setRO[x]=1”这样的命令,可以在RoboDK流进机器人的KAREL代码中执行。我想在特定的机器人运动中注入这些命令,使KAREL代码看起来像:

J1 xxx J2 xxx J3 xxx
J4 xxx J5 xxx J6 xxx
seto [x] = 1;
等等……

此外,我已经做了一些挖掘后处理方面的事情,并找到了“setDO(io_var, io_value)”命令。我想知道我是否将此函数称为“setDO(1,1)”,如果这会将机器人输出引脚1 (RO[1])设置为EE I/O端口上的1。

关于如何通过RoboDK代码编程FANUC CR-15iA / R-30iB plus控制器的任何信息将不胜感激。

谢谢你!

根据我的经验,如果你想使用机器人的EE接口,你必须在机器人中编写程序。你可以使用机器人。运行指令('程序名',robolink.INSTRUCTION_CALL_PROGRAM)来调用你在R-30iB中编写的程序。但是,我只能在T1/T2模式下使用此功能,而不能在AUTO模式下使用。
为了解决这个问题,我修改了我的teach pendant。如果你感兴趣的话。你可以看到我的帖子
//www.sinclairbody.com/forum/Thread-RUNINSTR...nuc-R30-ib
我相信有更好的解决办法,但我还是没有找到。
# 3
谢谢你的回复,Timothy,

我对机器人、控制器和RoboDK的编程语言方面缺乏可用的文档感到非常沮丧。你有没有一个链接,告诉你在哪里找到了像这样的代码的语法:"robolink。“我对工业机器人非常陌生,所以我仍然不知道机器人代码语法或库,甚至不知道我应该使用什世界杯2022美洲预选赛直播么IDE,如果我可以使用RoboDK来编写代码”robolink。INSTRUCTION_CALL_PROGRAM“投入其中。我的编程背景是Arduino和C。
# 4
这里的链接是robodk的命令,它是基于Python的,我认为你会非常“舒服”地用Python编写,因为你有C的背景。
//www.sinclairbody.com/doc/en/PythonAPI/robodk.html
我只使用其中的一些,比如:

连接机器人:
RDK = Robolink()
item = RDK.Item('base')
itemlist = RDK.ItemList
机器人= RDK。ItemUserPick('选择一个机器人',ITEM_TYPE_ROBOT)

要检查机器人是否连接,可以编写一个循环
而真正的:
success = robot.Connect()
time . sleep (X)
status, status_msg = robot.ConnectedState()
= ROBOTCOM_READY:
打印(XXX)
其他:
打破

直接在机器人上执行程序:
RDK.setRunMode (RUNMODE_RUN_ROBOT)
在robodk执行程序:
RDK.setRunMode (RUNMODE_SIMULATE)

设置机器人速度:
机器人。setSpeed(值)


的机器人。setDO'控制数字IO

'robot. movej(关节)','robot. '为了移动机器人,我写了一个函数来做到这一点:
def moverobot1 (x_offset y_offset z_offset):
target_ref = robot.Pose()
pos_ref = target_ref.Pos()
Robot_x = pos_ref[0]+x_offset
Robot_y = pos_ref[1]+y_offset
Robot_z = pos_ref[2]+z_offset
target_i = Mat(target_ref)
target_i.setPos ([robot_x、robot_y robot_z])
robot.MoveL (target_i)

def moverobotj (a_value b_value c_value):
target = robot.Pose()
xyzabc = Pose_2_Fanuc(目标)
X yzabc = xyzabc
Xyzabc2 = [x,y,z,a+a_value,b+b_value,c+c_value]
target2 = Fanuc_2_Pose(xyzabc2)
robot.MoveJ (target2)

'robot.关节()'获取机器人的位置,它返回一个二维列表[[x],[y],[z],[rx],[ry],[rz]],如果你想使用它,你必须将它转换为一维列表:[x,y,z,rx,ry,rz]
joints_org = robot. joint ()
当你把机器人移动到另一个位置,并想回到这个位置时:

'RelTool'移动rx,ry,rz,我不知道怎么解释。你可以尝试一下,你会知道reltool和moveJ之间的区别
target2 = robot.Pose()
target2= RelTool(target2,0,0,0,rz=角度值)
robot.MoveJ (target2)


这个链接是为初学者编写的
//www.sinclairbody.com/forum/Thread-CONNECT-...ht=timothy

这是我对RoboDK的全部了解




浏览此主题的用户:
1客人(年代)