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