• 1.92 MB
  • 2022-04-22 13:36:38 发布

城市交通现状及交通信号灯控制系统的设计毕业论文.doc

  • 48页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'城市交通现状及交通信号灯控制系统的设计毕业论文目录目录1第一章引言31.1城市交通现状31.2智能交通的国内外发展状况31.3交通信号灯控制的研究现状51.4本文的主要工作6第二章十字路口信号控制的基本理论和方法72.1交通信号灯72.2信号灯的设置72.3交通信号的控制方式82.4城市道路智能交通信号控制系统92.4.1智能交通信号控制系统的基本组成92.4.2交通信号控制系统的主要术语和参数92.4.3智能交通信号控制的核心112.4.4智能交通信号控制系统的基本设计步骤12第3章信号灯控制系统的设计133.1信号灯结构设计133.1.2可编程控制器I/O端口分配153.1.3程序梯形图173.1.4信号灯的PLC外部连线图223.2倒计时数码管的设计233.2.1程序梯形图233.2.2数码管的PLC外部连线图263.3本章小结28第四章交通灯系统的设计294.1交通系统的发展趋势294.2选择VHDL硬件描述语言设计的优势294.3红绿灯交通信号系统功能描述294.4红绿灯交通信号系统的VHDL模块314.4.1时钟脉冲发生电路314.4.2计数秒数选择电路324.4.3倒计时控制电路35 4.4.4红绿灯信号控制电路374.4.5建立程序包394.4.6连接各个模块39图14连接各个模块后的管脚分配图404.5本章小结40参考文献41致谢42附件43附录一信号灯程序指令表43附录二数码管显示程序指令表45附录三:红绿灯交通信号系统的VHDL程序代码46第一章引言1.1城市交通现状据一项对美国主要城市交通状况的调查显示:1982年至2000年,美国城市在上下班高峰期间的交通堵塞状况不断加剧,由交通堵塞造成的时间和汽油浪费而带来的经济损失每年高达680亿美元。以广州为例来讲,现在市区平均车速只有每小时12公里。用这个目标速度代入欧美标准计算,广州人为交通堵塞所付出的经济代价总值:每年耗费1.5亿小时,减少生产总值117亿元。相当于该市整个生产总值的7%!在北美、澳大利亚等大城市,道路面积率高达35%--40%,而北京只有20%。缓解交通拥堵,加快道路建设是当务之急。据悉,到2010年,北京将投资500亿元用于城市道路建设,到2005年,北京仅高速公路通车里程就达到600公里。但一味发展城市道路,也会刺激私家车超常规发展,两者发展速度的失衡,最终还是逃不出“拥堵—修路—再拥堵”的怪圈。中国各大城市的交通系统都存在着不同程度的问题,北京、上海、广州三大城市的公共交通出行比例都比国外大城市小,尤其是高峰时段的公共交通分担率更小。从我国目前各大城市的交通结构看,普遍存在常规公共交通系统发展不足,快速轨道交通系统发展滞后、自行车交通分担率过高、小汽车发展势头强劲的不协调现象。因此,要准确认识各种交通工具各自的使用条件和服务范围,充分发挥各种交通方式的优点,使其合理分工,才能发挥整个交通系统的效率。 1.2智能交通的国内外发展状况城市交通矛盾的日益突出,已开始影响城市的发展,解决这个问题最行之有效的良方或许就是大力发展智能化交通。智能化交通管理体系在国外已经有了40多年的发展历史,是目前发达国家普遍采用的交通管理方式,这种方式是在发达的交通网络基础上,应用卫星定位系统,对所辖区域的交通流量实施有效控制,使有限的交通网络功能得到充分合理的利用,极大发挥城市的载体功能。智能交通系统将大大提高交通效率而节省大量的燃料和时间;除此之外,智能交通系统能够减少交通事故,减少因事故造成部分经济损失。在与世界发达国家机动车人均拥有量差距还很大的情况下,我国一些特大城市的交通拥堵已排在世界前列。在北京召开的“第二届国际智能交通系统技术研讨暨技术与产品展览会”上透露。我国将投资20亿元对北京、上海、天津、重庆、广州、深圳、济南、青岛、杭州、中山10个城市进行交通智能化改造,到2010年,这10个城市将全部实现交通的智能化。目前国内外对智能交通系统的理解不尽相同,但不论从何种角度出发,有一点是共同的:智能交通系统是用各种高新技术,特别是电子信息技术提高交通效率,增加交通安全性和改善环境的技术经济系统。日本、欧洲等众多国家和地区在智能交通系统方面都取得了相当大的进展,对当地交通运输效率的提高起了关键性的作用。从各国的发展来看,智能交通系统能使交通基础设施发挥出最大的效能,提高服务质量;同时使社会能够高效地使用交通设施和能源,从而获得巨大的社会及经济效益。它不但有可能解决交通的拥堵,而且对交通安全、交通事故的处理与救援、客货运输管理、道路收费系统等方面都会产生巨大的影响。表1-1美国欧洲日本同我国在智能交通系统发展方面的对比表国家ITS发展程度投资规模重点发展领域预期目标美国ITS大国,智能交通应用率达80%以上。1990—1997年用于智能交通的预算为12.935亿美元。ITS发展在车辆安全系统、GPS适时定位系统、车辆管理系统。一是安全,减少事故和财产损失;二是经济效益,每年节省200亿美元的目的;三是环保和减少能耗。 日本通过近十年的研究已建成符合本国国情的智能交通系统。1998年用于智能交通的研究经费有161亿日元,用于基础设施的经费有1285亿日元。交通信息服务系统、高速公路不停车收费系统等较为先进的领域。1994年后未来30年减少50%的交通事故人员伤亡率,较少汽车尾气排放对大气的污染。欧洲各国ITS应用程度介于美国与日本之间1995—1998年间用于共同研究的经费有280亿欧元。从道路交通扩展到铁路和水路等64个课题的研究,分布于交通信息服务、电子自动收费管理等方面。一是安全性提高;二是有效性提高(出行时间节省6%);三是环境保护(污染物减少50%等。中国地方试点和专家呼吁阶段。基本无基本无基本无1.3交通信号灯控制的研究现状城市交通系统是一种非线性的、时变的、滞后的大系统,以往的交通控制研究多是基于启发式的考虑,而不是基于控制理论的方法。近多年来,随着众多研究控制理论出身的学者的加盟,使得城市交通自动控制领域的研究出现了新的思路、新的方法。本小节就近年来交通信号控制理论的研究进展作一简述。1.静态多段配时控制静态多段配时控制是利用历史数据实现的一种开环控制,其基本设计思想源于线性规划。它没有考虑交通需求的随机波动,没有考虑城市道路交通流的实时进化过程,其控制能力和抗干扰能力非常有限。但就城市某一区域而言,每日的交通状况毕竟表现出相当程度的重复性,车流的运动变化仍有一定的规律可循。因此研究静态多段配时控制,将其作为其他控制策略的“参照系”,或为它们提供“初值系统”还是很有意义的。这种方法简便易行,尤其适用于稳态交通环境,颇受交通工程人员欢迎。 2.准动态多段配时控制准动态多段配时控制与静态多段配时控制相类似,只不过多段的划分不是以时间为依据,而是以检测到的实时交通状态为依据。交通状态可以用交通量、占有率、车速等交通数据的特征值来表达。被划分成的若干个交通状况分别配以不同的优化配时。准动态多段配时控制是一闭环控制系统。由于反馈的引入,所以系统的动态性能比静态多时段控制有明显改善,但是又由于它的控制方式仍属于方案选择式,所以系统动态性能的改善又十分有限,故称之为准动态系统。3.最优控制城市交通控制的最优问题可表述如下:对于满足约束条件:(1-1)(1-2)的系统(1-3)给定初始状态,确定一个控制序列r(k),使得以下性能指标最优(1-4)其中:(1-l)式表示各方向排队长度不能超过允许的上限,否则会影响上游相邻路口的放行。(1-2)式表示控制变量r(也即绿信比)受到最大绿灯时间和最小绿灯时间的约束。(1-3)式中的表示路网中所有支路上排队长度组成的向量;r表示各支路放行流量组成的向量,它与各路口的绿信比相对应,是一控制向量;B是控制矩阵(i=0,1,…,m);a是一个时变的车辆到达向量。(1-3)式表示:此步排队长度是上步剩余排队长度减去此步放行长度,再加上此步到达车辆数。(1-4)式表示性能指标,己经写成了二次型函数形式;rN为期望的控制向量,R,Q为加权矩阵。在(1-4)式中引入了控制偏差的二次函数,目的是使最优控制问题易于求解。如果控制系统的规模较小,控制模型维数较低,就可用极小值原理或动态规划法对上述最优问题求解。1.4本文的主要工作 近年来,国内外许多专家致力于开发新的交通信号控制方法,人工智能是新的研究方向之一,这是因为人工智能在复杂系统的定性建模和控制上卓有成效。由于交通流量是时变的、非线性的,具有较大的随机性,并且很难建立精确的数学模型,所以本文设计了一种根据前后相流量来决定信号灯配时的模糊控制系统,其主要内容如下:(l)对十字路口交通信号灯控制问题、控制系统组成等进行描述(2)设计两级模糊控制系统(3)在PLC上编程实现此模糊控制系统第二章十字路口信号控制的基本理论和方法2.1交通信号灯在道路上用来传递具有法定意义指挥交通流通行或停止的光、声、手势等,都是交通信号。交通信号是在空间上无法实现分离原则的地方,主要在平面交叉口上,用来在时间上给交通流分配通行权的一种交通指挥措施。交通信号灯用轮流显示不同灯色来指挥交通的通行或停止。随着信号灯的发展,各国使用的信号灯存在不同的差别,各自给信号灯赋予不同的含义。我国目前使用的信号灯基本上与国际规定一致,具体含义如下:(l)绿灯亮时,允许车辆、行人通行,但转弯的车辆不准妨碍直行的车辆和被放行的行人通行。(2)黄灯亮时,不准车辆、行人通行,但已越过停止线的车辆和已进入人行通道的行人,可以继续通行。(3)红灯亮时,不准车辆、行人通行。(4)绿色箭头灯亮时,准许车辆按箭头所示方向通行。(5)黄灯闪烁时,车辆、行人须在确保安全的原则下通行。(6)右转弯车辆和T形交叉口右边无人行横道的直行车辆,遇黄灯或红灯时,在不妨碍被放行的车辆和行人通行的情况下可以通行。2.2信号灯的设置 当交叉路口的交通量接近路口的通行能力时,考虑在交叉路口设置交通信号控制。信号灯设得合理、正确,能较充分地发挥道路的交通效益,如设置不当,非但浪费了设备和资金,并且会对交通造成不良后果。如有些不合理信号控制的路口,由于主要道路上驾驶员遇红灯而停车,但他在相当长的时间内并未看到次要道路上有车通行,往往会引起有意或无意的闯红灯。因此,信号控制交叉口的交通事故,多发生在交通量较低的交叉口上或交通量较低的时间内。在吸取国外信号灯设置经验的基础上,结合我国目前具体的交通状况,路口信号灯的设置与改进要运用交通工程学理论作指导,根据路口的地形特点、车流状况,作好车辆与行人交通流量的调查,进口道上车辆行驶速度的调查,交通事故及违章调查,车辆可穿越的空当及延误调查等,具体问题具体分析,制定优化的信号配时,保证现代交通高效、节能、低公害运行。交叉路口交通信号灯安装方式有两种,一种是安装在伸向交叉路口中央上空型臂上;一种是安装在路口边或中央的灯柱上。信号灯的排列方式通常分为两种:1、水平排列式从道路的中心线一侧起以红、黄、绿的顺序向路边排列。常用于路面较宽的道路。2、垂直排列式从上往下依次是红、黄、绿灯。这种方式常用于路面较窄的道路。按固定方式排列信号灯有两个好处:一是把红灯信号放在最醒目的位置;二是可使患有色盲的人凭借位置来判断信号的含义。在交叉路口中央上空安装信号灯时应符合车辆通行净空高度界限的要求。信号灯的亮度应保证人们在1O0m以外能看清。2.3交通信号的控制方式根据所采用的控制装置的不同,交通信号一般有三种控制方式:1、周期式信号。这种信号的周期长、相位、绿灯时间、转换时间等都是事先确定的。信号通过规定的周期运行,每个周期的周期长和相位都恒定不变。依靠所提供的设备,可用几种预定配时方案,每一种都在一天规定的时间中交替使用。 2、半感应式信号。这种信号保证主干路总保持绿灯直到设在次干路上的检测器探到有车辆到达。这时信号经过一个适当的转换间隔后,立刻为次干路显示绿灯,该绿灯就维持到次干路上的车辆全部通过路口或持续到预定的最大绿灯时间为止。在绿波信号系统中,分配给次干路的绿灯时间必须限制在预定的时间内。该系统的周期长和绿灯时间可根据需要随时进行调整。当次干路没有车辆时,主干路总是保持绿灯,事实上分配到次干路的绿灯时间可充分利用,所有“多余的”绿灯时间则都分配给主干路。3、全感应式信号。该信号的所有相位全由传动检测器来控制。一般每个相位都要规定最小与最大绿灯时间。这种控制方式的周期长度和绿灯时间可根据需要作很大的变动。周期中的某些相位是可以任意选择使用的,当检测器未测出交通量时,该时刻的相位可自动取消。目前,许多信号系统都实现了计算机控制,使用计算机系统控制的地理交叉口,其信号一般采用预定周期式控制。有些城市还部分地实现了交替信号的线或面的联动控制,在这样的系统中,计算机充当了主控机和监视器的角色。此时,信号的联动不仅对提高单个信号交叉口的通行能力和服务水平有很大作用,而且还对提高整条道路或整个路网的通行能力发挥着极其重要的作用。2.4城市道路智能交通信号控制系统智能交通信号控制系统是城市道路交通管理系统中对交叉路口、行人过街,以及环路出入口采用信号控制的子系统。主要包括交通工程设计、车辆信息采集、数据传输与处理、控制模型算法与仿真分析、优化控制信号调整交通流等。国内外各大中城市己有的交通信号控制系统就是根据不同环境条件,基于各自城市道路的规划和发展水平建立起来的。2.4.1智能交通信号控制系统的基本组成智能交通信号控制系统的基本组成是:主控中心、路口交通信号控制机以及数据传输设备。其中主控中心包括操作平台、交互式数据库、效益指标优化模型、数据(图像)分析处理等。 图2-1城市道路智能交通信号控制系统框图2.4.2交通信号控制系统的主要术语和参数1、周期周期是指信号灯色发生变化,显示一个循环所需的时间,也称周期长,即红、黄、绿灯时间之和。它是决定点控制定时信号交通效益的关键控制参数,用C表示。一般信号灯的最短周期长度不少于36秒,否则就不能保证几个方向的车辆顺利通过交叉口。最长周期长度一般不超过120秒。从疏散交通的角度讲,显然当交通需求越大时,周期应越长,否则一个周期内到达的车辆不能在该周期的绿灯时间内通过交叉口,就会发生堵塞现象。正确的周期时长应该是,每一个相位的绿灯时间刚好使该相位各入口处等待车队放行完毕。如一个具有两相位(东西向和南北向)交通流的交叉口,设两个相位的交通到达率(到达率)分别是dl、d2,相应相位的通行能力分别为s1,s2,周期时长为C,绿灯时间分别为g1、g2,其中损失时间分别为L1、L2(损失时间是指灯色切换过程中的损失时间和不能被充分利用的绿灯时间,原因是绿灯出现之初车队有个反应和加速的过程),则:(2-1)(2-2)将上两式相加,并将代入g1+g2=C,得(2-3)若s1=s2=s,则有(2-4)由式(2-4)可计算出保证路口不堵塞的一个最小周期值。然而,若交通流的需求过高,堵塞现象将成为不可避免的,信号周期长度的选取应根据某种优化性能指标选择。2、相位 相位:即信号相位,是指在周期时间内按需求人为设定的,同时取得通行权的一个或几个交通流的序列组。3、相位差相位差:具有相同周期长的相关路口,在同方向上的两个相关相位的启动时间差,称为相位差。从某一车流方向来看,为使车辆在交叉口处不受阻而流畅通过,与其使相关联信号同时显示同一灯色(特别是绿灯开始时间),不如使绿灯开始时间错开一些。这里称时间对“错开”为相位差。把干线上某一路口作为基准路口,其他各路口的协调相位起始时刻滞后于基准路口的协调相位起始时刻的最小时间差,称为绝对相位差;车辆行使方向任意相邻路口的协调相位起始时刻的最小时间差,称为相对相位差。通常用时距图表示信号配时与距离的关系。图2-4时距图 以第1个交叉口的信号为基准,则图中的Al、A2、A3分别为交叉口2、3、4的信号的绝对相位差。要确定路口信号间的相对相位差,则需要先确定车辆的行驶方向。当车辆由路口1沿道路驶向路口4时,Bl是路口2信号和路口1信号的相对相位差;B2是路口3信号和路口2信号的相对相位差;当车辆由路口4沿道路驶向路口1时,B3是路口3信号和路口4信号当相对相位差;B4是路口2信号和路口3信号的相对相位差。由时距图可以看出,BZ和B4均表示路口2信号和路口3信号之间的相对相位差,只是因选定行车方向不同而具有不同的数值。两者之和等于一个周期的长度。4、饱和流量:是衡量路口交通流施放能力的重要参数,通常是指一个绿灯时间内的连续通过路口的最大车流量。5、绿灯间隔时间:是指从失去通行权的相位的绿灯结束,到下一个得到通行权的相位绿灯开始所用的时间。6、有效绿灯时间:是指被有效利用的实际车辆通行时间。它等于绿灯时间与黄灯时间之和减去头车启动的损失时间。2.4.3智能交通信号控制的核心智能交通信号控制系统的核心是控制模型算法软件,是贯穿规划设计在内的信号控制策略的管理平台,体现着交通管理者的控制思想,它包括信号控制系统将起到的作用和地位。目前,国内外已应用的信号控制系统大多是以优化定周期方案、优化路口绿信号配比以及协调相关路口通行能力为基础的,是根据历史数据和自动检测到的车流量信息,通过设置的控制模型算法选取适当的信号配比控制方案,是被动的控制策略。随着网络技术的发展,交互式控制策略使信号控制由感控到诱导实现了真正的智能,交通信号控制系统不仅可以检测到车流量等交通信息参数,调控路口绿信号配比,变化交通限行、禁行等指路标志,还可以根据系统联接的数据库完成与交通参与者之间的信息交换,向交通参与者显示道路交通信息、停车场信息,提供给交通参与者合理的行驶线路,以达到均衡道路交通负荷的主动的控制策略。尤其重要的是计算机网络技术和数字化使数据传输和信息利用得到了可靠保证。可以说,城市道路智能交通信号控制系统是城市道路交通管理随着信息产业技术迅猛发展的综合产物。2.4.4智能交通信号控制系统的基本设计步骤根据路口交通现状和预测进行交通渠化设计分析原始交通流数据,通过仿真模型效验,确定控制模式,进行交通参数设定根据交通渠化设计及控制模式的设计要求完成交通工程设计(包括车辆检测器的检测区定位)根据各个路口配备设备的相关性,完成协调设计确定系统和单点控制的优化目标函数,得出最优信号控制方案配置路口信号控制机的固化基础参量,配置主控中心数据库与数据传输设置。 第3章信号灯控制系统的设计3.1信号灯结构设计本文以十字路口信号灯的PLC控制为主进行研究。该十字路口信号灯包括南北方向左转和直行红黄绿灯和人行道红绿灯各两组,东西方向左转红黄绿灯用人行道红绿灯各两组,本节设计主要围绕各个信号灯的工作时序图和具体的PLC控制程序来做介绍。3.1.1工作时序图1.南北方向对于该方向,信号灯配置为左转红黄绿灯和直行红黄绿灯以及人行道红绿灯各两组。直行红黄绿灯控制直行车辆,同时左转红黄绿灯控制左转车辆,两组信号灯状态相反,分别在不同时段放行直行以及左转的车辆。本文采用的是以120s为周期,其信号灯工作时序如图3.1所示。对于直行红黄绿灯,该组信号灯的3个灯以绿灯(35s)黄灯(5s)红灯(80s)依次循环。对于左转红黄绿灯,该组信号灯的3个灯以红灯(40s)绿灯(15s)黄灯(5s)红灯(60s)依次循环。对于人行道红绿灯,本设计配置了红灯和绿灯两种状态,且该红、绿灯各自均以红灯(60s)绿灯(60s)依次循环,并且与直行方向与左转方向绿灯状态相反。即对于某一车道,当直行及左转红灯均亮时该侧的人行道绿灯才亮,当任一直行或左转绿灯亮时该人行道都显示为红灯亮。 图3.1南北方向信号灯工作时序图2.东西方向东西方向的信号灯工作与南北方向呈对称方式,行车与南北方向道路交替进行,其工作时序如图3.2所示。对于东西直行红黄绿灯,该组信号灯的3个灯以红灯(60s)绿灯(35s)黄灯(5s)红灯(20s)依次循环。对于东西左转红黄绿灯,该组信号灯的3个灯以红灯(100s)绿灯(15s)黄灯(5s)依次循环。对于东西侧人行道红绿灯,各自以绿灯(60s) 红灯(60s)依次循环,并且与直行方向与左转方向绿灯状态相反。图3.2东西方向信号灯工作时序图3.1.2可编程控制器I/O端口分配由于本设计所选用的PLC为输入点:64,输出点:64,晶体管输出。而本设计中的输入输出点数共为52点,均在PLC的基本输入输出点数范围之内,所以无需进行I/O扩展,在设计时只需赋与其不同的端口地址即可。1.外部输入控制按钮本设计当中的6个外部控制按钮的具体I/O端口分配方式如表3.3所示。PLC上的外部输入控制按钮总共分为6个,分别是系统启动按钮、系统停止按钮、南北无线 手动强通启动按钮、南北无线手动强通停止按钮、东西手动强通启动按钮、东西手动强通停止按钮。表3.3外部输入控制按钮I/O端口分配启动停止南北强通启动南北强通停止东西强通启动东西强通停止X000X001X002X003X004X0052.信号灯输出PLC系统的信号灯输出量主要是由各个方向的红、黄、绿灯所构成的。对于南北方向上某一行车方向的信号灯输出,本设计共设置了三组信号灯,其中两组车辆信号灯,分为直行红、黄、绿灯和左转红、黄、绿灯,另外一组是人行道上的红绿灯。另一方行车方向上信号灯的设置与该方向完全相同;对于东西方向,由于其行车与南北方向对称,所以其信号灯的设置也与南北向相同。信号灯输出的I/O端口分配方式如表3.4所示:表3.4信号灯输出的I/O端口分配南北直行绿灯Y000东西直行绿灯Y010南北直行黄灯Y001东西直行黄灯Y011南北直行红灯Y002东西直行红灯Y012南北左转绿灯Y003东西左转红灯Y013南北左转黄灯Y004东西左转绿灯Y014南北左转红灯Y005东西左转黄灯Y015南北人行绿灯Y006东西人行绿灯Y016南北人行红灯Y007东西人行红灯Y0173.数码管输出本设计中四个方向数码管共设置了四组,南北方向和东西方向各两组,每一方向的两组数码管显示均相同。对于某一组数码管,又分为了个位数字显示和十位显示,所以本设计当中的四组数码管共占用28点输出。数码管输出的I/O端口分配如表3.5所示: 表3.5数码管输出的I/O端口分配南北组数码管个位aY020东西组数码管个位aY040bY021bY041cY022cY042dY023dY043eY024eY044fY025fY045gY026gY046南北组数码管十位aY030东西组数码管十位aY050bY031bY051cY032cY052dY033dY053eY034eY054fY035fY055gY036gY0563.1.3程序梯形图本设计的梯形图设计力求简单、高效,在完成设计要求的同时,尽量简化系统,充分利用系统资源。1.南北方向在南北直行方向,当开始按钮启动后,首先启动直行绿灯输出,并设置定时器T0在35s后动作,接通直行黄灯,断开直行绿灯的通路,同时启动定时器T1。5s后T1动作,接通直行红灯,断开直行黄灯通路,同时启动定时器T2。南北方向的程序梯形图如图3.6所示:对于南北左转方向,当开始按钮启动后,在直行黄灯启动5s后左转绿灯启动,同时启动定时器T3。15s后启动左转黄灯并断开左转绿灯通路,同时启动定时器T4。5s后断开自身通路。对于左转红灯,本设计采用左转红灯通路上串入左转绿灯和左转黄灯的常闭开关控制的方法,既可以简单地对左转红灯进行控制,同时还保证了红灯和绿灯不会同时亮,提高了系统安全性。对于无线强通控制,当强通开关X002按下后,通过X002的常开及常闭开关强行接通直行方向绿灯,同时强行断开其它方向通路。对于人行道信号灯,本设计能过采用直行及左转红、黄、绿灯的常开及常闭开关直接控制其红灯和绿灯的通路,也大大简化了系统,符合设计的可靠性和经济性等要求。 图3.6南北方向程序梯形图(a)续图(b) (b)续图 (c)(c)2.东西方向东西方向的梯形图构成与南北方向相同,但启动次序不同,本文不加以详细论述。具体梯形图程序如图3.7所示:图3.7南北方向程序梯形图(a)续图 (b)(b) 3.1.4信号灯的PLC外部连线图信号灯的PLC外部连线较为简便,信号灯输出一端直接接PLC的输出端,另一端在并上一个24V的直流电源后接入PLC的接地端COM1。连线图如图3.8所示:图3.8信号灯的PLC外部连线图 3.2倒计时数码管的设计在实际的交通控制中,仅有信号灯是远远不够的,还需要系统将各个时序阶段的具体运行时间显示出来。本节将就如何实现数码显示及数码管的外部接线作详细介绍。3.2.1程序梯形图本设计中四个方向数码管共设置了四组,南北方向和东西方向各两组,每一方向的两组数码管显示均相同。对于某一组数码管,又分为了个位数字显示和十位显示,对于该组数码管,又分别显示直行、左转时两个灯切换之间的时间。该段程序的设计,主要是通过D0-D4数据寄存器来实现。开始时,南北直行绿、南北直行黄、南北直行红、东西直行绿、东西直行黄、东西直行红分别在其电路接通时发送给显示电路一个脉冲信号,同时中间继电器M8013每隔1s发送一个脉冲信号。当显示电路收到信号后首先将D0清零,并且每秒加1,然后用要显示的数依次减去D0中的数字并发送到寄存器D1;将D1中的数字分别取个位和十位发送到寄存器D2和D4,最后用SEGD命令将D2和D4中的数字显示到数码管上。1.南北方向该方向程序的梯形图设计如图3.9所示:图3.9南北方向程序梯形图(a)续图(b) (b) 2.东西方向该方向程序的梯形图设计如图3.10所示:图3.10东西方向程序梯形图(a)续图(b) (b)3.2.2数码管的PLC外部连线图对于数码管的连线,南北向、东西向的两组数码管的各接头依次接在PLC输出端的Y020-Y056口上,另一端再并上一个24V的直流电源后接入PLC的接地端COM1,连线图如图3.11所示: 图3.11数码管的PLC外部连线 3.3本章小结本章研究了信号灯的具体配置、时序要求、端口分配、梯形图程序的设计以及PLC外部连线;对于数码管显示,主要研究了数码管的显示原理、控制程序和外部连线等问题,己完成了交通信号灯控制系统设计的大部分。对于系统的仿真,本设计选用三菱公司的GX.Developer程序开发工具进行仿真模拟。 第四章交通灯系统的设计4.1交通系统的发展趋势交通系统未来的发展趋势就是要提高通行能力,加强环境保护,开展智能化运输和环保专项技术的研究,并且要做到以人为本,重点开展交通安全技术的研究,在这个过程中要确定经济合理的目标,促进新材料的广泛应用和开发。4.2选择VHDL硬件描述语言设计的优势首先,简单地介绍一下什么是VHDL硬件描述语言。VHDL的英文全称是VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage。是EDA设计中使用最多的语言之一,它具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大地简化了硬件设计任务,提高了设计效率和可靠性。其次,这次设计选用VHDL硬件描述语言的优势就在于传统的用原理图设计电路的方法具有直观形象的优点,但如果所设计系统的规模比较大,或者设计软件不能提供设计者所需的库单元时,这种方法就显得很受限制了。而且用原理图表示的设计,通用性、可移植性也比较弱,所以在现代的设计中,越来越多地采用了基于硬件描述语言的设计方式。利用硬件描述语言来设计电路,使探测各种设计方案变成一件很容易的事,因为只需要对描述语言进行修改,这比更改电路原理图要容易实现得多。4.3红绿灯交通信号系统功能描述在交通信号灯的设计中,外部硬件电路方面主要包括:两组红绿灯、两组LED显示器(见图1)。软件方面包括:(1)电路合成模块的概念:将交通灯信号系统划分成若干个小电路,编写每一个模块的VHDL程序代码,并将各个小电路相连接。这样可以增加程序的调试速度,同时也能够将工作细分,以提高编程速度(见图2、图3)。(2)参数化的概念:针对不同时段的交通流量,可以调整红绿灯电路(增加或者减少电路的计数时间),以增加程序的灵活性。 图1十字路口示意图时钟发生电路红绿灯信号控制电路倒计时控制电路计数秒数选择电路东西及南北方向信号灯时钟输入端系统复位端东西及南北方向倒计时图2交通信号灯系统结构图由交通信号灯系统结构图(见图2)可知,该系统由4个子电路组成。其中包括:(1)时钟发生电路;(2)计数秒数选择电路;(3)倒计时控制电路;(4)红绿灯信号控制电路。图3交通信号灯系统模块图 由图3可以看出系统大体的工作程序是:首先由时钟发生电路产生稳定的时钟信号,为下面三个子电路提供同步工作信号。接收到时钟信号的红绿灯信号控制电路开始工作,并将产生的重新计数的输出使能控制信号发送给计数秒数选择电路和倒计时控制电路,同时还会将目前电路产生的状态信号发送给前者。接收到重新计数的信号后计数秒数选择电路就会负责产生计数器所需要的计数值,并将这一数值发送给倒计时控制电路,由它利用发光二极管显示倒计时的状态。当计数器计时完毕,倒计时控制器就会负责产生一个脉冲信号发送给红绿灯信号控制电路进入下一个状态,之后循环这一过程。4.4红绿灯交通信号系统的VHDL模块4.4.1时钟脉冲发生电路在红绿灯交通信号系统中,大多数的情况是通过自动控制的方式指挥交通的。因此,为了避免意外事件的发生,电路必须给出一个稳定的时钟(clock)才能让系统正常的工作。因此,hld1时钟发生电路(见图4)最主要的功能就是产生一些稳定的输出信号,并将其用做后面几个电路的使能控制与同步信号。图4时钟发生电路模块图系统输入信号:clk:由外部信号发生器提供1kHZ的时钟信号;reset:系统内部自复位信号。系统输出信号:ena_scan:将外部的时钟信号进行分频处理;ena_1hz:产生每秒一个的脉冲信号; flash_1hz:产生每秒一个脉冲的时钟信号。经仿真后得到的时序图(见图5、图6):图5将clk经分频处理后得到的ena_scan信号图6时钟发生电路时序图从图5中可以看出,当外部信号发生器提供了1kHZ的时钟信号后,系统输出信号ena_scan就将时钟信号进行了4分频。从图6又可以看出,当加入1kHZ的时钟信号后,ena_1hz产生了周期为一秒的脉冲信号,flash_1hz产生了周期为一秒的脉冲时钟信号。在这段程序的设计过程中最大的特点就是引用了参数化的概念,即使用了常数(constant)。常数的定义和设置主要是为了使程序更容易阅读和修改,只要改变了常量的数值,使用到该常数的地方都会随着更新而使用新的常数值。这就使设计的灵活性增强了。例如程序中用到的:constantscan_bit:positive:=2;signalclk_scan_ff:std_logic_vector(scan_bit-1downto0);第一句就是将scan_bit设为常数‘2’,这个数值是可以根据设计的需要任意设定的。第二句是定义一个信号,它的位数就是(scan_bit-1),因为之前scan_bit设定的值为2,所以信号的位数就是2位。如果想增减信号的位数,只需要改动常数的赋值就可以了。4.4.2计数秒数选择电路 当通过交通路口时,如果能在一个方向增添一个倒计时显示器对车辆、行人加以提示,可能会有更好的效果。因此,hld2计数秒数选择电路(见图7)最主要的功能就是负责输出显示器需要的数值(即倒数的秒数值),作为倒计时显示器电路的计数秒数。图7计数秒数选择电路模块图系统输入信号:clk:由外部信号发生器提供1kHZ的时钟信号;reset:系统内部自复位信号;ena_scan:接收由时钟发生电路提供的250Hz的时钟脉冲信号;recount:接收由交通灯信号控制电路产生的重新计数的使能控制信号;sign_state:接收由交通灯信号控制电路产生的状态信号。系统输出信号:load:负责产生计数器所需要的计数数值。经仿真后得到的时序图(见图8): 图8计数秒数选择电路时序图由计数描述选择电路的时序图(见图8)可以看出这段程序中定义了在正常车流量情况下,东西及南北方向红灯、黄灯和绿灯需要维持的秒数分别是15s、5s和25s。architecturebhvofhld2isconstantredew_time:integer:=15;---东西方向红灯设定为15s。constantyellowew_time:integer:=5;--东西方向黄灯设定为5s。constantgreenew_time:integer:=25;--东西方向绿灯设定为25s。constantredsn_time:integer:=15;--南北方向红灯设定为15s。constantyellowsn_time:integer:=5;--南北方向黄灯设定为5s。constantgreensn_time:integer:=25;--南北方向绿灯设定为25s。beginprocess(reset,clk)beginifreset="1"thenload<="00000000";elsif(clk"eventandclk="1")thenif(ena_scan="1"andrecount="1")thencasesign_stateiswhen"000"=>load<=conv_std_logic_vector(greensn_time,8);--sign_state=“000”时,南北方向绿灯亮25s。when"001"=>load<=conv_std_logic_vector(yellowsn_time,8);--sign_state=“001”时,南北方向黄灯亮5s。when"010"=>load<=conv_std_logic_vector(redsn_time,8);--sign_state=“010”时,南北方向红灯亮15s。when"011"=>load<=conv_std_logic_vector(redew_time,8);--sign_state=“011”时,东西方向红灯亮15s。when"100"=>load<=conv_std_logic_vector(yellowew_time,8); --sign_state=“100”时,东西方向黄灯亮5s。when"101"=>load<=conv_std_logic_vector(greenew_time,8);--sign_state=“101”时,东西方向绿灯亮25s。whenothers=>load<=conv_std_logic_vector(yellowsn_time,8);endcase;当外部信号发生器提供了1kHZ的时钟信号,并且重新计数信号(recount)为“1”时,load信号就会按照预先设置的数值逐1递减,直至减到零为止,当下一个重新计数信号(recount)再次为“1”时,会重复此过程。在这段程序的设计中用到了conv_std_logic_vector(value,n)语句,它的用法就是将已经定义的数值(value)转换成n位(bit)的表示方法。例如程序中:when"000"=>load<=conv_std_logic_vector(greenew_time,8);就是将十进制的25转换成二进制的19,这就使设计减少了很多不必要的麻烦。4.4.3倒计时控制电路通过日常生活中的观察,我发现在一些交通路口已经开始使用倒计时显示器,它们的作用就是用来提示车辆行人目前还有多长时间信号灯会发生变化,这样车辆行人就可以提前判断是否有足够的时间通过路口,进而就可以避免很多意外事故的发生。例如:南北方向绿灯,车辆处于正常行驶中,东西方向红灯,车辆处于等待中,若南北方向行驶的车辆看到倒计时显示器上可以通行的时间很短,可能就会放慢速度等待下一次通行,这样在东西方向绿灯时,车辆就能够正常行驶,不会为等待南北方向强行的车辆而耽误更多的时间。如此循环下去,道路就会畅通无阻了。考虑到有些路口的交通拥堵现象较为严重,车辆会在道路上排成很长的一队,这样排在较远距离的司机就很难看清楚倒计时显示器上变化的数字,有可能会影响到车辆之间的正常行驶。因此,如果采用发光二极管作为倒计时的显示装置就会使司机和行人一目了然,同样也能够起到很好的提示作用。所以,hld3倒计时控制电路(见图9)最主要的功能就是负责接收hld2电路输出的值,然后将其转换成BCD码,并利用发光二极管显示出来,让车辆行人能够清楚地知道再过多久信号灯就会发生变化。 图9倒计时控制电路系统输入信号:clk:由外部信号发生器提供1kHz的时钟信号;reset:系统内部自复位信号;ena_1hz:接收由时钟发生电路提供的1Hz的脉冲信号;recount:重新计数的使能控制信号;load:负责接收计数器所需要的计数数值。系统输出信号:led:负责将计数数值转换成BCD码,并利用发光二极管显示倒计时状态;next_state:当计数器计时完毕后,负责产生一个脉冲信号,作为下一个状态的触发信号。经仿真后得到的时序图(见图10):图10倒计时控制电路时序图由倒计时控制电路的时序图(见图10)可以看出,当clk时钟信号来临后,在ena_1hz脉冲信号的同时激励下,led会按照预先设置好的时间开始逐1递减,进行倒计时显示。process(clk,reset)beginif(reset="1")thencnt_ff<="00000000";led<="0000000000000000000000000";--当reset=1,则将cnt_ff与led清零。elsif(clk"eventandclk="1")thenifena_1hz="1"then if(recount="1")thencnt_ff<=load-1;--当reset=0,clk为上升沿触发,且ena_1hz与recount为1时,load将减1的数值赋给cnt_ff。elsecnt_ff<=cnt_ff-1;--当reset=0,clk为上升沿触发,且ena_1hz为1时,recount为0时,cnt_ff减1。endif;endif;caseconv_integer(cnt_ff)iswhen0=>led(24downto0)<="1000000000000000000000000";when1=>led(24downto0)<="1100000000000000000000000";when2=>led(24downto0)<="1110000000000000000000000";when3=>led(24downto0)<="1111000000000000000000000";……when23=>led(24downto0)<="1111111111111111111111110";when24=>led(24downto0)<="1111111111111111111111111";whenothers=>led(24downto0)<="0000000000000000000000000";endcase;这段程序是采用的就是查表的方法并且利用发光二极管进行倒计时显示,如图10所示:当绿灯点亮开始计数后,load就会将减1后的值赋给cnt_ff,之后cnt_ff又会从case语句中查找到相对应的值再赋给led显示所剩余的时间。在程序编写过程中运用到了conv_integer()语句,它可以将cnt_ff所赋的值转换成整数。由图可知led是25位的系统输出信号,负责控制发光二极管的输出,所以25位的输出信号可以分成七组控制发光二极管的显示,其中“1”为点亮,“0”为熄灭。其对应方式如下表所示:4.4.4红绿灯信号控制电路在红绿灯交通信号系统中,大多数的情况是通过自动控制的方式指挥交通。但为了配合高峰时段,防止交通拥挤,有时还必须使用手动控制,即让交通警察自行指挥交通。因此,hld4红绿灯信号控制电路(见图11)除了负责监控路口红绿灯之外,最主要的功能就是能够利用开关来切换手动与自动的模式,让交通警察能够通过外部输入的方式来控制红绿灯交通信号系统的运做。 图11红绿灯信号控制电路系统输入信号:clk:由外部信号发生器提供1kHZ的时钟信号;reset:系统内部自复位信号;ena_scan:接收由时钟发生电路提供的250Hz的时钟脉冲信号;ena_1hz:接收由时钟发生电路提供的1Hz的脉冲信号;flash_1hz:接收由时钟发生电路提供的1Hz的脉冲时钟信号;a_m:手动、自动切换按钮(1:自动、0:手动);st_butt:红绿灯状态切换按钮(在手动操作下,每按一次按钮就变换一个状态);next_state:接收由倒计时控制电路提供的下一个状态的触发信号。系统输出信号:recount:产生重新计数的输出使能控制信号;sign_state:产生输出状态信号;red:负责红色信号灯的显示;green:负责绿色信号灯的显示;发光二极管7组6组5组4组3组2组1组led(24downto0)000yxwvutsrqponmlkjihgfedcbayellow:负责黄色信号灯的显示。经仿真后得到的时序图(见图12): 图12红绿灯信号控制电路时序图图12显示的是第三种状态时东西方向红灯亮、南北方向绿灯亮。红绿灯信号控制电路的作用就是产生的一系列的控制信号去完成之前几个模块设定好的功能。4.4.5建立程序包在程序设计语言中,程序的开始总会调用库(library)来提供设计程序时所需要的基本命令。但是,如果要进一步设计较为复杂的程序时,库中的命令可能就无法支持了。因此,可以设计一个子程序来满足程序设计的需求。上述问题在硬件描述语言的设计中也存在,在VHDL程序中的第一行(libraryieee;)就是要使用IEEE设计好的库文件,但如果需要使用的元器件并不在库中时,就只能自己定义了。一个程序包中至少应该包含以下结构中的一种:u常数说明:如定义系统数据总线通道的宽度。uVHDL数据类型说明:主要用于在整个设计中通用的数据类型。u元件定义:元件定义主要规定在VHDL设计中参与文件例化的文件接口界面。u子程序:并入程序包的子程序有利于在设计中任一处进行方便地调用。4.4.6连接各个模块light电路的工作就是将所有的子电路全部连接起来,进行时序分析,当程序完成后,再下载到FPGA,以便硬件电路的验证工作。经仿真后得到的时序图(见图13): 图13连接各个模块后的时序图连接各个模块后的时序图(见图13)是综合了上述4个模块后仿真出来的波形。图13显示的也是状态三时东西方向红灯亮、南北方向绿灯亮,这与之前红绿灯信号控制电路仿真出来的波形结果是相同的。管脚分配图(见图14):图14连接各个模块后的管脚分配图4.5本章小结本系统结构简单,操作方便;可现自动控制,具有一定的智能性;对优化城市交通具有一定的意义。本设计将各任务进行细分包装,使各任务保持相对独立;能有效改善程序结构,便于模块化处理,使程序的可读性、可维护性和可移植性都得到进一步的提高。本设计采用了VHDL硬件描述语言文本输入方式,在确立总体预期实现功能的前提下,分层次进行设计。实现了三种颜色交通信号灯的交替点亮,以及时间的倒计时显示,指挥行人和车辆安全通行。程序中所用到的数据均可以根据实际情况进行设置,修改灵活方便。通过此次设计,我对于VHDL硬件描述语言有了更深入地了解,也在原来所学的理论基础上得到了进一步地应用。但由于经验上的不足,有些地方还需要做进一步地改善。 参考文献[1]陈宽民等,道路通行能力分析,北京:人民交通出版社,2003[2]李胜多,张惠莉.基于三菱PLC和组态技术的交通信号灯控制系统设计[M].青岛农业大学学报(自然科学版),2009(12)157.[3]许卫洪.PLC结合MCGS组态软件在交通信号灯控制系统中的应用[M].武汉船舶职业技术学院学报,2011(02)48.[4]孙晗.基于PLC交通信号灯控制系统在MCGS组态软件中的实现[M].工业控制计算机,2009(03)247.[5]张泽荣.可编程控制器原理与应用[M].清华大学出版社,2010.[6]林涛:《基于VHDL语言的交通信号控制器的设计与实现》,《交通与计算机》,2006年第四期,第72-75页。[7]陶涛:《基于VHDL语言实现十字路口交通灯设计》,《青海交通科技》,2006年第六期,第13-15页。[8]邱磊、肖兵:《基于VHDL语言的交通灯控制器设计》,《福建电脑》,2004年第十二期,第76-77页。 致谢 附件附录一信号灯程序指令表1.南北方向 2.东西方向 附录二数码管显示程序指令表1.南北方向 2.东西方向附录三:红绿灯交通信号系统的VHDL程序代码------------定义使用到的包/库LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL; -----下面定义实体-----------ENTITYJTDKZISPORT(CLK,SM,SB:INBIT;--定义输入(位),也可以使用STD_LOGICMR,MY,MG,BR,BY,BG:OUTBIT);--定义输出(位)(假设为M表示东西方向,B表示南北方向)ENDJTDKZ;----------下面定义结构体------------ARCHITECTUREARTOFJTDKZISTYPESTATE_TYPEIS(A,B,C,D);--自定义数据类型STATE_TYPE取值A,B,C,D,多用于状态机SIGNALSTATE:STATE_TYPE;--定义信号STATE_TYPE,类型是上面定义的BEGINCNT:PROCESS(CLK)--块CNT为进程(CLK敏感信号)VARIABLES:INTEGERRANGE0TO29;--定义变量S取值0~29VARIABLECLR,EN:BIT;BEGINIF(CLK"EVENTANDCLK="1")THEN--CLK上升沿到IFCLR="0"THENS:=0;--CLR="0"时S清零ELSIFEN="0"THENS:=S;--EN="0"CLR="1"时S保持不变ELSES:=S+1;--EN="1"CLR="1"时S持续加1ENDIF;CASESTATEISWHENA=>MR<="0";MY<="0";MG<="1";--在状态A时,东西方向(绿灯亮,红/黄灯灭),南北方向(红灯亮,黄/绿灯灭)BR<="1";BY<="0";BG<="0";IF(SBANDSM)="1"THEN--当无人工控制时IFS=29THEN--计时到30秒后,转到状态B,CLR="0"为下次S清零作准备,STATE<=B;CLR:="0";EN:="0";ELSESTATE<=A;CLR:="1";EN:="1";--计时不到30秒时,继续执行A状态, ENDIF;ELSIF(SBAND(NOTSM))="1"THEN--人工智能控制,当输入SM="0"时直接跳到BSTATE<=B;CLR:="0";EN:="0";ELSESTATE<=A;CLR:="1";EN:="1";ENDIF;WHENB=>MR<="0";MY<="1";MG<="0";--在状态B时,东西方向(黄灯亮,绿/红灯灭),南北方向(红灯亮,黄/绿灯灭)BR<="1";BY<="0";BG<="0";IFS=3THEN--计时3秒后,转到状态C.........STATE<=C;CLR:="0";EN:="0";ELSESTATE<=B;CLR:="1";EN:="1";--否则继续执行状态BENDIF;WHENC=>MR<="1";MY<="0";MG<="0";--在状态C时,东西方向(红灯亮,黄/绿灯灭),南北方向(绿灯亮,红/黄灯灭)BR<="0";BY<="0";BG<="1";IF(SMANDSB)="1"THEN--当无人工控制时IFS=29THEN--计时到30秒后,转到状态D.........STATE<=D;CLR:="0";EN:="0";ELSESTATE<=C;CLR:="1";EN:="1";--否则继续执行状态C........ENDIF;ELSIFSB="0"THEN--人工智能控制,当输入SB="0"时直接跳到DSTATE<=D;CLR:="0";EN:="0";ELSESTATE<=C;CLR:="1";EN:="1";ENDIF;WHEND=>MR<="1";MY<="0";MG<="0";--在状态D时,东西方向(红灯亮,黄/绿灯灭,南北方向(黄灯亮,绿/红灯灭)) BR<="0";BY<="1";BG<="0";IFS=3THEN--计时3秒后,转到状态A.........STATE<=A;CLR:="0";EN:="0";ELSESTATE<=D;CLR:="1";EN:="1";--否则继续执行状态BENDIF;ENDCASE;ENDIF;ENDPROCESSCNT;'