阅读本节前需要读一下笔者写的另外一篇文档《如何给内部带电磁气动阀的机器人配置相关的IO接口》,先简单了解一下I/O口。
机器人内部存在一个个的I/O接口,也就是input(输入)和output(输出)接口,机器人的input(输入)接口可以与外部的input接口连接,用于机器人接收外部输入信号,比如传感器的信号,而机器人的output(输入)接口可以与外部的output接口连接,用于机器人将信号传出去,比如将打开夹爪的信号传到外部。
这些外部的input或者output可以集成在一个外部的I/O模块上,如下图所示即为一个外部I/O模块,机器人与这个外部的I/O模块通过网线连接(常说的总线通讯连接的一种)。而在建立连接之前,需要用workvisual对这个I/O模块进行配置,让机器人控制器能够认识这个外加的I/O模块。 而配置的方法就是去生产这个I/O模块的厂商的官网去找到这个I/O模块的设备描述文件(xml文件),然后在workvisual上将这个设备描述文件(xml文件)导入到机器人控制器即可完成配置。
原理图如下:
外部传感器输入信号到I/O模块的input输入接口,input输入接口传到机器人控制器的input输入接口,在机器人控制器内部进行处理之后,机器人控制器的output将信息传给I/O模块的output,I/O模块的output再将信号传给外部执行器完成相应的动作。
这其实和高中生物的生物反射弧原理很像,外部传感器相当于感受器,I/O模块在中间起到信号传输媒介的作用,相当于传入传出神经,机器人控制器相当于神经中枢,大家细细的品。
下图是完整的原理图,机器人控制器和外部I/O模块通过外部网线直接连接,以总线通讯的形式连接,连接上之后还需要用workvisual进行配置,包括I/O映射的设置。外部I/O模块则直接和外部传感器以及执行器通过导线连接。
如下图所示就是一个I/O模块。
模块的正面图如下:
整个模块主要分成以上三部分,如下图所示,各部分是卡在一起的,侧面通过金属卡片连接,包括信号的传输与电源传输。
前文已经说了,配置的方法就是去生产这个I/O模块的厂商的官网去找到这个I/O模块的设备描述文件(xml文件),然后在workvisual上将这个设备描述文件(xml文件)导入到机器人控制器即可完成配置。
首先先分享一些设备描述文件(xml文件),这是一个大的文件夹,名字叫做beckhoff(是beckhoff公司的),里面有很多设备描述文件(xml文件),(链接:https://pan.baidu.com/s/1MFLj3C_IuXiD-r9DuDqXhg 提取码:hzaw),这些文件中的三个文件分别对应2.1中我们说到的三个部分,我们待会会通过workvisual软件进行配置,将它们导入到机器人控制器,让机器人认识这三部分,也就是认识这整个I/O模块。
根据2.1我们可以知道这三个部分的型号分别是EK1100,EL1008和EL2008,我们可以在文件夹中找到这三个设备描述文件,如下图所示
(1)PC和机器人连接
首先将机器人开机,将机器人和电脑进行网络连接,直接用网线将电脑和机器人控制柜连接起来(注意控制柜上的网口不止一个,连接X66那个网口,如下图所示)。
进入安全维护人员模式,然后依次点击主菜单/start-up/network configuration,可以看到机器人的IP为172.31.1.147,若要电脑和机器人的IP在同一网段下,则在电脑上设置静态IP的时候将IP最后的那个10改成1-254中的任何一个别的数即可(对于IP的说明,可以参考这本书籍,图解TCP/IP,链接:https://pan.baidu.com/s/1OoUrgGtSNd4C6IK82binQQ
提取码:fq40)
打开控制面板–网络与共享中心–更改适配器设置–鼠标右键点击已经显示连接上网络的对应的图标–双击那个带有IPv4的选项–更改机器人的静态IP
(2)机器人和I/O模块连接
机器人和I/O模块的连接也是通过网线,如下图所示,网线一端和I/O模块上的IN网口连接,另一端连接机器人控制柜上的X65网口。可以看到,X65网口上也写了一个Ethercat,代表这个网口支持的协议是Ethercat协议。(协议就是通信规则,库卡控制器支持的协议有Profinet、Ethernet/IP、Ethercat、也可以通过ethercat作为网关支持profibus以及devicenet;支持这些协议的意思就是库卡控制器只能连接使用这些协议的外部设备,比如上述I/O模块使用的协议是Ethercat,满足库卡控制器支持的协议要求,所以就可以与库卡控制器连接)
我们这次用的workvisual6.0.9,(链接:https://pan.baidu.com/s/1WWm0PGB_gzJO0bCwgPRKoA 提取码:uj08workvisual),下载好之后无脑安装,安装之后打开即可
打开之后会弹出如下的对话框,先关掉这个弹出的对话框。
点击File—import/Export
弹出的对话框选择import device description file(导入设备描述文件),点击next,弹出的对话框点击browse(浏览),
如下图所示,选择ethercat ESI
选择需要的三个设备描述文件,点击open
回到对话框之后,再点击next
如下图所示,设备描述文件正在添加到workvisual,添加完成后点击next,再点击finish
如下图所示,提示设备描述文件安装成功。
下面我们检查一下我们选择的三个设备描述文件到底有没有被添加到workvisual软件,如图,选择Extras—DTM Catalog Management
弹出的对话框的右侧,我们可以看到,设备描述文件添加成功后,可以寻找到这些设备,真是太神奇了。设备描述文件导入成功,这个对话框不做任何操作,关掉即可。
关于如何导入设备描述文件,这里有个网站也进行了说明,http://www.imrobotic.com/news/detail/2468.html(此处感谢同事赵建国提供的网站搜索支持)
在笔者的另外2篇文档《如何给kuka工业机器人重装系统&如何用workvisual给机器人进行配置》和《如何给内部带电磁气动阀的机器人配置相关的IO接口》中都用workvisual进行过配置,有着很详细的记录,这里对外部I/O进行配置采用的是一样的方法,将这个I/O模块添加到配置项目中并将I/O模块的输入输出口和机器人的输入输出口建立一一对应关系(I/O映射),再将配置项目导入机器人控制器即可完成配置。
点击file—browse for project(浏览项目)—会弹出如下的对话框,左侧选择browse(浏览项目),展开折叠之后可以看到软件读取了机器人控制器内部已经存在的配置项目。我们选择其中一个配置项目就可以了,此处我选择project test,点击open(打开)。
双击项目将项目激活,
左边项目树列表有一个总线结构bus structure,可以看到里面已经有了两个总线,一个是库卡控制总线KCB,一个是库卡系统总线SYS,我们这个I/O模块连接的控制柜上的网口是X65,但是如下两图所示,这个X65网口连接的内部总线接口其实是X44,这个总线叫做库卡扩展总线。
所以我们在workvisual中需要添加这个总线口,鼠标右键点击bus structure,点击add添加如下图所示的库卡扩展总线接口X44,然后可以在项目树中看到库卡扩展总线X44已经被添加进来了,下面显示了这个口允许的协议是ethercat
然后我们在库卡扩展总线下添加I/O模块,我们直接鼠标右键KUKA extension bus(X44),然后选择add添加,弹出的对话框中我们在搜索框输入ek1100,然后可以看到有很多选项,我们具体选择那个需要看后面的版本号,我们看到EK1100上写的是0018,所以我们选择版本号是0.18的哪一个选项,点击OK之后可以看到ek1100已经被添加到项目树中去了。
然后我们需要在EK1100之下添加EL1008输入模块和EL2008输出模块,因为EL1008输入模块和EL2008输出模块是组装在EK1100之下的,只有通过EK1100才可以通信。我们同样可以在模块上找到这两个模块的版本号,如下图所示输入模块是0017,输出模块是0018。然后我们鼠标右键在项目树中点击EK1100选择add添加,在弹出的对话框的搜索框中输入el1008,如下图所示,根据输入模块是0017版本选择,点击OK,然后输出模块采用同样的方式。添加完成后可以看到输入输出模块均被添加到了项目树的EK1100之下。(笔者在添加输出模块的时候,输出模块只有0.17版本的,所以添加的这个版本,最后也能正常使用,说明版本也没有严格限制。)
添加完毕之后再右边窗口设置机器人的I/O口和外部I/O模块的I/O口的一一对应关系(I/O映射),这个设置在笔者的另外一篇文章《如何给内部带电磁气动阀的机器人配置相关的IO接口》中有一样的操作,此处我简单说明。
如下图所示,左边是对应的机器人的输入口101-108,右边是外部I/O模块的输入口1-8,分别一一对应,点击connect即可完成I/O模块的输入口的配置。然后输出口是一样的方法。完成之后将项目导入机器人即可,机器人必须在安全操作人员模式下,或者管理员模式。
我们设置的机器人的IN[103]对应I/O模块的IN[3],机器人的IN[104]对应I/O模块的IN[4],机器人的OUT[103]对应I/O模块的OUT[3],机器人的OUT[104]对应I/O模块的OUT[4],也就是说,对应的输入输出口的值会保持一致,同时为true或者同时为false。
打开示教器的数字I/O界面,将机器人的OUT[103]的值改为true,我们发现I/O模块的OUT[3]的LED灯亮了,表示I/O模块的OUT[3]的值也变成了true。如图所示。
对于输出接口,是相对于机器人而言的信号输出,信号只能从机器人传到I/O模块;相反,对于输入接口,是相对于机器人而言的信号输入,信号只能从I/O模块传到机器人,我们在示教器上也不能改IN[103]的值,而如果我们用导线给I/O模块的IN[3]通一个小电压,I/O模块的IN[3]的值会变成true,而机器人的IN[103]的值也会变成true。
over,
机器人的I/O口有的是系统已经使用的,受到保护的I/O口,你配置了也没用,有的是在你配置这个模块之前其他模块已经使用的,也没用,所以配置I/O口的时候机器人这边I/O选哪几个要仔细检查。
I/O模块断电之后就不能发挥作用了,即使重新连接上电源之后也要在示教器上主菜单—configuration—inputs/outputs—I/O drivers,然后reset或者reconfigure一下才能激活I/O模块和控制器的连接。
感谢笔者的老师Daniel以及同事赵建国提供的技术支持