优秀的厨师知道可口的菜肴应该使用考究的材料,设计卓越的机电系统同样也要选用正确的软件和硬件。
如果你和我一样喜欢看美食频道www.cechina.cn,你可能就听说过Alton Brown谈论料理过程中的软件和硬件。现在,我们就要讨论一下机电一体化项目中的软硬件材料。
对于Alton Brown来说,软件包括鸡蛋、牛奶和水,也就是食物中用到的所有“湿”的东西。而对于机电一体化,软件则包括操作系统(OS)、应用程序和仪器驱动。
这些肯定都要集成到最终的产品里。并且,机电一体化的大厨们还需要大量的辅助软件。机械设计通常使用计算机辅助设计(CAD)的输入来描述机械系统、然后创建有限元分析模型。这个模型可以模拟出实际机械系统应用时期望的应力和扭力。类似的,电子设计自动化(eda)软件使用电子元件描述语言和互连接,创建电子系统的SPICE模型,可以模拟实际电子系统期望的输入和负载。
机电系统通常具有多嵌套控制回路。
软件
你同样需要软件来装配软件。微处理器能够读懂“机器码”一系列写成“操作码”的说明,它可以以数字的形式储存在计算机内存里。
控制工程师通常面对的是第四代计算机语言CONTROL ENGINEERING China版权所有,它
可以简化诸如机电控制器应用这样的程序编写。
尽管许多计算机专家和一些工程师仍然知道如何直接为机器编程,但是没有人喜欢这样做。应用源代码已经被写成了“人可以读懂”的语言,比如BASIC、C、Fortran。而这些人们可以读懂的语言被称作“第三代语言”(3GL),机器码则被称作第一代语言(1GL)。(相信我,你不需要知道第二代语言的情况)
编译器是一种能将可读源代码转化成智能机器码的软件包。编译器不仅需要能够读懂某种第三代语言,它还需要为目标微处理器完全读懂操作码,以及最终系统中的可用资源。
坦率地说,写第三代语言代码最好还是留给计算机工程师和专家吧。这些语言带有复杂的句法和令人难以捉摸的命令集,控制工程师最好还是使用第四代语言(4GL)。
凭借描述性更强的词语“框架”、“环境”或者“集成开发环境”(IDE),这一代语言更具有参考性。例如Eclipse(开源)、LabView(美国国家仪器发布)以及任何一家面向IEC控制器语言具体实施的供应商开发的语言,它们都是高度面向应用的。
目标系统
对于绝大多数专业软件工程师和几乎全部嵌入式系统工程师,摆在他们办公桌上的电脑并不是目标系统。如果写出来的程序运行的计算机和你正在使用不是同一台,你就需要一台“交叉编译器”,它可以在你的计算机上运行,但是却可以创建运行在目标计算机上的机器码。运行在目标系统上的软件包括:
■ 操作系统,减轻微处理器的负担(比如内存、总线接入);
■ 仪表驱动www.cechina.cn,可以使应用程序接入外围资源(比如传感器、驱动);
■ 应用程序,可以控制程序流、执行逻辑操作和数学计算;
机电应用经常需要实时操作,这种“实时性”有一部分来自操作操作系统(OS)。有很多实时操作系统(RTOS)的选择,一些供应商可以提供专利型实时操作系统,比如来自风河公司的VXWorks。微软也推出了三个Windows系统(CE、XP和嵌入式)的实时版本。其他的公司(比如Montavista、风河、Green Hills Software和Lynuxworks)则推出了Linux的实时版本。
仪表驱动告诉外围硬件应该去做什么。在制作软件的时候,编译器通过在项目中为仪表加入合适的驱动,使第三代语言的代码可以在仪表之间进行传递。仪表制造商在驱动器和编译器中写入合适的机器码,所有的机电工程师必须要做的是,确保在编译的时候使用正确的驱动。
应用程序是机电工程师心血的结晶,它在目标控制器上运行,融合了高层控制决策所需的全部才思和智慧。
如果有行人踏入自动牵引车道CONTROL ENGINEERING China版权所有,这是怎么办?应用程序必须能够识别出行人,并且计划合适的行动。驱动器的固件应该可以使牵引车转到正确的方向,转过的角度也必须合适。正是控制器来决定转向的方向和转过的角度。
为机电一体化准备的硬件
让我们回到可以将软件的想法转化成实际的硬件。控制器就是起到这种作用,它有很多选择。对于大型静态的项目,传统的可编程逻辑控制器(PLC)或者可编程自动控制器(PAC)就很好。那些需要获取数据和控制系统的工程师则会倾向于使用基于PC的控制,使用多功能卡以及处理模块来提供输入输出。
然而,还是有越来越多的机电工程师选用嵌入式系统。举例来说,控创就提供多种单片机(SBC)解决方案,飞思卡尔半导体、威盛和德州仪器则提供片系统(system-on-chip ,SOC)设备www.cechina.cn,在单片IC上包含处理器、输入输出、内存,并且提供网络功能。我已经看到了米粒大小的4位处理器,以及传说中的将多个处理打包的多核IC。
通常,选用嵌入式方法的工程师需要设计带有全部控制器元件