邹琴-毕业论文(7)

2019-04-15 22:57

请求,将请求写入请求队列。其他状态不予响应。

2) 外部请求与电梯所在位置不同,则将请求写入请求队列,调用前一函

数响应。

void scheduleExterLeft(uchar floor, uchar direct) //左边电梯请求处理,direct=0为外部向上请求 1为外部向下请求 {

if(leftFloor == floor) //电梯刚好在有外部请求的楼层 {

if(leftStatus == idle || leftStatus == closing) {

leftTimeCount = 0; //重新开始记时 leftStatus = opening; }

else if(leftStatus == running) {

if(direct == 0)

leftExterUp[floor - 1] = 1; //若外部请求向上,记录外部有请求的楼层,存放在外部向上请求队列中。 else

leftExterDown[floor - 1] = 1; //与向上相反。 scheduleLeft(); //记录下外部请求后,调用电梯调度函数,启动电梯 } }

else //如果电梯不在有外部请求的楼层 {

if(direct == 0)

leftExterUp[floor - 1] = 1; //记录入外部请求队列

else

leftExterDown[floor - 1] = 1;

scheduleLeft(); //调用电梯调度函数,得出目的地 } }

7.5.4 电梯调度算法

电梯响应外部请求的规则:(函数中分为向上和向下运行两部分讨论。)

1) 如果两部电梯空闲,则选择距离请求最近的一部响应,如果两部

第 25 页 共 36 页

电梯位置相同,则选择被设置为“忙梯”的电梯响应。两部都空闲且在一楼时,“忙梯”标志交换。

2) 如果只有一部空闲,且闲梯刚好在有请求的楼层。则闲梯响应。 3) 如果只有一部空闲,但闲梯不在请求的楼层或两部电梯都不空闲

(1) 若忙梯向上运行,外部请求在忙梯上行方向,则由忙梯响应。

在下行方向,则由闲梯响应。

(2) 若忙梯向下运行,外部请求在忙梯下行方向,则有忙梯响应。

在上行方向,则有基梯响应。

void scheduleExterUp(uchar floor) 外部向上请求的最佳电梯 { 应

}

else if(leftStatus == idle && leftFloor == floor) {

if(leftDirect == 1)

//左边电梯向上运行

scheduleExterLeft(floor, 0); scheduleExterRight(floor, 0);

//左边电梯为忙梯

//左边

scheduleExterLeft(floor, 0); scheduleExterRight(floor, 0); else

if(leftStatus == idle && rightStatus == idle) //都空闲,距离{

if(abs(leftFloor - floor) > abs(rightFloor - floor)) //求得

scheduleExterRight(floor, 0); scheduleExterLeft(floor, 0);

//距离相同,忙梯响

近的一部电梯响应

//得出响应当前

绝对值小的一个响应

else if(abs(leftFloor - floor) < abs(rightFloor - floor)) else if(busyEle == 0)

电梯空闲,且请求刚好在其所在楼层

else if(rightStatus == idle && rightFloor == floor) else if(busyEle == 0)

第 26 页 共 36 页

}

{ } else

//左边电梯向下运行

//忙梯响应

scheduleExterLeft(floor, 0);

if(floor < leftFloor)

//要梯请求在左边

//基梯响应 //要梯请求在电

电梯下行方向

scheduleExterRight(floor, 0);

scheduleExterLeft(floor, 0); else

梯上行方向,即在其运行方向上,忙梯响应

else {

//右边电梯为忙梯

if(rightDirect == 1) { } else

}}}

//右边电梯运行方向向下

scheduleExterRight(floor, 0); //忙梯响应 if(floor < rightFloor) else

scheduleExterRight(floor, 0); //要梯请求在电梯上行

//要梯请求在电梯下行方向 //基梯响应

scheduleExterLeft(floor, 0);

方向,即在其运行方向上,忙梯响应

8 测试

在设计好各个模块后,对整个系统进行全面测试。测试结果是各项功能都能成功实现。

进行系统测试主要有两种方法:静态测试和动态测试,主要采用动态测试的方法。动态测试是通过运行程序来检验软件的动态特性和运行结果的正确性,并根据程序的运行过程对程序进行评价的过程。动态测试包括运行,解释和模拟。具体的测试方法有:

1.黑盒测试:一种以需求和功能规范及界面为基础的测试方法。它无需了解软件的内容结构。

第 27 页 共 36 页

2.白盒测试:一种以程序为基础的测试方法,它需要完全了解程序的结构和处理过程。

这里以黑盒测试电梯控制系统运行为例,检测的结果如下:

表8-1 测试结果表

测试项目 测试数据 预期输出 A梯在1楼 B梯在3楼 A梯响应 1楼向上 输出“-” 表示开门 2楼向上LED灯亮 2楼向上 单个外部向上请求 3楼向上 B梯响应,从3楼运行到2楼 显示楼层号 B梯响应 输出“-” 表示开门 4楼向上LED灯亮 4楼向上 B梯响应从3楼运行到4楼 显示楼层号 测试结果 红色数码管显示 A梯在1楼 B梯在3楼 红色数码管显示 “-”“||” 表示开门后进入等待 2楼向上LED灯亮 B梯响应 到达后LED灯灭 红色数码管显示“2” “-”,“||” 红色数码管显示 “-”“||” 表示开门后进入等待 4楼向上LED灯亮 B梯响应 到达后LED灯灭 红色数码管显示“4” “-”,“||” 6楼向下LED灯亮 6楼向下LED灯亮 6楼向下 单个外部向下请求 B梯响应,从3楼运行到6楼 沿途显示楼层号 B梯响应 沿途显示响应楼层号 到达后LED灯灭 红色数码管显示“6” “-”,“||” B梯响应 3楼向下 输出“-” 表示开门 红色数码管显示 “-”“||” 表示开门后进入等 2、3、4楼表示向上请求的LED灯依次点亮A梯显1楼向上 多个外部向上请求 2楼向上 3楼向上 4楼向上 (按顺序按键) A梯响应1楼、 3楼、4楼请求 B梯响应2楼请求 示“-”,然后运行至4楼,沿途显示“1”“-”“||”“2”“3”“-”“||”“4”“-”“||”3、4楼LED在A梯到后灭B梯运行至2楼,显示“2”“-”“||”2楼LED在B梯到达后灭

运行正常 如图8-2所示 运行正常 运行正常 运行正常 运行正常 运行正常 运行正常 说明 初始化正常 如图8-1所示 初始化 无 第 28 页 共 36 页

测试项目 测试数据 3楼向上 多个外部向上请求 2楼向上 4楼向上 (按顺序按键) 6楼向下 5楼向下 4楼向下 3楼向下 多个外部向下请求 (按顺序按键) 5楼向下 4楼向下 6楼向下 3楼向下 (按顺序按键) 内部请求 开门 关门 显示“-” 显示“-” 显示“-” 显示“-” 由B梯响应,运行到6楼,请求队列显示“6” 6(B梯) B梯响应 沿途显示楼层 到达后蓝色数码管无显示 红色数码管显示“6” 蓝色数码管显示“4” 请求队列显示“4” 3、4(B梯) B梯响应 B梯响应,运行至4楼,蓝色数码管无显示 红色数码管显示“4” 蓝色数码管显示“12” 内部请求 请求队列显示1、2(B梯) “12” B梯响应 B梯响应,运行至2楼再至1楼 到2楼时,请求队列无“2”显示,红色数码管显示“2” 到1楼时,请求队列无显示红色数码管显示“2” 请求队列显示“12”3、4楼的1、2、3、4(B梯) 请求视为无效请求 同上一表格输出 运行正常 如图8-3所示 运行正常 运行正常 运行正常 运行正常 运行正常 B梯响应所有请求 先响应最远端请求,由远及近 6、5、4、3楼LED灯亮, B梯运行到6楼,然后换向至5、4、3楼。 6、5、4、3楼LED灯依次灭 运行正常 预期输出 测试结果 2楼、4楼LED灯亮 B梯响应3楼、2楼请求 B梯停在3楼,然后运行到2楼,2楼LED灯灭 途楼层,4楼LED灯灭 运行正常 说明 A梯响应4楼请求 A梯运行到4楼,显示沿

第 29 页 共 36 页


邹琴-毕业论文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:泰安电力学校

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: