MYDATA 工业机器人

作者:Tom Bjorkholm

在 MYDATA automation AB(一家瑞典机器人公司),我们选择了 Linux 2.0 作为我们贴片机的新操作系统。我们的控制软件的 Linux 版本目前正在内部测试机器上运行。Linux 将在 1997 年第三季度完全取代客户机器上较旧的“实时 Unix”。

贴片机

贴片机是一种专用工业机器人。它被设计用于拾取电子(表面贴装)元件,并将它们放置在印刷电路板 (PCB) 上的正确位置。PCB 是在电子设备内部发现的电路板,例如在任何个人计算机中发现的主板和插件卡。

贴片机器人的设计围绕分轴概念构建。我们有一个高速 X 轴“滑块”(是的,我们称之为滑块,尽管它不是由马匹拉动的),在机器顶部从左向右移动(X 轴)。在 X 轴滑块上,我们有一个安装头,在 Z 轴上垂直移动,并在 phi 轴上旋转。我们还有一个 Y 轴滑块,称为“工作台”,在 Y 轴上移动。(见图 1。)

MYDATA's Industrial Robots

图 1. MYDATA 贴片机 TP11 型号。

元件以卷带、管状或托盘形式供应,这些卷带、管状或托盘被装载到“智能”料仓中,这些料仓将元件定位在 X 轴滑块路径正下方的拾取位置。

让我们跟踪一个单独的贴装周期。首先,料仓将元件定位在拾取位置。接下来,X 轴滑块移动到料仓上方的位置。安装头降低,工具头接触元件。施加真空,元件被吸到工具上,很像用吸管喝东西。(见图 2。)安装头向上移动,抬起元件,X 轴滑块移动到 Y 轴滑块。

MYDATA's Industrial Robots

图 2. 安装工具对大型元件施加吸力。安装工具具有不同尺寸,适用于各种元件,并根据需要使用。

由于每个元件的放置精度必须远高于其交付载体,因此需要某种方法将元件在工具上居中。因此,两个定心爪将元件推到工具头的中间,同时测量元件的尺寸。然后,工具和元件旋转 90 度,并在这个方向也进行定心和测量。最后,测量元件的电气特性。(见图 3。)

MYDATA's Industrial Robots

图 3. 定心爪压在小型元件上,并使用电极测量元件的电气特性。

在 X 轴向放置位置移动期间,承载 PCB 的 Y 轴滑块将自身定位在要放置元件的正确 Y 坐标处。最后,安装工具降低并将元件放置在正确的位置。整个贴装周期大约在半秒内完成。

为了加速贴装许多小型元件,X 轴滑块上还有一个 Hydra 头,它可以同时拾取八个元件并单独放置它们。该装置不能使用机械定心,而是使用光学定心。在光学定心期间,光学测量元件在工具上的位置,并在放置元件时进行调整。(见图 4。)此外,Y 轴滑块可以“对接”到传送带以加载或卸载 PCB。(见图 5。)

MYDATA's Industrial Robots

图 4. Hydra 头包括 8 个工具。

MYDATA's Industrial Robots

图 5. Y 轴滑块已与面板输送机 VPC 对接以加载 PCB。

硬实时和软实时

很久以前,MYDATA 做出了明智的设计决策,将硬实时要求与优化、用户界面和数据库管理的复杂算法分离开来。在典型的 MYDATA 机器中,有一个计算机箱,其中包含一个奔腾 PC 主板和几个伺服计算机。(见图 6。)我们将伺服系统称为“硬实时”,将 Un*x 系统称为“软实时”。

MYDATA's Industrial Robots

图 6. MYDATA 机器,前盖已拆下。计算机箱在左侧,露出几个伺服计算机。奔腾主板隐藏在前面。右侧的箱子包含电池备用电源和其他电子元件。

伺服计算机用 Z80 汇编程序编程,并接受诸如“以加速度参数 XA XB XC 移动到位置 2500”之类的命令。给定的位置是以传感器上的刻度为单位。

PC 主板目前运行 Un*x——一个真正的多任务系统,运行着几个用 C++ 编写的程序。其中一个程序是贴片进程,它生成发送到伺服计算机的命令,指定每个元件的贴装位置,并处理坐标系转换和转换为传感器“刻度”。优化器进程优化贴装顺序以获得最大吞吐量。数据服务器守护进程存储有关封装、元件、PCB 和元件位置的信息。还有一个人机界面进程与用户通信。

在伺服程序中,精确的定时是必须的。但是,在 Un*x 系统中,短暂的延迟不会破坏任何东西,但会导致整体贴装速度变差。因此,Un*x 系统需要的不是有保证的响应时间,而是非常快的平均响应时间。

游击测试和游说

当我加入 MYDATA 时,我已经使用 Linux 多年了。我当时认为在 PC 硬件上编程 Unix 应该与运行 Linux 差不多。MYDATA 当时正在使用 Venix 3.2,这是一个来自 VentureCom 的“工业级实时操作系统”,基于 System V,版本 3.2。在编程 Venix 一段时间后,我非常失望。我通常依赖的工具都不可用:没有 emacs,没有 bash,甚至 C 库中也没有 strerror 函数。

在 1995 年夏天,我开始游说使用更现代的操作系统。当时有两个选择:Venix 4.2(主要由老员工支持)和 Linux 1.2.8(由少数年轻程序员支持)。更改为这两个操作系统中的任何一个都意味着大量的移植工作。

经过多次唠叨,我获准测试两种操作系统在不同负载条件下的中断响应时间。该测试是使用一个特殊的插件卡完成的,该插件卡带有输出端口和中断生成,连接到示波器。

每个人都期望这次测试会扼杀 Linux 作为一种替代方案。在 Venix 中,我有一个硬实时进程,在 Linux 中,我使用 nice 级别来创建一个高优先级进程。令人惊讶的结果是,Linux 上的平均中断响应时间快了三倍,而 Linux 上的最坏情况中断响应时间快了十倍。

尽管测试结果很好,但对 Linux 并没有太大的兴趣。一些程序员想使用 Linux,但营销部门在 Venix 作为“工业级实时操作系统”方面投入了很多。也有来自不愿学习新操作系统的人的强烈抵制。

然后,在 1995 年 12 月,情况发生了变化。3Com 无法再交付 Venix 3.2 使用的 3c503 以太网卡。MYDATA 设法找到了一批带有 Venix 设备驱动程序的旧 WD8003 卡,我获准开始一个人的项目,进行系统到 Linux 的试点移植。

试点移植

像 MYDATA 贴片机这样的工业机器人有很多特殊的硬件。我的第一项工作是为 Linux 重写所有设备驱动程序,这很有趣,没有出现意外,并且按计划完成。当然,我有 Venix 设备驱动程序的源代码这一事实是一个明显的优势。

在 1996 年初,我了解到 Markus Kuhn(一位德国学生)已将 POSIX 实时调度添加到 Linux 1.3 中。这是天赐之礼——Linux 中的硬实时优先级和内存锁定。

在春天,我致力于移植应用程序。这项工作被证明比我预期的要困难得多。我本以为程序可以编译,但运行时却立即崩溃。经过长时间的调试,我发现了一个未初始化的变量。由于不同的内存布局,该程序恰好在 Venix 中工作。修复错误后,我会再次运行程序,它会因类似的原因再次崩溃。

另一个令人非常痛苦的原因是在文件作用域和全局作用域中使用 C++ 对象。如果在文件作用域中声明两个 C++ 变量,则这些变量的构造函数将在 main 启动之前运行。但是,如果变量在不同的文件中声明,则构造函数的运行顺序将由实现定义。事实证明,Venix 链接器按对象文件名的字母顺序对构造函数进行排序,而 Linux 链接器按使用 ar(archive)添加到库的对象文件的顺序对它们进行排序。

结果是,突然之间,我们有了大量包含未初始化变量的代码。在与代码作斗争以解决这些问题之后,我坚信应该禁止在 C++ 中使用文件作用域和全局变量。

随着春天进入夏天,我继续以这种方式工作,并得到了另一位程序员 Carl Martinsson 的欢迎帮助。最后,在 1996 年 6 月,我们的共同努力得到了回报。我们有一台运行 Linux 的 MYDATA 贴片机,并且实际上在 PCB 上贴装元件。

我从这次移植工作中吸取的主要教训是,将不可移植的 Unix 程序从一个类 Unix 操作系统移植到另一个类 Unix 操作系统比人们想象的要困难得多。此外,为 Linux 重写设备驱动程序并没有那么困难。

真正的 Linux 版本

在移植到 Linux 的工作期间,软件团队为 Venix 开发了新版本的软件(具有新功能)。在 1996 年 10 月,我们最终收到了下一个版本的软件将在 Linux 下运行的决定。

借助来自 Perforce (http://www.perforce.com/) 的代码管理系统,我们设法将为 Venix 系统新开发的功能与 Linux 系统合并。当然,这导致了又一轮的调试。

现在,在 1997 年初,我们软件的 Linux 版本是主要的开发环境,并且功能齐全。目前正在开发的支持硬件需要在我们可以开始验证测试并将软件运送到 Beta 测试站点之前完成。基于 Linux 的系统在全球范围内向客户发布的时间计划在 1997 年第三季度。

MYDATA 贴片软件由 8,000 个文件和 150MB 的源代码组成。MYDATA 大约每天运送一台贴片机,每台价值 150,000 美元。我认为这是第一个在此规模上利用 Linux 作为实时平台的项目。

自由世界的驱动程序

MYDATA 机器中的大多数硬件都是内部制造的。普通人不可能购买到这些硬件,而且除非他拥有 MYDATA 机器,否则这些硬件将毫无用处。因此,我们没有公开提供设备驱动程序。在任何情况下,MYDATA 硬件已经与最新的可用软件捆绑在一起。

但是,我们确实使用了两种任何人都可以使用的硬件:Decision PCCOM-8 多端口串行卡和来自 Shuttle Technologies 的并行端口到 SCSI 转换电缆,称为 EPST。我们与瑞典咨询公司 Signum Support 签订合同,该公司专门从事 GNU 软件,为这两种硬件编写设备驱动程序。合同规定设备驱动程序应具有 GNU GPL 许可证,并且 Signum 应尝试将驱动程序包含在 Linus Torvalds 的下一个内核版本中。这些驱动程序目前可用且功能齐全。有关下载信息,请联系 Signum Support,网址为 http://www.signum.se/。

从纯粹经济的角度来看,我们免费获得了大量这些设备驱动程序的 Beta 测试人员。更棒的是,我们可以回馈 Linux 社区。

安装步骤

从程序员和律师的角度来看,MYDATA 提供四个相互作用的不同软件包。

  1. Linux 操作系统(免费)

  2. MYDATA 硬件的设备驱动程序(作为可加载模块)

  3. 应用程序

  4. 伺服程序(在伺服计算机上运行)

但是,从用户的角度来看,MYDATA 提供了一种带有硬件和软件系统的工业机器人。用户通常不关心实现细节,例如操作系统的选择。

到目前为止,软件安装和升级一直由维修工程师完成。对于下一代软件,我们希望提供一张安装 CD-ROM,用户无需维修工程师或厚厚的手册即可使用。我们的愿景是,用户将插入 CD-ROM 和启动软盘,打开电源,让安装过程自动进行。好吧,我们可能需要询问 IP 地址。此安装 CD-ROM 正在与 Signum Support 合作开发,并且基于 Red Hat 4.0,硬件选择有限,并添加了硬件检测。

结论

MYDATA 成功地以合理的努力从老化的操作系统切换到 Linux。在 Linux 中,我们现在拥有一个现代操作系统,它将在未来几年内继续与我们一起成长,并为我们未来的发展奠定坚实的基础。

MYDATA's Industrial Robots
Tom Björkholm 是一位 32 岁的软件工程师。他从 0.95 版本开始使用 Linux。不编程时,他喜欢帆船运动。当您阅读本文时,他将离开 MYDATA 为 Ericsson Business Networks 工作。欢迎将评论发送至 Tom.Bjorkholm@ebc.ericsson.se,或通过普通邮件发送至 Linux Journal
加载 Disqus 评论