Tag Archives: Robot

用于工业机器人位置检测的旋转变压器 – Resolver

工业机器人使用的伺服电机中有一种部件,用于检测电机的角位移,称之为旋转变压器 (Resolver)。图片中是ABB工业机器人常用的伺服电机中使用的一种旋转变压器,型号 TS2640N141E172 。关于旋转变压器具体怎么使用,这里不讨论,这里 LT 只想讨论与工业机器人实际使用过程中相关的话题,那就是机械零点同步。

左边的是定子,右边的是转子,旋转变压器的定子安装固定在电机的壳体(定子)上,转子固定在电机轴上,与电机转子一起转动。独特的设计,可以使转子做到无刷结构。在上篇文章《工业机器人的运动停止-刹车测试》里,LT 曾贴出一个伺服电机的剖面图(link),从中可以了解其安装结构。

在 LT 接触工业机器人时间不是很长的时候,写过一篇日志《机械零点和同步》,这篇文章更多谈的是机械零点的同步,而不是校准。而@于仁颇黎 的一篇文章《零位校准》则是机械零点的校准。机械零点的校准,是任何一个机器人出厂前要做的工作,这个话题可参考@于仁颇黎的文章。而机械零点的同步则是用户使用过程中有时候需要进行的操作。

问题一:为什么需要机械零点的同步呢?

这个问题就和开头提到的旋转变压器有关。因为旋转变压器组成的编码器系统只能检测旋转变压器转子一个圈内的位置,即0度~360度。当机器人各轴位于机械零点时,系统记录的旋转变压器转子的圈数为0,当旋转变压器转子进入第二圈后,又开始从0度起步,这个时候系统就要进行一次计数,计数为1。当某种原因,系统不知道旋转变压器已经转了几圈了,这个时候控制器就要发出信息: 我不知道你转几圈了! 从而发生机械零点同步丢失的情况。机器人使用者需要进行的操作就是手动把机器人各轴移动到机械零点标识处,重新同步。ABB的称之为 Revolution Counter Update(转数计数器更新)。

我们来想象一下,假如机器人某个轴要在300度范围内转动,再假设减速系统的减速比是100 ( 请查找 RV减速器的减速比 ),那么电机就需要转动300*100=30000度,相当于30000/360=83圈多。如果换成绝对值编码器,只要范围合适,就不存在同步的问题。但是,为什么不采用绝对值编码器呢? 这个问题请自行思考。

问题二:在@于仁颇黎的文章里提到 “将机器人的各个关节移动到零位附近的一定位置内,内部程序就会自动将其校准到正确的零位”  或者 也许你也听某人说过同步时机械零位对准的误差范围可以在3度之内。这又是怎么回事呢?

还是和旋变编码器有关,因为系统可以读出旋转变压器的转子在一圈之内的度数,即0~360度,360度的范围经过减速系统的变速比后,旋转变压器转动一圈,机器人的轴转动360/100=3.6度(假设变速比为100),只要在一圈内,同步时,系统都会认为是第0圈,就是这么回事。如果同步时,零位对准的偏差范围落到了旋转变压器转的第二圈里,那就会产生误差了。

思考: 

1、如果变速比越大, 那么做零点同步时允许的误差就越小。

2、如果有不同的负载 ,那么对做零点同步有何影响呢?

扩展阅读:

  • P.S.在ABB Robot S4C+ 随机光盘中,有个文件RobInst.pdf 描述了保存Counter值的文件


    The root directory of the mass storage memory is called hd0a. In the root directory,
    hd0a there are several different components:
    - The control system package, which is named as an article number, similar to
    3HAC6811-1.00
    - bin, which is the BootImage code
    - BootRom.sys, which is the system configuration and description file for the mass
    storage memory
    - MC.cfg, which is the network configuration for the main computer
    - ctrl.bin, which hold e.g. revolution counter values
    - system.dir, which holds information on the current system
    - system directories, which are the different systems stored in the mass storage
    memory.

什么是工业机器人的TCP

“要确定一个刚体在空间的位姿,须在物体上固连一个坐标系,然后描述该坐标系的原点位置和它三个轴的姿态,总共需要六个自由度或六条信息来完整地定义该物体的位姿。”

上面这段话是摘自[美] Saeed B. Niku 著的《机器人学导论——分析、系统及应用》 中文版第48页的内容。想象一下,一个物体在空间可以在X\Y\Z三个方向平动,也可以围绕着X/Y/Z转动,这就是为什么有6个自由度的原因了。工业机器人使用的途径就是要装上工具(TOOL)来操作对象,那么如何描述工具在空间的位置呢,显然,方法就是在工具上绑定(定义)一个坐标系即工具坐标系TCS  (Tool Coordinate System),那么这个TOOL坐标系的原点就是所谓的 TCP点 (Tool Center Point) 工具中心点。在机器人轨迹编程时,就是将工具在另外定义的工作坐标系中的若干位置X/Y/Z和姿态Rx/Ry/Rz记录在程序中。当程序执行时,机器人就会把TCP点移动到这些编程的位置。

无论是何种品牌的工业机器人,事先都定义了一个工具坐标系,无一例外地将这个坐标系XY平面绑定在机器人第六轴的法兰盘平面上,坐标原点与法兰盘中心重合。显然,这时TCP就在法兰盘中心。不同品牌的机器人有不同的称呼,ABB机器人把这个工具坐标系称为tool0,REIS机器人称之为 _tnull。

下图拿 REIS 的机器人3D模型 RV10-6 来说明,为了突显出默认的工具坐标系,特将模型的本体做了透明化处理。(这个图片是从REIS的软件ProVis里截取出来的)


虽然可以直接使用这个默认的TCP,但是在实际使用时,用户显然希望自己来定义自己的TCP点来更好的操作对象,比如焊接时,用户希望把TCP点定义到焊丝的尖端,那么程序里记录的位置便是焊丝尖端的位置,记录的姿态便是焊枪围绕焊丝尖端转动的姿态。

下图是一个新的工具坐标系的例子,仅向Z轴方向平移,形成的新的坐标系。

为了更好的理解,请观看下面的视频 (ABB RobotStudio):

http://v.youku.com/v_show/id_XMzEyNzkxMjI4.html

实际上,用户自定义TCP时,是定义了新的tool 坐标系原点在tool0坐标系中的位置,以及新tool坐标系在tool0坐标系中的姿态。如果考虑到动力学因素,还要定义工具的质量、重心、转动惯量。以便更好地使机器人在真实物理世界空间中运动。

扩展阅读:

将刹车研究进行到底 – 再谈ABB机器人如何做刹车测试

在前面一篇文章《工业机器人的运动停止-刹车测试》里,LT提到IRC5的safemove组件具有自动刹车测试(Automatic Brake test)的功能。但是 SafeMove White Paper 仅仅是概念性地讲了一下。要获得更具体的内容,可以参见 ABB RobotStudio 5.14 的帮助文件 SafeMove.chm,这个前面 LT 在介绍RS5.14时(《ABB RobotStudio 新版本 5.14 初接触》)已经推荐过,见下图,关于 safemove详细特性,可在此 chm文档里阅读获取。其实,为啥说起chm,因为 LT 手里面没有pdf 版本的safemove文档啊,这个才是主要原因 -_-!  另外提一点,ABB也把实现safemove的硬件称之为 Safety Controller 。(*注1)


在这个手册里,刹车测试被称为 “Cyclic Brake Check” ,功能描述也与白皮书里描述的有所区别,在白皮书里描述刹车测试时如果轴有移动会产生stop0,而在这个chm文档里面是说如果轴有移动则系统切换到reduced speed模式。这是原话

The brake check is initiated by the robot controller or an external PLC. The robot moves to a safe position where the brakes are locked with servos engaged. The motors of the robot are then used to generate torque. If any axes moves, the system is set in reduced speed mode. A new successful brake check must be performed before the robot can be used again with normal speeds.With a defined interval (brake cycle time), the robot must move to the safe position and perform a brake test. If the brake check is not performed within the brake cycle time an error message is generated, and depending on configuration the robot will be set to reduced speed or keep its normal supervision levels. A warning appears on the FlexPendant a predefined time (prewarning time) before the brake cycle time has passed.

软件细节我们暂且不考虑,下面来分析硬件是如何实现自动刹车测试的。在《浅谈工业机器人的运动停止》里提到过 “ 而对于伺服电机驱动器的供电模式,工业机器人电气系统的典型结构是串联两个接触器,而这两个接触器的吸合放开控制,由机器人的安全电路模块来控制” 。另外,刹车电源电路同样经过这两个接触器。当这两个接触器吸合时,给后部电路的刹车电源同时也接通了。后部电路就依据不同品牌的机器人就不同了,比如有的品牌的机器人,每个轴都是单独一个驱动器来驱动,那么这个轴的电机的刹车就由对应的驱动器来控制。而ABB机器人不是这样的结构,ABB的一个驱动器可以驱动2~3个轴,比如小型的机器人,2个驱动器就可以驱动6个轴了。而刹车电路呢,在两个接触器后面又串接了另外一个接触器,我们称之为刹车接触器吧。这样,如果想要解开abb机器人的刹车,那么三个接触器都要吸合才能构成通路。

当然刹车自动测试也只是IRC5以后才出来的产物,而且还是safemove带来的,也就是说IRC5在safemove之前没有这个自动测试的功能,但是既然能加入了 safemove而能自动测试,那么说明了IRC5的硬件结构满足了这个特性(这一段话很拗口….)。这个确实从电气结构上说得过去。

分析下面的IRC驱动模块电气图(*注2)

K43和 K42就是前面所说的两个接触器,K44就是所谓的刹车接触器。机器人工作时的顺序应该是这样的,操作使motor on 时,安全条件满足的情况下,K43和K42吸合,给驱动部分供电,与此同时,驱动部分检测L1L2L3电压是否正常,如果正常则吸合K44,从而电机刹车得电被松开。

LT 推测 其自动刹车测试应该是这样运作的:(注意是推测,因为LT并没有实际拿一个IRC5测试验证过

当自动刹车测试请求时,K43和K42保持吸合状态,这样驱动部分仍得电,而K44被断开,刹车线圈失去电压,刹车抱死电机。控制系统开始给电机一个旋转力矩,与此同时safety controller 在一个时间间隔内监测电机的位置是否发生变化,如果超出了公差范围,那么就表明电机的刹车有问题了。

以前 LT 在思考这个自动刹车测试如何运作时,曾很是想不通,为什么呢,因为 LT前面的工作虽然是ABB工业机器人的维护工作,但是只限于S4/S4C/S4C+的型号,IRC5型号并没有实际使用维护过,从而导致S4C系列形成的观念影响了思考。那么有什么区别呢?区别就在于上图的绿色方框部分。在S4C+的电气结构里,这个地方还是与刹车接触器有关的,请看下图,多了两组触点和两个电阻

如果 IRC5 还保持这样的结构,那么上面推测自动刹车测试的过程就不能成立了。

 

*注1   Safety controller, DSQC 647 (3HAC026272-001)

*注2   IRC5 Product Manual  3HAC021313-001_revH_en   page372

相关文章

将刹车研究进行到底 – 继续谈ABB机器人的刹车特性

前几日,在浏览 ABB Software User Forum 时,发现一个这样的帖子 “CLICK” SOUND OF THE ROBOT,提问者 dhyan 发现他家的机器人有个现象,就是在机器人执行过程中,并且电机状态是motor on时,如果机器人不动作超过一定时间段,会听见机器人本体内传来“嗒”的声音。跟帖里osku回复了他说这是abb机器人刹车激活时的现象(激活即刹车将电机轴抱死)。并且指出这是一个设置参数,其名称为 Brake On Time,默认是120秒。意即当机器人不动作超出120S时,刹车自动释放,以便节省电力和延长电机寿命。

Brake On Time defines the time from when the robot stops to activation of the mechanical brakes. This time should be kept high to maintain the reliability of the servo at high level.  注*

LT 以前也修改过这个参数,修改的原因说起来倒是很有意思。话说当时 LT 当时做的工作就是ABB工业机器人的维护工作,但是机器人的系统有时候也象电脑一样麻烦,那就是重装系统,重装完机器人的系统,将备份的参数恢复后,还有一项工作就是修改这个刹车激活时间到最大值。前面已经介绍过,这个特性能节能还能延长电机寿命,为啥要修改呢?哼哼,如果不修改的话,当时间到达时,俺们现场的机器人就有可能慢慢瘫了,比如第2轴,比如第3轴,原因是现场的电机是修理过的,有些电机进油导致刹车有些失效-刹不住了,这也是为什么要进行刹车测试的目的,参见文章《工业机器人的运动停止-刹车测试》。

那么这个参数在什么地方设置呢,从S4/S4C/S4C+/IRC5都有这个参数设置,以IRC5设置为例 Control Panel->Configuration->Topics:Motion->Motion Planner ,如下图,可以看到默认值是120S,而且是各个轴分开设置的(这点LT就很困惑了,各个轴分开设置,难道是说各个轴刹车可以分别控制了?)

至于 dhyan 在帖子里提到的 Case-1 和 Case-2 反映的问题,osku 也给了建议,建议他检查电机刹车是否能正常工作。刹车线圈通上24V直流电后,线圈产生的磁力应该能克服弹簧弹力而将摩擦片分开,使电机转子正常运转不受阻力。如果摩擦片不能很好并且及时分开的话,就会引发报电机过载的错误。

注*   《User’ Guide》 7.8  Servo parameters

扩展阅读:

“CLICK” SOUND OF THE ROBOT http://www.robotstudio.com/forum/forum_posts.asp?TID=5149

工业机器人的运动停止-刹车测试

好莱坞大片《危情时速》讲述了一个高速的火车在无人掌控的情况下,逐渐加速,直至速度大到怎么也停不住的故事,又名《煞不住》。结局当然是我们的美国英雄克服重重艰辛,进入列车控制室,把刹车手柄拉下。就这么简单。刹车能不重要?!下面我们要谈谈运动的工业机器人怎么能有效停下来。在目前的工业机器人系统中,机械部分运转动力来源还是伺服电机。下图就是一种伺服电机的剖面图。

其机械制动就是依靠电机里面的刹车机构(见下图,以某个KUKA机器人培训PPT中的截图来说明,本文目前只讨论机械刹车),当发生 stop 0 的运动停止时,就依靠刹车来制动。如果,刹车失效的话?在该停的时候没能停下来,有可能就会发生像7.23动车追尾一样的严重事故。刹不住导致高速撞击将会让机器人和工件工具甚至现场人员承受不可预料的后果,尽管发生这类情况的几率很小。

 

所以相关的工业机器人都提到一个安全测试-刹车测试,目的是在可控的状况下,检测电机的刹车是否能正常运作。那具体是怎么样的呢?我们来查阅最出名的工业机器人品牌ABB,其产品 IRB7600 的产品手册,找到了 Brake Testing 一节。

ABB的手册 是这样来描述 how to test 的: 1、 移动机器人各轴到承受重力最大的位置;2、在控制柜上操作使电机Motor OFF,即使电机掉电;3、检查机器人是否偏离了步骤1的位置。由此来判刹车功能是否正常。如果没有移动,那么刹车就是完好的。(注1*

1.2.3.4. Brake testing
When to test
During operation the holding brake of each axis motor wear normally. A test may be performed to determine whether the brake can still perform its function.

How to test
The function of the holding brake of each axis motor may be checked as detailed below:
1. Run each manipulator axis to a position where the combined weight of the manipulator arm and any load is maximized (max. static load).
2. Switch the motor to the MOTORS OFF position with the Operating mode selector on the controller.
3. Check that the axis maintains its position.
If the manipulator does not change position as the motors are switched off, then the brake function is adequate.

 

那么,我们怎么知道机器人是否偏离了步骤1的位置呢?ABB 的产品手册上没有详细介绍,难道就是用肉眼看了?汗 -_-!

随后 LT 在查阅 ABB 工业机器人 safemove 白皮书时,发现 ABB 介绍 safemove 过程中,对刹车检测做了详细的介绍。

5.4 Brake check

The brake check is initiated by the robot controller or an external PLC. The robot moves to a safe position where the brakes are locked with the servos engaged. The motors of the robot are then used to generate a torque. If the robot moves, a category 0 stop occurs and a successful brake check must be performed before the robot can be used again.

With a defined interval (brake cycle time), the robot must move to the safe brake position and activate a switch. If the brake check is not performed within the brake cycle time, the robot is stopped. A warning is shown on the Flexpendant a pre-defined time (pre-warning time) before the brake cycle time has passed. A Cyclic Brake Check can be configured to show a warning but not stop the robot.

 

检测原理就是让机器人移动到一个安全位置,电机刹车释放,然后让电机产生一个扭矩,如果机器人某个轴的电机移动(转动)超出了设定的允许范围,那么表示刹车测试失败。一个机器人重新使用前必须做刹车测试。在 page 30 出指出 safemove 具有 “Automatic Brake test” 功能(注2*)。

思考:当发生emergency stop (E-stop) 时,工业机器人应该执行 stop0 还是 stop1 还是 stop2 ?

 

注1:ABB IRB7600 product manual 《3HAC 022033-001 Revision: B》  page29 “1.2.4.4. Brake testing ”

注2:ABB 《SafeMove White Paper 》page19  “5.4 Brake check”

相关文章:

工业机器人的标准

关于机器人的标准。之前, 欧洲的标准是 EN 775 ,美国的标准是 ANSI RIA 1999 ,不过,被新的标准 ISO 10218-1ISO 10218-2 所取代。加拿大的则是 Z434-03

在美国,ISO 10218ANSI RIA 1999 将会同时存在,ANSI RIA 1999 会对 ISO 10218 覆盖不到的地方作补充。

机械控制系统标准 EN ISO 13849-1 替代 EN 954-1

中国的工业机器人安全规范是 GB 11291—1997

<未完>

扩展阅读:
Industry safety standards ANSI RIA 15.06

http://www.robot-forum.com/robotforum/general_discussion/industry_safety_standards_ansi_ria_1506-t6733.0.html

GB 11291—1997
http://www.safetyinfo.com.cn/biaozhun/Biaozhun_2239.html

GB/T20867-2007
http://www.china-safety.org.cn/aqbz_view.asp?D_id=254&keyword=E010

浅谈工业机器人的运动停止

德系的工业机器人系统中,对于机器人停止运动,定义了3种模式,比如 KUKA 的工业机器人分别定义了 Stop 0 ,Stop 1,Stop 2 (*注1)。这种定义模式是与机器人的机械结构和电气结构相关联的。

 

对于此,读者应该先了解工业机器人上伺服电机的结构,以及伺服电机驱动器(放大器)的供电模式。前面 LT 有篇文章介绍了  ABB Robot 电机连接结构 ,机器人的机械制动主要靠伺服电机里面的刹车 (Brake) 机构。一旦刹车释放,伺服电机轴的转动就会受到阻力。(如右图,黑色部分代表刹车,蓝色部分为电机转子,工作时两者分离,制动时两者贴合摩擦。)

而对于伺服电机驱动器的供电模式,工业机器人电气系统的典型结构是串联两个接触器,而这两个接触器的吸合放开控制,由机器人的安全电路模块来控制。

再看如何使运动的机器人停止运动,方法1、 通过驱动器,使电机减速;2、直接切断驱动器供电,释放电机刹车,靠刹车片摩擦来制动。(是不是有点类似汽车驾驶的制动,一种可以用发动机来制动,一种可以打开离合,用脚刹来制动。)

所以两种制动方法结合起来,就组成了机器人的运动停止模式。

  1. Stop 0 直接切断驱动器供电,同时释放刹车。
  2. Stop 1 先驱动器控制减速制动,然后再切断驱动器供电,同时释放刹车。(KUKA是1秒后切断电源 *注2)
  3. Stop 2 只通过驱动器减速制动,不切断驱动器供电,不释放刹车。

考虑一下,对于机器人运动轨迹的影响?答案显而易见的,Stop 0 的停止模式,运动是不受控的,所以机器人停止时,TCP 可能偏移了路径;而Stop 1 和 Stop 2 的模式,运动是受驱动器减速控制的,机器人停止时,TCP 会停在路径上。

P.S.
为什么要介绍这个呢?因为在工业设备使用过程中,安全是个很重要的话题,Bruce (于仁颇黎) 在他的blog中多次提到过安全问题。了解了工业机器人的运动停止模式,那么我们就可以更好的规划现场布局和编制工业机器人程序。在后面的文章,LT 将会用到本文所提到的知识点,敬请期待。

* 注1 :   参考《库卡系统软件 5.2、5.3、5.4 最终用户操作及编程指南》page13~14
* 注2 :  当驱动器制动超时时,会启用stop0

扩展阅读:
ABB:Difference btw Autostop (AS) & General Stop(GS) of safety board
http://www.robot-forum.com/robotforum/abb_robot_forum/difference_btw_autostop_as_general_stopgs_of_safety_board-t6815.0.html

SImulate Emergency Stop (ABB RobotStudio)
http://www.robotstudio.com/forum/forum_posts.asp?TID=4969