利用RoboDK对发那科CR-15iA / R-30iB控制器的IO进行编程-可打印版本 +- RoboDK论坛(//www.sinclairbody.com/forum) +-论坛:RoboDK(英文)(//www.sinclairbody.com/forum/Forum-RoboDK-EN) +-论坛:RoboDK API (//www.sinclairbody.com/forum/Forum-RoboDK-API) +——线程:使用RoboDK编程发那科CR-15iA / R-30iB控制器的IO/ Thread-Programming-the-IO-of-FANUC-CR-15iA-R-30iB-controller-using-RoboDK) |
利用RoboDK对发那科CR-15iA / R-30iB控制器的IO进行编程-RobotOverlord-05-04-2022 你好, 我正试图弄清楚如何解决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控制器的任何信息将不胜感激。 谢谢你! RE:用RoboDK编程发那科CR-15iA / R-30iB控制器的IO-蒂莫西-05-05-2022 (05-04-2022, 07:53 pm)RobotOverlord写道:你好, 根据我的经验,如果你想使用机器人的EE接口,你必须在机器人中编写程序。你可以使用机器人。运行指令('程序名',robolink.INSTRUCTION_CALL_PROGRAM)来调用你在R-30iB中编写的程序。但是,我只能在T1/T2模式下使用此功能,而不能在AUTO模式下使用。 为了解决这个问题,我修改了我的teach pendant。如果你感兴趣的话。你可以看到我的帖子 //www.sinclairbody.com/forum/Thread-RUNINSTRUCTION-can-t-work-under-auto-mode-with-Fanuc-R30-ib 我相信有更好的解决办法,但我还是没有找到。 RE:用RoboDK编程发那科CR-15iA / R-30iB控制器的IO-RobotOverlord-05-05-2022 谢谢你的回复,Timothy, 我对机器人、控制器和RoboDK的编程语言方面缺乏可用的文档感到非常沮丧。你有没有一个链接,告诉你在哪里找到了像这样的代码的语法:"robolink。“我对工业机器人非常陌生,所以我仍然不知道机器人代码语法或库,甚至不知道我应该使用什世界杯2022美洲预选赛直播么IDE,如果我可以使用RoboDK来编写代码”robolink。INSTRUCTION_CALL_PROGRAM“投入其中。我的编程背景是Arduino和C。 RE:用RoboDK编程发那科CR-15iA / R-30iB控制器的IO-蒂莫西-05-06-2022 这里的链接是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-TO-FANUC-ROBOT-for-beginners?highlight=timothy 这是我对RoboDK的全部了解 |