《基于PLC的简单抢答器的设计.doc》由会员分享,可在线阅读,更多相关《基于PLC的简单抢答器的设计.doc(17页珍藏版)》请在金锄头文库上搜索。
1、四组抢答器的设计设计要求:设计一个4组抢答器,即有4组选手,一位主持人。主持人有一个开始答题按钮,一个系统复位按钮。如果主持人按下开始答题按钮后,开始计时,时间在数码管上显示,在8秒内仍无选手抢答,则系统超时指示灯亮,此后不能再有选手抢答;若有人抢答,优先抢到者指示灯亮,选手序号在数码管上显示,(不再显示时间)其他选手按钮不起作用。弱主持人未按下开始按钮,有选手抢答,则犯规指示灯亮并闪烁,同时选手序号在数码管上显示,其他选手按钮不起作用。所有各种情况,只要主持人按下复位按钮,系统回到初始状态。抢答器的示意图如下:CPU226第一组第二组第三组第四组犯规指示灯超时指示灯开始按钮复位按钮显示数码管
2、abcgdfe系统整体分析分析设计要求可知,该抢答系统的输入量有4位抢答选手的按钮输入信号,主持人的开始按钮输入信号和复位输入信号。输出量有各个指示灯(共六个)和数码管字段码输出信号。现将I/O分配如下:输入量SB0/I0.0SB1/I0.1SB2/I0.2SB3/I0.3SB4/I0.4SB5/I0.5输出量指示灯HL0.1/Q0.1HL0.2/Q0.2HL0.3/Q0.3HL0.4/Q0.4HL0.5/Q0.5HL0.6/Q0.6数码管a/Q1.0b/Q1.1c/Q1.2d/Q1.3e/Q1.4f/Q1.5g/Q1.6备注:该系统数码管采用共阴数码管。对于该抢答器系统,将之拆分为各个模块,
3、主要有:1.复位与置位模块:该模块可以通过RS触发器来实现。2.倒数计时与显示模块倒数计时功能可以通过定时器实现,系统要求时间为8秒,可以选用T40(单位为100ms)的定时器实现,初值设定为80。倒数计时的显示可以根据时间预设变量来进行计算生成相应的字段码送给SEG显示模块来实现。3.指示灯响应模块该模块包括组号指示灯响应,犯规指示灯响应,超时指示灯响应。可以根据主持人是否按下开始按钮,是否超时,和组员抢答等情况来编写相应的程序。4.组号显示模块该模块根据选手抢答状态,将相应的选手号码转换为字段码送到PLC与数码管相连的输出口,可以通过PLC自带的SEG算法实现,也可以通过MOV指令将相应的
4、字段码发送到输出端,显示相应的组号。是否超时START是否按开始按钮是否有人抢答显示倒数计时相应组号灯亮超时指示灯亮显示相应组号是否按复位键是否有人抢答犯规指示灯亮NYNYNYYNYN系统流程图系统模块联系图复位置位模块倒数计时模块数字显示模块复位复位复位置位置位抢答开关信号倒数变量值抢答开关信号指示灯模块系统原理图备注:以上为用单片机系统对应PLC系统的示意图。对应关系如下:输入量P1.0/I0.0P1.1/I0.1P1.2/I0.2P1.3/I0.3P1.4/I0.4P1.5/I0.5输出量指示灯P1.1/Q0.1P1.2/Q0.2P1.3/Q0.3P1.4/Q0.4P1.5/Q0.5P1
5、.6/Q0.6数码管P3.0/Q1.0P3.1/Q1.1P3.2/Q1.2P3.3/Q1.3P3.4/Q1.4P3.5/Q1.5P3.6/Q1.63系统主要模块介绍1. 复位置位模块:该模块是由网络1与网络8构成。采用RS触发器进行置位和复位功能,在没有人提前抢答的情况下,主持人按下开始按钮,系统被置位;按下复位按钮后,通过网络8对系统复位,复位置位信号由RS触发器体现。2.倒数计时显示模块:11该模块通过网络2和10,在没有任何抢答信号的情况下,由定时器T38变量的值参与计算,首先做16位整数相除的运算,然后用8和得到的结果相减(为了显示倒数计时),再将得到的VW型数据转换为VB型数据送到和
6、数码管SEG相连的输出口QB1,从而显示倒数计时。2. 指示灯响应模块第一部分:该模块分普通抢答响应和犯规响应,以上为抢答响应,在系统被置位后,没有超时的情况下,该模块将对选手的抢答信号做出相应的动作,该模块主要部分采用互锁形式连接,故只对最先抢答的选手做出相应,点亮相应组号的灯。第二部分:该部分是对选手的犯规情况做出相应,是由网络5和7共同完成的:当系统没有置位而有选手抢答时,将在M0.1M0.4中产生犯规信号,从而出发网络7中的犯规指示灯,通过PLC自带的SM0.5特殊寄存位(系统自带时钟脉冲,每0.5s翻转一次)从而时犯规指示灯闪烁。4.选手序号显示模块该模块和倒数计时显示算法有所区别:
7、是通过指示灯响应模块发出的信号,将相应组号数字对应的字段码(共阴数码管)发送到与SEG连接的端口QB1,从而显示组号系统源程序11系统符号表系统工作原理系统的工作按照流程图进行(在任何时候按下复位键,系统均可立即复位),具体过程不再说明,以下把几个重点声明一下:1该系统通过RS触发器实现置位与复位:通过开始按钮SB0(I0.0)置系统为开启状态,并且通过常闭的M0.1M0.4使系统在非法状态下(有选手提前抢答)关闭定时器,保证在此情况下现实犯规组号。该系统通过SB5(I0.5)进行复位。2当系统置位后,在没有选手犯规的情况下(Q0.1Q0.4输出无效电平)且定时器8秒及时没有溢出时,对选手的抢
8、答信号进行响应。3当定时器正常工作时,在8秒内若没有选手抢答, Q0.6输出有效电平,点亮超时指示灯,必须通过复位按钮才能重置系统。若有选手抢答,通过SEG模块在数码管上现实相应的组号,即当选手抢答时,相应的SEG显示模块处于使能有效状态,此时将相应的组号数字转换为字段码送到SEG模块显示组号。当选手犯规时,显示组号的原理与此相同。4若选手犯规,点亮犯规指示灯,并通过SM0.5闪烁显示。此时必须按复位键复位系统。通过SB5(I0.5)(网络8)使PLC的寄存器(M0.1M0.4)以及输出口(Q0.1Q0.6;Q1.0Q1.6)恢复到初始状态。6在显示倒数计时的过程中,当选手抢答时,程序应无条件
9、跳转(通过网络9和11),否则Q1.0Q1.6中的内容将与SEG输出数据冲突,无法正常显示倒数计时或组号。、实践总结本次课程设计与抢答器相关,其中应用到西门子S7 200系列PLC的基本指令:常开触点,常闭触点,SEG显示,数据传送,置位,复位等。是一个综合性较强的设计项目。本次课程设计的内容比较简单,参考了一下书上的源程序后,发现有两处小错误:1.设计要求在有选手犯规的情况下,犯规灯闪烁。而书上的参考程序是在超时的情况下让超时灯闪烁。2.计时的8秒书上只有7秒,只显示17秒,应显示07秒。此外参考程序实现即时显示功能的算法过于繁琐,因此我加以改进。此外,计时功能书上是正数的,我是实现的倒数计
10、时,更符合实际情况。在设计的过程中,闪烁这个问题比较有意思。之前我有4种算法:1.利用两个交替工作的定时器实现闪烁功能。2.利用一个定时器和一个T触发器实现功能。3.利用系统自带的SM0.5时钟脉冲实现功能。4.利用定时器中断实现该功能。最后我选用了最为方便的系统时钟脉冲功能实现指示灯的闪烁。同时也发现S7 200系列的PLC内部不支持T触发器。在设计结束后再来考虑这个问题可以发现,用梯形图设计程序虽然简单直观,但是修改起来比较麻烦。比如要设计一个八位抢答器,那么要在原来的基础上进行很大的改动。和C语言等其他的高级语言相比,有很多局限性。另外西门子S7 200系列的PLC没有与其对口的仿真软件,这对调试程序带来很多不必要的麻烦,也难怪它是入门级的产品。想要更好的应用西门子PLC,那必须转向其高端产品,否则遇到更大的项目或工程,用200系列来完成显然是不现实的。此外PLC广泛应用于工控领域,已经逐渐走向统一,因此梯形图确实是一种优秀的编程语言,很容易入门,在工控方面得到广泛的应用。