机电一体化的烹饪艺术

教程:如果你和我一样是美食频道的粉丝,你可能听过奥尔顿·布朗谈论过硬件和软件是烹饪项目的配料。今天,我们将讨论机电一体化项目中的一些硬件和软件成分。对奥尔顿·布朗来说,软件包括鸡蛋、牛奶、水——所有进入食物的“湿”东西。

通过C.G. Masi,控制工程 2008年3月31日
栏:
fpga可以为您做什么

如果你和我一样是美食频道的粉丝,你可能听过奥尔顿·布朗谈论过硬件和软件是烹饪项目的配料。今天,我们将讨论机电一体化项目中的一些硬件和软件成分。

对奥尔顿·布朗来说,软件包括鸡蛋、牛奶、水——所有进入食物的“湿”东西。对于机电一体化系统,软件包括操作系统、应用程序和仪器驱动程序。

至少,这是最终产品的实际结果。机械电子厨师也需要一些辅助软件。机械设计包通常采用描述机械系统的计算机辅助设计(CAD)输入,并创建一个有限元模型(FEM),然后对力和扭矩做出反应,就像实际机械系统可能预期的反应一样。类似地,电子设计自动化(EDA)软件使用电子组件和互连的描述来创建电子系统的SPICE模型,该模型对输入和负载做出反应,就像实际的电子设备可能预期的那样。

机电系统通常具有多个嵌套控制回路。

软件

您还需要软件工具来组装软件。微处理器能够理解“机器代码”——以“操作代码”形式编写的指令列表,这些指令包含在载入计算机内存寄存器的数字位中。

虽然许多计算机科学家和一些工程师仍然知道如何直接为这些机器编程,但没有人愿意这样做。应用程序源代码是用“人类可读”的语言编写的,比如BASIC、C和Fortran。顺便说一下,这些人类可读的语言被称为“第三代语言”(3GL),机器代码是第一代语言(1GL)。(相信我,你不会想知道2GL的。)

编译器是将人类可读的源代码转换为机器可理解的机器代码的软件包。编译器不仅需要理解特定的人类可读语言,还需要完全理解目标微处理器的操作代码以及最终系统中的可用资源。

坦率地说,编写3GL代码最好留给计算机科学家和工程师。这些语言是具有复杂语法和神秘命令集的通用工具。控制工程师最好使用第四代语言(4GL)。

这些通常被更具有描述性的术语“框架”、“环境”或“集成开发环境”(IDE)所指代。例如Eclipse(开源)、LabView(来自National Instruments)和任何特定于供应商的IEC控制器语言实现。它们是高度特定于应用程序的。

目标系统

对于大多数专业软件工程师和几乎所有嵌入式系统工程师来说,他们桌上的计算机并不是目标系统。当编写在与你正在使用的计算机不同的计算机上运行的软件时,你需要一个“交叉编译器”,它在你的计算机上运行,但创建将在目标计算机上运行的机器代码。在目标系统上运行的软件包括:

  • 操作系统,它调节处理器资源(即内存、总线访问)的使用。

  • 仪器驱动程序,使应用程序能够访问外围资源(即传感器和驱动器)。

  • 应用程序,控制程序流程,执行逻辑运算和数学计算。

控制工程师通常使用第四代计算机语言来简化专门程序的编写,例如机电控制器应用程序。

机电一体化应用通常要求实时操作。“实时”部分来自于操作系统。对于实时操作系统(RTOSs)有许多选择。许多供应商提供专有的RTOSs,例如Wind River的VXWorks。微软提供了三种Windows (CE、XP和Embedded)的实时版本。其他的(如Montavista、Wind River、Green Hills Software和Lynuxworks)提供实时版本的Linux。

仪器驱动程序告诉外围硬件要做什么。在构建软件时,通过为项目中使用的工具包含适当的驱动程序,编译器使3GL代码能够与它们通信。仪器制造商编写驱动程序,编译器负责将它们适当地放入最终的机器代码中。机电工程师所要做的就是确保正确的驱动程序在编译时可用。

应用程序是机电工程师发挥创造力的地方。它运行在目标控制器上,并包含了做出高级控制决策所需的所有机智和智慧。

是否有行人进入自动引导车辆(AGV)的路径?应用程序必须认识到这一点,并计划适当的操作。司机的固件可能必须让车辆向正确的方向转弯,但控制器应用程序决定了转弯的方向和转弯的程度。

机电一体化硬件

这就把我们带回到将软件决策付诸实践的硬件。控制器是实现这一功能的硬件,可选择的硬件有很大差异。对于大型的固定项目,传统的可编程逻辑控制器(PLC)或可编程自动化控制器(PAC)可能是一个很好的选择。熟悉数据采集和控制系统的工程师通常选择基于pc的控制,使用多功能卡和信号调理模块来提供I/O。

然而,越来越多的机电工程师正在采用嵌入式系统的方法。例如,Kontron提供多种形式的单板计算机(SBC)解决方案。飞思卡尔半导体、威盛和德州仪器提供的系统级芯片(SOC)设备将处理器、I/O、内存甚至网络功能集成在一个单片集成电路中,我见过米粒大小的4位处理器和多核集成电路,让我们把“很多”处理器集成在一个封装中。

通常,指定嵌入式方法的工程师将设计携带所有控制器组件的主板。许多IC制造商,如AMD,为用户提供电路板或套件,以制作自己的主板。还有很多其他公司也很乐意提供帮助。在谷歌上搜索“定制电路板制造”,结果是“大约115,000”!

你的下一个机电项目的正确选择取决于你的舒适区。例如,如果您碰巧是一个有Linux经验的资深C程序员,那么最好使用运行实时Linux的SBC。另一方面,如果您来自传统的机器控制背景,那么您的首选可能是运行功能块的PLC。运动控制专家可能会倾向于安川的一些产品(顺便说一下,机电一体化是他发明的)。

要记住的是,没有唯一的最佳选择。这是一个将您从以前的控制系统经验中最熟悉的硬件和软件调整到手头的机电应用程序的问题。

作者信息
C.G. Masi是一名高级编辑控制工程。与他联络:charlie.masi@reedbusiness.com

fpga可以为您做什么

现场可编程门阵列(FPGA)是一种嵌入式处理IC,它使用可重构的计算元素矩阵在硬件逻辑中实现软件设计。与传统微处理器和dsp的固定计算功能不同,FPGA设备实际上是重新布线其内部结构来实现计算任务。FPGA的设计在本质上是完全并行的,因此各个应用子系统可以独立运行,同时使用专用的硬件资源。

将软件代码转换为FPGA“结构”中高度优化的硬件实现的过程称为合成。由于有多种可能的硬件实现可以满足需求,FPGA编译器必须执行复杂的优化、路由和验证过程。最终的结果是一个高性能,高可靠性的硬件实现,以比特流的形式告诉芯片中的每个硬件元素如何配置自己。实际上,软件设计被转化为硬件领域。

一个FPGA可以通过在一个芯片中集成数百万个计算元件来替代数千个分立元件。

fpga提供了极致的设计灵活性和并行性。通常,设计人员在FPGA和常规处理器之间划分应用程序。fpga通常用于实现传感器和执行器的低级I/O接口,执行时间敏感的控制和信号处理任务,以及与专门的外围设备或外部电路通信。

例如,实现多轴运动控制应用程序的设计人员可能使用处理器通过ModBus进行基于标记的通信、高级监控控制、浮点运动轨迹生成算法和数据记录。在FPGA中,他或她可以选择实现更高的速度和应用程序的更多定制部分,例如位置编码器和电流传感器接口,脉冲宽度调制(PWM)和电机换向,运动轨迹的样条插值,电流、位置和速度的级联PID控制环,安全联锁等等。

在FPGA中,尽可能快地运行每个子系统没有任何损失(除了功耗),因为它们不竞争处理资源。此外,FPGA程序员可以从逻辑门级别定制应用程序的每个部分,以满足其独特的需求。此外,FPGA在部署到现场后仍然是可重构的,这意味着系统更新或新功能的添加不太可能需要重新旋转硬件板。由于这些原因,在FPGA编程方面的前期投资既可以缩短上市时间,又可以减少产品生命周期内的支持和维护成本。

Brian MacCleery,国家仪器公司高级产品经理