计算机控制技术 课程设计交通灯控制.docx
《计算机控制技术 课程设计交通灯控制.docx》由会员分享,可在线阅读,更多相关《计算机控制技术 课程设计交通灯控制.docx(17页珍藏版)》请在冰点文库上搜索。
计算机控制技术课程设计交通灯控制
“计算机控制技术”课程设计作业
西安市文景路与凤城七路交叉路口
交通灯控制系统设计
2011年12月19日
西安市文景路与凤城七路交叉路口
交通灯控制系统设计
1、概述
1.1、路口介绍:
文景路位于西安市经济技术开发区,是一条南北方向的双向八车道城市主干道。
其最近一次整改是在2009年。
凤城七路是经济技术开发区的一条东西方向双向四车道的主要道路。
本次课程设计的路口是位于西安市经济技术开发区盐张村东的文景路与凤城七路十字交叉路口。
下面对该路口的状况进行简单的介绍。
文景路作为连接火车北客站与市中心的主要道路,随着火车北客站的投入运营,车流量也在逐渐增大。
文景路两侧聚集了许多住宅小区。
作为一条进入市中心的主要道路,其北连包茂高速、西安市绕城高速,南接西安市北二环,其交通流中车型较混杂。
随着西安市行政中心的北迁,也给文景路的交通状况提出了更加严峻的要求。
文景路全段为双向八车道,最外侧机动车道为公交专用车道,另两侧各有约2.5m宽的非机动车道。
机动车道与非机动车道用高0.7m的栅栏隔开。
中央分隔带宽度为9m,无中央分隔带护栏。
文景路全段为沥青材质路面。
文景路全线限速60km/h,全线禁止长时间停车或临时停车,全线禁止鸣笛。
部分路段禁止大货车通行。
凤城七路是连接朱宏路与未央路的主要道路之一。
新建西安咸阳国际机场高速的开通对凤城七路的交通量有部分影响。
其道路两侧有3个城中村,随着西安市对城中村的改造工作的开展,现在道路两侧居住人口较少,多为建筑工地。
凤城七路与文景路也是货车进入包茂高速的主要通道之一。
凤城七路全段为双向四车道,未设置公交专用车道,另两侧各有约4.5m宽的非机动车道。
机动车道与非机动车道用宽1.5m的植物分隔带隔开。
正常路段未设置中央风格带,用双黄线来分隔对象来车。
凤城七路全段为沥青材质路面。
全线限速50km/h,全线禁止长时间停车或零时停车,全线禁止鸣笛。
文景路、凤城七路在交叉路口入口处均增加一个车道。
凤城七路在距离路口105m处增设了中央风分隔带。
中央分隔带的宽2m。
道路在交叉路口的渐变加宽点至路口距离为北侧121m,南侧119m,东侧211m,西侧181m。
此路口向北距离下一路口401m,向南距离下一路口为436m,向东距离下一路口为880m,向西距离下一路口为742m。
各个进入交叉口的方向均设有指路标志。
距离路口东向30m处路南有天然气加气站,加气站以东是600路公交车调度站。
路口周围没有过街天桥或者地下通道。
文景路、凤城七路在路口均允许机动车掉头行驶。
此路口无交通警察执勤。
在文景路方向共设有两个电子摄像头。
路口处交通标志与交通标线基本完整。
是一个标准的十字型道路交叉口。
1.2、交通灯设置:
路口共设置有4个车辆交通灯指示信号灯。
设置8个行人通行指示信号灯。
其中8个行人通行指示信号灯的形式相同。
指示灯形式如右图所示。
文景路的交通灯共包括12个方向指示灯和一个两位的倒计时指示牌。
其中直行、左转分别设置信号灯控制。
倒计时指示牌指示直行车辆的红绿灯时刻。
信号灯形式如下左图所示。
凤城七路的交通灯共包括9个方向指示灯和一个两位的倒计时指示牌。
其中直行、左转灯时相同设置信号控制。
倒计时指示牌指示车辆的红绿灯时刻。
信号灯形式如上图右图所示。
各信号灯的灯时设置如下表所示:
红灯灯时(s)
黄灯灯时(s)
绿灯灯时(s)
合计(s)
文景路直行
67
3
60
130
文景路左转
111
3
16
130
凤城七路
82
3
45
130
文景行人控制
82
48
130
凤城七路行人控制
67
63
130
各交通灯的灯时相位图如下图所示(单位:
s):
逐次循环。
文景路直行
60
3
67
60
3
67…
文景路左转
63
16
3
111
16
3
111…
凤城七路
82
45
3
82
45
3
文景行人控制
82
48
82
48…
凤城七路行人控制
63
67
63
67…
注:
由灯时相位图可以看出车辆控制信号与行人控制信号由于车辆控制黄灯的存在,导致与对象行人控制信号相差3s中的时间间隔。
在后续的软件设计中将不考虑行人控制信号的处理。
而是将文景路直行信号与凤城七路行人控制信号在输出时共享,为了解除3s黄灯的影响,在文景路直行信号控制凤城七路行人控制信号时,在绿灯和黄灯的控制信号控制凤城七路行人控制信号之前加上一个逻辑“或”门,输出端来控制凤城七路行人控制信号,红灯控制则相同。
凤城七路车辆控制信号与文景路行人控制信号的处理办法相同。
1.3、设计目的
通过计算机控制课程的学习,对实现上述路口红绿灯控制信号的电路、硬件系统、软件系统进行设计。
从而实现信号的定时控制功能。
并且加入了对于行人控制信号的控制方式及原理。
2、控制系统原理
2.1、控制系统介绍:
组成、原理及描述
本路口在交通信号控制采取的是静态的交通信号控制。
交通信号灯时相位不随交通状况的改变而改变。
再设计中主要考虑的是启动信号控制系统时遇到的问题。
控制系统采取计算机控制,为开环控制系统,系统不需要有来自控制现场的输入信号。
输入信号只有系统总控开关,其他功能由计算机通过软件进行设置,从而达到控制信号灯灯时长短的目的。
协调各个信号灯的有序开启与关闭。
结合本路口的实际情况和交通信号灯的控制策略。
控制系统主要由以下几个部分组成。
控制开关。
它是系统的总控开关。
接在总控制台,是交通管理者对于交通信号开启与关闭的总控开关。
小功率开关量输入信号调理电路。
开关开闭时会由于接点的机械抖动而产在电路中产生振荡信号,在总控开关与计算机之间添加调理电路,使系统输入信号没有太大的信号抖动。
ACL-8112HG数字量输入。
它的主要功能是将开关量的开闭转换为数据地址,输入控制计算机。
控制计算机。
它是系统的核心,负责数据的接受和程序的执行,产生控制输出数据,传给系统的下一部分。
ACL-8112HG数字量输出。
它的主要功能是将系统的控制输出数据进行整理,为控制驱动继电器电路的正常工作提供数据支持。
驱动继电器电路。
它的功能是将计算机的输出数据转换为对应的继电器开闭信号。
从而打开或关闭对应的继电器。
大功率信号输出电路。
交通信号灯由于其所处的环境,使用交流电源更加方便经济。
在这里需要将继电器的微弱控制信号,转换为信号灯需要的大功率信号控制量。
该交通信号灯的控制系统的控制原理如下:
当系统检测到交通控制开关打开时,并检测各项控制数据是否满足,如果均满足,则自动开始第一次启动,根据系统的特点,以文景路直行为绿灯开始时为计时起点。
如此循环进行控制,直至系统控制开关再次闭合或者其他控制条件不满足时停止循环。
关闭系统。
2.2、控制系统框图
2.3、控制流程
控制流程的执行顺序与控制框图的顺序相同,如上图所示。
定时交通灯控制系统较简单,没有过多的输入数据。
3、硬件电路设计
3.1、交通灯控制继电器电路设计
电路设计图如下图所示:
3.2、开关量输入输出信号转换电路设计
本控制系统的输入量只有总控开关一个。
转换电路如下。
3.3、使用ACL-8112HG卡控制通道说明
(1)采集卡基地址设置
采集卡基地址设置为0x230.需要将右图中的A4、A5拨到下位,将A6、A7、A8拨到上位。
(2)数字量输入接口。
交通信号灯控制系统的输入只有一位总控开关输入,将其连接到开关量输入口低8位的第二位,即DI1口。
(3)继电器的连接位置
由于本路口有左转控制信号和行人控制信号,因此共涉及13个继电器。
通过实地观察发现,行人控制信号与对向道路控制信号相似,中间相差一个黄灯的灯时,为了节省资源,对车辆控制信号在后期予以处理。
同时控制车辆与行人信号。
采取的办法是将直行绿灯信号与直行黄灯信号通过逻辑或门来共同控制对向行人绿灯灯时,红灯信号直接共享连接。
综上,本系统共需要继电器9个,他们的端口位置及控制的路口设置如下表所示:
8112HG输出端口位置
ULN2803对应
输入端口编号
ULN2803对应
输出端口编号
对应信号灯位置
继电器编号
DO1
U11-1
U11-18
文景路直行绿灯
1
DO3
U11-2
U11-17
文景路直行黄灯
2
DO5
U11-3
U11-16
文景路直行红灯
3
DO7
U11-4
U11-15
文景路左转绿灯
4
DO9
U11-5
U11-14
文景路左转黄灯
5
DO11
U11-6
U11-13
文景路左转红灯
6
DO13
U11-7
U11-12
凤城七路绿灯
7
DO15
U11-8
U11-11
凤城七路黄灯
8
DO0
U12-1
U11-18
凤城七路红灯
9
注:
由于试验中需要9个继电器,导致单个ULN2803对应输入和输出端口不能满足要求,因此多连接一个ULN2803,为了区分两个ULN2803,分别编号U11,U12。
4、控制程序设计
4.1、控制程序流程说明
在实际的控制过程中,对于信号灯的控制主要通过对变量的直接赋值来实现对继电器的控制,从而控制信号灯。
根据信号灯的相位图,得出了如下控制参数。
在程序的循环过程中将不断给变量赋值,从而控制对应的继电器开闭。
4.2、程序框图
本系统控制程序由三部分组成。
main函数、SwitchDI函数、SwitchDO函数。
各部分的程序框图如下图所示:
4.3、源程序:
/*------------------------------------------------------------
此程序为控制文景路与凤城七路交叉口交通信号灯,采用九个继电器来控制该路口个信号灯。
单循环时间为130s.姓名:
XXX,学号:
.2011年12月28日
-------------------------------------------------------------*/
#include
#include
#include
#defineACL81120x230/*ACL8112卡基地址*/
#defineDOLACL8112+13/*DO低八位地址*/
#defineDOHACL8112+14/*DO高八位地址*/
#defineDILACL8112+6/*DI低八位地址*/
#defineDIHACL8112+7/*DI高八位地址*/
unsignedintSwitchDI()/*从ACL8112的十六位DI读取键值*/
{
unsignedy=0;
y=inportb(DIH);/*读高八位*/
y=y<<8;/*存入键值变量的高位*/
y=y+inportb(DIL);/*读低八位,并入键值变量*/
returny;
}
voidSwitchDO()
/*从ACL8112卡的16位DO输出,九只继电器依次接入第8位的第,1,2,4,6,8位,高八位的第,2,4,6,8位*/
{
unsignedinti=0,T1=60,T2=3,T3=16,T4=45,Key=0xffff;
unsignedintxL1=0x03,xL2=0x09,xL3=0xa1,xL4=0x21,xL5=0x20,xL6=0x20;
unsignedintxH1=0x08,xH2=0x08,xH3=0x00,xH4=0x02,xH5=0x28,xH6=0x88;
while(Key!
=0xfffd)/*按照控制信号逐次打开继电器*/
{
outportb(DOL,xL1);/*开关第,1,6,9号继电器。
并维持六十秒钟*/
outportb(DOH,xH1);
printf("打开文景路直行绿灯,文景路左转红灯,凤城七路红灯,并持续60秒。
\n");
sleep(T1);
outportb(DOL,xL2);/*开关第,2,6,9号继电器。
并维持三秒钟*/
outportb(DOH,xH2);
printf("打开文景路直行黄灯,文景路左转红灯,凤城七路红灯,并持续3秒。
\n");
sleep(T2);
outportb(DOL,xL3);/*开关第,3,4,9号继电器。
并维持十六秒钟*/
outportb(DOH,xH3);
printf("打开文景路直行红灯,文景路左转绿灯,凤城七路红灯,并持续16秒。
\n");
sleep(T3);
outportb(DOL,xL4);/*开关第,3,5,9号继电器。
并维持三秒钟*/
outportb(DOH,xH4);
printf("打开文景路直行红灯,文景路左转黄灯,凤城七路红灯,并持续3秒。
\n");
sleep(T2);
outportb(DOL,xL5);/*开关第,3,6,7号继电器。
并维持四十五秒钟*/
outportb(DOH,xH5);
printf("打开文景路直行红灯,文景路左转红灯,凤城七路绿灯,并持续45秒。
\n");
sleep(T4);
outportb(DOL,xL6);/*开关第,3,6,8号继电器。
并维持三秒钟*/
outportb(DOH,xH6);
printf("打开文景路直行红灯,文景路左转红灯,凤城七路黄灯,并持续3秒。
如想推出循环程序,请此时长按总控开关,直至跳出程序。
\n");
sleep(T2);
Key=SwitchDI();
}
}
main()
{
unsignedintKey=0xffff,x=0xff,i;/*Key键值变量,i公用变量*/
clrscr();
while(Key!
=0xfffd)
{
gotoxy(10,5);
printf("等待打开控制开关!
\n");
Key=SwitchDI();
}
Key=0xffff
gotoxy(10,7);/*开始信号灯并逐次开启循环*/
outportb(DOL,x);/*打开全部继电器。
并维持三秒钟*/
outportb(DOH,x);
printf("打开全部继电器,并持续3秒,测试继电器的是否工作正常!
\n");
sleep(3)
printf("开始进行信号灯控制!
\n");
SwitchDO();
gotoxy(10,9);
printf("文景路与凤城七路交叉口信号灯控制结束。
\n\n");
}
5、测试结论
5.1、测试完成情况
通过第一次的测试,对于程序的预定完成情况比较理想,在基本的运行方面没有发现问题。
但是结合交通信号灯的具体情况来看,程序中还有一些可以改进的地方。
主要对程序的人性化做了调整。
主要表现在开始时对全部继电器进行测试,查看工作状态。
在循环测试阶段,将开始设置的600次for循环改为了while循环,循环条件为总控按键是否按下,如果再次按下,将跳出循环,结束交通灯的控制。
在第二次的测试中,程序能够按照预先设定的要求,准确控制各个继电器的开启与关闭,达到了预先设计的目的。
5.2、改进建议
通过这次课程设计,发现目前,西安市大部分的信号灯还处于全天候定时控制。
不能按照实际车流量的大小来动态控制灯时,从而控制交通流。
建议在今后的控制系统扩展中逐步加入更多的变量,例如实时监控数据,感应数据等信号输入,动态各方向灯时的变化,以满足需求。
【附件】:
交通控制系统电路图