嵌入式系统在工业控制中的应用.docx
《嵌入式系统在工业控制中的应用.docx》由会员分享,可在线阅读,更多相关《嵌入式系统在工业控制中的应用.docx(6页珍藏版)》请在冰豆网上搜索。
嵌入式系统在工业控制中的应用
嵌入式系统在工业控制中的应用
嵌入式系统在工业控制中的应用摘要:
工业控制是嵌入式系统的应用的重要领域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处理器将来若同学到公司中从事嵌入式软件开发公司都会给你一本该设备的硬件规格说明书(_______xSpecification)你必须能看懂其中的内存分布和端口使用等最基本的说明(就像x86汇编一样)否则怎么设计软件。
有些同学觉得嵌入式处理器课程较枯燥这主要是硬件课程都较抽象的原因。
还有同学对ARM汇编不感兴趣以为嵌入式开发用C语言就足够了。
其实不应仅是将汇编语言当成一个程序设计语言学汇编主要是为了掌握处理器工作原理的。
一个不熟悉汇编语言的人怎么能在该处理器写出最优的C语言代码。
在嵌入式开发的一些关键部分有时还必须写汇编如Bootloader等(可能还包括BSP)。
特别是在对速度有极高要求的场合(如DSP处理器的高速图像采集和图像解压缩)目前还会用到汇编写程序的尽管用到的机会相对C要小得多。
当你在一个嵌入式公司工作时在查看描述原理的手册时可能很多都是用汇编描述的这是因为很多硬件设计人员只会写或者喜欢用汇编描述此时你就必须看懂汇编程序否则软硬件人员可能就无法交流。
很多嵌入式职位招聘时都要求熟悉汇编。
(2)嵌入式操作系统类课程除了WinCE的实时性稍差外大多数嵌入式操作系统的实时性都很强所以也可称为实时操作系统RealTimeOperatingSystem。
从事嵌入式的人至少须掌握一个嵌入式操作系统(当然掌握两个更好)这在嵌入式的所有技术中是最为关键的了。
目前最重要的RTOS主要包括:
第一类、传统的经典RTOS:
最主要的便是Vxworks操作系统以及其Tornado开发平台。
Vxworks因出现稍早实时性很强(据说可在1ms内响应外部事件请求)并且内核可极微(据说最小可8K)可靠性较高等所以在北美Vxworks占据了嵌入式系统的多半疆山。
特别是在通信设备等实时性要求较高的系统中几乎非Vxworks莫属。
Vxworks的很多概念和技术都和Linux很类似主要是C语言开发。
像Bell-alcatel、Lucent、华为等通信企业在开发产品时Vxworks用得很多。
但Vxworks因价格很高所以一些小公司或小产品中往往用不起。
目前很多公司都在往嵌入式Linux转(听说华为目前正在这样转)。
但无论如何Vxworks在一段长时间内仍是不可动摇的。
与Vxworks类似的稍有名的实时操作系统还有pSOS、QN_、Nucleus等RTOS。
第二类、嵌入式Linux操作系统:
Linux的前途除作为服务器操作系统外最成功的便是在嵌入式领域的应用原因当然是免费、开源、支持软件多、呼拥者众这样嵌入式产品成本会低。
Linux本身不是一个为嵌入式设计的操作系统不是微内核的并且实时性不强。
目前应用在嵌入式领域的Linux系统主要有两类:
一类是专为嵌入式设计的已被裁减过的Linux系统最常用的是uClinux(不带MMU功能)目前占较大应用份额可在ARM7上跑;另一类是跑在ARM9上的一般是将Linux2.4.18内核移植在其上可使用更多的Linux功能(当然uClinux更可跑在ARM9上)。
很多人预测嵌入式Linux预计将占嵌入式操作系统的50%以上份额非常重要。
缺点是熟悉Linux的人太少开发难度稍大。
另外目前我们能发现很多教材和很多大学都以ucOS/II为教学用实时操作系统这主要是由于ucOS/II较简单且开源非常适合入门者学习实时操作系统原理但由于ucOS/II功能有限实用用得较少。
况且熟悉了Linux开发不仅在嵌入式领域有用对开发Linux应用软件对加深操作系统的认识也有帮助可谓一举多得。
据我所知目前Intel、Philip都在大搞ARM+LINU_的嵌入式开发Fujitum则是在自己的处理器上大搞Linux开发。
目前在嵌入式Linux领域以下几个方面的人特别难找一是能将Linux移植到某个新型号的开发版上;二是能写Linux驱动程序的人;三是熟悉Linux内核裁减和优化的人。
不过LINU_有一个硬伤就是没有WINDOWS那样的友好方便美观的交互界面不然微软帝国早就守不住了。
第三类、WindowsCE嵌入式操作系统:
Microsoft也看准了嵌入式的巨大市场MS永远是最厉害的WinCE出来只有几年时间但目前已占据了很大市场份额特别是在PDA、手机、显示仪表等界面要求较高或者要求快速开发的场合WinCE目前已很流行(据说有一家卖工控机的公司板子卖得太好以至来不及为客户裁减WinCE)。
WinCE目前主要为4.2版(.)开发平台主要为WinCEPlatformBuilder有时也用EVC环境开发一些较上层的应用由于WinCE开发都是大家熟悉的VC++环境所以我院学过Windows程序设计课程的同学都不会有多大难度这也是WinCE容易被人们接受的原因开发环境方便快速微软的强大技术支持WinCE开发难度远低于嵌入式Linux。
对于急于完成不想拿嵌入式Linux冒险的开发场合WinCE是最合适了(找嵌入式Linux的人可没那么好找的)毕竟公司不能像学生学习那样试试看保证开发成功更重要。
根据不同的侧重点WinCE还有两个特殊版本一个是MSPocketPC操作系统专用于PDA上(掌上电脑)另一个是MSSmartPhone操作系统用于智能手机上(带PDA功能的手机)两者也都属于WinCE平台。
在PDA和手机市场上除WinCE外著名的PDA嵌入式操作系统还有PalmOS(因出现很早很有名)、Symbian等但在WinCE的强劲冲击下Palm和Symbian来日还能有多长?
同学学过VC++后再学WinCE非常方便自然通过学习WinCE同样也可了解嵌入式软件的一般开发过程对Linux有惧怕心理的同学也很合适。
很显然嵌入式Linux永远不可能替代WinCE而且将来谁占份额大还很难讲毕竟很多人更愿意接受MS的平台就像各国政府都在大力推LINU_已好长时间但你能看到几个在PC机上真正使用LINU_的用户?
据我观察目前在嵌入式平台上LINU_是叫得最响但还是WinCE实际用得更多。
嵌入式LINU_可能更多地是一些有长远产品计划的公司为降低成本而进行长远考虑。
WinCE和多媒体(如MPEG技术)是微软亚洲工程院目前做得较多的项目领域之一现在社会很需要精通WinCE的人。
现在有WINCE的智能手机金山词霸、WORD、E_CEL、REGEDIT等居然都有smartphone版的PC上的MP3、DOC等居然在download时都可被自动转换成smartphone格式很爽的。
完全可用WindowsCE自己开发一些需要的程序download到自己的手机上。
现在市面销售PDA智能手机火爆MS总是财源滚滚。
总结关于嵌入式操作系统类课程若你觉得自己功底较深且能钻研下去则可去学嵌入式Linux;若你觉得自己VC++功底较好且想短平快地学嵌入式开发自学WINCE是非常好的选择。
(3)嵌入式开发的相关领域搞嵌入式若能熟悉嵌入式应用的一些主要领域这样的人更受企业欢迎。
主要的相关领域包括:
A、数字图像压缩技术:
这是嵌入式最重要最热门的应用领域之一主要是应掌握MPEG编解码算法和技术如DVD、MP3、PDA、高精电视、机顶盒等都涉及MPEG高速解码问题。
B、通信协议及编程技术:
这包括传统的TCP/IP协议和热门的无线通信协议。
首先大多数嵌入式设备都要连入局域网或Inter所以首先应掌握TCP/IP协议及其编程这是需首要掌握的基本技术;其次无线通信是目前的大趋势所以掌握无线通信协议及编程也是是很重要的。
无线通信协议包括无线局域网通信协议802.11系列Bluetooth以及移动通信(如GPRS、GSM、CDMA等)。
C、网络与信息安全技术:
如加密技术、数字证书CA以及各种网络安全设备包括硬件防火墙、入侵检测IDS、还有防毒墙、IPS等中国在这方面还是没有自己优势的我们陈院长好象正在往这方面发展。
D、DSP技术:
DSP是DigitalSignalProcess数字信号处理的意思DSP处理器通过硬件实现数字信号处理算法如高速数据采集、压缩、解压缩、通信等。
数字信号处理是电子、通信等硬件专业的课程对于搞软件的人若能了解一下最好。
目前DSP人才较缺。
如果有信号与系统、数字信号处理等课程基础对于学习MPEG编解码原理会有很大帮助。
(4)嵌入式开发的相关硬件基础对于软件工程专业的学生从事嵌入式软件开发像数字电路、计算机组成原理、嵌入式微处理器结构等硬件课程是较重要的。
另外汇编语言、C/C++数据结构算法、特别是操作系统等软件基础课也是十分重要的。
我们的主要目地是能看懂硬件工作原理但重点应是在嵌入式软件特别操作系统级软件那将是我们的优势。
我们的研究生里有些是学电子、通信类专业过来的有较好的模拟电路和单片机基础学嵌入式非常合适。
嵌入式本身就是从单片机发展过来的只是单片机不带OS而现在很多嵌入式应用越来越复杂以至不得不引入嵌入式操作系统。
另外为追求更高速的信号处理速度现在在一些速度要求较高场合有不少公司是将一些DSP算法如MPEG压缩解压缩算法等用硬件来实现这就涉及到HDL数字电路设计技术及其FPGA/IP核实现技术这方面的人目前市场上也很缺。
参考文献
[1]王保进.一种提高构件化嵌入式操作系统性能的方案.微计算机信息.20__7 [2]田霖李正熙童朝南.实时仿真与嵌入式系统.微计算机信息.20__13
[3]班建民付保川等.基于嵌入式数据库的实时数据采集方法.微计算机信息.20__10[4]陈翌等.嵌入式软件开发技术.北京:
国防工业出版社20__