虚拟仪器技术及应用课程设计-电梯控制程序设计
成绩: 虚拟仪器技术及应用课程设计题 目: 电梯控制程序设计 学 期: 20162017 学年第一学期 指导教师: 陶 林 姓 名: 冉 江 北 学 号: 20137670 年级专业: 2013 级 机电 2 班 西南交通大学峨眉校区机械工程系目录一、 背景 .1二、设计原理 .1三、前面板程序设计 .23.1 程序前面板总体设计 .23.2 电梯上下行信息记录 .23.3 控制信息显示 .33.4 电梯内部按键 .33.5 电梯门 .33.6 电梯和上下行按钮 .4四、程序面板程序设计 .54.1 按键检测 .54.2 电梯上下行检测 .84.3 电梯上下行控制 .9五、总结 .135.1 程序的不足之处 .135.2 关于本次课程设计的感想 .130基于 labVIEW 的电梯控制程序设计1、 背景本次课程设计的题目电梯控制程序设计,以平时住宅楼房常见的升降楼梯为参考样例,设计的前面板的用户界面。电梯的的基本运行原理也是模拟升降电梯的上下运行。因为不太清楚实际地电梯上下运行控制的原理,所以自己设计了控制程序流程。本次设计的是一个 5 层的楼房电梯控制程序,之后的所有说明都是以此为基础。为了尽可能地模拟真实的电梯运行,所有的按键、运行方式、显示效果和开关门效果都是模拟实际的电梯效果。程序设计的时候也考虑了相应的程序的扩展使用,只需对相应的部分进行参数修改,就可以应用在其它的电梯控制中,如 20 多层的楼等。二、设计原理用一个二维数组(2 行 5 列)记录电梯的上下行信息,即记录电梯需要升降到哪些楼层。一个数(0 或 1)记录电梯的上下行。基本原理是,以特定的顺序依次不停地检测电梯上下行信息。如果检测到信号后,电梯先运动到该楼层,并记录下是上行还是下行,开关门,输入的楼层信息记录在二维数组;关门后再按照特定的顺序依次检测,判断上下行。电梯的运动控制和按键的信息记录,程序是分开的,使其互不影响。考虑到实际还设计了开关门按钮和报警按钮。1三、前面板程序设计3.1 程序前面板总体设计如图 3.1 所示,是程序前面板的总体设计和布局。图 3.13.2 电梯上下行信息记录5 层楼的上/ 下行信息采用一个二维数组(2 行 5 列)记录,第一行为上行,第二行为下行。有人按下上/ 下楼按钮时,对应的楼层按钮变亮,点击楼层数也会记录在对应的数组位置。二维数组为布尔数组,如图 3.2 所示。2图 3.23.3 控制信息显示主要是一个报警灯(布尔控件) ,一个显示电梯上下行的数值控件(上 0 下1) ,和一个显示门的状态的数值控件(开门 1 等待 2 关门 3 结束 4 其它 0) ,如图 3.3。图 3.33.4 电梯内部按键电梯内部的按钮,除了对应的楼层按钮外,还包括开关门按钮和报警按钮。它们都是布尔按钮控件,如图 3.4。开关门机械动作为保持转换直到释放,其它的机械动作为释放时转换。图 3.43.5 电梯门电梯的门是使用两个水平进度条叠放在一起,如图 3.5。3图 3.53.6 电梯和上下行按钮电梯楼层使用一个垂直指针进度条代替,设置为不填充;上下行按钮使用的都是布尔按钮控件,机械动作设置为释放时转换,如图 3.6。图 3.64四、程序面板程序设计4.1 按键检测按键检测采用 3 层顺序结构,不停地检测并赋值给记录电梯上下行二维数组,第 0 层嵌套事件结构,当按键按下时就触发对应的事件并赋值,如图 4.1。图 4.1所有的事件如图 4.2 所示。图 4.25“报警”和“开门”事件不对外输出改变“电梯记录”的值,仅对对应事件的变量赋值。如图 4.3 和图 4.4。图 4.3 图 4.4顺序结构第 1 层嵌套条件结构,根据“电梯方向” ,对“电梯记录”的上行或是下行数据,通过内部嵌套的 5 层顺序结构全部重新检测并赋值,如图4.5。 0 代表上行分支,1 代表下行分支,100 表示默认,不进行任何操作,只是将所有的控件图标统一放在里面,如图 4.6。图 4.56图 4.6顺序结构第 2 层,在第 1 层根据“电梯方向”对“电梯记录”的上行(或下行)赋值后,第 2 层对“电梯记录”剩下的另一行数据检测并赋值,基本结构和第 1 层相同,如图 4.7。图 4.774.2 电梯上下行检测程序按照上行 15 层楼、然后下行 51 层楼、再上行 15 层楼的顺序检测是否有电梯上下行的信号请求,即“电梯记录”的 2 行 5 列(10 位)数值,按照 04、4 到 9、95、5 到 0 的顺序依次检测,如图 4.8 和图 4.9。图 4.8 图 4.9当没有上下行信号,即“电梯记录”10 位数的数值都等于 0 时,程序就按照规定好的顺序依次检测;当有上下行信号,即“电梯记录”10 位数的某个数值等于 1 时,再赋值再赋值再赋值进入条件结构,执行内部的 5 层顺序结构,即 0 电梯的升/降,1 上下行按钮复位, 2 和 3“电梯记录”检测赋值,4 电梯的开关门,如图 4.10。图 4.1084.3 电梯上下行控制移位寄存器的值对 5 求余,商为 0 或 1,对应电梯的上下行;余数加 1 之后,就对应电梯上下行的申请按键的楼层,如图 4.11。图 4.11顺序结构第 0 层根据电梯当前楼层和按钮的楼层对比,控制电梯的上行或是下行。程序为“电梯楼层”的值减去移位寄存器余数加 1 后的值,作为条件结构的判断依据,进入不同的条件分支,如图 4.12。图 4.12顺序结构第 1 层,当电梯运行到按键对应的楼层后,在开门前,将按键的值复位,即按键值给 0,如图 4.13。9图 4.13顺序结构第 2 层和第 3 层,是重新对“电梯记录”检测并赋值,其程序结构和按键检测一模一样, (只是在调试程序时发现取消电梯控制这里面的这一部分,有时电梯门会错误地打开,所以加上这一部分) ,如图 4.14 和图 4.15。图 4.14图 4.1510顺序结构第 4 层,内部嵌套条件结构,控制电梯的开关门, 。开门,程序如图 4.16。 (加延时是为了让控制面板显示效果更好,下同。 )图 4.16等待,开门后等待 3 秒,程序如图 4.17。图 4.17关门,程序如图 4.18。图 4.1811条件分支 3 和 4 是为了停止 while 结构,跳出该循环,如图 4.19 和图 4.20。图 4.19图 4.20至此,整个程序完成一次大循环,再次进入“电梯记录”的值检测,判断应该向哪个楼层运动,或是停止等待上下行按键信号申请。12五、总结5.1 程序的不足之处关于本次设计,调试的时候发现按键按下之后,有时使“电梯记录”出现错误的记录,即按下一个按键后,会出现相当于按下好几个按键的记录,如图5.1。由于本人的能力有限,又检测不出逻辑错误是出现在哪里,所以只能让程序开关门前都重新再检测并赋值“电梯记录” ,最后才解决这个问题。图 5.1另一点就是,我觉得因为上一点原因,还有我的编程思路,使得程序显得复杂繁琐了一些,后面可能的话我将重新设计程序流程和思路,简化程序。5.2 关于本次课程设计的感想通过本次课程设计,将这学期所学内容完全包含其中使用,加深了学习的记忆、提高了对于 labview 软件的使用能力。在课程设计的过程中也使用了一些上课没有讲到的部分,都通过自己的尝试、学习、实验,最后掌握了,这也是能力的一大提升。我个人对于编程设计还是比较喜欢的,对于图形编程这种方式也是比较喜欢的。相较于 C 语言、MATLAB 等代码的编程,图形化编程流程更清晰、编程更方便。只是对于程序员自己以外的人而言,程序的结构性稍差一点。Labview我觉得最好的一点就是它的用户界面和程序同步编程,用它来设计一个用户界面十分方便。