嵌入式系统面向对象分析设计UML有限状态机
1概述
随着我国装备制造业的发展,嵌入式系统已经成为制造业的核心技术。它被广泛地应用到工业控制、仿真系统、医疗仪器、信息家电、通信设备等众多领域。目前,围绕嵌入式系统展开研究和开发,已经成为计算机软硬件技术发展最活跃的方向之一。
嵌入式系统不同于通常纯粹的软件系统或硬件系统,而是软件与硬件通过在一起的,有些功能既可以用软件实现,也可以通过硬件实现。另外,嵌入式系统设计所面临的挑战不仅涉及到计算机软件和硬件,也会涉及到许多非计算机工程中的问题,诸如机械尺寸问题、功耗问题和制造成本问题等。即使是计算机工程方面的问题,大部分系统在实时性、可靠性和多速率等问题方面也都有特别要求。
目前,实现嵌入式系统的硬件方法主要有:定制逻辑(ASIC)、现场可编程门阵列(FPGA)和嵌入式微处理器三种。在实际系统实施中,绝大多数系统是采用嵌入式微处理器方式,如单片机、单板机或嵌入式微处理器芯片等。这是因为用微处理器实现嵌入式系统是一种十分有效的方法,它使得在不同价位上设计不同特性的产品系列成为可能,并且能够扩充新特性以满足飞速发展变化的市场需求。
2嵌入式系统设计面临的问题和解决办法
过去嵌入式系统分析和设计方面的主要问题为:
①分析设计没有一个统一的标准;
②分析设计方法不统一;
③从分析设计到制作和编程没有一个始终一贯的工程化方法,使得产品形成的每一个过程人为因素影响十分严重;
④分析设计的成果不能被开发类似项目或产品的重用。以上4个方面的问题成为多年来制约嵌入式系统发展的主要瓶颈,使得大部分从事嵌入式系统应用开发的组织和团体,基本上是采用小组甚至是作坊式的动作模式。这使得开发较复杂或大型系统的工作变得十分困难甚至无法进行,或因为系统需求的不断变化或小组成员的流动导致项目失败。我们知道,人类之间要想达成对任何事件的交流,前提是方面问题的主要原因是没有一个对嵌入式系统需求、分析、设计、制作、测试和维护过程的结构特征和行业特征统一的工程化描述方法。目前,面向对象技术正是建立在对真实世界抽象思维的基础上,统一建模语言(UML)为这种思维提供了可视化工具,解决了以上难题。使用UML对嵌入式系统建模,不仅可以使系统分析设计实现标准化,而且完全可以实现系统分析、设计和制作、测试分别由不同的项目成员在统一、一贯的方式下完成,也使得系统分析和设计模型在相似系统中重用成为可能。
3系统建模
面向对象的嵌入式系统建模同任何软件密集型系统建模一样,从系统中的类建模开始。为了解类的结构,首先对系统工作过程作一个总体陈述。无论是采用问题空间词汇抽象方法还是采用用例(usecase)驱动建模方法,目标都是找到系统以类或对象作为构造块的类图。如果采用用例驱动的系统分析方法,该内容也可以用用例视图加以模型规格说明,然后使其作为系统白盒测试依据。由于使用用例视图做的规格说明篇幅比较大,本文仅用文字描述说明这部分内容。
本文所例举的系统为一小型变频调速器系统。对任何一个三相交流电机,在输入单相交流电源的情况下,实现6Hz到[9Hz,50Hz]区间内任一频率的稳步启动运转。系统用户界面包括2位数码显示器、一个运行/停止指示器、电源开/关指示器、6个按钮键盘和电源开关。2位显示器用于显示电机当前正在运转的频率,6个按键分别代表启动、停机、正点动、反点动、频率加和频率减。启动命令使电机从6Hz以每步0.2Hz的步长稳步提升到当前设置频率上后在该频率上稳定运转;正点动命令使电机稳定在6Hz上正向运转;反点动命令时,电机转动频率与正点动上同,但旋转方向相反;频率加命令在电机运转时使电机以1Hz/s的速率增加运转频率和当前预置频率,在电机停止时仅改变预置频率;频率减命令与频率加命令相反;停机命令则无论电机运行在什么状态下,都使电机停止运转。
系统类图如图1所示。图中有2个硬件类Button*和Light,1个主动类Microcontrollor和3个一般类Convertor、Watchdog和Display。Button类代表所有按钮;Light*类代表2个发光数码管和1个运行指示灯;主动类Microcontrollor是系统主控模块,完成所有对象的调度和管理;3个一般类为3个功能独立的程序模块。
图2为系统实施图。微处理器节点是系统的主控节点,采用Atmel89C52。其内部8KBFlashROM和128BRAM资源已能满足系统需要,因此不再增加外部存储器。与其它节点的连接完全通过其本身的串并接口就可完成。按钮节点代表所有按钮,在系统变化时也可以用键盘取代,本例为6个单独机械按钮。显示节点代表系统显示部分,本例为2个数码管和1个表示电同运行状态的发光二极管。运行监控节点具有两部分功能,其一是通过WatchDog技术监视微处理器的运行状况,另一个是监视变换器输出的脉冲宽度。变换器邛树熊设计为专用电路,通过微处理器并行口接受三相正弦脉冲,根据电机功率转换成本相电机线圈所需要的脉冲电压。三相电机节点不属于嵌入式系统本身,但为了说明本嵌入式系统与控制对象关系而布置在同一实施图中。
图3为系统有限状态机行为模型。系统开机上电后,经过初始化处理自动进入到等待状态,
在等待状态,Microcontrollor对象根据用户键盘按钮命令,调度相应的操作对象。当用户发出正或反点动命令时,系统进入点动运行态,此时Convertor对象输出6Hz正或反相序三相脉冲。当用户松开正或反点动按钮时,系统返回等待状态。在系统预置频率设定正确的情况下,用户按启动按钮时,系统先进入到启动运行态。在此状态时系统从6Hz开始按每步0.2Hz的步长稳步增加电机运转频率,直到达到预置频率时进入到稳定运行态。在稳定运行态用户可以改变预置频率,步长为1Hz。每次预置频率的改变事件,都会产生从稳定运行态到启动运行态的交替变动。当系统运行出现故障时,进入到故障处理状态处理,完成后自动返回到等待状态。
4系统实现
4.1数据处理
由于本文例举的系统为一小型变频调速嵌入式系统,所有三相正弦波形的PWM脉冲都由Atmel89C52的P1.0~P1.5端口输出。当把任何频率正弦波形分解成N等分时(N为6的整数倍),则要用N个等幅而不等宽的矩形脉冲来等效,每个脉冲区间如图4。每个频率正弦波划分为6个相序,每个相序为60啊C扛鱿嘈蚍治狽/6个区间,每区间分为7个小区间。每个区间采用中心对称脉冲波形,因此在每个小脉冲边沿只有一相功率驱动开关换相而使驱动电源电流平衡变化。在任何一相换相时,由软件自动加死区保护(死区时间一相上下臂开关同时关闭,如图4中竖双线间部分),以免功率驱动开关在换相瞬间上下臂同时导通而损坏元件。
虽然对于不同频率每个相序内脉冲区间数和占空比有所不同,但输出的波形却是相同的。又因为每个区间的7个小区间波形是中心对称的,因此在输出最后3个小波形时,只要把前3个小波形的占空时间和输出波形数据倒读并输出就可以完成。另外,每个脉冲区间仅需要4个占空定时T区间,t2,t3,t4(见下节说明),并且每个相序仅需要4个脉冲波形数据就可以了。三相正弦波区间数据关系如表1.
表1三相正弦波区间数据关系相序IIIIIIIVVVI电压关系Ua>Ub>UcUb>Ua>UcUb>Uc>UaUc>Ub>UaUc>Ua>UbUa>Uc>Ub波形数据2AH,29H,19H,152AH,26H,25H,152AH,26H,16H,152AH,1AH,16H,15H2AH,1AH,19H,15H2AH,29H,19H,15区间数N/6N/6N/6N/6N/6N/6小区间定时t4,t3,t2,t1,t2,t3,t4
4.2系统资源配置
当系统的分析与设计采用面向对象方法时,并不意味着所使用的编程语言也一定是面向对象的。事实上,这种分析设计方法的具体实现可以使用任何编程语言(如汇编语言或C语言);但是,在程序设计上要尽可能地使用面向对象的思想,如体现程序结构方面的封装性、消息传递等。这种才会使程序结构清晰,便于应付随着需求变化而产生的不断更新和系统维护。
在实现本系统时,系统最重要的资源是程序存储器和定时器。由于采用了上小节所讨论的数据处理技术,大大压缩了数据空间。在实现时,把6Hz~50Hz频率空间划分成7个大的区段,使每个区间的脉冲周期在900μs左右,区间周期定时使用单片机内部的T2定时器的常数自动重装入方式。由于区间周期与输出频率关系是确定的(T区间=1/Nf频率),片内T0定时器用于区间内小区间t2、t3、t4定时,而t1定时由t1=T区间-2譼2-2譼3-t4计算得到。T1定时器用于监视系统输出的脉冲宽度,当P1口任何一端输出脉冲宽度超过1000μs时,系统通过中断进入故障处理状态。另外,系统还设一WatchDog电路X5045,监视系统程序运行情况。当程序运行异常时,系统通过复位进入到故障处理状态。系统的显示接口通过单片机串行接口实现。
5讨论
由于嵌入式系统的实现工具基本上都是非面向对象的,因此如何使面向对象的分析设计与非面向对象的实现工具之间的衔接就成为了一个值得探讨的问题。另外,嵌入式系统一般都具有不同于大型软件系统的具体要求,如实时性、可靠性、机械尺寸、能耗(如电池供电)要求等,因此在实现系统时还应根据开发者的经验进行特别处理。但是,采用面向对象建模后再实现系统实现的方法,为系统建立了可视化的组织结构和行业结构,实现了用户需求的可视化表示,缩短了系统的开发周期,很好地适应了用户需求的变化。
关键词:
嵌入式
系统
面向
对象
分析
设计
有限
状态机