还剩51页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
哈尔滨远东理工学院学士学位论文题目嵌入式控制器组态软件运行环境的设计及应用姓名分 院工学院专 业电子信息工程学号指导教师王鑫二0年月日毕业设计论文评语及成绩
一、指导教师评语是否同意参加答辩指导教师签字20年月日
二、评阅人评语是否同意参加答辩评阅教师签字20年月日
三、答辩委员会评语是否建议授予学士学位答辩委员会成员签字
1、
2、
3、
4、
5、
6、
7、
8、
9、20年月日
四、答辩委员会主任单位答辩委员会主任职称答辩委员会主任签字20年月日
五、毕业设计论文成绩学生所在分院盖章20年月日哈尔滨远东理工学院毕业设计论文任务书学生姓名学号分院工学院专业电子信息工程任务起止时间2012年12月10日至2013年5月31日毕业设计论文题目嵌入式控制器组态软件运行环境的设计及应用毕业设计论文工作内容本课题将嵌入式系统技术与通用组态软件技术结合在一起,提出一种嵌入式控制器组态软件运行环境,它可以根据不同的组态配置文件生成不同功能的嵌入式控制器,不用编程,大大缩短了嵌入式产品投放市场的时间,而且使产品具有丰富的人机界面,强大的控制功能,并能够存储一定数量的历史数据毕业设计论文进度安排
1、查阅中外文文献资料,写出文献综述阶段2012年12月10日——2013年1月10日
2、调查、设计、实验、研究阶段2013月1月11日——2013年3月31日
3、设计(论文)撰写与整理阶段2013年4月1日——2013年5月31日指导教师意见与要求签字年月日主任意见签字年月日摘要自计算机技术进入“后PC”时代以来,控制系统正在向网络化、数字化迅猛发展这使得控制技术与嵌入式技术的结合更加紧密现代工业对控制系统的可扩展性,可管理性和易用性提出了越来越高的要求,这使得常规仪表逐渐被以嵌入式系统为核心的计算机控制系统所代替随着工业自动化尤其是远程监控系统的发展,传统的通过程序设计实现控制目的的方法越来越难以满足实际的工程需要,这时,工程组态软件应运而生了在嵌入式这一特殊环境中,需要对工控组态软件进行特殊的设计,以满足系统环境的需要,由此产生了一种特殊的工控组态软件——嵌入式组态软件本文介绍了嵌入式控制器组态软件运行唤醒选用的ARM7微处理器和基于此微处理器的硬件平台,以及嵌入式实时操作系统μC/OS-II;在分析了嵌入式组态软件的整体结构后,详细介绍了运行环境所要完成的功能和数据处理流程,并提出了嵌入式组态软件运行环境的设计思想;基于分析结果,根据具体配料称重控制器的要求重新设计了外围接口电路,在LPC2210微处理器上移植了嵌入式实时操作系统μC/OS-II和ZLG/GUI,开发了外设驱动程序;详细分析了嵌入式组态软件运行环境所用到的组态支撑模块的设计重点和关键技术利用设计好的嵌入式控制器组态软件运行环境组态生成了一个配料称重控制器,并检验了设计效果实验表明,运行环境能够根据组态配置文件生成符合要求的嵌入式控制器,整个过程无需大量编程,并可根据需要设计出不同的人机界面,控制功能也可以自由的删减,充分体现了组态软件的特点关键词嵌入式控制器;组态;ARM;μC/OS-II;配料称重系统AbstractSincetheeraofthepost-PCsincethecomputertechnologythecontrolsystemisnetworkeddigitizedrapiddevelopmentwhichmakesmorecloselycontrolthecombinationoftechnologyandembeddedtechnology.Modernindustrialcontrolsystemscalabilitymanageabilityandeaseofuseoftheever-increasingdemandswhichmakesconventionalinstrumentshavebeengraduallyreplacedbythecomputercontrolsystemcoreembeddedsystems.Withdevelopmentofindustrialautomationremotemonitoringsystemthetraditionalthroughproceduresdesignedtoachievecontrolpurposesitincreasinglydifficulttomeettheactualprojectneedsthistimetheengineeringsoftwarecameintobeing.Controlconfigurationsoftwareembeddedinthisspecialenvironmentaspecialdesigntomeettheneedsofthesystemenvironmentresultingaspecialcontrolconfigurationsoftware-embeddedconfigurationsoftware. ThisarticledescribestheembeddedcontrollerconfigurationsoftwarerunswakechosenARM7microprocessor-basedthemicroprocessorhardwareplatformaswellasembeddedreal-timeoperatingsystemμC/OS-II;intheanalysisoftheoverallembeddedconfigurationsoftwarestructuredetailsthefunctionsanddataprocessingoperatingenvironmenttocompletetheprocessandembeddedconfigurationsoftwareoperatingenvironmentdesignideas;basedontheanalysisofresultsdependingontheingredientsweighingcontrollerrequirementsredesignedtheperipheralinterfacecircuittransplantationofembeddedreal-timeoperatingsystemμC/OS-IIandZLG/GUILPC2210microprocessoranddevelopedperipheraldrivers;detailedanalysisoftheembeddedconfigurationsoftwareusedbytheoperatingenvironmentconfigurationsupportmoduledesignprioritiesandkeytechnologies.Usingdesignedembeddedcontrollerconfigurationsoftwareoperatingenvironmentconfigurationtogenerateabatchweighingcontrollerandtestthedesigneffect.Theexperimentsshowthattheoperatingenvironmentcanbegeneratedtomeettherequirementsoftheembeddedcontrollerconfigurationfilesdependingontheconfigurationthewholeprocesswithoutalotofprogrammingandcanbedesignedaccordingtotheneedsofdifferentman-machineinterfacecontrolfunctionscanalsobefreeofthedeletionfullyreflectstheconfigurationsoftwarefeatures.Keywords:embeddedcontroller;configuration;ARM;μC/OS-II;ingredientweighingsystem目录TOC\o1-3\h\z\u摘要IAbstractII目录III第1章绪论
11.1本课题的研究背景
11.2嵌入式系统组态软件
11.3本课题的研究意义
21.4本课题的主要工作3第2章嵌入式组态软件运行环境系统分析
42.1嵌入式系统
42.
1.1嵌入式系统定义
42.
1.2嵌入式系统结构
42.
1.3嵌入式系统特点
42.
1.4嵌入式系统的开发
52.2嵌入式控制器硬件平台
52.
2.1ARM7TDMI_S微处理器
52.
2.2基于ARM7的硬件平台
62.3嵌入式操作系统
62.
3.1嵌入式操作系统简介
62.
3.2嵌入式实时操作系统μC/OS-II
82.4嵌入式组态软件运行环境整体架构
92.
4.1嵌入式组态软件结构
92.
4.2嵌入式组态软件开发环境
92.
4.3嵌入式组态软件运行环境
92.5嵌入式组态软件运行环境分析
102.
5.1嵌入式组态软件运行环境的功能
102.
5.2嵌入式组态软件运行环境数据处理流程
112.
5.3嵌入式组态软件运行环境设计思想
112.6本章小结13第3章嵌入式组态软件运行环境具体设计
143.1嵌入式控制器硬件平台建立
143.
1.1A/D采样接口电路
143.
1.2脉冲信号检测接口电路
143.
1.3D/A输出接口电路
153.2嵌入式操作系统μC/OS-II移植
153.
2.1编写OS_CPU.H
163.
2.2编写OS_CPU_C.C
173.
2.3编写OS_CPU_A.S
193.3μC/OS-II下外设驱动开发
203.
3.1LCD驱动开发
203.
3.2ZLG/GUI移植
223.
3.3UART驱动开发
243.
3.4A/D驱动开发
253.
3.5定时器驱动开发
273.
3.6PWM驱动开发
273.4运行环境组态支撑模块设计
293.
4.1数据管理模块
293.
4.2图形显示模块
303.
4.3通信模块
313.
4.4I/O模块
323.
4.5控制算法模块
323.5本章小结34第4章应用案例实验及分析
354.1配料称重控制器概述
354.2配料称重控制器的设计及检验
354.
2.1控制器设计要求
354.
2.2控制器功能组态
354.
2.3控制器人机界面组态
364.
2.4控制器运行检验
374.3本章小结38结论39致谢40参考文献41附录A42附录B44附录C45第1章绪论
1.1本课题的研究背景自计算机技术从20世纪90年代进入充满机遇的“后PC”时代以来,控制系统正在向网络化,数字化迅猛发展,这使得控制技术与嵌入式技术的结合更加紧密现代工业对控制系统的可扩展性,可管理性和易用性提出了越来越高的要求,这使得常规仪表逐渐被以嵌入式系统为核心的计算机系统所替代嵌入式系统在工业控制中的广泛应用,极大地提高了工业生产的信息化、现代化和自动化水平工业生产线上将广泛应用嵌入式控制技术和基于嵌入式技术的控制器目前,各种各样的新型嵌入式系统在应用数量上已经远远超于通用计算机在工业生产中,使用嵌入式技术的数字机床,智能工具,工业机器人正在逐渐改变着传统的工业生产方式因此,嵌入式系统将是今后的主流发展趋势随着工业自动化尤其是远程监控系统的发展,传统的通过程序设计实现控制目的的方法越来越难以满足实际的工程需要,这时,工程组态软件应运而生了在嵌入式系统这一特殊环境中,需要对工程组态软件进行特殊的设计,以满足系统环境的需要,由此产生了一种特殊的工控组态软件——嵌入式组态软件
1.2嵌入式系统组态软件
1.通用组态软件组态一词来源于英文单词configuration,“组态软件”作为一个专业术语,到目前为止,并没有一个统一的定义,它是伴随着集散控制系统DistributedControlSystem,简称DCS的出现而引入工业控制领域的从组态软件的内涵上说,组态软件是指在软件方面,操作人员根据应用对象及控制任务的要求配置用户应用软件的过程,也就是把组态软件视为“应用程序生成器”从应用角度讲,组态软件是自动控制系统中的监控层,完成系统硬件与软件的沟通、对现场的实时监测与控制,起到在管理层和控制层之间上传下达的作用在工业过程控制系统中存在着两大类可变因素一是操作人员需求的变化;二是被控对象状态的变化及被控对象所用硬件的变化而组态软件正式在保持软件平台执行代码不变的基础上通过改变软件配置信息包括图形文件、硬件配置文件、实时数据库等,适应系统对两大可变因素的要求,构建新的监控系统的平台软件以这种方式构建系统既提高了系统的成套速度,又保证了系统软件的成熟性和可靠性,使用起来方便灵活,而且便于修改和维护组态软件的另一大特点是实时多任务,数据采集与输出、数据处理与算法实现、图像显示与人机对话、实时数据的存储、查询与管实时通信等多个任务要在一个系统中同时运行
2.嵌入式组态软件产生与发展嵌入式系统近些年发展迅速,在工业控制领域内更是如此,越来越得到专业人士的青睐它的主要作用是实时控制、监视、管理被控对象、数据处理等,或者辅助其他设备运转,完成各种自动化处理的任务然而纵观工控行业,虽然嵌入式硬件设备很多,但嵌入式应用软件却极度缺乏,严重地限制了嵌入式系统在工控行业的应用和推广,制约着嵌入式系统的发展目前的嵌入式系统,无论是不装操作系统的,还是装有WindowsCE、Linux等操作系统的,支持组态软件的都很少,用户如果需要开发一个嵌入式的监控系统,一般都需要亲自编程这样不仅开发工作量大、周期长,而且系统运行的稳定性也较差,同时以后系统的软件升级与维护也比较困难另一方面,组态软件已经在工业控制领域发展了十几年,并且取得了巨大的成功它从根本上改变了技术工控系统需要大量编程的开发方法所以将嵌入式系统技术与组态软件及时相结合,行程一种类似于通用组态软件的嵌入式组态软件,使之能够快速、高效、方便地开发出适应各种场合的嵌入式系统是必然的目前国内外的嵌入式组态技术尚处于发展初期,相应的软件产品并不多国外方面,IndusoftWebStudio生产的嵌入式HMI/SCADA软件据说是市场上第一个可以运行于WindowsCE上的嵌入式组态软件,它可以运行于多种处理器上,如ARM、MIPS、MIPSFP、SH
3、PowerPC、THUMB等,而其他的一些嵌入式组态软件则只能运行于有限的几种处理器上Progea的MoviconCE可以在WindowsCE下运行国内的嵌入式组态软件还相当的少,比较有影响的有亚控公司的组态王嵌入式版和北京昆仑通态的MCGSE组态王嵌入式版
6.0是亚控公司在组态王
6.0基础上,为嵌入式应用开发的产品,具有功能强、通信方便、操作简便等优点MCGSEMonitorandControlGeneratedSystemforEmbedded,嵌入式通用监控系统是一种用于快速构造和生成嵌入式计算机监控系统的组态软件它通过对现场数据的采集处理,以动画显示、报警处理、流程控制和报表输出等多种方式向用户提供解决实际工程问题的方案
3.嵌入式组态软件与通用组态软件比较嵌入式组态软件是相对于通用组态软件来说的,是从通用组态软件发展而来的,因此它们之间有着很多相似之处,但也有很明显的区别,从结构上说,嵌入式组态软件和通用组态软件一样,都是由开发环境和运行环境组成开发环境用于人机界面设计、硬件参数配置、实时数据库设计等系统配置工作,然后将设计好的应用软件投入运行环境运行从功能上说,在工控行业它们都是用于完成对被控对象的监视、控制和数据采集,都具备实时多任务的能力但是通用组态软件的开发环境和运行环境大都是基于Windows操作系统的,系统难以裁剪、固化、不能用于对可靠性、实时性和安全性要求很高的控制系统中而且由于这些组态软件都是PC-Based的,不适合应用在对体积、功耗和成本等有严格要求的场合嵌入式组态软件则不同,它的开发环境一般基于通用性较强的Windows平台上,而运行环境却具有多样性,它的硬件平台可以试PC/104那样标准的嵌入式应用平台,也可以是为具体应用专门设计的平台;它的操作系统有WinCE、μCLinux、VxWorks、μC/OS-II等多种选择嵌入式组态软件运行环境的软硬件都具有可裁剪性,可根据具体应用进行伸缩性配置开发环境设计好的配置文件和操作系统都固化在ROM、Flash等会存储器中,而不是工控机的磁盘等载体中由于运行环境采用的一般是实时性强的嵌入式操作系统,系统运行不需要人的干涉,所以很适合那些稳定性、时尚性高的操作系统另外,嵌入式系统体积小,功耗低,也更适合特定现场的控制
1.3本课题的研究意义通用组态软件已经在工业控制领域取得了巨大的成功,嵌入式系统技术也越来越得到工控专业人士的青睐,所以两者的结合时其发展的必然趋势嵌入式组态软件不具备嵌入式软件开发经验的用户能够在极短的时间内,快速开发完成一个嵌入式系统,同时又保证了整个系统的小体积,低成本,高实时性和高可靠性同时,嵌入式组态软件的研制也是迫切需要的虽然国内有众多嵌入式硬件厂家,市场上也有多种可用的嵌入式操作系统,但是方便用户开发嵌入式控制系统的平台少之又少目前国内外的嵌入式组态软件还处于发展时期,成熟的产品还不多,离用户对嵌入式组态软件的需求还有很大差距所以,嵌入式组态软件具有广泛的应用前景和市场前景,研制嵌入式组态软件具有重要的意义,本课题将把设计好的嵌入式组态软件运行环境用于配料称重控制器的研发
1.4本课题的主要工作本课题将嵌入式系统技术与通用组态软件技术结合在一起,提出一种嵌入式控制器组态软件运行环境,它可以根据不同的组态配置文件生成不同功能的嵌入式控制器,不用编程,大大缩短了嵌入式产品投放市场的时间,而且使产品具有丰富的人机界面,强大的控制功能,并能够存储一定数量的历史数据本课题的研究内容如下
1.在对嵌入式组态软件运行环境整体结构分析的基础上,根据实际情况选择了设计组态软件运行环境需要的硬件平台和嵌入式操作系统
2.根据具体应用系统,对已有硬件平台的外围接口电路进行重新设计,增加了A/D采样接口、脉冲信号检测接口和D/A输出接口电路
3.为了充分发挥32位CPU的多任务潜力,满足嵌入式组态软件实时多任务的要求,选择了嵌入式实时操作系统μC/OS-II来对运行环境中的软件各部分进行管理,因此对于μC/OS-II在ARM7微处理器上的移植及其μC/OS-II下的外设驱动开发需进行深入研究
4.为了能够根据不同的组态配置文件生成不同功能的嵌入式控制器,需对组态支撑模块的设计进行研究,它主要包括数据管理模块、图形显示模块、通信模块、I/O模块和控制算法模块等在嵌入式控制器组态软件运行环境的设计完成后,利用它设计生成一个配料称重控制器,以检验设计效果第2章嵌入式组态软件运行环境系统分析
2.1嵌入式系统
2.
1.1嵌入式系统定义所谓嵌入式系统EmbeddedSystem,IEEE的定义是用于控制、监视或者辅助操作的机器、设备或装置原文为devicesusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants术语“嵌入式”反映了这些系统通常是更大系统中的一个完整子系统,被嵌入的系统中可以共存多个这样的嵌入式系统
2.
1.2嵌入式系统结构经过几十年的发展,嵌入式系统自底向上逐渐演化为4层结构
1.硬件平台是支撑整个嵌入式系统运行的硬件环境,它由嵌入式微处理器最小系统扩展外围电路和输入/输出设备等部分组成单独一个嵌入式微处理器是不能工作的,它还必须包括供电电路、时钟信号、复位系统和必要的存储器组成最小系统才能正常工作扩展外围电路通常根据应用领域的差别而有所不同,一般包括A/D、D/A、I/O和通信接口等,有的还包括音频、图像控制器输入/输出设备主要是指人机交互接口,如键盘、LCD和触摸屏等
2.板级支持包是后来演化出来的一层结构,也叫做硬件抽象层,是介于硬件与软件之间的中间层次板级支持包通过特定的上层接口与操作系统进行交互,向操作系统提供底层的硬件信息,并根据操作系统的要求完成对硬件的直接操作
3.嵌入式操作系统负责嵌入式系统中全部软硬件资源的分配与回控制与协调等并发的活动提供用户程序接口,使用户获得良好的工作环境;为用户扩展新的系统功能提供软件平台它具有规模小、可裁剪、可固化和实时性强等特点
4.嵌入式应用程序是运行于嵌入式操作系统之上的各个人物,每个人物均有一个优先级,操作系统根据各个任务的要求,进行资源管理、消息管理、任务调度及异常处理等工作不同应用系统的用户应用程序也不尽相同
2.
1.3嵌入式系统特点与通用计算机系统相比,嵌入式系统一般具有体积小、功耗低、实时性强和可靠性高等特点嵌入式系统和具有应用紧密结合在一起,使得它的升级换代和具体产品同步进行因此,嵌入式系统产品一旦进入市场,便具有较长的生命周期各不相同的应用领域决定了嵌入式系统行业是不可垄断的、高度分散的,充满竞争、机遇与创新,即便在体系结构上存在着主流,也没有哪一个系列的处理器和操作系统能够垄断全部市场另外,嵌入式系统是被嵌入的设备机密相连的专用计算机系统,有很强的专用性,这就决定了其硬件平台的多样性,必须根据应用的不同,设计专门的硬件平台也正因为如此,导致了用户软件必须根据功能和硬件的差别来“量体裁衣”,一般要针对具体的硬件平台进行操作系统的移植和应用程序的重新编写
2.
1.4嵌入式系统的开发根据嵌入式系统硬件多样化和软硬结合紧密的特点,目前比较常用的开发方法有两种软硬件分离设计方法和软硬件协同设计方法
1.软硬件分离设计方法在计算机科学发展初期,软硬件的设计流程截然不同,软件设计者编写程序,硬件设计者连接元件,两者的设计不可能交互,必须单独进行这种设计者编写程序,硬件设计者连接元件,两者的设计不可能交互,必须单独进行这种传统的设计方法被称为“软硬件分离设计”在此方法中,软硬件划分在系统开发的初期进行,一次性划分后软件和硬件所分配的功能就不能改变软件通过编写程序运行在微处理器上实现系统安全或大部分功能,硬件则主要通过“板级”专用电路为软件运行提供平台这种设计方法可使软硬件开发并行推进,但联调必须等到软硬件都开发出来后才能进行由于软硬件开发过程割裂和最初的功能划分不协调等原因,可能会暴露出很多问题,严重时导致系统重新开发
2.软硬件协同设计方法随着近年来SoC技术的进步,软件编译和硬件综合技术的并行发展,如今两个领域都可以时序程序描述行为作为设计的起点,如软件使用C语言、硬件使用HDL进行描述这使得软硬件协同设计成为可能此方法中,对于某个特定功能的软硬件划分主要是取决于性能、功率、大小和灵活性等设计指标,没有本质的区别软硬件协同设计可在设计过程的各个阶段同时考虑两者的功能和性能,找到其最佳组合方式,并且在系统实现前就可以进行协同仿真和验证,保证了系统设计的正确性和完整性如何简洁有效地开发出应用于各种不同环境的嵌入式系统,是嵌入式系统发展中所必须解决的关键问题
2.2嵌入式控制器硬件平台
2.
2.1ARM7TDMI_S微处理器ARM即AdvancedRISCMachines的缩写1990年ARM公司成立于英国剑桥,主要从事芯片知识产权IP核的设计它本身并不生产芯片,靠转让技术授权给世界上许多著名的半导体、软件和OEM厂商来生产各具特色的芯片ARM处理器具有三个显著的特点,
一、耗电少、成本低、功能强;
二、16位/32位双指令集;
三、全球众多合作伙伴保证芯片供应ARM处理器当前有6个产品系列ARM
7、ARM
9、ARM9E、ARM10E、ARM11和SecurCore,其中ARM11为最近推出的产品进一步的产品来自于合作伙伴,例如IntelXscaleARM7内核采用冯•诺伊曼体系结构,数据和指令使用同一条总线内核执行ARMv4指令集,有一条3级流水线,可使取指、译码、执行三个操作同时进行,并使处理和存储器系统连续操作,能提供
0.9MIPS/MHz的执行速度,主频在20MHz-133MHz之间ARM7系统包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S四种类型,主要用于适应不同的市场需求ARM7系列处理器主要用于对功耗和成本要求比较苛刻的消费类产品和嵌入式设备,包括Internet设备、网络和调制解调器设备以及移动电话、PDA等无线设备本课题采用了ARM7TDMI-S内核的微处理器内核命名的具体含义是T16位压缩指令集ThumbD在片调试debug支持,允许处理器响应调试请求暂停M增强型乘法器multiplier,与以前处理器相比性能更高,产生全64位结果I嵌入式ICE硬件提供片上断点和调试点支持-S可综合synthesizable版本ARM7TDMI-S同样是基于精简指令集计算机RISC原理而设计,指令集和相关的译码机制比复杂指令集计算机要简单的多,实现了高的指令吞吐量,出色的实时中断响应,小的、高性价比的处理器宏单元
2.
2.2基于ARM7的硬件平台本课题选用了周立功单片机公司的产品EasyARM2200作为嵌入式组态软件运行环境的研究基础EasyARM2200开发板是一款功能强大的32位ARM单片机开发板,采用了NXP公司以ARM7TDMI-S为内核、总线开放的单片机LPC
2210.LPC2210是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI-SCPU的微控制器,144脚LQFP封装,CPU
1.8V、I/O
3.3V双电源供电具体特性如下
1.16KB静态RAM
2.外部8位、16位或32位总线
3.通过外部存储器接口可将存储器配置成4组,每组的容量高达16MB
4.8路10位A/D转化器,转换时间低至
2.44μs
5.2个32位定时器带4路捕获和4路比较通道、PWM单元6路输出、实时时钟和看门狗
6.多个串行接口,包括2个16C550工业标准UART、高速I²C接口400Kbps和2个SPI接口
7.通过片内PLL可实现最大为60MHz的CPU操作频率
8.向量中断控制器,可配配置优先级和向量地址
9.多达个通用I/O口可承受V电压,12个独立外部中断引脚EINT和CAP功能
10.2个低功耗模式空闲和掉电,通过外部中断可将处理器从掉电模式中唤醒
11.可通过个别使能/禁止外部功能来优化功耗EasyARM2200开发板的硬件配置如下:
1.LPC2210,可选用多种兼容芯片
2.20针JTAG接口,支持ADS
1.2集成开发环境
3.4M位SRAM,16M位Flash
4.RTL8019AS网卡芯片和RJ45以太网接口
5.2个RS232串口,1个支持标准Modem
6.具有IDE硬盘接口和CF存储卡接口
7.图形液晶显示接口
8.16个按键和8个LED八段码
9.ADC接口和PWM输出接口嵌入式组态软件运行环境硬件平台结构框图2-1所示
2.3嵌入式操作系统
2.
3.1嵌入式操作系统简介在嵌入式系统发展的初期,由于硬件资源有限微处理器运算速度低,ROM/RAM容量小等,系统规模小,控制功能简单,软件部分一般不包括嵌入式操作系统,只是针对具体的应用编写软件代码图2-1嵌入式组态软件运行环境硬件平台结构框图嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得越来越重要首先,嵌入式实时操作系统提高了系统的可靠性长期以来,前后台系统软件设计在遇到强干扰时,运行的程序可能产生异常、出错、跑飞甚至死循环,造成了系统的崩溃而实时操作系统管理的系统这种干扰可能只是引起若干进程中的一个被破坏,可以通过系统运行的系统监控进程对其进行修复其次提高了开发效率,缩短了开发周期在嵌入式实时操作系统环境下,开发一个复杂的应用程序,通常可以按照软件工程中的解耦原则将整个程序分解为多个任务模块每个任务模块的调试、修改几乎不影响其他模块再次,嵌入式实时操作系统充分发挥了32位CPU的多任务潜力32位CPU比8位、16位CPU运行快,另外它本来就是为运行多用户、多任务操作系统而设计的,特别适于运行多任务实时操作系统如果还是采用以前的前后台方式,则无法发挥32位CPU的优势在嵌入式应用中,只有把CPU嵌入到系统中,同时又把操作系统嵌入进去,才是真正的计算机嵌入式应用嵌入式操作系统有以下几大特点
1.占用存储空间小嵌入式系统的操作系统和应用软件一般都固化在ROM、Flash等中,其存储容量有限,所以嵌入式操作系统必须做到规模小以满足嵌入式系统硬件的限制
2.实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件做出响应的能力嵌入式系统一般是为完成一系列具体任务而设计,因而总是要求系统在规定的时间内完成某些操作,对中断能做出及时准确的响应,所以嵌入式操作系统必须具备实时性的特点
3.健壮性包含弱交互性和强稳定性两层意思嵌入式操作系统开始运行后就不需要人过多的干预它的用户接口一般不提供操作命令,只是通过系统调用命令向用户程序提供服务由于没有人为干预,而嵌入式系统的运行环境一般又较PC运行环境恶劣车载、太空、强电干扰、辐射等等,都有可能造成系统运行指令的紊乱因此要求嵌入式操作系统有很强的稳定性,在一些进程被损坏时可以进行修复、清楚等操作
4.具备自引导功能当一个微处理器最初启动时,它首先执行一个预定地址处的指令通常这个位置是只读内存其中存放着系统初始化或引导程序,在PC中,它就是BIOS而在嵌入式系统中,由于没有BIOS,系统加电后直接执行嵌入式操作系统代码,因此在嵌入式操作系统的启动代码中需要考虑目标板的设计
5.可裁剪、可移植因所需完成的目标不同,嵌入式操作系统必须能够根据应用的要求进行裁剪,去掉多余的部分,或者简化相应的模块另外由于硬件平台的多样性,所以嵌入式操作系统还要具有较好的可移植性,来适应不同的微处理器
2.
3.2嵌入式实时操作系统μC/OS-II目前市场上有很多种嵌入式操作系统,常见的有嵌入式Linux、WindowsCE、VxWorks、Nucleus、μC/OS-II等考虑到版权费用,源代码开放和获取渠道等问题,本课题的研究将使用μC/OS-II作为嵌入式组态软件运行环境的操作系统μC/OS-II读作“microCOS2”,意为“微控制器操作系统版本2”μC/OS-II是一个完整的,可移植、固化、裁剪的占先式实时多任务内核μC/OS-II是用ANSI的C语言编写的,包含一小部分汇编语言代码,使之可供不同架构的微处理器使用至今,μC/OS-II已在照相机行业、航空业、高端音响、医疗器械、电子乐器、发动机控制网络设置、高速公路电话系统、自动提款机及工业机器人等众多领域内广泛应用μC/OS-II有以下一些特点
1.有源代码,μC/OS-II的源代码可从MicroC/OS-IITheReal-TimeKernel,SecondEdition一书中获得,也可从其他出版物或网络上获得源代码标有详尽的注解清晰易读、结构协调
2.可移植性portableμC/OS-II源码绝大部分是用移植性很强的ANSIC写的,与微处理器硬件相关的部分是用汇编语言写的汇编语言写的部分已经压到最低限度,以使μC/OS-II便于移植到其他微处理器上
3.可固化ROMableμC/OS-II是为嵌入式应用而设计的,这就意味着,只要具备核实的系列软件工具C编译、汇编、链接及下载/固化,实际上就可以将μC/OS-II嵌入到产品中作为产品的一部分
4.可裁剪scalable可根据具体应用程序的需要来选择使用μC/OS-II中的系统服务,这样可以减少产品中μC/OS-II所需的存储空间RAM和ROM
5.可剥夺性preemptiveμC/OS-II是完全可剥夺型的实时内核,即μC/OS-II总是运行就绪条件下优先级最高的任务
6.多任务μC/OS-II可以管理64个任务,其中建议保留8个给系统任务,这样用户的应用程序最多可有56个任务,赋予每个任务的优先级必须是不相同的,所以μC/OS-II不支持时间片轮转调度法round-robinscheduling
7.可确定性绝大多数μC/OS-II的函数调用和服务的执行时间具有可确定性也就是说,用户总是能知道μC/OS-II的函数调用与服务执行了多长时间,并且执行时间不依赖于用户应用程序任务数目的多少
8.任务栈每个任务都有自己单独的栈μC/OS-II语序每个任务有不同的栈空间,以便压低应用程序对RAM的需求使用μC/OS-II的栈空间校验函数,可以确定每个任务到底需要多少栈空间
9.系统服务μC/OS-II提供很多系统服务,例如信号量、互斥型信号量、时间标志、消息邮箱、消息队列、内存块的申请与释放及时间管理函数等
10.中断管理中断可以使正在执行的任务暂时挂起如果优先级更高的任务被中断唤醒,则高优先级任务在中断嵌套全部退出后立即执行,中断嵌套层数可达到255层
11.稳定性与可靠性μC/OS-II在一个航空项目中得到了美国联邦航空管理局对于商用飞机的、符合RTCADO-178B标准的认证它的每一种功能、每一个函数及每一行代码都经过了考验与测试
2.4嵌入式组态软件运行环境整体架构
2.
4.1嵌入式组态软件结构嵌入式组态软件和通用组态软件一样,都由开发环境和运行环境组成如图2-2所示图2-2嵌入式组态软件结构框图开发环境运行于普通的PC机上,运行环境运行于嵌入式系统上运行环境所在的嵌入式系统由硬件平台和软件部分组成,软件又分为操作系统和应用软件两个部分嵌入式操作系统需要经过适当的裁剪和移植,使得能够适应所用的硬件平台,应用软件主要是指嵌入式组态软件运行环境的实现部分
2.
4.2嵌入式组态软件开发环境嵌入式组态软件开发环境运行于人机界面良好的Windows系统上,为嵌入式控制系统提供了一个设计平台,通过这个平台开发人员可以方便的进行控制系统人机界面设计、硬件参数配置、实时数据库设计、控制流程设计等操作,然后将组态结果转换为运行环境能够快速读取的组态配置文件,将组态结果保存为文件以便重复打开查看和修改,将组态配置文件下载到运行环境中开发环境一般包括工程管理器包括项目、实时数据库、设备等的管理、画面组态包括趋势图、报警和报表、实时数据库组态、控制系统组态包括逻辑控制、流程控制、调试仿真工具、编译下载系统等
2.
4.3嵌入式组态软件运行环境嵌入式组态软件运行环境是一个独立的运行系统,它按照开发环境中用户定的方式进行各种处理,完成用户组态设计的目标和功能运行环境本身没有任何意义,必须与开发环境生成的配置文件一起作为一个整体,才能构成用户应用系统一旦组态工作完成,并且将组态好的工程通过串口或以太网下载到下位机的运行环境中,组态工程就可以离开开发环境而独立运行在下位机上,从而实现了嵌入式控制系统的可靠性、实时性、确定性和安全性运行环境一般由硬件平台、板级支持包包括各种外设驱动程序,由于硬件平台的多样性和嵌入式系统资源有限,一般需要开发者自行设计、嵌入式操作系统和组态支撑模块等组成其中组态支撑模块大多为组件式可伸缩配置结构,一般包括人机界面HMI模块包括趋势图、报警及报表等可选模块、实时数据库模块、逻辑和流程控制Control模块及通信、Internet模块等详细的架构如图2-3所示图2-3嵌入式组态软件运行结构框图这里,嵌入式组态软件运行环境的硬件平台是第2章中介绍的EasyARM2200,嵌入式操作系统选择的是μC/OS-II
2.5嵌入式组态软件运行环境分析
2.
5.1嵌入式组态软件运行环境的功能嵌入式组态软件运行环境作为一个独立的运行系统,通过接收开发环境生成的组态配置文件夹完成用户要求的控制目标它具有以下以下主要功能
1.丰富的人机界面嵌入式组态软件的运行环境能够根据组态配置文件在硬件平台的显示设备一般是LCD中显示生成良好的应用系统界面,以图形动画或可变文字的形式来实时反映被控对象的状态;提供友好的人机交互接口,方便工程人员发出各种控制命令
2.数据采集和控制命令输出嵌入式组态软件运行环境的硬件平台中包括了各种I/O接口,可进行模拟量采集、状态量检测、脉冲频率检测等操作,也可将计算所得的控制量和操作人员的控制命令通过D/A或DO的方式输出至执行机构,来达到控制目的
3.数据处理由I/O接口输入的模拟量和状态量都会以一定的形式存入数据库,方便用户查询、分析被控对象的工作状态;或是绘制实时曲线图,使用户更加直观的看到被控对象的状态变化当检测信号发生错误或超过设定的限值时,能够进行报警处理
4.控制算法实现嵌入式组态软件运行环境的软件部分内置了多种控制算法,例如数字PID算法、针对纯滞后对象的大林算法等,用户可以根据被控对象的特性来选择合适的算法
5.通信功能嵌入式组态软件运行环境需要具有与上位机通信的功能来接收开发环境中组态好的配置文件,也可以用于上传工作现场的检测数据常用的通信方式有串口通信,以太网等
2.
5.2嵌入式组态软件运行环境数据处理流程嵌入式组态软件运行环境的组态支撑模块包括数据管理模块、图形显示模块、通信模块等,其中数据管理模块作为核心来组织协调各模块之间的工作,完成应用系统所指定的各项功能本组态软件运行环境的数据处理流程如图2-4所示图形显示模块数据管理模块图2-4嵌入式组态软件运行环境数据处理流程从图中可以看出,数据管理模块经由通信模块从上位机得到组态配置文件,按照用户要求生成应用控制系统当系统开始运行时,现场采集到的实时数据模拟量和识字量都交给数据管理模块,由它来统一进行管理数据可简单处理后直接送给图形显示模块进行实时显示;也可经过特定控制算法得到控制量,再由I/O模块输出至执行机构;还可做一定时段的数据存储,方便查询或是绘制曲线图操作人员的控制命令也交由数据管理模块做出相应的处理运行环境的数据与代码是分离的,并且体现了数据驱动的特点
2.
5.3嵌入式组态软件运行环境设计思想研究嵌入式组态软件的主要目的是让用户在设计应用系统是,不必关心具体的嵌入式操作系统,底层的硬件驱动程序以及控制程序等时机编程工作,只需在开发环境中进行界面编辑,系统软、硬件参数配置,并加入控制流程算法实现,就可以生成满足用户需要的自动监控系统来执行特定的控制任务所以,在设计嵌入式组态软件运行环境时,要根据所用的硬件平台充分考虑到平台中各种设备具体应用情况,编写通用的控制程序,体现组态配置文件中的数据与运行环境中的代码分离,以数据配置、驱动代码的设计思想此嵌入式组态软件运行环境可分为数据管理模块、图形显示模块、通信模块和I/O模块,分别介绍其设计思想
1.数据管理模块数据管理模块是本嵌入式组态软件运行环境的核心部件它是数据处理中心,通信模块发送来的配置文件、I/O模块采集到的数据和操作人员的控制命令等所有数据都交由它来统一管理和调度,这样体现了数据和代码分离的特点当数据的接口定义和处理方式发生改变时,一般只需要修改本管理模块的相关部分的代码就可以实现数据管理模块从通信模块接收到组态配置文件后,按照用户要求重新配置嵌入式,制器,并交由图形显示人机界面;当系统运行后,I/O模块采集到的数据和操作人员的控制命令等所有数据都交由它来统一管理和调度,这样体现了数据和代码分离的特点当数据的接口定义和处理方式发生改变时,一般只需要修改本管理模块的相关部分的代码就可以实现数据管理模块从通信模块接收到组态配置文件后,按照用户要求重新配置嵌入式控制器,并交由图形显示模块显示人机界面;当系统运行后,I/O模块采集到的数据传给本数据管理模块,经过一系列由用户指定的处理方式,最终形成具有实际意义的工程数据,再传给图形显示模块实时显示,或通过I/O模块输出至执行机构完成自动控制;操作人员的控制命令通过图形显示模块也传给本模块,进行相应的处理后,由数据管理模块协调各模块来完成控制功能;对于用户需要保存的有关数据,则可以进行存储操作
2.图形显示模块图形显示模块实现对LCD的驱动,并利用ZLG/GUI来完成嵌入式控制器的人家界面显示和被控对象状态的实时监测显示,以满足操作人员直观、方便地监控整个系统的要求图形显示模块首先根据数据管理模块接收到的组态配置文件中有关图形界面部分的配置参数来初始化人机界面,包括界面窗口的大小、位置和标题栏,菜单按钮的位置、标题提示,以及系统界面中其他图形、文字显示的初始化等然后等待接收数据管理模块传递过来的实时数据,并在图形界面上实时显示,或者对一段时间内的数据进行趋势图显示,如果有操作人员通过键盘输入控制命令,则弹出响应的窗口,将命令传给数据管理模块
3.通信模块通信模块通过调用UART驱动程序来对串口进行接收、发送操作,完成组态配置文件的下载和嵌入式控制器中现场数据的上传等功能一般情况下,通信模块会利用简单的握手信号来保持上位机和嵌入式控制器之间的通信状态当其接收到上位机要发送新的组态配置文件的请求时,会立即通知数据管理模块,确定是否接收组态配置文件若同意接收,则通信模块会把接收到的组态配置文件暂存于一个缓冲区间内,待校验无误后传给数据管理模块用于配置嵌入式控制器;若不同意接收,则回复上位机取消发送在系统运行时,数据管理模块也可通过通信模块将一些关键数据传送至上位机,以方便工作人员的进一步分析
4.I/O模块I/O模块通过对A/D转换器、定时器和PWM脉宽调制器等底层外设的驱动,完成对被控对象的数据采集和执行机构的控制量输出等操作I/O模块首先根据数据管理模块接收到的组态配置文件中有关输入输出部分的配置参数来初始化相关硬件包括A/D转换器的采样通道、周期,定时器频率检测的周期,PWM脉宽调制器的输出通道、控制方式等然后将采集到的数据、频率值等保存在数据管理模块的数据缓冲区中,由控制算法模块调用;再把数据管理模块发送来的控制量和命令,通过PWM等输出通道送至相应设备,完成系统控制功能
5.控制算法模块所谓“控制算法”,即控制的思想和方法,是解决一确定类问题的任意一种特殊的方法在计算机科学中,控制算法要用计算机语言描述,代表用计算机解一类问题精确、有效地方法这里控制算法模块式为了使嵌入式控制器能够对整个系统实现自动控制,满足用户的应用需要,而编写的计算机程序为了体现嵌入式控制器组态软件运行环境的通用性,控制算法模块应该包含多种不同的控制算法,以编号区别,让用户根据需要自由地选择使用适合不同被控对象的特定算法每种控制算法都应包括相关组态配置参数,例如,PID控制算法需设计比例系数、积分系数、微分系数、给定量、测量量和输出量等组态配置参数应用系统开发人员在嵌入式组态软件开发环境中根据需要完成控制算法的选择和参数配置,下载至运行环境中就可以使生成的嵌入式控制器按照要求完成控制功能,从而实现对外部设备工作过程的精确控制和有序的调度管理
2.6本章小结本章对嵌入式组态软件的运行环境进行了详细的分析首先详细介绍了嵌入式控制器组态软件运行环境选用的ARM7微处理器和基于此微处理器的硬件平台,以及嵌入式实时操作系统μC/OS-II然后介绍了嵌入式组态软件的整体结构,在此基础上,简要介绍了嵌入式组态软件的开发环境,并对嵌入式组态软件运行环境的整体结构进行了逐层分析接着分析了运行环境所要完成的功能和数据处理流程,提出了嵌入式组态软件运行环境的设计思想,最后详细阐述了各个组态支撑模块的设计思想第3章嵌入式组态软件运行环境具体设计
3.1嵌入式控制器硬件平台建立在第2章中已经介绍了本嵌入式组态软件运行环境的硬件平台——EasyARM2200,但仅靠EasyARM2200不能完全满足要求,还需要根据具体的应用设计外围接口电路本课题根据配料称重控制器的要求重新设计了外围接口电路
3.
1.1A/D采样接口电路配料称重控制器要采集的模拟量主要是压力传感器转化来的重量值,这里采用了硅压阻式压力传感器,量程为0~100公斤,对应的电流为0~10mAA/D转换器使用LP2210自带的10位逐次逼近式A/D,测量范围是0~
3.3V为此,要将压力传感器输出的电流信号转换成适合A/D采样范围的电压信号,这里选用了330Ω的电阻电路原理图如3-1所示图3-1A/D采样接口电路原理图
3.
1.2脉冲信号检测接口电路为了使嵌入式控制器能够测量控制生产过程中的传送速度,本设计使用了一个光电转速传感器,把速度信号转化为脉冲信号输入控制器脉冲信号经过一个光电耦合器件,输入LPC2210的定时器引脚,此引脚能够被设置为捕获脉冲信号并可编程检测脉冲信号频率接口电路如图3-2所示图3-2脉冲信号检测接口电路原理图
3.
1.3D/A输出接口电路控制器的D/A输出采用脉冲宽度调制方式,由微处理器LPC2210自带的PWM外设完成I/O操作电压为
3.3V本设计使用变频器控制电机转速,其输入为DC0~10V,因此还需要在D/A输出和变频器输入之间搭建一个放大电路,将控制信号转换到适合的范围接口电路原理图如图3-3所示图3-3D/A输出接口电路原理图
3.2嵌入式操作系统μC/OS-II移植所谓移植,就是使一个实时内核能在其他的微处理器或微控制器上运行为了移植方便,大部分μC/OS-II的代码是用C语言编写的图3-4是μC/OS-II的软件体系结构图3-4μC/OS-II软件体系结构
3.
2.1编写OS_CPU.HOS_CPU.H包含了与处理器相关的常熟、宏以及缧绁的定义和底层接口函数的声明
1.与编译器相关的数据类型因为不同的微处理器有不同的字长,所以μC/OS-II的移植包括了一系列数据类型定义,以确保其可移植性μC/OS-II使用了重新定义的数据类型,而没有使用C语言中的short、int及long等,因为他们与编译器相关,是不可能移植的LPC2210是基于ARM7TDMI-S核的、32位的微处理器,参考ADS
1.2的C编译器文档重新定义数据类型,程序如下typedefunsignedcharBOOLEAN;typedefunsignedcharINT8U;typedefsignedcharINT8S;typedefunsignedshortINT16U;typedefsignedshortINT16S;typedefunsignedintINT32U;typedefsignedintINT32S;typedeffloatFP32;typedefdoubleFP64;typedefINT32UOS_STK;这样定义以后,在μC/OS-II中使用的数据类型不用改变,既增加了可移植性,又很直观例如INT16U是无符号16位整型变量,在本移植中因为是32位处理器,所以实际被定义为无符号短整型unsignedshort如果是移植到16位处理器上,则应该被定义为无符号整型unsignedint
2.开/关中断方式与所有的实时内核一样,μC/OS-II在处理临界段代码时需要关中断,并在处理完后重新开中断,以防临界段代码被多任务或中断服务子程序破坏μC/OS-II定义了2个宏来开/关中断OS_ENTER_CRITICAL和OS_EXIT_CRITICAL,并提供了3种开关中断的方式通过定义OS_CRITICAL_METHOD常数选择,以适应不同处理器和编译器的要求,这里选择了方式2,即先将中断状态保存到堆栈中,然后关中断;处理完临界代码后,再从堆栈中恢复原来的中断开/关状态程序如下#defineOS_CRITICAL_METHOD
23.堆栈生长的方式微处理器的堆栈生长方式有递增和递减两种μC/OS-II用过OS_STK_GROWTH常数来指定堆栈的生长方式;0表示递增从下往上长;1表示递增从上往下长虽然ARM处理器核对于两种方式均支持,但ADS的C语言编译器仅支持一种方式,即从上往下长,并且必须是满递减堆栈,所以OS_STK_GROWTH的值为
1.程序如下#defineOS_STK_GROWTH
14.底层接口函数为了使底层接口函数与处理器状态无关,同时在任务调用相应的函数时不需要知道函数位置,本移植使用软中断指令AWI作为底层接口,使用不同的功能号区分不同的函数,软中断功能号分配表如表
3.1所列不过,用软中断作为操作系统的底层接口就需要在C语言中使用SWI指令在ADS中,有一个关键字——swi,用它声明一个不存在的函数,则调用这个函数时会在调用的地方插入一条SWI指令,并且可以指定功能号同时,这个函数也可以有参数和返回值,其传递规则与一般函数一样代码如3-1表所示表3-1软中断功能号分配表功能号接口函数简介0x00voidOS_TASK_SWvoid任务及任务切换函数0x01void_OSStartHighRdyvoid运行优先级最高的任务0x02voidOS_ENTER_CRITICALvoid关中断0x03voidOS_EXIT_CRITICALvoid开中断0x80voidChangeToSYSModevoid任务切换到系统模式0x81voidChangeToUSRModevoid任务切换到用户模式0x82voidTaskIsARMINT8Uprio任务代码是ARM代码0x83VoidTaskIsTHUMBINT8Uprio任务代码是THUMB代码_swi0x00voidOS_TASK_SWvoid;_swi0x01void_OSStartHighRdyvoid;_swi0x02voidOS_ENTER_CRITICALvoid;_swi0x03voidOS_EXIT_CRITICALvoid;_swi0x80voidChangeToSYSModevoid;_swi0x81voidChangeToUSRModevoid;_swi0x82voidTaskIsARMINT8Uprio;_swi0x82voidTaskIsTHUMBINT8Uprio;
3.
2.2编写OS_CPU_C.C本文件中包含了OSTaskStkInit、软中断异常SWI服务程序以及一些钩子程序,例如OSTaskCreateHookOSTaskDelHookOSTaskSwHookOSTaskIdleHookOSTaskStatHookOSTimeTickHookOSInitHookBeginOSInitHookEndOSTCBInitHookOSTaskStkInit和软中断异常SWI服务程序是必须的,钩子程序则并不一定要包含代码,但必须要声明1.OSTaskStkInit函数在编写此函数之前,必须根据ARM的体系结构和编译器来确定任务和堆栈结构本移植的任务堆栈结构如图3-52.根据堆栈结构图可以写出OSTaskStkInit函数代码如下OS_STK*OSTaskStkInitvoid*taskvoid*pdvoid*pdataOS_STK*ptosINT16Uopt{OS_STK*stk;opt=opt;/*’opt’没有使用,作用是避免编译器警告*/stk=ptos;/*获取堆栈指针*//*建立任务环境,ADS
1.2使用满递减堆栈*/*stk=OS_STKtask;/*pc*/*--stk=OS_STKtask;/*1r*/*--stk=0;/*r12*/*--stk=0;/*r11*/*--stk=0;/*r9*/*--stk=0;/*r8*/*--stk=0;/*r7*/*--stk=0;/*r6*/*--stk=0;/*r5*/*--stk=0;/*r4*/*--stk=0;/*r3*/*--stk=0;/*r2*/*--stk=0;/*r1*/*--stk=unsignedintpdata;*--stk=USER_USING_MODE|0x00*--stk=0;Returnstk;}图3-5任务堆栈结构3.软中断异常SWI服务程序软中断异常SWI服务程序是根据表
3.1来编写的,采用了C语言中内嵌汇编的方法由于程序较长,在这里就不一一例举了,仅就重点部分做详细介绍μC/OS-II中定义了2个宏OS_ENTER_CRITICAL和OS_EXIT_CRITICAL分别来关中断和开中断,用于保护临界段代码本移植使用了功能号为0x
02、0x03的两个软中断接口函数来实现其功能基于ARM核的微处理器的开/关中断是通过改变程序状态寄存器CPSR中的相应控制位来实现,由于使用了软中断,在中断响应时处理器会进入管理模式ARM体系结构支持7种处理器模式,系统复位和软件中断响应时,进入管理模式,CPSR会保存到程序状态保存寄存器SPSR中,当退出软中断时,再由SPSR恢复到CPSR中,所以程序只要改变SPSR中相应的控制位就可以了部分程序如下OS_ENTER_CRITICAL的内嵌汇编代码__asm{MRSR0SPSRORRR0R0#NoIntMSRSPSR_cR0}OS_EXIT_CRITICAL的内嵌代码:__asm{MRSR0SPSRBICR0R0#NoIntMSRSPSR_cR0}功能号为0x
80、0x
81、0x
82、0x83的4个软中断接口函数是根据ARM核有7种处理器模式和支持2种指令集的特点,为本移植专门增加的底层接口函数分别为处理器模式转换函数ChangeToSYSModeChangeToUSRMode和任务指令集改变函数TaskIsARMTaskIsTHUMB模式转换函数可以在应用程序编写的任何时候使用,方便用户快速的改变微处理器模式,访问某些特殊资源指令集改变函数则只能在任务建立后但还没有运行时调用,用于改变任务默认的指令集,避免用户编写程序使用的指令与默认指令不同造成的错误功能号为0x00的OS_TASK_SW和0x01的OSStartHighRdy2个软中断接口函数,因为需要明确的堆栈结构,而且它们所调用的任务切换程序本身也就是使用汇编编写的,所以将这两个接口函数一并放在OS_CPU_A.S文件中
3.
2.3编写OS_CPU_A.S此文件中主要包含了软中断的汇编接口和功能号为0x
00、0x01的2个软中断接口函数的汇编代码1.软中断汇编接口当系统发生软中断时,程序计数器PC会根据中断向量表中所指的地址,跳转到SoftwareInterrupt处开始执行程序首先进行现场保护,把需要用到的寄存器压入管理模式的堆栈然后从SWI指令的相应位段中获取软中断功能号,为了取得功能号,必须准确的找到SWI指令由于ARM核支持两个指令集,指令集的指令长度不同ARM指令集32位,Thumb指令集16位所以程序需先判断在进入软中断前微处理器处于哪个指令集在得到了相应指令集的SWI指令后,按照指令编码格式获取包含在指令中的软中断功能号,通过此功能号分别执行不同的软中断功能这里主要是OS_TASK_SW功能和OSStartHighRdy功能,其他功能都由位于OS_CPU_C.C文件中的软中断异常SWI服务程序来完成了最后弹出堆栈,软中断返回程序代码如下SoftwareInterruptLDRSPStackSvcSTMFDSP!R0-R3,R12,LRMOVR1SPMRSR3SPSRTSTR3#T_bitLDRNEHR0[LR#-2]BICNER0R0,#0xFF00LDREQR0[LR#-4]BICEQR0R0,#0xFF000000CMPR0#1LDRLOPC=OSIntCtxSwLDREQPC=_OSStartHighRdyBLSWI_ExceptionLDMFDSP!R0-R3,R12,PC^2.OS_TASK_SW函数OS_TASK_SW函数是当系统中有更高优先级的任务进入了就绪状态,μC/OS-II需要进行任务切换时最后调用的函数在本移植中,当系统调用OS_TASK_SW时,会立即插入一条SWI软中断指令,使微处理器进入管理模式的软中断程序对照表
3.1可知,OS_TASK_SW函数对应功能号为0x00的软中断,所以程序进入软中断后悔跳转到以OSIntCtxSw位标号的程序段开始执行由于源代码较长,这里只给出示意性代码OSIntCtxSw{保存当前任务环境,寄存器入栈;在当前任务的任务控制模块中保存当前任务的堆栈指针;OSTCBCur-OSTCBStkPtr=SP;调用钩子函数OSTaskSwHook;将指向当前任务的指针指向要恢复运行的任务;OSTCBCur=OSTCBHighRdy;将新任务的优先级复制给当前任务的优先级;OSPrioCur=OSPrioHighRdy;获取新任务的堆栈指针;SP=OSTCBHighRdy-OSTCBStkPtr;从新任务的堆栈中恢复微处理器所有的寄存器值;中断返回,开始运行新任务;}3._OSStartHighRdy函数此函数是由μC/OS-II的多任务启动函数OSStart调用的,它所要执行的操作和OS_TASK_SW差不多,只是因为此时系统还没有开始运行,所以不需要保护当前的任务环境,另外还要置系统运行标志对照表
3.1可知,_OSStartHighRdy函数对应功能号为0x01的软中断,所以程序进入软中断后会跳转到以_OSStartHighRdy为标号的程序段开始执行这里同样给出示意性代码{调用钩子函数OSTaskSwHook;置系统运行标志,告诉μC/OS-II系统开始运行;OSRunning=TRUE;获取就绪态最高优先级任务的堆栈指针;SP=OSTCBHighRdy-OSTCBStkPtr;从新任务的堆栈中恢复微处理器所有的寄存器值;中断返回,开始运行新任务;}编写好以上3个文件后,嵌入式操作系统的移植工作就基本完成了,经过测试移植代码,μC/OS-II便可以在LPC2210微处理器上顺利运行了
3.3μC/OS-II下外设驱动开发
3.
3.1LCD驱动开发点阵式图形液晶显示屏以低工作电压、微功耗、无辐射、小体积,能够动态显示图形、汉字以及各种符号信息,被广泛应用于各种嵌入式产品中,为电子产品提供了友好的人机界面本课题研究的嵌入式组态软件将用于配料称重控制器的开发,在满足功能要求的前提下,为了尽可能降低成本,缩短开发周期,这里选用了一块STN液晶屏RT240128A作为嵌入式组态软件人机界面的显示设备RT240128A点阵图形液晶模块的分辨率为240x128,单色,内嵌控制器为TOSHIBA公司的T6963C,外部显示存储器为32KB液晶模块原理框图如图3-6所示图3-6RT240128A液晶模块原理框图T+6963C是TOSHIBA公司的点阵式图形液晶控制器,常用语中规模的单色点阵图形液晶的显示控制,其最大特点是具有独特的硬件初始化设置功能,显示驱动所需的参数如占空比系数、驱动传输的字节数/行、字符的字体选择等均由引脚电平设置主要参数如下
1.工作电压
5.0V
2.最大驱动液晶点阵单色640x128单屏
3.支持存储器大小64KBSRAM
4.微处理器接口8位并行数据接口
5.显示方式图形方式、文本方式、图形文本混合方式
6.字符发生器四中字体,5x
8、6x
8、7x
8、8x
87.驱动LCD占空比1/
16、1/
1288.低功耗显示器件电流典型值
3.3mA对T6963C的控制是通过8位数据总线发送命令及数据的,在发送命令前要先判断T6963C的当前状态,只有在允许接收命令时才能向器件发送命令表3-2是T6963C的控制指令码表表3-2T6963C控制指令码表指令编码功能设置控制字01000000设置文本起始地址01000001设置文本区宽度01000010设置图形起始地址01000011设置图形区宽度模式设定10000000逻辑“或”模式显示模式10011000设置纯图形显示模式寄存器设置00100100设置地址指针数据自动读写10110000设置数据自动写入10110010数据自动读/写结束数据读写11000000数据写入,地址自动加1EasyARM2200开发板上已经留有与液晶模块的接口,根据硬件连接电路图和表
3.2,可以很方便的写出LCM的驱动程序主要包括T6963C控制指令的宏定义,指令发送子程序,数据发送子程序,LCM初始化子程序,LCD填充子程序、在指令位置画点子程序等其中最重要的是指令/数据发送子程序,它把用户所要完成的操作转换成T6963C能识别的指令和数据,用于LCD的显示控制而LCM初始化子程序,LCD填充子程序和在指定位置画点子程序也是由其组成,是留给用户编程或是GUI移植的接口下面以带有两个参数的指令发送子程序为例,来说明驱动程序的编写方法,其它子程序都与其相似且更容易程序源代码如下INT8ULCD_WriteTComPara2INT8UcomINT8Udat+1+INT8Udat2{ifLCD_TestStaBit01==0return0;LCD_WriteDatadat1;//发送数据1ifLCD_TestStaBit01==0return0;LCD_WriteDatadat2;//发送数据2IfLCD_TestStaBit01==0return0;LCD_WriteCommandcom;//发送命令字return1;}T6963C每条指令的执行都是先送入参数如果有的话,再送入指令代码,而且每次操作之前须进行状态字检测,只有允许接收时才能向器件发送命令和数据此驱动程序规定,发送成功返回1,失败返回
0.所有LCM的驱动程序写好后,用户就可以在此基础上编写自己的显示程序或者进行更高一层的GUI移植了本课题选用了ZLG/GUI作为图形用户界面软件,具体的移植工作将在下一小节中详细介绍
3.
3.2ZLG/GUI移植GUI为GraphicsUserInterface的缩写,即图形用户界面这是用于提高人机交互友好性、易操作性的计算机程序,它是建立在计算机图形学基础上的产物图形用户界面是当今计算机技术的重大成就之一,它极大的方便了非专业用户的使用,人们不再需要死记硬背大量的命令,而是通过窗口、菜单方便地进行操作随着嵌入式系统的日益发展,以及32位嵌入式微处理器和图形显示设备的广泛应用,目标产品对GUI的需求越来越多由于嵌入式系统的资源有限,所以对GUI的要求是可裁剪的、高速度的ZLG/GUI是占用资源小、使用方便的嵌入式系统简易的图形用户界面软件ZLG/GUI提供了最基本的画点、线、图形、圆弧、椭圆形、矩形、正方形及填充等功能,较高级的接口功能有ASCII显示、汉字显示、图形显示、窗口、菜单等,支持单色、灰度、伪彩、真彩等图形显示设备ZLG/GUI根据不同的功能把接口函数分别写在不同的文件中,另外包括3个重要的头文件如下所示
1.基本图形操作函数GUI_BASE.C
2.显示颜色管理函数GUI_STOCKC.C
3.颜色转换操作函数CONVERTCOLOR.C
4.5X7ASCII码子库及显示函数FONT5_
7.C
5.8X8ASCII码子库及显示函数FONT8_
8.C
6.24X32数字库及显示函数FONT24_
32.C
7.单色图形及汉字显示函数LOADBIT.C
8.图标菜单、下拉菜单操作函数MENU.C
9.窗口操作函数WINDOW.C头文件说明如下
10.CONFIG.H
11.GUI_CONFIG.HFONT_MACRO.HZLG/GUI的可裁剪性是通过对GUI_CONFIG.H中的宏定义来实现的,每个接口函数都可以通过设置相应的常数使能标志为1或0,来允许或禁止函数.在移植ZLG/GUI前必须完成两个基本工作,第一,根据LCD的颜色定义合适的颜色数据类型例如单色液晶屏,每一位数据可表示一个像素点1代表显示,0代表熄灭,则可以定义颜色数据类型为无符号字节型INT8U,每个字节包含+8个像素点,如果是256色液晶屏,则需要一个字节表示一个像素点,若是65536色或是更多色的真彩色液晶屏,则需要2个或更多字节来表示一个像素点本课题选用的是单色LCD,所以定义颜色数据类型为无符号字节型INT8U第二,根据LCD的分辨率,用之前定义的颜色数据类型来声明一个显示缓冲区因为画图操作是先对显示缓冲区相应点的数据进行设置,然后控制数据输出更新LCM显示,以保证LCM显示与缓冲区数据同步,不破坏原显示图形具体程序如下所示#defineLCDCOLORINT8U#defineGUI_LCM_XMAX240#defineGUI_LCM_YMAX128//声明显示缓冲区LCDCOLORLCDBuf[GUI_LCM_YMAX][GUI_LCM_XMAX/8]其中GUI_LCM_XMAX和GUI_LCM_YMAX是为了编程方便定义的两个宏,分别表示液晶X、Y轴的点数ZLG/GUI移植的主要工作是编写底层基本图形接口函数,ZLG/GUI的所有图形显示操作均通过调用这些函数实现,他们的执行效率将直接影响图形操作的效率这些底层基本图形接口函数包括voidGUI_FillSCRINT8UdatvoidGUI_InitializevoidvoidGUI_ClearSCRvoidINT8UGUI_PointINT32UxINT32UyLCDCOLORcolorINT32UGUI_ReadPointINT32UxINT32UyLCDCOLOR*retvoidGUI_HLineINT32Ux0INT32Uy0INT32Ux1LCDCOLORcolorvoidGUI_RLineINT32Ux0INT32Uy0INT32Uy1LCDCOLORcolor以上函数都是基于LCD驱动程序来编写的,由于代码较多但比较简单,这里就不一一列出了需要详细说明的是针对单色液晶屏显示缓冲区数据处理的算法,多个接口函数都用到了这个算法核心代码如下INT8UconstPLACE_TAB
[8]={0x800x400x200x100x080x040x020x01};ifcolor0x01!=0LCDBuf[y][x3]|=PLACE_TAB[x0x07];elseLCDBuf[y][x3]=~PLACE_TAB[X0X07];首先声明一个8位无符号整型常数表,方便以后程序查表使用color是颜色数据变量,对于单色LCD取值为1或0;x、y分别为指定点的x、y坐标x3表达式所得结果是指定点在第y行的第几个字节;x0x07表达式运算的结果是指定点在所处字节中的位置从左向右依次为0-7查表可知该点在所处字节中的具体位置以1表示,其余位置为0举例说明,比如指定点D45,721个字节包含8个像素点,所以点D在72行的第5个字节中的第5位,具体运算如下x3=5;x0x07=5;查表可得0x04,即00000100B,将其与现实缓冲区LCDBuf
[72]
[5]的字节变量做运算,可把相应点置1点亮,或清0熄灭这个算法可以简单、快色的找出指定点并更新,提高了程序执行效率编写好以上7个底层基本图形接口函数后,ZLG/GUI的移植就全部结束了嵌入式组态软件的人机界面显示工作就可以由ZLG/GUI提供的接口函数完成了
3.
3.3UART驱动开发UART是UniversalAsynchronousReceiverTransmitter的缩写,是嵌入式系统与其他设备通信的主要手段之一本课题选用UART作为嵌入式组态软件的通信方式,可用于组态配置文件下载和控制器现场数据上传等功能LCP2210包含2个UART,即UART0和UART1,2个外设的基本功能相同,只是UART1比UART0增加了一个调制解调器Modem接口这里使用UART0作为通信接口,主要特性有
1.16字节接收FIFO和16字节发送FIFO
2.寄存器位置符合16C550工业标准
3.接收器FIFO出发点可为
1、
4、8和14字节
4.内置波特率发生器驱动程序包括UART0初始化子程序,发送/接收子程序,中断服务程序等
1.UART0初始化子程序由于LCP2210的同一引脚具有多种功能,可以通过配置引脚连接模块寄存器控制多路开关使引脚与相应片内外设相连要使用UART0必须首先根据表3-3连接好引脚TxD
0、RxD0表3-3UART0引脚PINSEL0引脚名称00011011复位值1:0P
0.0GPIOP
0.0TxDUART0PWM1保留003:2P
0.1GPIOP
0.1RxDUART0PWM3EINT000通过对引脚连接模块寄存器PINSEL0进行如下操作,使引脚P
0.
0、P
0.1作为UART0的功能引脚PINSEL0=PINSEL00xFFFFFF0|0x05;/*选择管理脚为UART0*/LPC2210内置波特率发生器,用户可根据需要自行设置UART0的波特率除数锁存储器是波特率发生器的一部分,它保存了用于产生波特率时钟的VPB时钟的分频值,波特率时钟必须是波特率的16倍由于出书锁存寄存器与其他寄存器公用同一地址,所以在访问时除数锁存访问位DLAB必须置1相关程序如下U0LCR=0x80;Fdiv=Fpclk/16/bps;U0DLM=Fdiv/256;U0DLL=Fdiv%256;U0LCR=0x03;UART0采用中断处理方式,在等待接收数据时可将相应任务挂起,运算就绪状态中优先级最高的其他任务,当接收到新数据后即刻产生中断,恢复被挂起的任务,如果此时该任务优先级最高,则马上运行处理接收到的新数据这是μC/OS-II种典型的程序执行流程,可充分利用微处理器资源,高效率的执行程序为此必须利用μC/OS-II提供的系统服务函数,建立一个信号量,用于表示某事件的发生这里建立一个用于UART0的信号量,程序如下Uart0Sem=OSSemCreate0;子建立信号量之后就可以做等待信号量挂起任务、发出信号量恢复任务等操作了,具体应用将在后面详细介绍
2.发送子程序UART0的发送驱动程序比较简单,只需要将发送的数据放入发送保持寄存器U0THR中,然后开中断就可以了,但要注意必须在U0THR为空时才可以示例程序如下VoidUART0PutchINT8Udat{ifU0LSR0x00000020!=0{U0THR=dat;U0IER=U0IER|0x02;}}
3.接收子程序接收子程序中,为了在等待接收数据的时间里充分利用微处理器资源,使用了在UART0初始化子程序中建立的Uart0Sem,将当前任务挂起而执行别的就绪最高优先级任务当接收数据中断产生后,由中断服务程序发出信号量,恢复因等待信号量Uart0Sem而挂起的任务,继续处理接收到的数据
4.中断服务程序中断服务程序根据IART0中断标识寄存器U0IIR指示的中断源做出相应的处理如表3-4所示需要注意的,是为了能够服务下次中断,必须在中断返回之前对响亮地址寄存器VICVectAddr执行写操作,该写操作将清零内部中断优先级硬件当中对应的中断标识;另外,中断程序术语临界段代码,在进入中断时需要调用移植μC/OS-II时定义的宏OS_ENTER_CRITICAL关中断,退出中断时再调用宏OS_EXIT_CRITICAL开中断示意性代码如下voidUART0_Exceptionvoid{OS_ENTER_CRITICAL;根据U0IIR只是的中断源做中断处理;OSSemPostUartSem;VICVectAddr=0;OS_EXIT_CRITICAL;}
3.
3.4A/D驱动开发A/D采样时嵌入式控制器的一个重要功能,本课题采用LPC2210内置的A/D转换器,具有8个通道10位逐次逼近式A/D,测量范围0~
3.3V,转换时间最快可达
2.44μs,可以满足设计要求A/D转换器驱动程序包括初始化子程序和采样子程序表3-4UART0中断标识寄存器U0IIR功能描述0中断挂起0至少有1个中断被挂起1没有挂起的中断31中断标识011接收线状态RLS010接收数据可用RDA110字符超时指示CTI001THRE中断54保留——76FIFO使能——
1.A/D转换器初始化子程序LPC2210具有8个引脚复用为A/D输入脚,和UART一样,在使用前需配置引脚连接模块寄存器,使相应引脚连接至A/D功能A/D引脚如表3-5所示表3-5A/D引脚PINSEL1引脚名称00011011复位值23:22P
0.27GPIOP
0.27AIN0捕获
0.1匹配
0.10125:24P
0.28GPIOP
0.28AIN1捕获
0.2匹配
0.20127:26P
0.29GPIOP
0.29AIN2捕获
0.3匹配
0.30129:28P
0.30GPIOP
0.30AIN3EINT3匹配
0.410其余+4个A/D输入引脚由于管教用于其它功能而不可用由于A/D转换通道时嵌入式组态软件中可组态配置的参数之一,因此此项初始化的操作需要根据组态配置文件来进行具体的可组态配置参数将在“运行环境组态支撑模块设计”一节中做详细介绍A/D转换器的工作模式由A/D控制寄存器ADCR来控制,它包括采样输入脚选择、转换时钟设置、转换控制方式和转换精度等等,具体可参阅参考文献需要说明的是,为了提高嵌入式控制器的工作效率,尽可能缩短A/D转换时间,这里将A/D转换时钟设为4MHz其值不能大于
4.5MHzA/D转换时钟分频值计算公式如下CLKDIV=Fpclk/Fadclk-1另外,程序还建立了2个系统事件ADMutex和ADDataMbox其中ADMutex是互斥型信号量,用于对A/D转换器作为共享资源的独占式访问,用于从中断服务程序向A/D采样子程序传递采样结果
2.A/D采样子程序A/D采样子程序使用了初始化子程序中建立的ADMutex和ADDataMbox两个系统事件根据控制要求不同,嵌入式控制器可能需要输入多个模拟量,在一个模拟量采样没有结束时重新设置A/D控制器开始另一个模拟量采样,会造成采样错误,也就是说A/D转换器是共享资源,在采样过程中需由一个任务独占,当采样结束后才能释放资源为此,这里使用了互斥型信号量ADMutex来管理A/D转换器同时为了提高程序执行效率,A/D采样使用了中断处理方式,在采样开始后利用邮箱ADDataMbox等待消息将调用采样子程序的任务挂起,运行其他就绪态的最高优先级任务,当采样完成产生中断,再由中断服务程序把采样结果以邮箱消息的形式发送出去,恢复被挂起的任务如果此时该任务在就绪任务中优先级最高,则马上运行,处理从消息中得到的采样结果
3.
3.5定时器驱动开发由于本课题研究的嵌入式组态软件将用于配料称重控制器的开发,为了使控制器能够测量控制生产过程中的传送速度,使用了光电转速传感器把速度信号转化为脉冲信号输入控制器微处理器LPC2210中的定时器具有捕获输入功能,用于在输入信号发生跳变时捕获定时器值,由此可以计算出输入信号的频率,进而得到传输速度因此,这里需要开发定时器驱动程序LPC2210内置了2个定时器,除了外设基地址不同外其他都相同,但由于μC/OS-II已经使用了定时器0作为系统的时钟节拍源,所以本课题使用定时器1作为脉冲频率检测装置定时器1的驱动程序包括初始化子程序和频率检测子程序
1.定时器1初始化子程序虽然定时器1可选择多个引脚用作捕获功能,但它们的输入将进行逻辑“或”、所得结果用作一个捕获输入,所以这里通过配置引脚连接寄存器固定了一个专门用于频率检测的引脚代码如下PINSEL1=PINSEL10xFFFFFFFF3|0x04;/*选择P
0.17为CAP
1.2*/32位定时器计数器TC对外设时钟pclk周期进行技术,TC每经过PR+1个pclk周期加1,其中PR为预分频寄存器举例来说,当PR为1时,TC每个2个pclk周期加1这里为了提高测量精度,设置预分频计数器PR为0,即每个pclk周期加
1.同时设置捕获控制寄存器T1CCR,使得CAP
1.2在输入脉冲上升沿时发生捕获,将定时器数据TC的值装入捕获寄存器CR2其他初始化操作只需设置相关寄存器就可以,比较简单,这里就不再赘述了另外,定时器1捕获输入同样采用中断处理方式,利用系统提供的消息邮箱来传递定时器的值为此,在初始化程序中还需要利用系统服务建立一个消息邮箱
2.频率检测子程序这里采用测周法检测频率,它的原理是2次捕获输入脉冲的上升沿,并分别记录下捕获发生时的定时器值,用后一次的定时器值减去前一次的定时器值,所得差值就是输入脉冲1个周期内外设时钟pclk的计数值,再用外设时钟频率Fpclk除以此计数值就是输入脉冲的瞬时频率由于定时器计数器TC为32位,外设时钟pclk为
11.0592MHz,根据计算,理论上最多可以定时388秒,可测的最低频率为
0.003Hz假设光电转速传感器每秒发出60个脉冲,按照每分钟1500转计算,频率为60X1500/60=1500Hz由此可见,使用该方法完全能够满足测速要求频率检测子程序流程图如图3-9所示
3.
3.6PWM驱动开发D/A输出也是嵌入式控制器的一项重要功能,它把经过计算的数字量转化为模拟量输出,用于对执行机构进行驱动控制本课题采用脉冲宽度调制PWMPulseWidthModulation作为D/A输出的方式,用可变电压对变频器进行操作,以达到控制电机转速的目的LPC2210内置了建立在专用32位标准定时器上的脉宽调制器PWM,可通过匹配功能及一些控制电路来实现PWM输出它包括7个匹配寄存器,其中匹配寄存器0PWMMR0控制PWM周期,其余6个匹配寄存器控制1个PWM周期内的高低电平时间,可实现6个单位沿控制或3个双边沿控制PWM输出;脉冲周期和宽度可以试任何的定时器数值,以实现灵活的分辨率和重复速率设定,但所有的PWM输出都以相同的重复率发生由于微处理器的管脚复用问题,其他一些外设占用了PWM的输出管脚,不能实现全部6路PWM输出,这里选择了PWM4~PWM6三路输出,具体使用可通过编辑组态配置文件,修改引脚连接模块寄存器实现PWM驱动程序包括初始化程序和改变PWM占空比子程序
1.PWM初始化子程序由于PWM外设是建立在32位标准定时器上,通过匹配功能来完成输出的,所以初始化程序应包括专用定时器和PWM输出功能的配置另外,还必须对引脚连接模块寄存器进行配置,选择PWM输出,此嵌入式控制器具有PWM4~PWM6三路D/A输出,可通过组态配置文件分别对PINSEL0和PINSEM1寄存器进行配置选项这里先给出初始化子程序的示意性代码,再分别作出详细解释PWM初始化子程序示意性代码如下VoidPWMInitvoid{跟据组态配置文件设置引脚连接模块寄存器1PINSEL=PWMChan;设置PWM预分频寄存器PWMPR;2PWMPR=0;设置PWM匹配控制寄存器,使MR0匹配时TC复位;3PWMMCR=0x02;设置PWM匹配寄存器其中MR0必须设置其他的匹配寄存器可由具体应用决定4PWMMR0=Fpclk+500/1000;MR4~MR6视具体应用而定,一般由程序自动修改;设置PWM锁存使能寄存器,控制匹配寄存器更新;5设置PWM控制寄存器,控制PWM4~PWM6的输出方式;6使能计数器和PWM输出;7PWMTCR=1|13;}其中,程序清单1表示根据组态配置文件选择PWM输出管脚,变量PWMChan存储于配置引脚连续模块寄存器的组态参数PWM外设由专用定时器的匹配功能完成,因此需对外设时钟pclk进行计数,可使用预分频寄存器PWMPR对pclk分频,再使之用于PWM定时器计数器,这样可实现控制定时器分辨率和定时器溢出时间之间的关系,如程序清单2所示PWMMR0匹配寄存器用于控制PWM输出脉冲的周期,这里将其设为固定值,即脉冲周期为1ms,频率为1KHz,其他匹配寄存器由程序自动修改另外,在MR0匹配发生时要将PWMTC复位,以便连续输出PWM脉冲,所以要设置匹配控制寄存器PWMMCR,程序如清单
3、4所示PWM锁存使能寄存器用于控制PWM匹配寄存器更新,当软件修改匹配寄存器时,写入的值先保存在一个影响寄存器中,如果在PWM匹配0时间发生时,对应锁存使能寄存器位已经置位,那么映像寄存器的内容将传送到实际的匹配寄存器中,使新修改的值生效,如程序清单5,程序清单6表示由组态配置参数设置PWM4~PWM6的输出方式,可选择为单边沿控制模式或双边沿控制模式最后,程序清单7使能定时器计数器和PWM功能,开始输出PWM脉冲
2.改变PWM占空比子程序改变PWM占空比子程序比较简单,只需要用一个入口参数来传递所需的占空比数值,然后更新对应的PWM输出匹配寄存器,最后置位锁存使能寄存器PWMLER中的相应位,就可以完成改变PWM占空比了,更新后的数值将在下个PWM脉冲周期生效示意性代码如下voidChangePWMINT32UPWMData{设置PWM输出脉冲周期;PWMMR0=Fpclk+500/1000;根据所需占空比改变相应匹配寄存器数值;PWMMR4=PWMData;设置锁存使能寄存器,更新匹配寄存器数值;PWMLER=0x11;}
3.4运行环境组态支撑模块设计设计嵌入式组态软件的主要目的就是让开发者在生成嵌入式应用系统时不需要自己编写程序代码,因此我们在设计嵌入式组态软件运行环境的组态支撑模块的时候要充分了解应用的基本需求,再加以总结和提炼,找出重点,集中解决共性问题下面分别对各个组态支撑模块的设计方法做详细的介绍
3.
4.1数据管理模块由于要使用设计完成的嵌入式控制器组态软件运行环境来完成配料称重控制器的开发,所以在运行环境组态支撑模块的设计上优先考虑了配料称重控制器所需的功能主要包括A/D采集、脉冲信号频率检测、以PWM方式作为D/A输出和控制算法等功能为了方便数据管理模块对各功能的管理,提高程序执行效率,本设计使用了C语言中的结构体为每项功能建立了专门的数据结构,其中包括了每项功能的各种组态配置参数、相应外设的控制字和获得的数据结果等分列如下,A/D采集功能的数据结构为typedefstruct{INT8UADChan;INT8UADName
[5];INT8UADRang;INT8UADAlarH;INT8UADAlarI;INT16UADFreq;INT16UADCReg;}AD_Chara;脉冲信号频率检测功能的数据结构为typedefstruct{INT8UPulseName
[5];INT16UPulseRangH;INT16UPulseRangL;INT16UPulseAlarH;INT16UPulseAlarI;INT8UPulseFreq;INT16UPulseResu;}Pulse_Chara;PWM输出功能的数据结构为typedefstruct{INT8UPWMChan;INT8UPWMName
[5];INT8UPWMMode;INT32UPWMReg;INT32UPWMResu;}PWM_Chara;当数据管理模块从通信模块中获得组态配置文件后,会按照一定的格式,从中解析出所组态的每项功能的配置参数,保存到由以上数据结构定义的结构体数组变量中,为初始化嵌入式控制器和之后的程序运行做准备在初始化嵌入式控制器的过程中,程序会根据每项功能各自数据结构变量中所保存的组态配置参数,调用之前设计好的外设驱动程序,依次对所用到的外设进行初始化操作,同时检查参数的正确性如果检测到组态排至参数有误,则会提示嵌入式控制器初始化操作失败举例来说,A/D采样功能有一个组态参数是采样通道号;再比如PWM输出功能还有一个组态参数是输出模式,可选择单边沿控制模式或双边沿控制模式LPC2210规定,若选择双边沿控制模式,则需要2个匹配寄存器分别来控制1个脉冲周期内的高、低电平时间,如果选择PWM5通道为双边沿控制模式,则需要用到匹配寄存器PWMMR4和PWMMR5,此时就不能再选PWM4通道为单边沿控制输出了,因为PWMMR4已经被使用此外初始化程序还需完成的一项操作是,建立一个数据缓冲区,暂存采集到的数据和输出的控制量等内容,显示模块可从此数据缓冲区中取得数据用于实时显示,也可用于记录报警、显示曲线图等功能嵌入式控制器初始化结束后,程序会把所有的组态内容交由显示模块进行显示,同时等待操作人员开始运行控制器的命令当嵌入式控制器开始运行后,数据管理模块将会调用I/O模块进行数据采集工作,这里主要是指采集由压力传感器输出的0~10mA电流信号和由广电转速传感器输出的脉冲频率信号然后由控制算法模块调用采集得到的数据,按照组态所选择的控制算法进行数据处理最后,数据管理模块再次调用I/O模块,把计算得到的控制量通过PWM功能输出至变频器,达到控制电机转速的目的
3.
4.2图形显示模块图形显示模块利用ZLG/GUI来调用LCD的驱动程序,实现嵌入式控制器的人机界面显示和被控对象状态的实时监控显示人机界面主要由用户窗口和图形对象组成用户窗口时由用户来定义的,用来构成嵌入式组态软件运行环境图形界面的窗口,是组成图形界面的基本单位,所有的图形界面都是由一个或多个用户窗口组合而成的用户窗口相当于一个容器,用来放置各种图形对象,通过对用户窗口和图形对象的组态配置,生成嵌入式控制器的人机界面,并建立于数据管理模块的连接,完成相应的系统功能本设计为用户窗口定义了以下几个组态配置参数窗口位置坐标x,y这里坐标原点是LCD的左上角,坐标xy是窗口左上角距离原点的距离一般设定窗口位置坐标为0,0窗口宽度width,高度height这两个组态参数决定了窗口的大小,最大值受LCD分辨率限制,不能超过240X
128.窗口标题title窗口标题提示了窗口的名称,ZLG/GUI规定标题只能ASCII字符串,最大个数受窗口大小限制标签构件label和按钮构件button这两种构件都属于图形对象,将在下面做具体介绍图形对象放置在用户窗口中,是组成用户应用系统图形界面的最小单元,这里图形对象主要有标签构件和按钮构件两种标签用于在用户窗口中显示监控对象的名称,并用变化的数据显示其实时状态,为此建立标签数据结构如下typedefstruct{INT32Ux;INT32Uy;INT8ULabelName
[5];INT16U*LabelValue;}Label_Chara;按钮用于接收用户的按键动作,执行不同的功能,按钮的数据结构如下typedefstruct{INT32Ux;INT32Uy;INT8U*KeyTitle;INT8UKeyState;void*Foundctionvoid;}Key_Chara;另外,为了建立良好的人机界面,使用户的操作观察更加方便,此嵌入式控制器采用了全中文的操作界面,汉字大小16X16,同时为了节省存储空间,这里并没有移植现有的字库文件,而是根据实际需要自己建立了一个字库,将所需汉字经字模软件装换后,编号存入其中实际上此字库是一个指针数组,其中保存了所需汉字的字模数组首地址,使用时利用查表的方法即可显示出所需汉字
3.
4.3通信模块通信模块主要负责维持上位机与嵌入式控制器之间的通信状态和接收组态配置文件等工作为了简洁、高效地完成通信任务,本研究设计了一个简单的通信协议,详细介绍如下通信协议中包括几个命令字,分别代表不同的含义,如表3-6所示表3-6通信协议命令字命令字编码命令字含义收发方向0xAA握手信号PC→Controller0x55答复握手信号接收成功Controller→PC0xCC请求接收PC→Controller0x77拒绝接收Controller→PC0x11同意接收Controller→PC0xEE接收失败Controller→PC空闲时,上位机和嵌入式控制器之间利用一对握手信号0xAA、0x55来保持通信正常情况下,上位机发出命令字0xAA后会收到嵌入式控制器发回的0x55命令字,表示通信正常;如果在规定的时间内收不到0xAA命令字,则表示通信中断当准备发送组态配置文件时,上位机会先发出请求接收命令字0xCC,等待嵌入式控制器的答复,如果操作人员拒绝接收,则通过安检操作控制器发出命令字0x77,上位机收到后取消发送任务;如果同意接收,则控制器发出命令字0x11,上位机在收到该命令字后会接着发出组态配置文件嵌入式控制器在接收完毕,并且校验正确后会发出接收成功信号0x55,若校验错误则发出接收失败信号0xEE组态配置文件实际上是有若干个字节组成的一个数据串,包括数据头、组态配置参数和结束符由于嵌入式组态软件运行幻剑可组态出不同功能和人机界面的控制器,每次组态的配置参数都有可能不同,数据长度不一,因此,利用数据头指示了整个数据串的长度,在接收完毕后可用此长度来进行配置文件的校验工作,保证了组态配置文件的正确性组态配置参数包括了所组态功能的全部属性,每项功能由功能号开头,接着是该功能的属性参数其中,A/D采样的功能号为0x01,脉冲信号频率检测的功能号为0x02,PWM输出的功能号为0x03,控制算法的功能号为0x04,图形显示的功能号为0x
05.组态配置文件以0x0F为结束符具体格式如图3-11所示数据头功能1功能2…………..功能N结束符图3-11组态配置文件格式
3.
4.4I/O模块I/O模块主要包括了A/D采样、脉冲信号频率检测和PWM输出等功能,负责嵌入式控制器的输入/输出操作当控制器开始运行后,数据管理模块将会调用I/O模块将其根据所组态的功能运行相应外设的驱动程序,完成控制功能嵌入式控制器支持多路A/D采样功能,为了使每个采样通道可以设定不同的采样周期,这里涉及了一个较小的时间间隔作为基准时钟,每个A/D通道的采样周期是基准时钟的整数倍I/O模块以此基准时钟循环运行,同时定义了一个变量用于记录循环的次数,每循环一次,变量值加1,然后用变量值乘以基准时钟,所得结果再与各个A/D通道的采样周期作比较,如果相等则开始相应通道的采样工作利用此方法,可以在一个I/O模块内方便地实现多路A/D通道不通采样周期的工作A/D采样和麦种信号频率检测功能得到的实时数据都会暂存于数据管理模块的数据缓冲区内,然后由I/O模块通知数据管理模块嗲用相应的控制算法进行控制量的计算,经控制算法模块计算得到的控制量也暂存于数据缓冲区中,最后由I/O模块中的PWM功能输出通过此流程图可以看出,I/O模块在获取实时数据并保存在数据缓冲区后,会通知数据管理模块,自身暂停运行而数据管理模块则利用I/O模块延时1个基准时钟的时间,用控制算法模块进行控制量的计算当延时结束,I/O模块重新开始运行时,可从数据缓冲区内得到控制量用于PWM输出
3.
4.5控制算法模块按偏差的比例Proportional、积分Intergral和微分Derivative进行控制的调节器简称PID调节器,是连续系统中技术成熟,应用最为广泛的一种调节器它的结构简单,参数易于调整实际运行经验及理论分析证明,运用PID调节器在对相当多的工业对象进行控制是能够取得满意的效果随着计算机技术的发展,采用计算机系统来实现PID控制时,其软件系统灵活易修改完善的优点得以发挥,所以,PID数字控制器得到越来越广泛的应用在模拟调节系统中,PID控制算法的模拟表达式为
3.1式
3.1中,ut为调节器的输出信号;et为偏差信号,它等于给定量与输出量之差;Kp比例系数;T1为积分时间常数;TD为微分时间常数由于计算机系统是一种采样控制系统,它只能根据采样时刻的偏差值计算控制量因此,为了使计算机能实现PID控制算法,必须将其离散化,用离散的差分方程式来代替连续系统的微分方程离散后的PID表达式为
3.2如果采样周期T取得足够小,该算式可以很好地逼近模拟PID算式,因而使被控过程与连续过程十分接近由于表达式提供了执行机构的位置uk,即其输出值与阀门开度的位置一一对应,所以,通常把该式成为PID的位置式控制算式或位置式PID控制算法如果令
3.
33.4则
3.5式
3.5即为离散化的位置式PID控制算法的编程表达式进行控制时,Kp、K
1、KD可先分别求出并放在指定的内存单元中,则可实现算法但从上式可以看出,每次输出与过去的所有状态有关,要想计算uk须将历次偏差信号ej想家,计算复杂,浪费内存为此,对位置式PID控制算法表达式做如下变化第k次和第k-1次采样分别有
3.
63.7表达式两边对应相减,得
3.8整理得
3.9式
3.9中,——积分系数,——微分系数因为在计算机控制中,Kp、K
1、KD都可以事先求出,所以,实际控制时只需控制获得ek、ek-
1、ek-1三个有限的偏差值即可求出控制增量由于其控制输出对应于执行机构位置的增量,故此式通常被称为增量式PID控制算式增量式PID控制算法与位置式PID控制算法相比较,有如下一些优点由于计算机输出是增量,所以误动作影响小,必要时可用逻辑判断的方法去掉在位置式控制算法中,由手动到自动切换时,必须首先使计算机的输出值等于阀门的原始开度,即uk-1才能保证手动/自动的无扰动切换,这将给程序设计带来困难而增量设计只与本次的偏差值有关,与阀门原来的位置无关,因而增量算法易于实现手动/自动的无扰动切换不产生积分失控,所以容易获得较好的调节品质PID参数整定是一个复杂的过程,一般需要根据被控对象慢慢进行常用的方法有扩充临界比例度整定法和扩充响应曲线法两种,但这两种方法在实际应用中比较麻烦,这里介绍一种适用于计算机控制的简易方法——简化扩充临界比例度整定法,该方法是Roberts,P.D在1974年提出的由于该方法只需整定一个参数即可,故又称为归一参数整定法已知增量式PID控制的公式为
3.10根据Ziegler-Nichle条件,令=
0.1Tk,=
0.5Tk,=
0.125Tk,式中Tk为纯比例作用下的临界振荡周期,则
3.11这样,整个问题便简化为只要整定一个参数Kp改变Kp,观察控制效果,直到满意为止本设计将增量式PID算法作为嵌入式组态软件运行环境的控制算法之一,用于配料称重控制器的自动控制,参数整定选用归一参数整定法这里为增量式PID算法设计了以下几个组态配置参数给定值Ref测量值Mea比例系数Kp输出量增量Delta_U增量式PID算法的属性参数和输入/输出量将保存于由以上组态组成的结构体变量中
3.5本章小结本章详细介绍了嵌入式组态软件运行环境各个部分的设计过程首先根据具体配料称重控制器的要求重新设计了外围接口电路,然后再LPC2210微控制器上进行μC/OS-II的移植工作,介绍了与移植相关的头文件、C语言文件和汇编语言文件,以及相应的工作原理和关键移植代码的编程接下来介绍了μC/OS-II下外设驱动程序的开发和图形用户界面ZLG/GUI的移植过程最后详细分析了嵌入式组态软件运行环境所用到的组态支撑模块的设计重点和关键技术第4章应用案例实验及分析
4.1配料称重控制器概述配料称重系统被广泛地应用于厂矿企业中,但其中大多数系统的自动化程度都不高,存在效率低、误差大,浪费人力物力等问题为此,这里利用前面设计的嵌入式控制器组态软件运行环境开发了一款配料称重控制器,并对整个配料称重控制器的性能进行了测试配料称重控制器的工作原理是,控制系统通过压力传感器,将传送带以及传送带上配料的重量转换为电信号,通过嵌入式控制器的A/D采样装置,计算得到瞬时料重同时系统通过光电转速传感器,将与电机转速成正比的脉冲信号传给嵌入式控制器,通过对脉冲信号频率的检测,得到电机的转速,即可得到传送带运行的速度电机的转速与传送带的速度成正比通过以上两种信号的测量,控制器将传送带运行速度与配料重量相乘,可以得到与舒适流量成正比的参考量R而瞬时流量应该等于F=KXR,其中K是一个待定的系数,通过之后的标定得到得到瞬时流量F后,控制器将其与给定流量相减,两者的差值经过增量式PID控制环节,计算得到控制增量,该数字量通过PWM输出功能和模拟信号放大环境得到电压信号与变频器输入接口相连,控制变频器输出调整电机转速,达到控制传送带运行速度快慢的目的,及时调整配料的瞬时流量
4.2配料称重控制器的设计及检验从图
4.1配料称重控制器系统工作模型看出,电机的运转速度对物料的瞬时流量有着显著影响由于喂料口放料的不均匀,造成了瞬时流量与给定流量出现偏差,为了使能够与给定流量一致,就需要实时调节传送带的速度,即调节电机的转速配料称重控制器采用了闭环控制的方式来调整电机转速,其控制精度高,响应速度快控制方案系统框图如图4-2所示
4.
2.1控制器设计要求为了完成控制要求,控制器主要满足一下设计要求
1.需要A/D采样功能,可采样压力传感器的输出,0~10mA电流信号
2.需要脉冲信号频率检测功能,检测光电转速传感器的输出
3.需要PWM输出功能,将计算好的控制量输出至变频器,用于控制电机转速,变频器输入电压为DC0~10V
4.控制算法选择增量式PID控制算法
5.建立良好的人机界面,使操作人员能够方便、直观地观察到各监测、被控量的情况,实时了解整个控制系统人机界面由各项功能的用户窗口组成
4.
2.2控制器功能组态根据设计要求和第3章设计的嵌入式组态软件运行环境,设置组态配置参数,生成嵌入式控制器的各项功能举例来说,对于A/D采样功能,定义保存组态配置参数的结构体变量为ADI由于只需要采集压力传感器的输出值,这里设置A/D采样通道号ADI.ADChan为0x01;通道名称为“料重测量”,这4个字在字库中的位置编号分别为585853,38,所以设置ADI.ADName的元素值为这4个数值;压力传感器的输出为0~10mA,对应量程为0~100公斤,因此通道量程ADI.ADRang为100;报警上限ADI.ADAlarH设置为量程的90%;报警下限ADI.ADAlarL设置为量程的20%;物料重量的采样频率设定为1s,即ADI.ADFreq为1000ms同样,脉冲信号频率检测功能和PWM输出功能的组态配置参数也需根据实际控制要求一一设置增量式PID控制法的比例系数Kp通过PID参数整定和仿真后确定这样,配料称重控制器的功能组态就完成了
4.
2.3控制器人机界面组态按照控制器的设计要求,这里组态生成了4个用户窗口,分别为A/D采样窗口、脉冲信号频率检测窗口、PWM输出窗口和PID控制算法窗口根据
3.
4.2图形显示模块的介绍,可以方便地组态生成所需界面的用户窗口,拿A/D采样窗口举例来说,设置窗口位置坐标x,y为00,窗口宽度width为240,高度为128,这样设置后,窗口就占据了整个LCD,获得了最大的显示面积由于ZLG/GUI规定窗口标题只能为ASCII字符串,所以将其设置为“ADSample”,指明此窗口用于显示A/D采样的各种数据这样,A/D采样窗口就搭建好了,现在需要向窗口添加标签和按钮A/D采样窗口包含7个标签,分别为通道名称、通道号、测量量程、报警上限、报警下限、采样周期和物料重量,依次设置如下通道名称“通道名称”标签的结构体变量为label1,设置标签坐标label
1.x,label
1.y为719;标签名称label
1.LabeName的元素值为“通道名称”4个字在字库中的位置编号;标签值label
1.LabelValue为A/D采样功能的通道名称ADI.ADName的首地址,即显示“料重测量”4个字通道号“通道号”标签的结构体变量为label2,设置标签坐标label
2.x,label
2.y为739;标签名称label
2.LabelName的元素值为“通道号”3个字符在字库中的位置编号;标签值label
2.LableValue为AD
1.ADChan测量量程“测量量程”标签的结构体变量为label3,设置标签坐标label
3.x,label
3.y为12639;标签名称label
3.LabelName的元素值为“测量量程”4个字在字库中的位置编号;标签值label
3.LabelValue为AD
1.ADRang报警上限“报警上限”标签的结构体变量为label4,设置标签坐标label
4.x,label
4.y为759;标签名称label
4.LabelName的元素值为“报警上限”4个字在字库中的位置编号;标签值label
4.LabelValue为AD
1.ADAlarH报警下限“报警下限”标签的结构体变量为label5,设置标签坐标label
5.x,label
5.y为12659;标签名称label
5.LabelName的元素值为“报警下限”4个字在字库中的位置编号;标签值label
5.LabelValue为AD
1.ADAlarH采样周期“采样周期”标签的结构体变量为label6,设置label
6.x,label
6.y为779;标签名称label
6.LabelName的元素值“采样周期”4个字在字库中的位置编号;标签值label
6.LabelValue为AD
1.ADFreq物料重量“物料重量”标签的结构体变量为label7,设置label
7.x,label
7.y为12679;标签名称label
7.LabelName的元素值“物料重量”4个字在字库中的位置编号;标签值label
7.LabelValue为AD
1.ADResu然后开始添加按钮构件,这里添加了3个按钮,分别为“上一页”、“下一页”和“启/停”,“上一页”、“下一页”用于在多个窗口之间相互切换显示,“启/停”用于启动或停止配料控制器一次设置如下“上一页”按钮“上一页”按钮的结构变量为key1,设置按钮坐标key
1.x,key
1.y为
11.106;按钮标题是一个写有“上一页”的位图文件key
1.KeyTitle为此位图转换的字模数组的首地址;按钮状态key
1.KeyState为1,默认选中状态;按钮对应的服务程序key
1.Foundction为void*voidShowNext,表示切换到后一个窗口“下一页”按钮“下一页”按钮的结构变量为key2,设置按钮坐标key
2.x,key
2.y为
92.106;按钮标题是一个写有“下一页”的位图文件Key
2.KeyTitle为此位图转换的字模数组的首地址;按钮状态key
2.KeyState为0,默认选中状态;按钮对应的服务程序key
2.Foundction为void*voidShowNext,表示切换到后一个窗口“启/停”按钮“启/停”按钮的结构变量为key3,设置按钮坐标key
3.x,key
3.y为
173.106;按钮标题是一个写有“启/停”的位图文件key
3.KeyTitle为此位图转换的字模数组的首地址;按钮状态key
3.KeyState为0,默认选中状态;按钮对应的服务程序key
3.Foundction为void*voidOperStop,表示启动或停止配料控制器这样A/D采样窗口就组态完成了,同样,脉冲信号频率检测窗口、PWM输出窗口和PID控制算法窗口也按照此步骤依次进行设置,即可完成各用户窗口的组态工作,从而完成配料称重控制器人机界面的组态
4.
2.4控制器运行检验按照以上方法将组态配置文件通过串口下载至嵌入式组态软件运行环境后,就可以组态生成用户所需的配料称重控制器,整个过程操作人员不需要编写任何程序组态生成的配料称重控制器的人机界面如图4-3所示图4-3配料称重控制器人机界面通过键盘选中“上一页”或“下一页”按钮可以在不同窗口之间做切换显示,当按下“启/停”按钮后配料称重控制器开始运行,再次按下该按钮,控制器停止运行观察每个用户窗口,所组态的内容都在LCD中正确地显示出来,生成了所要求的人机界面开始运行配料称重控制器,I/O模块工作正常,可以正确地采样到料重等检测量,并通过图形显示模块实时显示出来利用整定好的PID参数,经过微调后瞬时流量可以较快达到给定流量并且振幅较小通过此应用案例试验分析可以看出,使用本文所涉及嵌入式控制器组态软件运行环境来开发项目相对较简单,设计人员在无须编程的情况下只需组态配置文件就可以方便地设计产品;而且其最大的特点就是可以根据客户需求进行任意的组态,设计出不同的人机界面,控制功能可以自由的删减,充分体现了组态软件的特点
4.3本章小结本章利用设计好的嵌入式组态软件运行环境组态生成了一个配料称重控制器,并检验了设计效果首先对配料称重控制器的工作原理进行了概述,然后提出了控制器的设计要求,并详细介绍了控制器的功能组态和人机界面组态过程,最后给出了组态生成的配料称重控制器的人机界面等运行结果结论当前,嵌入式系统广泛应用于消费电子、通信、汽车、国防、航空航天、工业控制、仪表和办公自动化等领域,尤其在工业控制方面,嵌入式系统以其体积小、功耗低、高实时性和可靠性等特点,受到了专业人士的青睐然而,嵌入式软件的开发难度大、周期长,严重制约了嵌入式系统在工控领域的发展嵌入式组态软件可以很好地解决这个问题,它让开发者在生成嵌入式应用系统时不需要自己编写程序代码,大大缩短了产品研发周期,提高了产品可靠性,并且便于修改和维护嵌入式系统市场前景广阔,现在带来的年工业产值已经超过10000亿美元,因此研制嵌入式组态软件具有十分重要的理论意义和实际意义本文首先对嵌入式系统和通用组态软件进行了概述,并在此基础上提出了嵌入式组态软件运行环境的整体构架根据此构架,详细介绍了作为嵌入式组态软件运行环境硬件平台的32位AMR7微处理器平台,以及嵌入式实时操作系统μC/OS-II的相关知识本文的重点是嵌入式组态软件运行环境的具体设计,在已有硬件平台的基础上,针对具体应用进行了接口电路的重新设计;基于LPC2210进行了μC/OS-II操作系统的移植;并在此系统下开发了所需外设的驱动程序,其中包括ZLG/GUI的移植过程;详细阐述了运行环境的核心——组态支撑模块的设计方法,这里设计实现了数据管理模块、图形显示模块、通信模块、I/O模块和控制算法模块利用此嵌入式组态软件运行环境开发产品,设计人员不需要编写程序,通过简单的配置文件就可组态生成不同的人机界面,还可根据需要增减控制功能,充分体现了组态软件开发周期短,方便灵活的特点;同时整个系统在μC/OS-II嵌入式实时操作系统的协调管理下运行,又保证了组态软件的实时性、多任务性为了检验此嵌入式控制器组态软件运行环境的设计效果,我们利用其组态完成了配料称重控制器的开发试验此控制器具有良好的人机界面,可采样得到物料重量和电机转速,并以闭环控制的方式调整电机转速,以达到控制物料瞬时流量的目的在组态开发过程中,设计人员根据需要对运行环境提供的各种属性参数依次设置,无需编写或更改任何源代码,即可得到所需界面和控制功能运行时μC/OS-II嵌入式实时操作系统充分发挥了ARM7微处理器的高运算性能和多任务潜力,同时提高了系统的实时性和可靠性;ZLG/GUI以其占用资源小、使用方便的特点,为控制器提供了良好的人机界面由于开发时间、要求等原因,嵌入式控制器组态软件运行环境还有一些不足之处以待完善
1.组态软件丰富的图形显示是其一大特点,本设计的人机界面略显简单,在今后的研究中可根据ZLG/GUI的显示内容加入一些图元对象,或者使用功能更加强大的GUI,这样可使组态生成的嵌入式控制器具有更加丰富多变的人机界面,能够更加直观形象地显示出被监控对象的实时情况
2.本设计只是针对配料称重控制应用了增量式PID控制算法,为了使此嵌入式控制器组态软件运行环境今后能够应用于更加广泛的场合,还应加入更多种的控制算法嵌入式系统已经成为当今“后PC时代”的生力军,嵌入式控制系统也将在未来的控制领域扮演重要的角色据预测,未来10年内将有90%以上的嵌入式微处理器和70%以上的软件应用于各种嵌入式系统中有了广阔的市场,嵌入式组态软件必将得到迅速地发展,反过来嵌入式组态软件的进步也将推动嵌入式控制系统更快更好的发展致谢本文的研究工作是在导师王鑫老师的精心指导和悉心关怀下完成的,在我的学业和论文的研究工作中无不倾注着导师辛勤的汗水和心血在攻读学士学位的思念中,王老师求真务实的治学精神、渊博的知识、勇于开拓的科学精神和平易近人的态度使我终身难忘,并将深深地影响我以后的学习与工作再次,谨向我的导师致以最崇高的敬意和最诚挚的谢意!感谢我的父母,是他们给予我无私的关爱和鼓励,正式他们多年来默默的支持和殷切的希望,使我拥有不断前进的动力感谢我的舍友以及所有的同学,是他们在生活和学习上给予我太多的支持和帮助在此对他们表示我由衷的感谢感谢学校里的师兄师姐以及师弟师妹们,是他们给予我良好的学习环境以及热情的帮助,使我受益良多参考文献
[1]孙鹤旭林涛.嵌入式控制系统[M].北京:清华大学出版社
2007.5;
[2]彭俊斌钟山.浅析工业监控组态软件的产生与发展[J].江苏船舶2002195:21-24;
[3]马国华监控组态软件及其应用[M].北京:清华大学出版社2001;
[4]组态王嵌入版.http//www.kingview.com/products/detail.aspxcontentid=28;
[5]北京昆仑通态自动化软件科技有限公司.MCGS嵌入版说明书[Z].2005;
[6]周立功等.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社
2005.1;
[7]李佑军.嵌入式系统综述[J].现代电子技术.20036149:9-10;
[8]刘丹.嵌入式系统开发方法综述[J].仪器仪表标准化与测量.20084:8-11;
[9]马忠梅徐英慧叶永建林明.AT91系列ARM核微处理器结构与开发[M].北京:北京航空航天大学出版社
2003.1;
[10]刘绍南.嵌入式操作系统研究[J].装备指挥技术学院学报.2003414:98-101;
[11]JeanJ.Labrosse著邵贝贝译.嵌入式实时操作系统μC/OS-II[M].北京:北京航空航天大学出版社
2003.5;
[12]刘峰杨宏雨王越陈丰.Linux环境下嵌入式组态软件中图形组态的设计与实现[J].微计算机信息.2006226:143-145;
[13]高海波马中.面向嵌入式系统的组态支撑技术[J].船舶电子工程.2004414256-5885;
[14]毛峰马中.面向嵌入式系统组态工具的研究[J].计算机与数字工程.200331212;
[15]杨宏雨刘峰王越陈丰.基于Linux的嵌入式软件中控制策略的设计与实现[J].微计算机信心2006225:57-59;
[16]张立功李丽宏韩昱.基于ARM7的嵌入式操作系统μC/OS-II的移植[J].电脑开发与应用.20061910:29-30;
[17]林定光毛宗源田联房许少云王剑.μC/OS-II在微控制器上的移植的探索[J].现代电子技术.20072:90-93;
[18]朱华均.μC/OS-II操作系统在ARM处理器上的移植[J].计算机工程.200430:64-65;
[19]戚继忠王自强.μC/OS-II在未处理S3C44B0X上的移植[J].微处理机.20054:60-62;
[20]周立功张华等.深入浅出ARM7——LPC213X/LPC214X下册[M].北京:北京航空航天大学出版社
2006.1;
[21]潘新民王燕芳.微型计算机控制技术实用教程[M].北京:电子工业出版社
2006.1;
[25]张庆彬毕丽红.工业自动配料系统的组成与设计[J].起重运输机械.20052:11-14;
[23]张东瀛郭咏虹王斌王孙安.基于模糊PID的自动配料系统控制研究[J].机床与液压.20051:131-132;
[24]LIYan-qing.LIUXiang-dong.DONGNing.etal.ThedesignofvehiclemonitoringsystembasedonGPRS/GPS[J].ControlAutomationPublicationGroup.
2004.204:39-
40.
[25]HUANGCheng-an.ZHANGYue.YUNHuaizhong.ThedesignofremotemetercontrolsystembasedonGPRS[J].ElectricalMeasurementInstrumentation.
2003.8:42-
45.
[26]ComerDE.InternetworkingWithTCP/IPVolumeI:Principles.Protocols.andArchitectures[M].Beijing:PublishingHouseofElectronicsIndustry.
2007.
[27]SHENGLi-feng.JINXin-yu.ZHANGYu.etal.Intelligentcheckandmanagementsystemforwatt-hourmetersbyusingPDAandGPRStechnology[J].EastChinaElectricPower.
2006.1:23-
25.
[28]HEZeng-ying.CHENJian-rui.RemoteshutdowntechnologyofcommunicatingonthebasisofWinsocknetwork[J].InformationCommunications.
2007.5:62-
64.附录A程序#includeconfig.h#defineBEEPCON17voidDelayNSuint32dly{uint32i;for;dly0;dly--{fori=0;i5000;i++;}}voidUART0Inituint32bps{uint16Fdiv;PINSEL0=PINSEL0~0x0F|0x05;U0LCR=0x83;Fdiv=Fpclk/16/bps;U0DLM=Fdiv/256;U0DLL=Fdiv%256;U0LCR=0x03;}voidUART0SendByteuint8data{U0THR=data;whileU0LSR0x40==0;}voidUART0SendStrchar*str{while1{if*str==\0break;UART0SendByte*str++;}}voidPCDispCharuint8xuint8yuint8chruint8color{UART0SendByte0xff;UART0SendBytex;UART0SendBytey;UART0SendBytechr;UART0SendBytecolor;}voidISendStruint8xuint8yuint8colorchar*str{while1{if*str==\0break;PCDispCharx++y*str++color;ifx=80{x=0;y++;}}}intmainvoid{uint32ADC_Data;charstr
[20];UART0Init115200;PINSEL1=0x01400000;ADCR=10|Fpclk/1000000-18|016|017|121|022|124|027;DelayNS10;ADC_Data=ADDR;while1{ADCR=ADCR0x00FFFF00|0x01|124;whileADDR0x80000000==0;ADCR=ADCR|124;whileADDR0x80000000==0;ADC_Data=ADDR;ADC_Data=ADC_Data*3300;ADC_Data=ADC_Data/1024;ADC_Data=ADC_Data60x3FF;sprintfstr%4dmvatVIN1ADC_Data;ISendStr60230x30str;ADCR=ADCR0x00FFFF00|0x02|124;whileADDR0x80000000==0;ADCR=ADCR|124;whileADDR0x80000000==0;ADC_Data=ADDR;ADC_Data=ADC_Data*3300;ADC_Data=ADC_Data/1024;ADC_Data=ADC_Data60x3FF;sprintfstr%4dmvatVIN2ADC_Data;ISendStr60210x30str;DelayNS10;}return0;}附录BEmbeddedoperatingsystemhasthefollowingcharacteristics:1Takeupstoragespace.TheembeddedsystemsoperatingsystemandsoftwareapplicationsaregenerallycuredinROMFlashetc.anditsstoragecapacityislimitedsotheembeddedoperatingsystemmustbesmallscaletomeetthelimitationsoftheembeddedsystemhardware.2real-time.Externalasynchronouseventiscompletedtheprescribedfunctionscanbeperformedwithinthetimelimitandtheabilitytorespond.Embeddedsystemsaregenerallydesignedtocompleteaseriesofspecifictaskswhichalwaysrequirethesystemtobecompletedwithinthestipulatedtimebeabletomaketimelyandaccurateresponsetointerruptsembeddedoperatingsystemsmusthavereal-timecharacteristics.3robustness.Containstheweakinteractionandthestrongstabilityoftwomeanings.Aftertherunningoftheembeddedoperatingsystemdoesnotrequiretoomuchintervention.Ituserinterfacegenerallydonotprovidetheoperatingcommandcommandonlythroughsystemcallstoprovideservicestotheuserprogram.TheabsenceofhumaninterventionandtheoperatingenvironmentforembeddedsystemsisgenerallyhigherthantheharshenvironmentofthePCrunning.Automotivespacestrongelectricalinterferenceradiationetc.mayhaveresultedinthedisorderofthesystemoperationinstructions.Thusrequiringanembeddedoperatingsystemhasstrongstabilityinsomeprocessdamagecanberepairedclearoperation.4withbootstrapfunction.Whenamicroprocessorinitialstart-upitfirstperformsapredeterminedaddressoftheinstruction.Usuallythisisaread-onlymemory.ThestoragesysteminitializationorbootprograminthePCitistheBIOS.InembeddedsystemstheabsenceoftheBIOSthesystemispowereddirectlyexecuteembeddedoperatingsystemcodetheembeddedoperatingsystemstartupcodeneedtoconsiderthedesignofthetargetboard.5canbecutcanbetransplanted.Requiredtocompletedifferentobjectivesembeddedoperatingsystemmustbeabletobecutaccordingtotherequirementsoftheapplicationremovetheexcesspartofortosimplifythecorrespondingmodule.Inadditionduetothediversityofhardwareplatformstheembeddedoperatingsystemalsohasabetterportabilitytoadapttothetypeofmicroprocessor.附录C嵌入式操作系统有以下几大特点
1.占用存储空间小嵌入式系统的操作系统和应用软件一般都固化在ROM、Flash等中,其存储容量有限,所以嵌入式操作系统必须做到规模小以满足嵌入式系统硬件的限制
2.实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件做出响应的能力嵌入式系统一般是为完成一系列具体任务而设计,因而总是要求系统在规定的时间内完成某些操作,对中断能做出及时准确的响应,所以嵌入式操作系统必须具备实时性的特点
3.健壮性包含弱交互性和强稳定性两层意思嵌入式操作系统开始运行后就不需要人过多的干预它的用户接口一般不提供操作命令,只是通过系统调用命令向用户程序提供服务由于没有人为干预,而嵌入式系统的运行环境一般又较PC运行环境恶劣车载、太空、强电干扰、辐射等等,都有可能造成系统运行指令的紊乱因此要求嵌入式操作系统有很强的稳定性,在一些进程被损坏时可以进行修复、清楚等操作
4.具备自引导功能当一个微处理器最初启动时,它首先执行一个预定地址处的指令通常这个位置是只读内存其中存放着系统初始化或引导程序,在PC中,它就是BIOS而在嵌入式系统中,由于没有BIOS,系统加电后直接执行嵌入式操作系统代码,因此在嵌入式操作系统的启动代码中需要考虑目标板的设计
5.可裁剪、可移植因所需完成的目标不同,嵌入式操作系统必须能够根据应用的要求进行裁剪,去掉多余的部分,或者简化相应的模块另外由于硬件平台的多样性,所以嵌入式操作系统还要具有较好的可移植性,来适应不同的微处理器单色LCD240X128dotsUARTRS232串口A/D采样接口电路基于ARM7TDMI-S核的微处理器LCP2210脉冲信号检测接口电路存储器系统SARMFlashD/A输出接口电路键盘嵌入式操作系统ARM硬件平台运行环境串口Windows操作系统PC机开发环境组态支撑模块嵌入式操作系统板级支持包硬件平台运行环境界面显示人机接口报警检查数据存储数据采集控制量输出配置文件接收实时数据库核心A/D、D/ADI、DOI/O模块UART通信模块控制算法应用软件用户代码μC/OS-II配置与应用相关OS_CFG.HINCLUDES.HμC/OS-II与处理器无关代码OS_CORE.COS_FLAG.COS_MBOX.COS_MEM.COS_MUTEX.COS_Q.CμC/OS-II移植处理器相关代码OS_CPU.HOS_CPU_A.ASMOS_CPU_C.C。