当前位置:文档之家› 嵌入式系统在工业控制中的应用

嵌入式系统在工业控制中的应用

嵌入式系统在工业控制中的应用摘要:工业控制是嵌入式系统的应用的重要领域,Linux 系统是嵌入式系统开发的有力工具,本文主要利用Linux系统来具体实现一个嵌入式工业控制系统。

同时,所讨论的实时系统的研究,为在一个系统中同时支持多种实时调度方法提供了可能性。

正文:嵌入式技术是21世纪最有生命力的新技术之一,目前已经广泛应用于社会生活的各个方面。

嵌入式系统的应用与开发则是当今计算机行业发展的一个热点。

现今嵌入式软件的应用与开发的领域主要有:国防、移动通信、电子、办公自动化、机/车顶盒、掌上电脑、手机软件、工业控制、信息家电等领域。

工业等各部门对智能控制需求的不断增长,对嵌入式微处理器的实时性、运算速度、可扩充能力、系统可靠性、功耗和集成度等方面提出了更高的要求。

1.嵌入式系统与工业控制网络美国电气工程师协会(IEE)的一个定义:嵌入式系统是用来控制或监视机器、装置或工厂等大规模系统的设备。

嵌入式系统通常具有如下特性:(1)通常只执行特定功能;是在特定领域内完成特定功能的专用计算机系统。

(2)嵌入式系统中硬件配置一般是根据系统的性能指标来确定的;除了附加的调试接口外,没有多余的硬件设备,一般是以计算机周边器件构成核心,其规模可在大范围内变化。

而且嵌入式系统中是软件和硬件紧密结合。

(3)严格的时序和稳定性要求;这是因为在机器控制的大型系统中,程序运行稍有差错则可能使得整个系统失去控制,甚至酿成灾害。

而且系统一般不进行交互动作,所以要求系统的自动运行要稳定、纠错能力强,可靠运行。

(4)具有实时性;因为在工业控制应用中大多数是属于过程控制,这些领域对系统要求是必须具有实时性,而且还要求有实时性的嵌入式操作系统。

(5)嵌入式系统的开发一般采用宿主机/目标机模式;在某个环境下调试好目标机器的软件和硬件,才能使目标机器离开开发环境,从而独立运行。

嵌入式系统是是以应用为中心,以计算机技术为基础,软件硬件可裁剪,从而能够适应应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

它将操作系统和功能软件集成于计算机硬件系统之中,具有软件代码小,高度自动化,响应速度快等特点。

特别适合于要求实时的和多任务的体系。

工业控制网络是由传感器、执行机构、显示和数据记录设备等组成,用于监视和控制电气设备的系统。

由于工业控制系统特别强调可靠性和实时性。

控制网络数据通信以引发物质或能量的运动为最终目的。

用于测量与控制的数据通信的主要特点是:允许对实时的事件进行驱动通信,具有很高的数据完整性。

2.系统实现系统的实现包括硬件实现和软件实现。

硬件实现:硬件中两个串行通信接口用以采集来自其他设备的远程的数据,然后由ARM 微处理器进行处理,处理后的结果通过以太网接口分发给其他设备。

10M以太网接口的设计是考虑到通用性。

USB接口分为两个主机接口和一个设备接口。

LED用来在调试和使用过程中的显示数据结果。

软件实现软件的实现包括两个方面,一个是系统的内核,另一个是设备的驱动程序。

(1)首先编译 Kernel的源代码:在编译内核的过程中,最繁杂的事情就是这步配置工作。

在配置过程中,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。

选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关系紧密而且经常使用的部分功能代码直接编译到内核中。

(2)为每个设备编写程序Linux系统的设备驱动程序完成的主要工作是:①对每个硬件设备进行初始化和释放;②数据传输,将数据从内核传到硬件设备,或者从硬件设备传到内核,读取应用程序传送给硬件设备的数据和回送应用程序请求的数据;③检测和处理硬件设备出现的错误和异常;Linux系统的设备驱动程序的主要组成部分有:①自动配置和初始化子程序;②服务于I/O请求的子程序;③中断服务子程序;根据所选择的设备和设备所要完成的功能分别进行编写。

3. 实时性解决办法实时控制系统实质上是过程控制系统。

实时操作系统首先考虑的是系统的实时性和可靠性。

实时处理系统主要指对信息进行及时的处理。

高实时性是许多工业控制网络的基本要求。

目前把Linux改造为嵌入式实时系统的方法有两个:一个方法是对Linux系统的内核进行改造;另一个方法是在 Linux 系统底层添加一个硬件抽象层。

其目的都是为了保证系统会首先执行优先级更高的实时进程然后才是优先级低的普通进程,并且防止别的普通进程打断实时进程的运行。

本文从进程间通信方式调整、进程抢占式调度两方面提出两种系统改造方式:第一,进程间通信方式调整。

用可抢占式内核的方法实现进程调度,需要采用关中断或使用信号量机制来保护临界区,需要提供进程间通信的若干实现方法。

第二,进程抢占式调度。

实时系统的调度必须满足以下条件:进程的优先级通过 API 指定、调度器自动选择并执行最高优先级的进程、调度在一个固定的时间周期里选择和执行最高优先级的进程。

系统需要提供满足要求的调度方法。

4.系统测试分析为了保证系统的正常运行,在理论上通过的前提下,测试是必不可少的。

从事嵌入式软件开发的缺点是:(1) 入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。

(2) 这方面的企业数量要远少于企业计算类企业。

特别是从事嵌入式的小企业数量较多(小企业要搞自己的产品创业),知名大公司较少(搞嵌入式的大公司主要有 Intel、Motorola、TI、Philip、Samsung、Sony、Futjtum、Bell-Alcatel、意法半导体、 Microtek、研华、华为、中兴通信、上广电等制造类企业)。

这些企业的习惯思维方式是到电子、通信等偏硬专业找人。

(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。

但大多数公司也并无此要求,只要有经验即可。

同学们若学习嵌入式,显然应偏重于嵌入式软件,特别是嵌入式操作系统方面,应是我们的强项。

在嵌入式软件方面最重要的课程包括:(1) 嵌入式微处理器结构与应用:这是一门嵌入式硬件基础课程,我们说过,嵌入式是软硬件结合的技术,搞嵌入式软件的人应对ARM处理器工作原理和接口技术有充分了解,包括ARM的汇编指令系统。

若不了解处理器原理,怎么能控制硬件工作,怎么能写出节省内存又运行高速的最优代码(嵌入式软件设计特别讲究时空效率),怎么能写出驱动程序(驱动程序都是与硬件打交道的)?很多公司招聘嵌入式软件人员时都要求熟悉ARM处理器,将来若同学到公司中从事嵌入式软件开发,公司都会给你一本该设备的硬件规格说明书(xxx Specification),你必须能看懂其中的内存分布和端口使用等最基本的说明(就像x86汇编一样),否则怎么设计软件。

有些同学觉得嵌入式处理器课程较枯燥,这主要是硬件课程都较抽象的原因。

还有同学对ARM汇编不感兴趣,以为嵌入式开发用C语言就足够了。

其实不应仅是将汇编语言当成一个程序设计语言,学汇编主要是为了掌握处理器工作原理的。

一个不熟悉汇编语言的人,怎么能在该处理器写出最优的C语言代码。

在嵌入式开发的一些关键部分,有时还必须写汇编,如Bootloader等(可能还包括BSP)。

特别是在对速度有极高要求的场合(如DSP处理器的高速图像采集和图像解压缩),目前还会用到汇编写程序的,尽管用到的机会相对C要小得多。

当你在一个嵌入式公司工作时,在查看描述原理的手册时,可能很多都是用汇编描述的,这是因为很多硬件设计人员只会写或者喜欢用汇编描述,此时你就必须看懂汇编程序,否则软硬件人员可能就无法交流。

很多嵌入式职位招聘时都要求熟悉汇编。

(2) 嵌入式操作系统类课程除了WinCE的实时性稍差外,大多数嵌入式操作系统的实时性都很强,所以也可称为实时操作系统Real TimeOperating System。

从事嵌入式的人至少须掌握一个嵌入式操作系统(当然掌握两个更好),这在嵌入式的所有技术中是最为关键的了。

目前最重要的RTOS主要包括:第一类、传统的经典RTOS:最主要的便是Vxworks操作系统,以及其Tornado开发平台。

Vxworks因出现稍早,实时性很强(据说可在1ms内响应外部事件请求),并且内核可极微(据说最小可8K),可靠性较高等,所以在北美,Vxworks占据了嵌入式系统的多半疆山。

特别是在通信设备等实时性要求较高的系统中,几乎非Vxworks 莫属。

Vxworks的很多概念和技术都和Linux很类似,主要是C语言开发。

像Bell- alcatel、Lucent、华为等通信企业在开发产品时,Vxworks用得很多。

但Vxworks因价格很高,所以一些小公司或小产品中往往用不起。

目前很多公司都在往嵌入式Linux转(听说华为目前正在这样转)。

但无论如何,Vxworks在一段长时间内仍是不可动摇的。

与Vxworks类似的稍有名的实时操作系统还有pSOS、QNX、Nucleus等RTOS。

第二类、嵌入式Linux操作系统:Linux的前途除作为服务器操作系统外,最成功的便是在嵌入式领域的应用,原因当然是免费、开源、支持软件多、呼拥者众,这样嵌入式产品成本会低。

Linux本身不是一个为嵌入式设计的操作系统,不是微内核的,并且实时性不强。

目前应用在嵌入式领域的Linux系统主要有两类:一类是专为嵌入式设计的已被裁减过的Linux系统,最常用的是uClinux(不带MMU功能),目前占较大应用份额,可在ARM7上跑;另一类是跑在 ARM 9上的,一般是将Linux 2.4.18内核移植在其上,可使用更多的Linux 功能(当然uClinux更可跑在ARM 9上)。

很多人预测,嵌入式Linux预计将占嵌入式操作系统的50%以上份额,非常重要。

缺点是熟悉Linux的人太少,开发难度稍大。

另外,目前我们能发现很多教材和很多大学都以ucOS/II为教学用实时操作系统,这主要是由于ucOS/II 较简单,且开源,非常适合入门者学习实时操作系统原理,但由于ucOS/II功能有限,实用用得较少。

况且熟悉了Linux开发,不仅在嵌入式领域有用,对开发Linux应用软件,对加深操作系统的认识也有帮助,可谓一举多得。

据我所知,目前Intel、Philip都在大搞ARM+LINUX的嵌入式开发,Fujitum则是在自己的处理器上大搞Linux 开发。

目前在嵌入式Linux领域,以下几个方面的人特别难找,一是能将Linux移植到某个新型号的开发版上;二是能写Linux驱动程序的人;三是熟悉Linux 内核裁减和优化的人。

不过LINUX有一个硬伤,就是没有WINDOWS那样的友好方便美观的交互界面,不然微软帝国早就守不住了。

相关主题