用PLC控制的交通信号灯.docx

上传人:b****7 文档编号:9300808 上传时间:2023-02-04 格式:DOCX 页数:27 大小:408.97KB
下载 相关 举报
用PLC控制的交通信号灯.docx_第1页
第1页 / 共27页
用PLC控制的交通信号灯.docx_第2页
第2页 / 共27页
用PLC控制的交通信号灯.docx_第3页
第3页 / 共27页
用PLC控制的交通信号灯.docx_第4页
第4页 / 共27页
用PLC控制的交通信号灯.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

用PLC控制的交通信号灯.docx

《用PLC控制的交通信号灯.docx》由会员分享,可在线阅读,更多相关《用PLC控制的交通信号灯.docx(27页珍藏版)》请在冰豆网上搜索。

用PLC控制的交通信号灯.docx

用PLC控制的交通信号灯

用PLC控制的交通信号灯

摘要:

当今时代是一个自动化时代,交通灯控制等很多行业的设备都与计算机密切相关。

因此,一个好的交通灯控制系统,将给道路拥挤、违章控制等方面给予技术革新。

随着大规模集成电路及计算机技术的迅速发展,以及人工智能在控制技术方面的广泛运用,智能设备有了很大的发展,是现代科技发展的主流方向。

本文介绍了一个智能交通灯系统的设计。

该智能交通灯控制系统可以实现的功能有:

对某市区的四个主要交通路口进行监控;各路口有固定的工作周期,并且在道路拥挤时中控中心能改变其周期;对路口违章的机动车能够即时拍照,并提取车牌号。

在世界范围内,一个以微电子技术,计算机和通信技术为先导的,以信息技术和信息产业为中心的信息革命方兴未艾。

而计算机技术怎样与实际应用更有效的结合并有效的发挥其作用是科学界最热门的话题,也是当今计算机应用中空前活跃的领域。

本文主要从单片机的应用上来实现十字路口交通灯智能化的管理,用以控制过往车辆的正常运作。

关键词:

交通灯控制计算机技术智能单片机十字路口交通灯

 

 

前言

当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。

但这一技术在19世纪就已出现了。

1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。

这是世界上最早的交通信号灯。

1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。

它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。

1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。

电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。

红灯亮表示“停止”,绿灯亮表示“通行”。

1918年,又出现了带控制的红绿灯和红外线红绿灯。

带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。

红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。

红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。

信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。

第1章PLC概述

PLC可编程序控制器:

PLC英文全称ProgrammableLogicController,中文全称为可编程逻辑控制器,定义是:

一种数字运算操作的电子系统,专为在工业环境应用而设计的。

它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算,顺序控制,定时,计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。

DCS集散系统:

DCS英文全称DISTRIBUTEDCONTROLSYSTEM,中文全称为集散型控制系统。

DCS可以解释为在模拟量回路控制较多的行业中广泛使用的,尽量将控制所造成的危险性分散,而将管理和显示功能集中的一种自动化高技术产品。

1.1PLC的简介

可编程控制器是60年代末在美国首先出现的,当时叫可编程逻辑控制器PLC(ProgrammableLogicController),目的是用来取代继电器。

以执行逻辑判断、计时、计数等顺序控制功能。

0年代中期以后,PLC已广泛地使用微处理器作为中央处理器,输入输出模块和外围电路也都采用了中、大规模甚至超大规模的集成电路,这时的PLC已不再是仅有逻辑(Logic)判断功能,还同时具有数据处理、PID调节和数据通信功能。

1.2PLC的用途与特点

1.2.1 PLC的特点

(1)抗干扰能力强,可靠性高 

继电接触器控制系统虽具有较好的抗干扰能力,但使用了大量的机械触头,使设备连线复杂,由于器件的老化、脱焊、触头的抖动及触头在开闭时受电弧的损害大大降低了系统的可靠性。

传统的继电器控制系统中使用了大量的中间继电器、时间继电器。

由于触点接触不良,容易出现故障,PLC用软件代替大量的中间继电器和时间继电器,仅剩下与输入和输出有关的少量硬件,接线可减少互继电器控制系统的1/10--1/100,因触点接触不良造成的故障大为减少。

而PLC采用微电子技术,大量的开关动作由无触点的电子存储器件来完成,大部分继电器和复杂的连线被软件程序所取代,故寿命长,可靠性大大提高。

(2)配套齐全,功能完善,适用性强

PLC发展到今天,已经形成了大、中、小各种规模的系列化产品。

可以用于各种

规模的工业控制场合。

除了逻辑处理功能以外,现代PLC大多具有完善的数据运算能力,可用于各种数字控制领域。

近年来PLC的功能单元大量涌现,使PLC渗透到了位置控制、温度控制、CNC等各种工业控制中。

加上PLC通信能力的增强及人机界面技术的发展,使用PLC组成各种控制系统变得非常容易。

(3)易学易用,深受工程技术人员欢迎

PLC作为通用工业控制计算机,是面向工矿企业的工控设备。

它接口容易,编程语言易于为工程技术人员接受。

梯形图语言的图形符号与表达方式和继电器电路图相当接近,只用PLC的少量开关量逻辑控制指令就可以方便地实现继电器电路的功能。

为不熟悉电子电路、不懂计算机原理和汇编语言的人使用计算机从事工业控制打开了方便之门。

(4)系统的设计、建造工作量小,维护方便,容易改造

PLC用存储逻辑代替接线逻辑,大大减少了控制设备外部的接线,使控制系统设计及建造的周期大为缩短,同时维护也变得容易起来。

更重要的是使同一设备经过改变程序改变生产过程成为可能。

这很适合多品种、小批量的生产场合。

(5)体积小,重量轻,能耗低

以超小型PLC为例,新近出产的品种底部尺寸小于100mm,重量小于150g,功耗仅数瓦。

由于体积小很容易装入机械内部,是实现机电一体化的理想控制设备。

1.2.2.PLC的用途

PLC的初期由于其价格高于继电器控制装置,使其应用受到限制。

但近年来

由于微处理器芯片及有关元件价格大大下降,使PLC的成本下降,同时又由于PLC的功能大大增强,使PLC的应用越来越广泛,广泛应用于钢铁、水泥、石油、化工、采矿、电力、机械制造、汽车、造纸、纺织、环保等行业。

PLC的应用通常可分为五种类型:

(1)顺序控制 

这是PLC应用最广泛的领域,用以取代传统的继电器顺序控制。

PLC可应用于单机控制、多机群控、生产自动线控制等。

如注塑机、印刷机械、订书机械、随着电子技术和计算机技术的迅猛发展,PLC的功能也越来越强大,更多地具有计算机的功能,所以又简称PC(PROGRAMMABLECONTROLLER),但是为了不和切纸机械、组合机床、磨床、装配生产线、电镀流水线及电梯控制等。

(2)运动控制

PLC制造商目前已提供了拖动步进电动机或伺服电动机的单轴或多轴位置控制模版。

在多数情况下,PLC把扫描目标位置的数据送给模版块,其输出移动一轴或数轴到目标位置。

每个轴移动时,位置控制模块保持适当的速度和加速度,确保运动平滑。

相对来说,位置控制模块比计算机数值控制(CNC)装置体积更小,价格更低,速度更快,操作方便。

(3)闭环过程控制 

PLC能控制大量的物理参数,如温度、压力、速度和流量等。

PID(ProportionalIntergralDerivative)模块的提供使PLC具有闭环控制功能,即一个具有PID控制能力的PLC可用于过程控制。

当过程控制中某一个变量出现偏差时,PID控制算法会计算出正确的输出,把变量保持在设定值上。

(4)数据处理

 在机械加工中,出现了把支持顺序控制的PLC和计算机数值控制(CNC)设备紧密结合的趋向。

著名的日本FANUC公司推出的Systen10、11、12系列,已将CNC控制功能作为PLC的一部分。

为了实现PLC和CNC设备之间内部数据自由传递,该公司采用了窗口软件。

通过窗口软件,用户可以独自编程,由PLC送至CNC设备使用。

美国GE公司的CNC设备新机种也同样使用了具有数据处理的PLC。

预计今后几年CNC系统将变成以PLC为主体的控制和管理系统。

(5)通信和联网 

为了适应国外近几年来兴起的工厂自动化(FA)系统、柔性制造系统(FMS)及集散控制系统(DCS)等发展的需要,必须发展PLC之间,PLC和上级计算机之间的通信功能。

作为实时控制系统,不仅PLC数据通信速率要求高,而且要考虑出现停电故障时的对策。

 

第二章PLC控制系统设计

2.1设计任务和内容

任务:

设计一个能够控制十二盏交通信号灯的模拟系统。

并且要求交通信号灯按照交通规则的模试来运行。

实验通过控制六个交通灯就好了。

内容:

因为本课程设计是交通灯的单片机控制设计,所以要了解实际交通灯的变化情况和规律。

假设一个十字路口为东西南北走向。

然后转状态1南北红灯,东西绿灯通车。

过一段时间转状态2东西绿灯灭,黄灯闪烁几次,南北仍然红灯。

再转状态3,南北绿灯通车,东西红灯。

过一段时间转状态4,南北绿灯灭,闪几次黄灯,东西仍然红灯。

最后循环至状态1

2.2控制系统设计概要

我们在学习了PLC的大量的相关知识后,要能够把其运用在实际训练当中。

当然要设计经济、可靠、简洁的PLC控制系统,需要丰富的专业知识和实际的工作经验。

一、PLC控制系统设计的基本原则

1)最大限度地满足被控对象的控制要求。

2)保证控制系统的高可靠、安全。

3)满足上面条件的前提下,力求使控制系统简单、经济、实用和维修方便。

4)选择PLC时,要考虑生产和工艺改进所需的余量。

二、PLC控制系统设计的基本内容

1)选择合适的用户输入设备、输出设备以及输出设备驱动的控制对象。

2)分配I/O,设计电气接线图,考虑安全措施。

3)选择适合系统的PLC.

4)设计程序

5)调试程序,一个是模拟调试,一个是联机调试。

6)设计控制柜,编写系统交付使用的技术文件,说明书、电气图、电气元件明细表。

7)验收、交付使用。

二、PLC控制系统设计的一般步骤

三、PLC控制系统设计的一般步骤

1.流程图功能说明

1)分析生产工艺过程。

2)根据控制要求确定所需的用户输入、输出设备,分配I/O。

3)选择PLC。

4)设计PLC接线图以及电气施工图。

5)程序设计和控制柜接线施工。

2.PLC程序设计的步骤

1)对于复杂的控制系统,最好绘制编程流程图,相当于设计思路。

2)设计梯形图。

3)程序输入PLC模拟调试,修改,直到满足要求为止。

4)现场施工完毕后进行联机调试,直至可靠地满足控制要求。

5)编写技术文件

6)交付使用。

第三章交通灯系统的设计

3.1交通系统的发展趋势

交通系统未来的发展趋势就是要提高通行能力,加强环境保护,开展智能化运输和环保专项技术的研究,并且要做到以人为本,重点开展交通安全技术的研究,在这个过程中要确定经济合理的目标,促进新材料的广泛应用和开发。

3.2选择VHDL硬件描述语言设计的优势

首先,简单地介绍一下什么是VHDL硬件描述语言。

VHDL的英文全称是VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage。

是EDA设计中使用最多的语言之一,它具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大地简化了硬件设计任务,提高了设计效率和可靠性。

其次,这次设计选用VHDL硬件描述语言的优势就在于传统的用原理图设计电路的方法具有直观形象的优点,但如果所设计系统的规模比较大,或者设计软件不能提供设计者所需的库单元时,这种方法就显得很受限制了。

而且用原理图表示的设计,通用性、可移植性也比较弱,所以在现代的设计中,越来越多地采用了基于硬件描述语言的设计方式。

利用硬件描述语言来设计电路,使探测各种设计方案变成一件很容易的事,因为只需要对描述语言进行修改,这比更改电路原理图要容易实现得多。

3.3红绿灯交通信号系统功能描述

在交通信号灯的设计中,外部硬件电路方面主要包括:

两组红绿灯、两组LED显示器(见图1)。

软件方面包括:

(1)电路合成模块的概念:

将交通灯信号系统划分成若干个小电路,编写每一个模块的VHDL程序代码,并将各个小电路相连接。

这样可以增加程序的调试速度,同时也能够将工作细分,以提高编程速度(见图2、图3)。

(2)参数化的概念:

针对不同时段的交通流量,可以调整红绿灯电路(增加或者减少电路的计数时间),以增加程序的灵活性。

图1十字路口示意图

由交通信号灯系统结构图(见图2)可知,该系统由4个子电路组成。

其中包括:

(1)时钟发生电路;

(2)计数秒数选择电路;

(3)倒计时控制电路;

(4)红绿灯信号控制电路。

图2交通信号灯系统结构图

从图3可以看出系统大体的工作程序是:

首先由时钟发生电路产生稳定的时钟信号,为下面三个子电路提供同步工作信号。

接收到时钟信号的红绿灯信号控制电路开始工作,并将产生的重新计数的输出使能控制信号发送给计数秒数选择电路和倒计时控制电路,同时还会将目前电路产生的状态信号发送给前者。

接收到重新计数的信号后计数秒数选择电路就会负责产生计数器所需要的计数值,并将这一数值发送给倒计时控制电路,由它利用发光二极管显示倒计时的状态。

当计数器计时完毕,倒计时控制器就会负责产生一个脉冲信号发送给红绿灯信号控制电路进入下一个状态,之后循环这一过程。

图3交通信号灯系统模块图

3.4红绿灯交通信号系统的VHDL模块

3.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位。

如果想增减信号的位数,只需要改动常数的赋值就可以了。

3.4.2计数秒数选择电路

当通过交通路口时,如果能在一个方向增添一个倒计时显示器对车辆、行人加以提示,可能会有更好的效果。

因此,hld2计数秒数选择电路(见图7)最主要的功能就是负责输出显示器需要的数值(即倒数的秒数值),作为倒计时显示器电路的计数秒数。

 

 

图7计数秒数选择电路模块图

系统输入信号:

clk:

由外部信号发生器提供1kHZ的时钟信号;

reset:

系统内部自复位信号;

ena_scan:

接收由时钟发生电路提供的250Hz的时钟脉冲信号;

recount:

接收由交通灯信号控制电路产生的重新计数的使能控制信号;

sign_state:

接收由交通灯信号控制电路产生的状态信号。

系统输出信号:

load:

负责产生计数器所需要的计数数值。

经仿真后得到的时序图(见图8):

 

图8计数秒数选择电路时序图

由计数描述选择电路的时序图(见图8)可以看出这段程序中定义了在正常车流量情况下,东西及南北方向红灯、黄灯和绿灯需要维持的秒数分别是15s、5s和25s。

architecturebhvofhld2is

constantredew_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。

begin

process(reset,clk)

begin

ifreset='1'then

load<="00000000";

elsif(clk'eventandclk='1')then

if(ena_scan='1'andrecount='1')then

casesign_stateis

when"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,这就使设计减少了很多不必要的麻烦。

3.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)

begin

if(reset='1')then

cnt_ff<="00000000";

led<="0000000000000000000000000";--当reset=1,则将cnt_ff与led清零。

elsif(clk'eventandclk='1')then

ifena_1hz='1'then

if(recount='1')then

cnt_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)is

when0=>led(24downto0)<="1000000000000000000000000";

when1=>led(24downto0)<="1100000000000000000000000";

when2=>led(24downto0)<="1110000000000000000000000";

when3=>led(24downto0)<=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1