Tag Archives: ABB

用于工业机器人位置检测的旋转变压器 – 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.

将刹车研究进行到底 – 再谈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”

相关文章:

ABB RobotStudio 新版本 5.14 初接触

ABB 发布了最新的Robotstudio 5.14 ,参见相关链接:RobotStudio 5.14 is available  LT下载安装粗粗尝试了下,截取几个界面。

1、带机器人控制器的工作站的界面

2、帮助文件夹,这个是 LT 要推荐的,学软件,最好的文档就是自带的帮助文件。

3、系统内置的机器人类型

 

感兴趣的朋友可以去ABB官方网站下载
30天demo
http://www.abb.com/product/ap/seitp327/049ffeb82687791ec12574b9004958cf.aspx

想加入讨论社区?那就移步
ABB Software User Form http://www.robotstudio.com/forum/default.asp

想看看视频教程?那来这里
RobotStudio Getting Started

http://www.abb.com/product/ap/seitp327/09cc0eb87e25cce6c1257427004e1b0e.aspx
RobotStudio Tutorials

http://www.abb.com/product/ap/seitp327/04a7e77286113ac1c1257427005a5498.aspx

相关文章:
REIS ROBOTICS 的离线编程软件 RobOffice 介绍:
http://www.davidrobot.com/2011/10/roboffice_the-offline-programming-studio_of_reis-robotics.html

20120217 @ABB机器人伙伴:ABB机器人就学校推出了ROBOTSTUDIO的学校版,只要成为ABB认证的学校就可获得ABB机器人在ROBOTSTUDIO授权的支持哦!亲

双臂机器人

也许某一天,类人机器人将从工业机器人领域发展起来。

Motoman Robot

 

Motoman Dual-Arm
型号: DA91C SDA5D SDA10D SDA20D
http://www.motoman.com/products/robots/assembly-robots.php
视频:
http://v.youku.com/v_show/id_XMTc2NjAwNzYw.html

 

DLR Robot

Rollin’ Justin
http://www.dlr.de/rm/en/desktopdefault.aspx/tabid-5471/
视频:
http://v.youku.com/v_show/id_XMjYzMzY1NTIw.html

 

ABB Robot

FRIDA
http://www.abb.com/cawp/abbzh254/8657f5e05ede6ac5c1257861002c8ed2.aspx
视频:
http://www.tudou.com/programs/view/kYLfm4mok5w/

ABB工业机器人对于点位的定义

ABB工业机器人的编程语言 RAPID 中,对于点位的描述,专门有一种数据类型:robtarget ,如下面对于点 Target_10 的定义 :

CONST robtarget Target_10:=[[103.446614369839,177.778223757339,29.9999999999999],[6.07064838351457E-17,-0.130526192220051,0.99144486137381,7.99216021664582E-18],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

其结构解释如下:

< dataobject of robtarget >
< trans of pos >
< x of num >
< y of num >
< z of num >
< rot of orient >
< q1 of num >
< q2 of num >
< q3 of num >
< q4 of num >
< robconf of confdata >
< cf1 of num >
< cf4 of num >
< cf6 of num >
< cfx of num >
< extax of extjoint >
< eax_a of num >
< eax_b of num >
< eax_c of num >
< eax_d of num >
< eax_e of num >
< eax_f of num >(注1)

其中,XYZ是TCP在参考坐标系中的坐标值;q1\q2\q3\q4是四元数来表示TOOL坐标系在参考坐标系中的姿态,有的机器人系统是用欧拉角来表示姿态的的;cf1\cf4\cf6\cfx表示1\4\6\x轴的配置,因为对于一个点,机器人各轴可能有两种以上姿态可以到达;eax_a\~\f 表示外轴的位置。

(未完待续)
注1: 3HAC 16581-1  revG RAPID Instructions, Functions and Data types page 1114

扩展阅读:
Conversion between quaternions and Euler angles
http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles
四元数与欧拉角互换
http://www.cppblog.com/Leaf/archive/2010/12/18/136861.html
四元数,欧拉角和旋转矩阵的各自的优点用途
http://blog.ednchina.com/zhouusong/1616449/message.aspx
四元数的优点和缺点
http://www.cnblogs.com/dcysun/archive/2009/09/28/1576032.html
欧拉旋转
http://v.youku.com/v_show/id_XNzkyOTIyMTI=.html
3D class &四元数
http://blog.sina.com.cn/s/blog_6868676c0100s860.html
ABB机器人与ROBOTSTUDIO之间的沟通问题
http://blog.sina.com.cn/s/blog_645fde9b01011cc3.html