近代无线电实验蒋云莺063007200732008-2009第二学期复旦大学电子工程系电子信息科学与技术专业1用PLC实现交通灯实验报告一.实验目的:1.掌握可编程序控制器的使用、编程及调试。2.了解可编程序控制器逻辑控制的设计方法。3.熟悉可编程序控制器系统设计的方法。4.了解西门子公司S7-2XX可编程序控制器的使用特点。二.实验基本要求:(此为书上要求,实际有改进,见后分析)1.交通信号灯分车行和人行两种。车行信号灯有红黄绿3色,只有直行方向,不考虑转弯方向;人行信号灯有红绿两色,同样只有直行方向,不考虑转弯。2.信号灯东西向、南北向应保持同步。即:车行信号灯东西向有两组信号灯,分别指示东向、西向汽车,红黄绿显示应一致;车行信号灯南北向有两组信号灯,分别指示南向、北向汽车,红黄绿显示应一致;人行信号灯东西向有两组信号灯,分别指示东向、西向行人,红绿显示应一致;人行信号灯南北向有两组信号灯,分别指示南向、北向行人,红绿显示应一致。3.东西向、南北向信号灯绝对不能同时显示绿色。4.信号灯有自动和手动两种工作方式,可方便切换。5.自动情况下,分别设有东西方向和南北方向的强制通行按钮;当强通按钮按下时,对方绿灯立即开始闪烁并进入正常的换灯过程若强行按下方向与绿灯方向一致,则延长。6.初始时,所有信号灯必须全部为红色。近代无线电实验蒋云莺063007200732008-2009第二学期复旦大学电子工程系电子信息科学与技术专业2112110K0K1K2K3K4北西南东车行人行J1J2三.最终设计方案:(具体实现的三个版本均有详细设计思路附在最后)实现功能:1.按下K0(I0.0),实现自动方式:初始状态:T0:东西车红,南北车红(4S)正常状态:T1:东西车红、黄灯亮(4S)——人行车红T2:东西车绿(10S)——人行车绿T3:东西车绿闪(4S)——人行车绿东西车黄(4S)——人行车绿以上情况下,南北车及人行均保持红T4:南北车红、黄灯亮(4S)——人行车红T5:南北车绿(10S)——人行车绿T6:南北车绿闪(4S)——人行车绿南北车黄(4S)——人行车绿以上情况下,东西车及人行均保持红项目状态东西向南北向车行人行车行人行绿红黄绿红绿红黄绿红接线Q0.0Q0.4Q1.0Q0.1Q0.5Q0.2Q0.6Q1.1Q0.3Q0.7S0.0T0RSRRSRSRRSS0.1T1RSSRSRSRRSS0.2T2SRRSRRSRRSS0.3T3S/RRRS/RRRSRRSRS0.4T4RSRRSRSSRSS0.5T5RSRRSSRRSRS0.6T6RSRRSS/RRRS/RRRS1.2T7RR/SRRRRRR/SRR特点:1.初始状态T0下,东西及南北方向均为红灯,以后状态的循环将跳过T0。2.各路车行灯,从红灯变到绿灯时,有一个状态T1和T4为红灯及黄灯同时亮;但从绿灯变到红灯时,直接转换到红灯,没有过渡状态黄灯、红灯均亮。(实验开始时这样设计的,但不符合实际情况,所以改之)3.在绿灯闪烁交换到红灯时,车行比人行先转换到红灯,见T3和T6。近代无线电实验蒋云莺063007200732008-2009第二学期复旦大学电子工程系电子信息科学与技术专业32.T1\T2状态或T4\T5状态时(即非闪烁状态)时可以按下K4,即进入备用模式S1.2:备用模式下东西、南北车行黄灯均为闪烁状态,其他灯均为红。设置该状态的意义:在夜间时,可能车辆较少,这时允许某一方向的行人或司机自动转换灯信号;或者在紧急突发事故时,暂时停用交通灯,有交警直接指挥维持秩序。3.T2或T5状态(即两路灯均在稳定绿或红状态时)可以允许按下K2或K3,采取东西强制或南北强制:(S1.0及S1.1状态)1.若一方处于红灯状态,而另一方处于绿灯状态,此时若按下红灯方向强制键,则绿灯另一方将立刻进入闪烁状态,并按正常情况进入红灯交换。相当于提前进行到下一个状态。2.若按下强制键的一方就是当前绿灯的一方,则该方的绿灯状态时间将会延长。注意点:若强制某方向通行过程中,又按下了相反方向的强通键,则当前方向若已为绿灯,则取消原本应该的延时,直接跳到后一转换过程;若该方向已经进入转换状态,则没有影响(因为此时规定不可按下任何强通键)。连线方式及控制:内容东西向南北向控制Q0.4Q1.0Q0.0Q0.5Q0.1Q0.6Q1.1Q0.2Q0.7Q0.3意义LEW车红EW车黄EW车绿EW人红EW人绿SN车红SN车黄SN车绿SN人红SN人绿L控制板上排+24VEW0EW1EW2EW3EW4SN0SN1SN2SN3SN4+24V控制板下排GNDGNDGNDK1K2K3K4K024V24V意义MMM手动EW强制SN强制夜间自动LL控制I0.1I0.2I0.3I0.4I0.0近代无线电实验蒋云莺063007200732008-2009第二学期复旦大学电子工程系电子信息科学与技术专业4四.实验进度安排及实际进展和出现的问题:周次内容准备结果前期准备确定第二个实验使用PLC进行交通灯借阅相关书籍,学习PLC的使用方法使用PLC交通灯实验的原因如下:3.上学期学习了VHDL语言,期末时的一个Project我选择了交通灯实验,所以对于交通灯的实现要求比较熟悉,另外也想尝试以下用不同的方法对同一个问题进行实验,这样能够更好地让自己融会贯通。4.同时,实际上也考虑到了交通灯相对而言可能在剩下的几周之内可以实现起来比较容易,原本打算用PLC进行直流电动机实验,但最后还是选择了这个。如何选择PLC中的具体实现方式:1.在具体研究了PLC后,发现可以用几种方式实现,其中最常用的就是STL语言或是梯形图。考虑到交通灯是一个逻辑性较强,实现起来又相对不会很复杂,所以要最终选择用梯形图来实现(之前了解到有同学做温控时就是用STL语言的,程序相对会较长,这个应该根据不同实验而定)。2.之前选修过电工实验这门课,课堂上有过使用梯形图的Project,所以上手应该比较快,学习起来也不会太难。参考书籍:1.从网上相关论坛下载了实验软件STEP7的使用手册S7-200:其中不仅有一些软件的具体使用方式说明,还有梯形图逻辑实现的例子来详细说明,十分有帮助。2.《PLC分析与设计应用》电子工业出版社3.《PLC控制系统编程与实现》北京邮电大学出版社4.《可编程控制器原理及应用——上册》机械工业出版社5.《西门子PLC与工业控制网络应用》电子工业出版社6.《PLC使用技术》第14周第一版本实现方式的设计花了一天的时间,初步设计了梯形图,并标明了每一个图对应的情况所设计的版本一的实现功能:(具体程序附在最后,手绘版本1)自动模式,手动模式,东西和南北强制模式。实际实验结果:1.自动模式下,东西、南北轮流交换灯,满足设计要求;2.东西强制情况,不正常,表现为:何时按下强制开关会会影响灯的转换,比如:东西常绿时,按下南北强制,南北从红灯到黄灯闪,再到绿灯过程中混乱,在几次修改中要么出现几灯同时亮不满足实际情况,要么中间间断几秒再跳动。******分析问题所在原因:初次的设计感觉由于是从头开始设计,所以想得比较混乱,强制部分都是后来加到程序中的,体现在第2页step11-22,可以看到这种方式本身就很绕,搞到现场调试时自己甚至都会想不清楚。所以决定下节课之前,重新把设计的程序再理一遍思路,重新设计一遍。近代无线电实验蒋云莺063007200732008-2009第二学期复旦大学电子工程系电子信息科学与技术专业5遇到的其他问题:值得提出的是,这次实验之前寝室装的程序由于版本过高,结果到到实验室后发现用的时低版本,由于软件只能向前兼容,所以幸好事先有同学提醒,后来拷了一个较低版本重装了下。第15周第二版本实现方式的设计由于前一个版本的设计思路过于混乱,这次重新设计了一个所设计的版本二的实现功能:(具体程序附在最后,手绘版本2)自动模式,手动模式,东西和南北强制模式。实际实验结果:1.依然是东西南北强制通行出问题2.虽然换了种不同方式重新编了程序,但是结果还是很让人失望,依然是到了现场感觉无论怎样调试程序,就是改动了几个地方使东西强制正确了,南北强制就不正确了。*********分析问题所在:虽然花了很多时间不断地改动研究程序,但是前两个版本总的来说都有这样一个缺陷,逻辑思路上不够清晰,甚至有些混论。后来找了下以前用VHDL实现的程序,突然发现自己的最大问题在于实际上没有很好地去用状态机来实现交通灯,虽然之前设计实验时就已经考虑了几个状态,但是在程序中并没有任何实际的应用,所以设计思路难免会跳跃性大,想到哪里就编到哪里,于是决定下一次要清晰地用状态机方式来实现。第16周第三版本实现方式的设计运用状态机的思想,同时再次参阅书籍使用了PLC中梯形语言中不同的一些特殊寄存器等,从完全不同于前面两个版本,更清晰的思路来设计程序实现功能:参见之前的终结版设计。该版本较之于之前两个版本的改进之处:1.采取状态法,思路清晰;2.增加了手动功能、备用状态灯;3.输出状态采取了置位及复位的方式,使输出波形稳定;同时很重要的一点时,适当地对各路灯的排列方式,可以连续置位或复位,十分方便。具体为:Q0.0-Q0.3:东西绿灯(车行、人行)及南北绿灯(车行、人行)Q0.4-Q0.7:东西红灯(车行、人行)及南北红灯(车行、人行)4.实验中运用到了特殊寄存器:SM0.1:首次扫描置1,用于初始化SM0.0:始终为1,用于各个状态其实SM0.5:用于产生闪烁(十分巧妙)近代无线电实验蒋云莺063007200732008-2009第二学期复旦大学电子工程系电子信息科学与技术专业6实验实现用到了特殊寄存器:近代无线电实验蒋云莺063007200732008-2009第二学期复旦大学电子工程系电子信息科学与技术专业7五.实验感悟:这次实验中,虽然次数不多,实验相较于前面一次,学到的东西却觉得更多。1.由于每次实验前都几乎要花1天多的实验来设计方案,理清思路,所以每次实验前都有明确的目的,到了现场基本都是在做调试、验证工作,抓紧了每一分每一秒;2.这次实验通过自己的不断修改,亲眼看到自己从最初十分拙劣的设计版本慢慢到最后较为完善的设计最终版本,感觉十分有成就感,所以当老师问我现在对这个实验了解程度怎么样时,我退口而出“十分了解”。因为我觉得可以很肯定地说现在自己对于PLC的梯形图使用,程序设计逻辑灯都十分了然于心。3.老师在最后验收时,问我,做了PIC和PLC之后,感觉他们之间最大的区别在哪里。却一下子有点不知道该怎么回答了,感觉PIC光是程序,就向汇编语言,十分复杂,再加上现场软件的问题,搞得自己连续几节课真的是很失落;但是PLC感觉就很直观,逻辑性十分清晰,上手也十分快。结果老师告诉了我他的看法,听了之后我就频频点头,因为老师说的就好像一下子把最关键的东西给说白了:PIC是种类似汇编语言的语言,所以其实在编写时就好像整个CPU都暴露在外面,你在编写程序时甚至可以改变最底层、最基本的东西;而PLC实际上在编写时,之所与感觉十分有逻辑性,是因为它是在编写数据进去,并且它是顺序执行的,而PIC的语言则时并行的。4.在实验中,有一次老师跑到我的位子旁边,看到我正拿着工具将线插入到板子里,就问我有哪里不对劲吗?我当时就脸红了,因为自己拿着镊子在做这件事,可是很可笑的是自己却理直气壮地对老师说,我们没有螺丝刀。结果老师让我把抽屉里的工具箱打开,果然黄色的螺丝刀就安静地躺在那里,当时自己就脸红了。同时老师还指出,箱子里的线、工具这类的都横七竖八地乱糟糟,这下自己更是不好意思了。更要命的是,老师进一步指出自己最大的问题在于竟然在没关电源的情况下,正在连线。虽然这只是实验中的一次小插曲,但是却真的很谢谢老师,因为让自己看到了粗心大意的自己,其实也让自己性急的毛病再一次暴露了出来。记得以前做实验时,有一次也被王勇老师指出过类似的问题,所以这次自己更加感到自己真的要改掉这些细节方面的小问题。所以,之后每次做实验时,我都会先查看开关有没有关掉,每次做完实验后也都把器材好好地放好,我想只有通过养成良好的实验