十字路口交通信号灯(虚拟仪器Labview)讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
虚拟仪器大型实验
课程名称:十字路口交通信号灯的设计学期: 2012—2013第二学期
分院:
学生姓名:
专业班级:
学号:
任课教师:
二〇一三年六月
十字路口交通信号灯的设计
【摘要】虚拟仪器是将仪器技术、计算机技术、总线技术和软件技术紧密的融合在一起,利用计算机强大的数字处理能力实现仪器的大部分功能,打破了传统仪器的框架,形成的一种新的仪器模式。
虚拟仪器(virtual instrumention)是基于计算机的仪器。
计算机和仪器的密切结合是目前仪器发展的一个重要方向。
粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。
随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。
另一种方式是将仪器装入计算机。
以通用的计算机硬件及操作系统为依托,实现各种仪器功能。
虚拟仪器主要是指这种方式。
鉴于LabVIEW有诸多优点,这次我们将应用LabVIEW来完成一个十字路口交通灯系统的设计。
【关键词】虚拟仪器,LABVIEW,交通信号灯
目录
绪论......................................................................................第一章总体设计方案 (1)
1.1实现的功能 (1)
1.2总体思路 (1)
第二章程序的设计 (3)
2.1前面板的设计 (3)
2.2定时信号的产生 (4)
2.3时间信号的分段 (4)
2.4各组时间信号的动作 (5)
2.5循环的设计 (7)
第三章软件调试 (9)
第四章心得总结 (12)
附录 (13)
绪论
虚拟仪器技术就是利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试、测量和自动化的应用。
自1986年问世以来,世界各国的工程师和科学家们都已将NI LabVIEW 图形化开发工具用于产品设计周期的各个环节,从而改善了产品质量、缩短了产品投放市场的时间,并提高了产品开发和生产效率。
使用集成化的虚拟仪器环境与现实世界的信号相连,分析数据以获取实用信息,共享信息成果,有助于在较大范围内提高生产效率。
虚拟仪器提供的各种工具能满足我们任何项目需要。
美国国家仪器公司NI(National Instruments)最早提出的虚拟测量仪器(VI)概念,引发了传统仪器领域的一场重大变革,使得计算机和网络技术得以长驱直入仪器领域,和仪器技术结合起来。
“软件即是仪器”这是NI公司提出的虚拟仪器理念的核心思想。
从这一思想出发,基于电脑或工作站、软件和I/O部件来构建虚拟仪器。
I/O部件可以是独立仪器、模块化仪器、数据采集板(DAQ)或传感器。
虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。
虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。
目前在这一领域内,使用较为广泛的计算机语言是美国NI公司的LabVIEW。
LabVIEW是一种程序开发环境,由NI公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。
LabVIEW提供很多外观与传统仪器(如示波器、万用表)类似的控件,可用来方便地创建用户界面。
用户界面在LabVIEW中被称为前面板。
使用图标和连线,可以通过编程对前面板上的对象进行控制。
这就是图形化源代码,又称G代码。
LabVIEW的图形化源代码在某种程度上类似于流程图,因此又被称作程序框图代码。
第一章总体设计方案
1.1 实现的功能
本次课程设计要完成一个十字交通信号灯的设计,这个交通信号灯系统能为向北和向东两个方向行驶的车辆指示能否通行。
这个交通路口每一个方向上的红绿黄灯按绿—黄—红的顺序循环,每个循环的时间为70s,其中通行(绿灯)的时间为30s,等待通行(黄灯)的时间为5s,禁止通行(红灯)的时间为35s。
当停止键按下时,循环停止。
1.2 总体思路
此次设计可以用十二盏灯来指示路口的红绿灯状况,它们分别是下文中的东红、东黄、东绿、北红、北黄、北绿、西红、西黄、西绿、南红、南黄、南绿。
信号灯按一定规律循环点亮,每盏红灯亮35秒,每盏黄灯亮5秒,每盏绿灯亮30秒。
每个循环包括四个阶段。
第一阶段:北黄、南黄、西红和东红灯点亮,时间为5秒。
第二阶段:北红、南红、西绿和东绿灯点亮,时间为30秒。
第三阶段:东黄、西黄、南红和北红灯点亮,时间为5秒。
第四阶段:北绿、南绿、西红和东红灯点亮,时间为30秒。
每个循环用时70秒。
东西、南北两个方向分别放置一个时间显示器来显示离下一个信号到来的时间。
用计数器产生以秒为单位的计时信号,再将产生的时间信号进行分段,每到一个时间段时系统进行相应的动作。
总体流程如图1-1所示:
图1-1 总体流程图
第二章程序的设计
2.1 前面板的设计
前面板是VI的用户界面。
创建VI时,通常应先设计前面板,然后在前面板上创建输入/输出任务。
本课程设计中前面板比较简单,只需要用十二盏灯、四个时间显示器、一个停止按键即可。
其中的十二盏灯,红、黄、绿各四盏,在控件选板中选择指示灯,将它放在前面板合适的位置,单击鼠标右键,更改指示灯的属性,改变指示灯的大小,做出一个合适的指示灯,依同样的步骤可以做好另外十一个,将十二个灯均分为四组,每组都包含红黄绿三种颜色的灯,再用框将每组灯框起来,做成一个交通灯。
在每组交通灯合适的位置放置一个数值显示控件作为交通灯的计时器。
在前面板合适的位置放置一个开关按钮,控制循环的停止。
这样交通灯系统的前面板就做好了。
面板设计如图2-1所示。
图2-1 交通灯前面板示意图
2.2定时信号的产生
毫秒计时器在LabVIEW中的一个计时单元,它的图标与用途如图2-2所示。
在函数选板的【编程】→【定时】子选板中选择时间计数器选定该单元。
毫秒计数器对时间信号计数,要产生一个一秒为单位的时间信号,所以还得用毫秒计数值除以1000,取商得到以秒为单位的时间信号。
接线如图2-3所示:
图2-2 时间计数器图2-3 时间计数器接线图
2.3时间信号的分段
将得到的时间信号除以每个循环所用的时间70s,取余数。
得到的余数x的范围为0<=x<70,当0<=x<5时,条件满足,执行第一个条件结构里面的程序,北黄、南黄、西红和东红灯点亮。
当5<=x<35时,条件满足,执行第二个条件结构里的程序,北红、南红、西绿和东绿灯点亮。
当35<=x<40时,条件满足,东黄、西黄、南红和北红灯点亮。
当40<=x<70时,x<40的条件不满足,执行条件结构里面为假的程序,北绿、南绿、西红和东红灯点亮。
时间分段的程序结构如图2-4所示。
图2-4 时间分段程序
这里用到了判定范围并强制转换控件,应用这个控件可以判定输入的数是否在上限和下限之间。
它的图标和作用如图2-5所示。
如果输出信号在范围之内,“?”接口将产生一个信号,此信号恰可以输入到条件结构作为分支选择器信号。
图2-5 判定范围并强制转换控件
2.4各组时间信号的动作
条件结构是LabVIEW最基本的结构之一,条件结构类似于文本编程语言中的switch语句或者if…then…else语句。
条件结构可以从【结构】子选板中创建,它的图标及功能如图2-6所示。
图2-6条件结构
在条件结构中,选择端口相当于switch语句中的“表达式”,框图表示符相当于“表达式n”。
编程时,将外部控制条件连接至选择端口上,程序运行时选择端口会判断送来的控制条件,引导选择结构执行相应框架中的内容。
在本程序中的控制条件为从判定范围并强制转换“?”端口输出地判断值。
当各组条件满足时,将执行各条件结构里的程序。
每个条件结构里的程序基本相同。
用需要点亮的灯与布尔真常量连接,不需要点亮的与布尔假常量连接,而时间显示器则用一定的值减去输入的时间量,以实现倒计时的功能,各结构里的程序略有不同,具体程序如图2-7到图2-10所示。
第一阶段:余数在0至5秒之间,此时东红、西红、南黄和北黄两个灯点亮,东西方向的时间显示器显示为离红灯熄灭的时间(从6s到1s),南北方向的时间显示器显示为离黄灯熄灭的时间(从6s到1s)。
图2-7条件结构1
第二阶段:当北黄和南黄灯点亮5秒后,即余数大于5并且小于35时,条件结构2条件满足,北红、南红、西绿和东绿两个灯点亮,东西方向的时间显示器显示离东西绿(通行)熄灭的时间(从30s到1s),南北方向的显示离红灯(禁止通行)熄灭的时间(从35s到6s)。
图2-8条件结构2
第三阶段:当东西绿灯点亮30秒后,即余数大于35并且小于40时,条件结构3条件满足,东西黄灯点亮, 而南北红未到熄灭的时间,继续点亮。
东西方向的时间显示器显示离东西黄(准备转换)熄灭的时间(从6s到1s),南北方向的继续显示离红灯(禁止通行)熄灭的时间(从6s到1s)。
图2-9条件结构3
第四阶段:当南北黄灯点亮5秒后,即余数大于40并且小于70时,条件结构4为假的条件满足,南北绿和东西红两个灯点亮,东西方向的时间显示器显示离东红(禁止通行)熄灭的时间(从35s到6s),南北方向的显示离绿灯(通行)熄灭的时间(从30s到1s)。
图2-10条件结构4
2.5循环的设计
LabVIEW中的循环结构主要通过while和for循环实现。
这两种循环的功能基本相同,但使用上有一些差别。
for循环必须确定循环次数,循环一定次数后自动退出循环;而while 循环不用确定循环次数,只需要指定退出循环的条件。
本次课程设计中循环的次数不能确定,所以就用到了while循环。
LabVIEW中的while 循环相当于C语言中的while循环和do…while循环。
While循环可以从程序框图中的【结构】子选板中创建,while循环包括两个端口:条件端口和重复端口。
它的功能、图标及说明如图所示。
在此课程设计中,用按键连接条件端口,当按键按下时,循环停止。
图2-11while循环
第三章软件调试
这次所设计的十字路口交通灯有四种运行状态:状态1、状态2、状态3、状态4。
各种状态的效果在下文中将会讲到。
运行状态1,南北红灯亮35s—6s,东西绿灯亮30s—1s,此时东西方向的车辆可以通行,通行时间总共为30s,南北方向禁止通行,禁止时间总共为35s。
时间显示器显示的为离下一个状态到来的时间,如图3-1东西灯显示器显示为15,表明再过15s绿灯将转变为黄灯,彼时东西方向将禁止通行;南北灯显示器显示为20,表明再过20s红灯将转变为绿灯,彼时南北方向将允许通行。
图3-1运行状态1
运行状态2,南北红灯亮6s—1s,东西黄灯亮6s—1s,此时东西方向的车辆准备禁止通行。
准备时间总共为5s,南北方向的车辆准备通过。
时间显示器显示的为离下一个状态到来的时间,如图3-2所示,四个显示器都显示为5,表明再过5s南北方向将转变为绿灯,东西方向转为红灯,彼时东西方向将禁止通行,南北方向将允许通行。
图3-2 运行状态2
运行状态3,南北绿灯亮30s—1s,东西红灯亮35s—6s,此时东西方向的车辆禁止通行。
禁止时间总共为35s(还有5s在下一个状态中体现);南北方向的车辆允许通行,通行时间总共为30s。
时间显示器显示的为离下一个状态到来的时间,如图3-3所示,南北灯显示器都显示为10,表明再过10s南北方向将转变为黄灯,彼时南北方向将准备禁止通行;东西灯显示器显示15,表明再过15s,东西方向转为绿灯,彼时东西方向将允许通行。
图3-3 运行状态3
运行状态4,南北黄灯亮6s—1s,东西红灯亮6s—1s,此时东西方向的车辆准备通行,准备时间总共为5s;南北方向的车辆准备禁止通过。
时间显示器显示的为离下一个状态到来的时间,如图3-4所示,四个显示器都显示为5,表明再过5s南北方向将转变为红灯,东西方向转为绿灯,彼时东西方向将允许通行,南北方向将禁止通行。
图3-4 运行状态4
运行中按下停止键后,程序停止循环,如图3-5所示:
图3-5 停止运行
第四章心得总结
此次虚拟仪器大型实验圆满结束了,对于我们共同努力所得的结果,还是感到比较满意。
此次设计以分组的方式进行,每组有一个题目。
我们做的是十字路口交通灯系统。
平时大家还都比较注重实践,但是毕竟没有过实际开发设计的经验,虽然上课的时候讲过很多关于LabVIEW的应用,对一些稍微复杂的程序设计还是有些困难,刚开始拿到的时候也不知道怎么做。
但通过这些天结合课本和电脑实践对LabVIEW进行了几天的摸索学习,还在网上找了一些别人做的实例,受到了一些启发,取得了比较明显的成效,我们终于把课程设计做好了,通过这次课程设计我基本学会了虚拟仪器设计的步聚和基本方法,提高了动手能力,增强了理论联系实际的能力,分组工作的方式给了我与同学合作的机会,提高了与人合作的意识与能力,同时也培养和发展了同学之间的友谊,对此我感到非常欣慰。
总之,在这次课程设计中我受益匪浅。
在这个课程设计中,我真正的感受到了虚拟仪器的优越性,“软件即仪器”,仅仅在Labview上写入一些图形程序,就可以实现相应的仪器的功能,只需要借助一台计算机,一个LabVIEW软件,就可以实现很多仪器的功能,真的好方便!在这之前我们做了双音门铃电子技术课程设计、 PLC课程设计,与实实在在的电子电路和PLC相比,在LabVIEW上完成的仪器虚拟有更大的优越性,它的内容可以完全由自己定义,而且不必用到其他的任何硬件,可以非常方便地修改做成的仪器。
我由衷的感慨:LabVIEW功能太强了,作用太大了,虚拟仪器会在更广泛地领域得到应用。
要想以后有更好发展,学好虚拟仪器技术也是非常必要的。
通过这次设计实践。
我总结了使用LabVIEW编程的两个要点。
第一,熟悉每个控件的用途、使用方法和在软件中的位置。
LabVIEW有这么多控件,有这么单元,如果我们不知道每个单元是用来干什么的,那就根本谈不上应用它们了,只有在知道这个空间是做什么用的,我们才会去使用它。
知道需要用到某个单元,但是不知道怎么使用,怎么连线,这也是很让人郁闷的事,所以我们得熟悉一些基本单元的用法。
要想很快地做成一个虚拟仪器,就得熟悉每个单元所在的位置,以免在使用过程中找半天找不到它在哪个菜单中。
第二,对于虚拟仪器设计来说,因果朔源的设计方法是一种比较好的设计方法,知道要做什么,知道需要哪些单元,我们就添加那些单元,按需求增添元件。
虽然本次课程设计是三人一组的,但是我们基本上每人都独立地拿出了一个方案,每个方案各有特色。
彼此之间进行了一些讨论,交流,在讨论交流过程中,我也看到了自己的不足,也学习吸收别人比较好的观点。
这不仅增长了我的知识,也加强了分组合作的沟通能力。
课程设计的过程中,我遇到了不少的问题,但最终经过了大家的共同努力我们克服了困难,取得了最后的成功,当然其中很大一部分功劳都要归功于指导老师和我的组员,要是没有指导老师的指导和与同学们的相互交流学习,我们的课程设计肯定不会如此轻松。
在此,我们非常感谢我的指导老师谢老师!
附录1 交通灯总程序框图。