虚拟仪器 交通灯控制系统.docx
《虚拟仪器 交通灯控制系统.docx》由会员分享,可在线阅读,更多相关《虚拟仪器 交通灯控制系统.docx(11页珍藏版)》请在冰豆网上搜索。
![虚拟仪器 交通灯控制系统.docx](https://file1.bdocx.com/fileroot1/2022-11/24/c40a37d0-4daa-43f0-a7b1-f9f8fd748f02/c40a37d0-4daa-43f0-a7b1-f9f8fd748f021.gif)
虚拟仪器交通灯控制系统
项目名称
交通灯控制系统
项目学时
6
指导教师
成绩
目的
1.了解交通灯的工作流程
2.熟悉实验平台nextboard
3.学习LabVIEW中的数据采集编程方式
4.学习模拟信号采集系统的完整组成
5.进一步熟悉LabVIEW,学习使用LabVIEW编写交通灯控制系统
任务要求
交通灯是城市交通中不可缺少的重要工具,是城市交通秩序的重要保障。
本系统是实现常见十字路交通灯功能。
通过编程,实现配置各种灯的时间,控制各个灯的状态等。
一个十字路口的交通灯一般分为两个方向,每个方向都具有红灯、绿灯和黄灯3种交通灯,两个方向的灯的状态是相关的,现给出如下设定:
1)东向红灯亮,南北绿灯亮,时长为9S。
2)东向红灯亮,南北黄灯亮,时长为3S。
3)东西绿灯亮,南北红灯亮,时长为9S。
4)东西黄灯亮,南北红灯亮,时长为3S。
设备材料
计算机、NIPCI-6221
数据采集卡、nextboard实验平台、nextwire_20(交通灯实验模块)
评语
指导教师签名
日期
交通灯控制系统项目报告
第1章概述
1.1项目描述
1.1.1系统功能描述
在城市道路的交叉路口通常设置有绿灯、黄灯和红灯3种状态的交通灯,它们的作用是:
当绿灯亮时,表示车辆可通行;当黄灯亮时,提醒正在交叉路口中行驶的车辆赶快离开;当红灯亮,车辆要在停车线后停驶。
交通灯涉及两个方向车流的控制,何时亮何种颜色的灯,时长多久,对这些都需要进行逻辑分析和运算。
目前最复杂的交通灯还带有左转和右转提示灯。
功能设定如下:
1.东向红灯亮,北向绿灯亮,时长为9s。
2.东向红灯亮,北向黄灯亮,时长为3s。
3.东向绿灯亮,北向红灯亮,时长为9s。
4.东向黄灯亮,北向红灯亮,时长为3s。
1.1.2实践环境
硬件设备:
计算机、NIPCI-6221数据采集卡、Nextboard实验平台、Nextwire_20(交通灯实验模块)。
交通灯原理图如图1-1所示。
图1-1原理图
软件:
LabVIEW(2011以上版本)、nextpad,采集卡驱动
第2章系统前面版设计
2.1布置前面板
在控件选板中选择新式-容器-选项卡控件,放置在前面板上。
在选项卡控件上右击,在显示项中去掉标签选项。
把“选项卡1”修改为“交通灯控制”、“选项卡2”修改为“通道设置”。
在选项卡控件上右击,选择“在后面添加选项卡”选项,并把该选项修改为“系统描述”。
在“系统描述”选项卡中,对系统进行简单的描述,界面如下
图2-1控件系统描述
“交通灯控制”选项卡中,放置该系统所需要的交通灯显示,在VI运行中,该选项卡界面是人机交互界面如图2-2所示。
图2-2控件交通灯控制
在“通道设置”选项卡中放置通道号,如下图所示
图2-3控件系统描述
2.2设计交通灯控件
1控件的属性控制
1)在前面板上打开控件选板,在布尔控件子选板里面找到指示灯,放置在前面板上。
在控件上用右键单击鼠标,在打开的快捷菜单中,把“显示项”里面“标签”选项的勾选去掉。
2)将鼠标移动到控件,出现拖曳工具,把它拖到合适的大小。
3)复制3个控件,可以选中该控件,然后键移动鼠标,也可以直接复制粘贴。
4)把3个控件从上到下排列整齐。
将发光颜色依次设置为红,黄,绿,熄灭颜与之不一样。
设置颜色属性的方法:
在控件上单击鼠标右键,在打开的快捷菜单选择“属性”选项,打开布尔控件的属性设置对话框,如图所示。
在右下方的“开“或者关的颜色框中单击鼠标左键,就会弹出颜色选择框口,可根据需要选择颜色,也可以选择颜色窗口右上角的”T”来达到透明效果。
设置好的三色交通灯
2将控件组合为簇
1)将组合为簇。
在前面板的控件选板中找到“数组,矩阵与簇”子选板,把簇放置在前面板上,拖到能容纳下交通布尔控件的位置上。
选中交通灯,拖到簇的框架里面。
2)调整簇为合适大小。
在簇的边框上用鼠标右键单击,从打开的快捷菜单中选择“自动调整大小”→“调整为匹配大小”,调整簇框架的大小如图1-8所示。
3)美化外观。
在前面板的菜单栏中,选择“查看“→工具选板“,单击颜色选板,将后色板的颜色都选择为透明,即颜色选板右上角的”T”。
使用该色彩,对簇的外框涂色,就可隐藏簇的外框。
4)编辑文本。
在标签簇“字的位置上双击鼠标左键,把簇的标签修改为“东西方向”,并对文字进行移动,修改大小,修改颜色等。
5)按照上述做法,再制作南北方向的交通灯。
将南北方向交通灯水平排列,从左到右依次是红,黄,绿。
6)簇元素排序。
在这样操作之后,每个簇中包含有3个布尔控件。
簇元素的逻辑顺序与其在簇内的位置无关。
用鼠标右键单击簇外框,从快捷菜单选择“重新排序簇中控件”,查看菜单栏下方所显示的数值。
需要将哪一个簇元素设置为当前的数值顺序,就用鼠标单机那个簇元素,将其设定为所指定的逻辑顺序。
完成后,单选√;若要取消设定,则单选×。
包含簇中元素的顺序,最好与外部硬件资源所对应的交通灯相一致,即东西方向顺序是红、黄、绿,南北方向顺序是绿、黄、红。
2.3表格(Table)
使用表格控件,来存放显示每个方向交通灯的逻辑序列及时长信息。
右击前面板空白处,控件选板-系统-列表、表格和树-系统表格,放置表格控件于前面板上。
修改其标签(Label)为‘逻辑序列’。
右击表格控件,显示项中勾选‘列首’。
图2-4表格(table)控件
在表格的列首中,填写每一列所代表的信号灯,如ER、EY等。
逻辑信息,‘1’表示真即灯亮,‘0’表示假即灯灭。
时长(s)表示每种状态所保持的时间。
故表格中一行表示某一个时刻6个LED灯的状态及时长。
表格中存放的数据类型为字符串型的二维数组,故其在程序框图中的接线端子的颜色为枚红色。
作为列首的提示信息,不会直接出现在接线端子所传递的数据中,若想在程序框图中引用表格列首的信息,需要使用属性节点来调用。
第3章系统控制实现
3.1用FOR循环实现倒计时显示
3.1.1何谓For循环
LabVIEW中的for循环和文本语言中的for循环功能一致的,for循环执行N次数,当i=N-1时,循环结束。
For循环需要有确定的循环执行次数。
故必须连接For循环的总数接线端N,或者将启用索引的数组连接至For循环边框。
选择路径:
程序框图-函数选板-结构-for循环。
For循环和while循环一样,也可使用条件接线端,右击for循环边框,选择‘条件接线端‘即可使用停止按钮控制for循环的运行。
3.1.2普通数值显示
在十字路口,除了交通灯之外,还有红绿灯时间倒计时的显示。
从2-6所示的表格控件中发现,当一个方向绿灯和黄灯时,另一个方向均为红灯。
红灯亮的时间是绿灯与黄灯时间之和。
因此,东西方向灯亮的顺序和时间为红灯12S、绿灯9S、黄灯3S,南北方向为绿灯9S、黄灯3S、红灯12S。
可以利用For循环实现。
图3-2所示程序框图的功能是先从12开始倒数,循环一次减1,减到1之后,再从9开始,以此类推。
将“等待”输入常量1000东西方向倒计时(如图3-2所示),相当于等待1S,如果循环12次,就实现了等待12S。
如果是南北方向,只需要把索引数组修改为9、3、12即可。
还可以在数值显示控件的后面加上修饰,并修改显示文本的大小、字体、颜色等。
东西南北方向的程序框图如图3-1,3-2所示。
图3-1东西方向倒计时
图3-2南北方向倒计时
3.2实现交通灯控制的逻辑功能
字符串不方便做数值运行,故需要将表格的字符型数组转换为数值类型的数组。
在LabVIEW中很多函数都可以做多种类型的运算,如加减乘除,可以针对标量也可以针对数组、簇、波形等数据。
同样的,数值类型的转换函数,既可以针对单个标量,也可以作用于整个数组。
函数
‘十进制数字符串至数值转换’可以完成字符串的转换。
选择路径:
程序框图-函数选板-字符串-字符串/数值转换-十进制数字符串至数值转换。
转换后得到的整形数组中,包含有两组信息,一组为交通灯的逻辑信息,一组为延时信息。
故需要将这两组信息分离。
使用函数
‘删除数组元素’。
选择路径:
程序框图-函数选板-数组-删除数组元素。
将二维数组连接至函数的‘N维数组‘连线端口,列的索引设定为6,含义为将数组中第7列数值删除(即时长信息删除)函数输出的两个数组,上侧为逻辑序列二维数组,下侧为时长信息一维数组。
时长信息给等待函数,控制每次循环执行的时长,即每个状态保持的时长。
按照交通灯控制逻辑序列编写的交通灯控制VI程序框图,如下所示
图3-4交通灯控制VI程序框图
3.3数字信号的输出
交通灯模块中使用的LED灯,可使用DO通道输出的TTL信号来控制其亮灭。
故本实验中需要了解数字信号输出DO的编程方式。
本实验系统中,使用的数字通道,产生高低电平,控制LED灯的亮灭,完成对交通灯的逻辑控制。
如下图所示,为LabVIEW中数据采集中关于数字信号的生成。
图3-5数字信号输出(D0)
数据采集的编程流程:
配置资源–时钟设定-开始采集-读/写操作-关闭资源。
本实验流程:
创建数字通道,数字通道写操作,暂停操作,清除资源,简单错误处理。
其中数字通道写操作的VI放置在for循环中。
找到DAQmx创建虚拟通道,放在程序框图上,用来输入每个交通灯的控制通道
图3-6I/O函数及其多态选择
3.4交通灯控制系统程序框图
在VI的交通灯控制逻辑基础上,增加DO过程,将DAQmx写入,放在循环框架上,将其他的节点都放在循环框上,因为只需创建一次虚拟通道,而进行多次数据写入操作。
当循环结束时,才进行停止、清除任务等操作。
在FOR循环上加移位寄存器,用来存放任务和错误簇信息。
把错误簇按名称接触捆绑,将错误簇中的布尔分量连接至for循环的条件接线端,当发生错误时,停止条件为真,就停止程序程序运行。
交通灯控制系统程序框图如下
图3-7交通灯控制系统程序框图
第4章调试测试
步骤:
1将nextwire_20模块安装在nextboard平台的模拟信号槽位2上,打开nextboard电源。
2根据模块放置的槽位,填写物理通道号
3运行调试VI,观察运行结果
4进行测试,记录数据
5截取图片如下
图4-1东向红灯亮,北向绿灯亮
图4-2nextboard实验板图
第5章总结
这次实验总结了学过的好多东西,不仅是对之前学过的知识点的总结,更是提升了我们对设计一个电路的总体把握。
就我个人而言,这次实验使我对这门课程有了新的认识,以前总是跟着老师,按着老师的要求设计一些小的控制系统。
而这次实验更多的考验是我自己对整体的把握,在这次实验里出现了好多小的问题,如果靠自己真的很难能完成。
实验里面的元器件也不容易找。
做实验之前一定要有清晰的思路,出现问题自己先思考,如果不行就积极寻求老师同学的帮助。
比如对于交通灯界面修饰的问题,虽然没太大太多的技巧而言,但是里面的小技巧是不容易琢磨的。
通过这次试验我能更好的了解了LabVIEW这个软件,这次实验虽然成功了,但是真的麻烦了同学和老师。
虽然做的过程让我很累,但交通灯顺序按预期出现的时候,很有成就感。