并不是所有PLC题目都值得花心思去讲,但八人抢答器这套题是个例外。它功能不多、逻辑不复杂,却能一次性覆盖PLC课设/毕设里最核心的几块内容:输入信号采集、互锁与优先级、定时器应用、状态复位、上位机或触摸屏显示。换句话说,做完这一题,你在毕业答辩上能讲的东西就有了一个完整的闭环。我最近正好把这套基于S7-1200的八人抢答器整体做了一遍,从硬件选型、I/O分配、梯形图设计到调试踩坑、报告组织,前前后后跑通了一整套流程。这篇就把我的实际做法和思路上一次讲完,给正在做这题、或者准备拿它当课设/毕设题目的同学一个可以直接照抄的参考。
现在网上搜“八人抢答器 PLC S7-1200”,出来的资源非常多,配套的还有设计源文件、万字设计报告、讲解视频这些。你拿到一套这样的资料,第一件事不是急着打开程序看,而是先把这套题“要解决什么问题”想明白,否则你会被一摞文件带偏,不知道自己该从哪一步开始。
1. 题目定位:八人抢答器在PLC课设/毕设里的生态位
1.1 为什么每个自动化专业都绕不开抢答器
说到底,抢答器是一个“多输入、单输出锁定、按时间顺序裁决”的典型逻辑系统。它模拟的是真实赛场上“主持人发令、多位选手抢答、系统判定谁先按下”这一过程。放在PLC课程设计里,它考察的核心能力是:能不能把现实世界的一个小小规则,翻译成扫描周期内的逻辑判断。
八个选手对应八个输入信号,谁先按下、谁后按下,PLC必须给出唯一结果;按下之后还要锁存,不能让其他人覆盖;同时还要倒计时、要复位、要显示。这些功能刚好对应输入继电器、置位复位指令、定时器、计数器、辅助继电器这些PLC最基础的编程元件。老师爱出这题,不是因为它难,而是因为它“考点齐全”,一张评分表能打满。
1.2 选S7-1200而不是更便宜的200Smart
很多同学一上来会问:为什么非要S7-1200?西门子200Smart不是更便宜吗?三菱FX3U不就够了吗?我的回答很简单:如果你是为了把逻辑跑通,200Smart确实够;但如果你要的是“做完之后能讲清楚、资料好查、仿真方便、答辩有档次”,S7-1200是更合适的选择。
- 编程环境:S7-1200用TIA Portal(博途),一个软件里完成PLC程序、HMI组态、仿真调试,截图导出非常方便,写报告时不愁没图。
- 网络调试:自带以太网口,一根网线直连电脑就能下载程序,比200Smart的串口或者USB-PPI转接头省事太多,尤其适合笔记本用户。
- 仿真能力:博途自带PLCSIM,可以在没有硬件的情况下模拟整个抢答过程,课设阶段即使硬件没到货也能先写程序。
- 扩展性:后期想加触摸屏(KTP系列)、加模拟量、做OPC UA通信,S7-1200都能撑住,200Smart想扩展触摸屏就麻烦一些。
三菱FX3U在同级别里逻辑处理很强,但如果你学校导师熟悉西门子、或者你后续工作可能接触西门子产线,提前上手博途的收益远大于那几百块差价。当然,如果你手头已经有200Smart实验箱,用200Smart做这个题也完全可行,逻辑是通用的,只是这篇里我讲的硬件组态和变量表是S7-1200视角。
1.3 一套标准交付物该包含哪些东西
这题在各类平台上配套的完整资料,一般包括四样东西:设计源文件、万字设计报告、讲解视频或PPT、相关定制服务。我拿到手的这套就是这种结构,实际操作下来,这四块的配合比想象中重要:
- 设计源文件:通常是TIA Portal的项目文件(后缀.ap14、.ap15、.ap16、.ap17等),里面包含了PLC程序、变量表、硬件组态,有的还带触摸屏画面。注意博途版本兼容问题——V17打开不了低版本V14的项目时,需要先进行“项目升级”操作。
- 万字设计报告:重点不是字数,而是章节逻辑。后面的第6章我会详细拆报告结构。
- 讲解视频:一般会把抢答逻辑从头到尾过一遍,重点看它怎么解释互锁和定时器,这部分比报告更直观。
- 定制服务:比如把8人改6人、改成抢答+计分、加违规判定、换触摸屏显示。这些改动方向其实就是你答辩时的“创新点”。
2. 硬件配置与I/O规划:动手编程前先把接线表列明白
2.1 最稳的硬件清单(基础版和触摸屏版)
我做这套系统时用的配置是基础版+触摸屏进阶版两条线,先列清单:
| 元器件 | 型号/规格 | 数量 | 说明 |
|---|---|---|---|
| CPU模块 | S7-1200 CPU 1214C DC/DC/DC | 1 | 板载14DI/10DO/2AI,满足需求 |
| 24V开关电源 | 60W/2.5A | 1 | 给PLC、按钮、指示灯供电 |
| 选手按钮 | 自复位常开按钮(绿色) | 8 | 每位选手一个 |
| 主持人按钮 | 自复位常开按钮(红色) | 1 | 主持人启动/复位使用 |
| 指示灯 | 24V绿色指示灯 | 8 | 对应八位选手抢答成功显示 |
| 蜂鸣器 | 24V有源蜂鸣器 | 1 | 抢答成功/超时提示 |
| 触摸屏(可选) | KTP400 Basic Mono PN | 1 | 显示倒计时、抢答号码、违规信息 |
| 网线 | 工业以太网线 | 1 | PLC与电脑或触摸屏通信 |
| 按钮盒 | 塑料接线盒/散件 | 若干 | 装按钮和指示灯,现场更规范 |
基础版利用CPU 1214C板载的14个数字量输入和10个数字量输出就够了:输入用8个选手按钮加1个主持人按钮,输出用8个选手指示灯加1个蜂鸣器。全程不需要额外购买数字量扩展模块烟囱,这样硬件价格能被压下来。如果你手边是CPU 1211C这种只有6输入/4输出的型号,那就必须加一块SM1223(8DI/8DO),成本会上去一些,但整体逻辑不变。
2.2 I/O分配表
I/O分配是整个设计的“地基”,写报告时这张表要做得规整、能和接线图一一对应。我用的分配如下:
| 类别 | 地址 | 符号名 | 功能说明 |
|---|---|---|---|
| 数字量输入 | I0.0 | Player1_Button | 选手1抢答按钮(常开) |
| 数字量输入 | I0.1 | Player2_Button | 选手2抢答按钮(常开) |
| 数字量输入 | I0.2 | Player3_Button | 选手3抢答按钮(常开) |
| 数字量输入 | I0.3 | Player4_Button | 选手4抢答按钮(常开) |
| 数字量输入 | I0.4 | Player5_Button | 选手5抢答按钮(常开) |
| 数字量输入 | I0.5 | Player6_Button | 选手6抢答按钮(常开) |
| 数字量输入 | I0.6 | Player7_Button | 选手7抢答按钮(常开) |
| 数字量输入 | I0.7 | Player8_Button | 选手8抢答按钮(常开) |
| 数字量输入 | I1.0 | Host_Button | 主持人“开始/复位”按钮(常开) |
| 数字量输出 | Q0.0~Q0.7 | Player1_Light~Player8_Light | 8位选手对应指示灯 |
| 数字量输出 | Q1.0 | Buzzer | 蜂鸣器,抢答成功或超时时动作 |
| 数字量输出 | Q1.1 | Timeout_Light | 超时(无人抢答)指示灯,可选 |
如果加了触摸屏,倒计时数字和选手编号就不需要通过PLC输出驱动数码管,直接在触摸屏上显示。这让硬件回路大大简化,也是很多现代课设的推荐方式——用屏代替一大片指示灯和数码管接线。
2.3 接线方式与供电细节
S7-1200的数字量输入端默认按源型输入接线,也就是按钮一端接24V正极,另一端接到PLC输入端子(比如I0.0),公共端接M。对自复位按钮来说,按下瞬间输入点收到24V信号,PLC内部就置1了。不需要额外接上拉电阻,按钮本身就是机械开关。
24V电源分配时注意几个细节:
- CPU模块上的L+和M分别接开关电源的+和-,同时还要给各按钮的公共端供电。常见的错误是只给PLC供电、忘了给按钮引24V,结果程序下载进去半天不动作。接线图上最好把电源的“主路-支路”关系画清楚。
- 指示灯和蜂鸣器属于感性或阻性负载,如果蜂鸣器电流较大,建议不要直接从CPU输出端子取电到外部负载后不加保护,尽量在输出回路并联一个续流二极管(对于直流感性负载)或采用中间继电器过渡。课设级别的24V蜂鸣器问题不大,但养成这个习惯能避免输出点烧坏。
- 电源容量上,CPU 1214C本身功耗约十几瓦,加上按钮指示灯和蜂鸣器,60W开关电源绰绰有余。如果你后面加触摸屏,建议把屏单独从电源取电,避免启动瞬间电压跌落导致PLC重启。
3. 控制逻辑拆解:抢答锁存、互锁、倒计时、违规判定的先后关系
3.1 总功能需求
一套标准的八人抢答器,运行规则通常是这样的:
- 主持人按下“开始”按钮后,倒计时开始,比如30秒,系统进入抢答允许状态。
- 八位选手任意一位按下按钮,系统立刻锁定该选手编号,对应指示灯点亮,蜂鸣器响一下,倒计时停止。
- 其他选手再按无效,系统处于“已抢答锁定”状态。
- 如果倒计时结束仍无人抢答,系统判定超时,超时指示灯亮,蜂鸣器持续或间断报警。
- 主持人再次按下复位按钮,系统回到初始状态,所有锁存、倒计时、指示灯全部清零。
这几个功能不是互相孤立的,它们之间有关键的前后制约关系。在写程序之前,我建议先把它们理成一张“状态-动作-条件”表:
| 当前状态 | 触发条件 | 执行动作 | 进入状态 |
|---|---|---|---|
| 空闲 | 主持人按下开始 | 启动倒计时、允许抢答 | 抢答中 |
| 抢答中 | 某选手按钮有信号 | 锁存编号、点亮指示灯、蜂鸣器短鸣 | 已抢答 |
| 抢答中 | 倒计时到0仍无信号 | 超时灯亮、蜂鸣器报警 | 超时 |
| 已抢答/超时 | 主持人按下复位 | 全部输出复位、倒计时清零 | 空闲 |
这张表会直接映射到你后面梯形图的网络划分,不要把状态和动作混在同一个网络里,否则调试的时候改一处牵全身。
3.2 抢答锁存与优先判定的原理
抢答锁存的核心是一句:谁先合入,谁独享系统。
PLC是循环扫描运行的,CPU在一个扫描周期里会从上到下、从左到右执行程序中的每个网络。因此“同时按下”这个概念在PLC看来并不存在绝对的“同时”——它在同一扫描周期内会先扫描到排在前面的网络。利用这一机制,最简单的锁存方案就是:在选手1的网络里判断“如果选手1按钮按下,且系统当前没有其他选手抢答成功”,就置位输出;而选手2的网络排在选手1后面,同样判断“系统没有其他选手抢答成功”。一旦选手1的网络抢先置位了“抢答完成标志”,选手2以后所有网络条件不成立,自然就实现了互锁。
这里有两个关键点容易被初学者忽略:
- 必须使用置位指令(S)而不是输出线圈(=)。因为“锁定”意味着即使按钮松开了,输出状态仍然保持。如果用的是输出线圈,按钮一松指示灯就灭了,根本不符合抢答器的要求。
- “抢答完成标志”是排他锁存的核心。这个标志不需要单独按钮复位,而是由主持人复位按钮统一清零。否则会出现“一局抢答完,下一局就无法重新开始”的情况。
3.3 主持人信号与违规判定
有经验的老师会追问一个问题:如果选手在主持人喊“开始”之前就按下按钮,系统怎么处理?
最简单的处理方法是把“允许抢答”做成一个软继电器,用主持人按钮来置位。具体做法是:系统上电后,即使选手按钮被按,程序也不响应;主持人按下开始按钮的上升沿,把M位“抢答使能”置位,这时选手按钮信号才进入判别逻辑。反过来,如果选手按钮在“抢答使能”为0时就已经被按下,我们可以在复位逻辑里加一个“违规记录”网络——检测到在非允许状态下有按钮输入时,把对应的违规标志置位,触摸屏上提示“选手X提前抢答”。
不过这里有个实际经验要分享:对于课设级别的抢答器,很多题目并不要求违规判定,强行加进去反而会把主逻辑搞复杂。如果你是买了现成源文件再做修改,建议先在基本功能跑通之后再考虑加违规检测,不要一上来就堆功能。
3.4 倒计时的两种实现思路
倒计时是这题里比较容易让人卡壳的地方。S7-1200在博途里有两类定时器:TONR(累计型)和TON等。计算倒计时有两条路,我建议看你的实际场景选:
思路A:用1秒脉冲+递减计数。先用TONR产生一个周期为1秒的脉冲,再用这个脉冲的上升沿触发计数器做递减。这种方法贴近传统PLC的设计思路,报告里也好画时序图。
思路B:用系统时间或定时中断。在OB30(循环中断组织块)里每隔1秒执行一次“倒计时变量自减”,并读取系统运行时间保证精度。这种方法更“现代”,但涉及组织块的概念,对初学者来说有点超出课设范围。
如果只是为了交作业,我推荐思路A,稳定、直观、答辩时讲起来条理清楚。但如果你想让代码更“职业化”,可以把倒计时变量改成独立功能块FB,内部用定时中断驱动,后续复用起来很方便。
这里还要提醒一个细节:倒计时的初值不要写死在程序里,应该定义成一个变量(比如MW10),这样老师如果要改成15秒或60秒,直接在变量监控表里改一个值就行,不用动逻辑。别小看这个设计,答辩时你会感谢自己当初没写死。
4. TIA Portal编程落地:梯形图的网络顺序就是优先级
4.1 变量表设计
打开博途创建S7-1200项目后,第一步不是画梯形图,而是把变量表新建好。在PLC变量表里,系统自动包含I0.0等输入输出地址,建议把那些默认的“I0.0”改成上节表格里的符号名,例如“Player1_Button”“Host_Button”。这样后面写梯形图时,你看到的不是裸地址而是一目了然的符号名,调试和截图写报告都会舒服很多。
内部变量方面,我建议至少规划这几个:
| 变量名 | 地址/数据类型 | 作用 |
|---|---|---|
| AnswerEnable | M0.0,Bool | 抢答使能,主持人启动后置位 |
| AnswerDone | M1.0,Bool | 抢答完成标志,排他锁存核心 |
| WinnerNumber | MB2,Int | 当前抢答成功的选手编号(1-8,0表示无) |
| CountdownValue | MW10,Int | 当前倒计时秒数 |
| CountdownInitial | MW12,Int | 倒计时初值(默认30) |
| SecondPulse | M20.0,Bool | 1秒脉冲信号 |
| TimeoutFlag | M21.0,Bool | 超时标志 |
注意M区地址别和系统功能重叠,避免用MB0、MB1这些特别靠前的字节,尤其是要和系统时钟等特殊寄存器避开。实际做的时候可以把这些变量集中放在M0.0开始的位置,但是避开CPU特殊功能保留区域,具体可在硬件组态的“系统常量”里查看。
4.2 关键网络详解
程序结构上,我建议把抢答控制逻辑放在一个FC(函数)里,主程序OB1里调用这个FC。好处是结构清楚,报告里可以画“程序结构图:OB1调用FC1”,同时以后想改成4人/12人,只需要在这个FC内部增删网络。
FC1内部网络的组织顺序直接影响优先级,顺序如下:
- Network 1~8:八位选手的锁存网络。以选手1为例,条件为“Player1_Button为1且AnswerDone为0且AnswerEnable为1”,动作是置位Q0.0(选手1指示灯)、置位AnswerDone、把1写入WinnerNumber。选手2的Network 2紧跟在后面,条件完全一样,只是换成Player2_Button和Q0.1。由于扫描顺序靠前,排在前面的网络天然拥有更高优先级。
- Network 9:主持人启动。检测Host_Button的上升沿,置位AnswerEnable,并把CountdownInitial装入CountdownValue。
- Network 10:1秒脉冲生成。可以用TONR实现,也可以用一个定时器输出信号配合减法逻辑。比较简单的方式是:定时器T1的PT为1秒,Q端接在一个M位上;利用这个Q在1秒内的ON宽度,配合R_TRIG上升沿,作为递减计数的触发。
- Network 11:倒计时递减。在SecondPulse的上升沿,且AnswerDone为0且CountdownValue大于0时,把CountdownValue减1。
- Network 12:超时判定。当CountdownValue等于0且AnswerDone为0时,说明时间耗尽无人抢答,置位TimeoutFlag并接通超时指示灯。
- Network 13:复位逻辑。用Host_Button的下降沿或者单独一个复位按钮,把所有置位标志清零:AnswerEnable复位、AnswerDone复位、WinnerNumber清0、TimeoutFlag复位、倒计时恢复初值。
这里有个易错点:不要让复位逻辑和启动逻辑共用同一个常开触点加同一个置位/复位组合。如果你用Host_Button同时做“启动”和“复位”,建议按钮双击区分,或者用两个按钮。最直观的做法是主持人按下一次是启动,再按一次是复位;程序里用“AnswerEnable的状态”区分当前处于哪一段。
4.3 用SCL写一份抢占逻辑的参考
如果你不喜欢梯形图,或者报告里想体现“编程思路多元化”,可以在一开始就说明使用SCL语言实现。下面是FC里抢答锁存段的SCL参考:
// FC_RushAnswer 抢答锁存段 IF #AnswerEnable AND NOT #AnswerDone THEN IF "Player1_Button" THEN #AnswerDone := TRUE; #WinnerNumber := 1; "Player1_Light" := TRUE; ELSIF "Player2_Button" THEN #AnswerDone := TRUE; #WinnerNumber := 2; "Player2_Light" := TRUE; ELSIF "Player3_Button" THEN #AnswerDone := TRUE; #WinnerNumber := 3; "Player3_Light" := TRUE; // ... 后面的选手逻辑依次类推 END_IF; END_IF;SCL里的IF ELSIF顺序同样决定了优先权,这和梯形图网络顺序的原理完全一致。用SCL写的好处是逻辑紧凑,尤其适合200字左右的网络说明;坏处是有些老师只认梯形图,建议报告里梯形图和SCL二选一作为主讲解,不要强行混用。
4.4 触摸屏组态要点
进阶版加触摸屏的步骤很简单:在博途项目里添加一个HMI设备(比如KTP400 Basic PN),在“连接”里把HMI和PLC建立S7连接,然后在画面上添加IO域、按钮和指示灯图形。
- IO域:关联MW10(倒计时秒数),显示格式设为十进制,单位“s”。
- 选手状态:用图形列表或“可见性”功能,关联Q0.0~Q0.7,某个选手指示灯输出为1时,对应的圆形图形变为绿色。
- 违规提示:如果加了违规检测,关联违规标志,用全局脚本或简单位状态显示。
- 启动/复位按钮:直接在屏上做按钮,关联Host_Button的软变量或M位。建议仍然保留物理主持人按钮作为“最后保障”,万一屏死机了还能正常比赛。
需要提醒的是:S7-1200和KTP屏的以太网连接在项目里会自动建立,不需要另配交换机(直连即可),但下载顺序要先下PLC再下HMI,不然HMI可能因找不到连接而画面报错。
5. 实测调试与坑:按钮抖动、同时按下、定时器复位的那些事
程序写完不等于系统能稳定运行。我实际调试这套抢答器时,踩了至少四个坑,这里挨个还原整个排查思路。
5.1 输入抖动引起的误触发
问题现象:选手明明只按了一次按钮,指示灯却闪了好几下,甚至出现“选手1被判定后选手2也跟着亮”的情况。
排查过程:我先怀疑接线松动,拿万用表量了每个端子,接线正常;后来又怀疑是蜂鸣器电路干扰,隔离电源后依旧复现;最后打开程序监控表观察输入位的变化,发现按住按钮时I0.0的状态在“0/1”之间连续跳变几十毫秒。这才确定是按钮机械抖动。
修复方案分两级:
- 第一级:在CPU硬件组态里找到“数字量输入”属性,配置“输入滤波器”,把滤波时间从默认的6.4ms调整到12.8ms或20ms。这个参数不是越大越好,太大会让真实按下的有效信号也要等待滤波时间,抢答器的响应会变慢,比赛感觉迟钝。
- 第二级:如果机械抖动特别严重,在程序里用“延时接通定时器”做软件去抖,即按钮信号持续20ms后才视为有效。这就是前面提到“用定时采样+连续N次一致判定”的思路,对现场抗干扰更有效。课设一般做到第一级就够了。
5.2 两个选手几乎同时按下,系统怎么判
这个问题几乎每次答辩必被问到。现象:我和搭档测试时,故意让选手1和选手2同时按下按钮,结果几乎总是选手1胜出。
原因就是前面说的扫描顺序:同一扫描周期内,网络先扫描到选手1,所以选手1先被置位,选手2的网络发现AnswerDone已经是TRUE了,条件不成立。如果两人按下确实发生在同一扫描周期内,优先权完全由网络顺序决定;如果发生在不同扫描周期,则由到达的先后顺序决定。
解决思路:
- 不处理,承认这种“网络顺序优先级”在毫秒级时间差下是公平的,因为人类手指按下按钮的时间差远大于PLC扫描周期。
- 如果怕老师挑刺,可以在报告里给出一组实验数据:连续实验100次,随机模拟两个按钮按下,记录“先按下者获胜”的统计结果,证明判定符合实际规则。这个实验数据比嘴上说更有说服力。
5.3 倒计时出现漂移甚至不走
问题现象:倒计时从30开始,但数到20左右会跳变或某一次不递减;有时又出现复位后再启动,倒计时直接从很小的值开始。
排查过程:先确认1秒脉冲是否稳定。在监控表里观察SecondPulse,发现它ON/OFF次数不稳定;再看定时器T1的剩余时间,发现参考“T1.Q”的方式在扫描周期不固定时,误差会累积。更深层的问题是:使用TONR时,如果定时器没有完全复位,会导致脉冲周期忽长忽短。
修复方案:
- 把定时器的复位逻辑单独做成一个网络,确保每次启动倒计时前,先把TONR复位并把CountdownValue重置为初值,再启动新的定时周期。
- 对精度要求高的场合,改用OB30循环中断组织块。在中断里每1秒执行一次递减,误差只来源于中断周期本身的微抖动,不会随运行时间累积。缺点是中断变量要仔细处理,不能让主程序和中断同时写同一个变量。
这部分的经验就是:别迷信“S7-1200定时器很准”,它准的是定时器本身,而你的递减逻辑如果建立在不稳定的扫描周期上,最终结果就一定会漂。
5.4 用PLCSIM仿真时的注意事项
S7-1200在博途里用PLCSIM做纯软件仿真,基本流程是:在项目里选中PLC,点击“仿真”按钮,软件会拉起PLCSIM,再下载程序,之后就可以在仿真界面里强制输入开关状态。需要注意:
- PLCSIM里没有真实I/O点,必须在PLCSIM的“仿真输入表”里强制I0.0、I0.1等信号,才能看到梯形图里的触点动作。
- 触摸屏联调时,PLCSIM不能直接连真实KTP屏。如果你要在手头没有实体PLC的情况下做HMI联调,得用PLCSIM Advanced配虚拟网卡,折腾程度很高。所以核心建议是:仿真只用来验证程序逻辑,交互显示还是得上实物或者组态软件自带的仿真视图。
6. 万字报告的组织与答辩准备
6.1 报告章节设计
很多同学不知道万字报告怎么写,其实不是字数问题,是结构问题。一套合格的八人抢答器设计报告,我的组织建议如下:
- 第一章 绪论:背景意义,国内外抢答器研究现状,本设计的主要工作内容。
- 第二章 需求分析与总体方案:功能需求、技术指标,提出并对比几个可行方案(继电器方案、单片机方案、PLC方案),得出选择PLC方案的结论。
- 第三章 硬件系统设计:元器件选型、I/O分配表、电气原理图、接线说明、供电设计。
- 第四章 软件系统设计:程序总体结构、控制流程图、每个网络的功能与设计思路、关键程序段说明。
- 第五章 系统调试与结果分析:仿真过程、实际操作结果、遇到的典型问题和解决办法。
- 第六章 总结与展望:设计成果总结,不足与扩展方向。
- 参考文献与附录。
这里最自然的扩写方式是:把第四章做成“网络级”的说明——每一条网络都写清楚“设计目的、实现逻辑、运行流程”三段话,8个选手网络每一条的说明都有共性和差异,这本身就很容易凑出几千字,而且不是废话,是真正能帮助读者理解程序的内容。
6.2 图和时序怎么画
报告里必须有至少三张图:系统总体框图、程序流程图、电气接线图。
- 系统总体框图:可以用矩形框表示“主持人按钮、选手按钮、PLC、指示灯、蜂鸣器、触摸屏”这六块,箭头标出信号流向。
- 程序流程图:用纵向流程图把“开始—复位—设置初始—主持人启动—等待抢答—选手按下?—判定成功/超时—锁定显示—等待复位”画清楚。流程图的每个判定框写清楚条件,比如“CountdownValue=0?”。
- 电气接线图:用CAD或画图工具画出PLC与按钮、指示灯、蜂鸣器的接线关系。网络里下载的源文件一般自带这些图纸,但强烈建议你重新画一遍,因为答辩老师最容易对照图纸提问。
6.3 答辩必问的4个问题
总结我实际被问到的和听别人被问到的问题,最高频的有这四个:
- 为什么选S7-1200而不是单片机/继电器?答:可靠性高、逻辑清晰、扩展方便,符合工业现场应用背景;单片机开发周期长、抗干扰能力弱,继电器方案逻辑复杂且响应慢。
- 八路抢答的互锁是怎么实现的?答:利用置位指令保持状态,引入AnswerDone全局标志,加上梯形图网络顺序保证排除后按的选手。
- 若两个选手完全同时按下,谁赢?答:PLC按扫描顺序先到先得,实际物理按钮同时按下的时间差远大于扫描周期,电阻级的“同时”意味着网络序在前的选手优先,符合竞技规则。
- 倒计时误差主要来自哪里?答:主程序扫描周期波动会影响定时器读取时机,如果对误差敏感,应使用循环中断组织块驱动递减,保证固定采样周期。
这四个问题答明白,基本上分就拿稳了。
如果时间允许,最后再给你一个扩展思路:做完基本八人抢答器后,可以尝试把倒计时初值做成面板可调,或者把“提前抢答”的违规判定和触摸屏联动,做成更有比赛现场感的界面。这些改动都不大,却能让答辩时“创新点”这一栏真正有话可说。比如我就加了“主持人按下启动按钮的同时,若检测到任何选手按钮为1,系统判定该选手违规并在触摸屏上亮出编号”,这个功能很多现成源文件里没有,但实际效果很受老师认可。
我做完这一整套之后最大的体会是:抢答器这种“小题目”恰恰是最能拉开差距的地方。把逻辑理清楚、能讲明白,比堆功能重要得多。希望这篇能帮你把这题做透、写爽、答稳。