ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

课程设计- GMC1025 Robotique industrielle (工业机器人) – Projet Cellule fiexible

2022-02-02 13:32:54  阅读:192  来源: 互联网

标签:课程设计 GMC1025 机器人 Palette Projet 托盘 BB机 气动 Poste


该projet是对一个工作站进行编程,完成托盘的装配。该项目涉及四个部分的编程:ABB机器人,气动抓取机器人,柔性传输带,操作面板。项目中运用了FIFO来解决多个订单的配置问题。

这个项目是去年秋季课的两个项目之一。大体来说,项目有些难,但它不难在编程上,而是难在如何利用现有的软硬件完成整套装配流程。至于编程方面,本人几乎独揽SFC部分的编程,甚至还有富余去解决控制面板和ABB部分的编程。

Cahier de charge

Cahier de charge 的中文翻译就是规格表,也就是指需求报告一样的东西。简单的说明下装配流程。

装配流程:

  1. ABB机器人抓取棋盘上的销钉(piges),将其安装在托盘(palettes)上。
  2. ABB机器人将托盘运输至传输带入口(Entrée convoyeur)
  3. 传输带运输托盘到达气动抓取机器人处(Robot chargeur)
  4. 气动机器人根据操作面板指令将托盘送到指定站点进行处理(Poste#1-4)
  5. 处理完毕后气动机器人将托盘送至结束位置
  6. 传输带运输托盘到达传输带出口(Entrée convoyeur)
  7. ABB机器人将处理好的托盘送出工作站(Résevoir#3)

其它要求:

  1. 操作面板可以一次性输入多个托盘指令,且每个托盘可以分别自定义其经过的站点(Poste)
  2. ABB机器人存在操作优先级,始终首先将传输带出口处的托盘送出工作站。
  3. 控制面板,传输带与其余站点要求分别编程,使用I/O信号交换信息。

 

下图为工作站的模型,上文中的法语与图中法语对应。

 

 

 

总体解决方案

编写语言:

ABB机器人:RAPID

其余部分:SFC

相对于仅使用LADDER编程,SFC的加入大大增加了程序的易读性(也从而减少了bug)

 

各站点间通信结构:

 

控制面板 与 传输带 (PanelView&Convoyeur)为主体程序,将会使用FIFO语句FFL储存订单在N_pigeN_poste列表中。

N_pigeN_poste两个list用于储存每个订单中要求拿取的销钉序列号与站点序号

ABB机器人:读取列表N_pige的第一个值(1-6号,有6个销钉),从而抓取指定销钉。

气动抓取机器人:读取列表 N_poste的第一个值(1-5,有四个站点,5号代表结束)。

FIFO语句FFU会确保每个值只被读取一次。

各个工作站之间的一般通信使用I/O信号即可。(signal I/O)

 

下图为演示时所画的示意图:

 

 

 

装配流程解决方案说明

Partie ABB robot

这玩意儿暑期回国实习的时候摸过,不过仅仅是摸了摸,勉强掌握了控制器的基本操作。(单轴运动,线性运动和重定位运动)至于编程部分,看了不少,但是基本没实际操作过。这个项目的ABB编程和暑期HYVA实习时见到的直接在控制器上进行编程不同,是在robotstudio上编程的。课程提供robotstudio上的工作站模型,精确复制了实际工作站ABB机器人部分的全部内容。(其实我觉得是怕我们把机器人玩坏,毕竟就这学期夹具就断了挺多次的…)

 

更换夹具

至于夹具是怎么断的,那就得说说我们遇到的第一个问题了——更换夹具。

由于机器人有两套夹具,分别用于夹销钉(piges)托盘(palettes),因此需要频繁的更换夹具。可以看到图中摆放夹具的支架。正确的卸下夹具的方式为:机器人到达1号位置,将夹具卡入支架,随后向上提起机械臂分离夹具。安装夹具的放式与之相反。光这学期夹具坏了几次,看管实验室那个佬用万能胶修夹具的样子熟练的让人心疼!

 

总的来说ABB机器人的操作部分的难度相对较低,因为可以在robotstudio进行编程,且提供了用于学习的Tutorial。 RAPID编程我是首次接触,但该项目RAPID用的并不多,因为可以robotstudio上通过位置与轨迹点进行编程,仿真成功后再转译成RAPID语句。我们所需要做的只是在后期微调机器人的轨迹,以及码几行代码从而实现与仪表盘的信号交流(例如N_pige)这部分真正的难点在于与工作站的其它成员的信息交流的处理。

 

 

我们暂时离开ABB机器人,看看传输带:

 

 

 1.      传输带入口处的信息交流

 

传输带的入口处只有个气动钳子…所以如何让ABB机器人正确放置托盘呢?

  1. 当ABB机器人将托盘送达气动钳子后,发送信号。(ABB_IRB140 :I.Data[2]=1)
  2. 传输带收到信号,关闭气动钳子,发送完成信号,延时2s。(timer1)
  3. ABB机器人收到信号后在两秒内松开夹具并且离开。
  4. 随后气动钳子松开,托盘进入传输带。Nice job!

SFC图如下:

 

 

阻止器部分

 

托盘继续前进,去往气动抓取机器人处。为了防止多个托盘同时到达抓取机器人下方(阻止器att3前)。苦逼的学生需要妥善利用可怜的两个阻止器(气动阻止杆,Att)和仅仅一个光学传感器(位于第一个阻止器前)来解决托盘的堆积问题。

以下是解决方案,我们甚至只用了两个阻止器就完成了需求:

杆#3处并没有传感器,因此需要与气动机器配合以确定托盘存在与否。

Palette_att1 传输带程序(convoyeur)内的变量,气动抓取机器人程序可以读取它。

Palette_att0 气动抓取机器人内的变量,传输带程序(convoyeur)程序可以读取它。

两个程序互相读取,从而实现了托盘是否存在这个信息的传递。

  1. 初始化,杆#1升起,杆#2恒定放下,杆#3恒定升起。
  2. 若not(absence_b1) 杆#1前有托盘 且 Palette_att1=0 杆#3前无托盘, 降下杆#1 2秒
  3. 将Palette_att1值转换成1
  4. 若Palette_att0=1(此为气动抓取机器人取走托盘后发送的信号)将Palette_att1值置0

SFC图如下:

 

气动抓取机器人部分

 

这部分的编程体验非常好,完成之后甚至没有出现bug。当然,编程中有一些需要注意的地方:

 

1.      与输送带部分的信号传递。

上文已经提到了,在机器人取走托盘后,palette_att0置1,让输送带获得信号,允许下一个托盘前进。

Palette_att1 传输带程序(convoyeur)内的变量,气动抓取机器人程序可以读取它。

Palette_att0 气动抓取机器人内的变量,传输带程序(convoyeur)程序可以读取它。

两个程序互相读取,从而实现了托盘是否存在这个信息的传递。

使用word表格简单做一个流程图来重复下信号传递过程:

每行表示相同的时间段两个程序所处的状态。这玩意儿的原理我的队友们到期末结束都没看懂,笑。

传输带

机器人

杆#3处无托盘

Palette_att1=0

Palette_att0=0

杆#三处有托盘

Palette_att1=1

Palette_att0=0

Palette_att1=1

读取到Palette_att1=1

开始取走托盘动作

Palette_att1=1

完成取走托盘动作

Palette_att0=1

读取到Palette_att0=1

更改值为Palette_att1=0

进行处理托盘程序

Palette_att0=1

杆#3处无托盘

Palette_att1=0

进行处理托盘程序

Palette_att0=1

杆#3处无托盘

Palette_att1=0

进行处理托盘程序

Palette_att0=1

杆#3处无托盘

Palette_att1=0

完成处理托盘程序(准备好再取一个新的托盘了)

Palette_att0=0

 

2.      站点位置的确定

   各个站点处并没有传感器,我们需要使用一个计数器来确定机器人的位置。

如下图,站点1为计数器360的位置:

程序开始:

  1. 机器人转向面对站点。
  2. 比较器比较机器人所处位置在360之前还是在之后。
  3. 若计数器小于360,机器人前进,计数器增加,到达360位置。

若计数器大于360,机器人后退,计数器减小,到达360位置。

固定位置,计数器不归零,进行后续操作。

SFC图如下:

 

 

3.     气动抓取机器人整体程序

 

气动机器人部分的程序简单来说就是一个多分支的loop,在完成一项任务后,系统将会使用FFU提取N_poste列表内的下一个值并且执行其对应操作(该值将被放入寄存器Poste_I中)。其中1,2,3,4分别对应四个工作站,5为结束信号,机器人将会将托盘带至结束位置。

机器人操作部分的编程没有任何特别之处,真正值得关注的是系统间的通信。

为了确保机器人可以正确的接受指令,从而执行正确的操作,系统需要在正确的时间从列表N_poste中提取值。

一开始,我们尝试在Step007步骤进行提取,然而机器人只能正确的接受第一个指令,随后便会不停的重复它。分析原因后我们发现,由于这个步骤内的操作仅仅是判断值(1-5),因此其花费的时间非常小。当程序第一次运行至这个步骤时,由于寄存器Poste_I的初始值为0,而有效值为1-5,因此程序会停在这里,直到FFU操作将指令放入寄存器Poste_I为止。随后进行对应的操作。但是,一旦程序第二次运行到Step007位置时,因为寄存器Poste_I内已经有一个1-5范围内的值,程序会立刻进行选择,所以在这种情况下没有足够的时间进行FFU操作。

使用word表格简单做一个流程图来重现下过程:

步骤

寄存器值

FFU操作

Step007

Poste_I=0

开始

Step007

Poste_I=0

进行中

Step007

Poste_I=0

进行中

Step007

Poste_I=0

完成

Step007

Poste_I=1-5

已完成

结束Step007

Poste_I=1-5

已完成

第二次循环

Step007

Poste_I=1-5

开始

结束Step007

Poste_I=1-5

进行中

 

 

被打断

经过改进后我们增加了Ready_I.0 与Valide_O.0变量用于FFU操作:

Ready_I.0用于确认FFU操作开始的时机。

Valide_O.0连接计时器timer6用于提供2s的延时以保证FFU操作完成。

当程序到达Step_006(位于step007前)与Step_0066(结束poste操作后)这两个步骤时,Ready_I.0会变为1,FFU操作开始。与此同时,开始一个时间为2s的计时器TON timer6,当timer6.DN被触发时,Valide_O.0置1. 只有在Valide_O.0为1的情况下,程序才可以结束Step007步骤。

使用word表格简单做一个流程图来重现下过程:

步骤

寄存器值

FFU操作

第一次循环

Step005

Ready_I.0=0

Valide_O.0=0

Poste_I=0

 

Step006

Ready_I.0=1

Valide_O.0=0

Poste_I=0

开始

Step006

Ready_I.0=1

Valide_O.0=0

Poste_I=0

进行中

Step006

Ready_I.0=1

Valide_O.0=0

Poste_I=1-5

已完成

Step006

Ready_I.0=1

Valide_O.0=1

Poste_I=1-5

已完成

结束Step006

 

 

Step007选择

 

 

第二次循环

Step0066

Ready_I.0=0

Valide_O.0=0

Poste_I=1-5

开始

Step0066

Ready_I.0=1

Valide_O.0=0

Poste_I=0

进行中

Step0066

Ready_I.0=1

Valide_O.0=0

Poste_I=1-5new

已完成

Step0066

Ready_I.0=1

Valide_O.0=1

Poste_I=1-5new

已完成

结束Step006

 

 

Step007选择

 

 

LADDER图

 

 

4.      传输带出口处的信息交流

 

根据要求ABB机器人将会在结束位置(Poste sortie)取回托盘,然而该位置不存在传感器,因此需要利用阻止器Att#4位置的传感器验证托盘是否到达。

当托盘到达Att#4后,放下阻止器,延时3s后向ABB机器人传输托盘到达结束位置信号(ABB_IRB140 :I.Data[3]=1)

 

以上就是projet内值得注意的部分。

 

标签:课程设计,GMC1025,机器人,Palette,Projet,托盘,BB机,气动,Poste
来源: https://www.cnblogs.com/fishnevercry/p/15860246.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有