嵌入式软件设计-洗衣机程序需求分析与详细设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于DARTS 的洗衣机控制软件设计
1.洗衣机控制软件需求分析与说明
洗衣机是日常家用电器,它是人们日常使用频率较高的家用电器,有全自动、半自动等不同类型。根据题目中提出的需求概述,结合日常生活中人们的使用习惯,在这里给出其功能需求和相应的非功能需求以及相应的外部接口等的定义和描述。 1)功能需求定义和描述 (1) 默认状态下洗衣机处于关闭状态。用户按下电源开关后,洗衣机上电工作;当洗衣机处于工作状态时,用户按下电源开关后,无论洗衣机处于何种运行状态均断电、停止工作; (2) 电源开关开启后,洗衣机默认的程序功能是洗衣、漂洗、脱水,默认水位时中等水位,运行状态是等待状态; (3) 洗衣机有运行状态和等待状态;当用户按下暂停\启动开关后,若洗衣机原来处于等待状态,则转入运行状态,执行等待状态时的程序执行状态;若洗衣机处于运行状态,则转入等待状态,并保存程序的执行状态; (4) 当洗衣机处于运行状态时,用户的程序控制,即洗衣、漂洗、脱水按键和水位按键的输入无效;只有当洗衣机处于等待状态时其输入才有效; (5) 程序控制的洗衣、漂洗、脱水这三个键可以按下一个、两个或者三个,洗衣机总是按洗衣->漂洗->脱水的顺序执行程序并且只执行用户选择的程序; (6) 水位按键每次只能选择高、中、低三种水位的一个值; (7) 洗衣机显示面板显示洗衣机的电源状态、暂停\启动状态、当前执行的程序以及即将执行的程序和水位状态,并且能根据用户输入以后及时改变显示信息。 2)非功能需求定义和描述 (1) 洗衣机开关机的响应时间控制在500ms 以内; (2) 洗衣机在运行状态和等待状态之间的才换控制在800ms 以内; (3) 洗衣机功能和水位的输入控制在600ms 以内; (4) 洗衣机显示面板的响应控制在1200ms 以内; (5) 这里假设洗衣机洗衣用600s 的时间,漂洗用300s 的时间,脱水用100s 的时间。 3)外部接口描述
外部接口描述如下所述:共有八个按钮,分为四组,分别是电源、暂停/启动、程序控制和水位。按钮旁边的指示灯显示每个按钮对应的状态:电源指示灯亮表示电源打开,暗则表示关闭;暂停/启动按钮亮表示正在运行,暗表示处于暂停状态;程序控制按钮亮表示正在执行或者将要执行,暗则表示不能执行;水位按钮亮表示当前处于某个水位。
4)系统状态变迁图
2.洗衣机控制软件系统设计以及数据流分析
根据以上所提出的需求,相应的数据流图如下所示:
说明:
(1)洗衣机程序状态信息是一组数据,包含四个项:电源状态、运行情况、程序状态和水位信息,与输入面板的相对应;
(2)时钟中断的时间间隔是20ms,通过具有一定频率的时钟中断来查看当前洗衣机程序执行的执行情况、按键输入和面板输出,以提高效率、降低复杂性。
(3)洗衣机状态、指令集是洗衣机在装变为相应状态的时候所需要运行的指令等,这些
设局存储在快速读写存储器之中,读取这些数据的时间非常快,在100ms的量级。
3.洗衣机控制软件任务划分以及任务模块设计
1)洗衣机控制软件任务划分
根据设计的数据流图,洗衣机程序的任务划分如下图所示(在数据流图中被划入相同的任务的数据处理过程用相同颜色的虚线方框来表示):
进行以上任务划分的理由:
在DARTS设计方法中,划分任务的原则包括以下几种:I/O依赖性、功能的时间关键性、计算需求、功能内聚、时间内聚和周期执行,正是根据以上原则进行整体考虑得到以上的功能划分。
(1)按键输入任务:功能内聚原则;
(2)中断定时任务:周期执行原则;
(3)洗衣机状态信息处理任务:计算需求和功能内聚原则;
(4)信号输出任务:I/O依赖性原则。
另外,为了提高效率,将数据流图中的洗衣机状态信息和洗衣机状态指令集整合在一起作为洗衣机程序的信息存储,以便各个任务的访问能够有一个统一的入口。
2)洗衣机控制软件任务接口
3)任务模块设计
(1)按键输入任务
按键输入任务的主要功能是在面板上的按键按下以后,得到正确的按键信息传递给状态信息任务对按键信息进行处理。这里的正确信息是指每次只能有同一种类的按键信息按下,
比如不能同时按下暂停\启动键和洗衣程序任务键或者洗衣程序任务键和水位键等。而且需要将按键的电信号转换成可以识别的程序信号传递下去。按键输入任务的数据流图如下所示:
按键输入的模块结构图如下所示:
(2)状态信息处理任务
状态信息处理任务的主要功能是(1)每隔一段时间,把得到的按键输入转换成为相应的状态信息,根据得到的按键输入和当前的运行信息进行比较得到一个正确的运行信息写入信息存储器;(2)每隔一段时间,将运行信息传递给信号输出单元执行要运行的程序。状态信息处理的数据流图如下所示:
状态信息处理的模块结构如下所示:
(3)中断定时任务
中断定时任务的主要功能是为程序的执行提供时间控制,状态信息处理和信号输出均需要中断定时任务的控制。中断定时任务为每一个需要的任务设置定时器,如果定时器时间到达就发送触发信息,并重置相应的中断定时器。中断定时任务的数据流图如下:
定时器的任务模块如下所示:
(4)信号输出任务
信号输出任务主要是将程序的执行状态转化为用户可见的显示和洗衣机的动作输出。其数据流图如下所示:
信号输出任务模块如下所示:
4.主要的功能流程设计
通过以上的分析与设计,程序框架基本建立,大部分模块的形成和设计如上面设计过程中的功能所示,这里对按键输入任务中的按键提取、判断和状态信息处理任务中的状态信息处理的算法实现进行描述。
按键提取、判断的流程:
当得到输入键值以后,检测按键的类型,如果类型大于1便认为是错误输入;按键的类型等于1则认为是正确输入,才能将其进行传递。
状态信息处理的流程:
(1)如果输入的是电源开关按键值,直接传递给动作输出信号任务改变电源状态,
并将洗衣机状态信息设为初始状态,因为电源状态在洗衣机软件中具有最重要
的地位和最高优先级;
(2)如果输入的是暂停\启动按键值,应先判断电源状态是否为开,如果为开启状
态就改变运行状态为相对的状态,如果为关则将洗衣机状态设置为初始状态,
因为在电源为关闭的状态下不应检测到该按键值,这说明系统运行信息被非法
修改;
(3)如果输入的是运行程序值,同(2)一样首先判断电源是否开启,处理方式相同;
然后判断是否处于暂停状态,如果处于运行程序状态则忽略输入值;如果处于
暂停状态,则修改相应的运行信息;
(4)如果输入的是水位值,则首先执行同(3)的判断过程;然后检查当前的运行程
序是否是脱水,如果是脱水程序运行则忽略水位值信息,否则设置水位值。