简介:这是一份面向机械设计制造及自动化、机电控制等专业本科生的PLC课程设计论文,主题为“大小球分拣系统设计”,完整覆盖了从任务解析到程序调试的全流程。资源共1个doc文档,压缩包约704KB,适合用作课程设计选题论证、PLC梯形图编写和设计说明书撰写的参照模板。文档以沈阳理工大学课程设计为背景,基于西门子S7-200系列PLC,详细给出了PLC选型、I/O端口图、顺序功能图、梯形图及调试说明,并针对手动、回原点、单周期、连续四种工作方式及声光报警、复位等控制要求给出了具体设计方案。目前已有164人学习,可供机电类学生快速掌握大小球分拣系统的设计思路与实现方法。若正面临类似课程设计或需要理解PLC顺序控制程序,这份论文能提供可复用的端子分配、流程状态划分、梯形图设计及排错说明,具有较高的参考价值。
1. PLC大小球分拣系统,到底值不值得选
PLC大小球分拣系统这个题目,几乎是每年工业自动化方向本科论文里最常见的几个选题之一,但恰恰是这种“看起来简单”的题目,最容易让新手在中期翻车。你上网搜一圈就会发现,大量范文停留在“接了一个传感器、写了几段梯形图”的层面,真正能回答“为什么用这个传感器”“阈值怎么定”“程序状态怎么跳”的少之又少。这篇笔记就把我做同类项目时的完整思路拆给你:从硬件选型、检测方案、梯形图状态机设计,到现场最常踩的五个坑,最后给一套能直接照着跑的验证方法。
先说结论:这个题目最大的价值不在“三菱还是西门子”,也不在“PLC本身有多难”,而在于它强迫你打通一条完整链路——传感器怎么把“大小”变成电信号,PLC怎么把信号变成状态,气缸或推杆怎么在正确的时序里把球推进正确的料道。链路一通,论文的核心工作量就完成了七八成。适合的人群也很明确:手里有或能借到基础实验设备(一个PLC主机、几个传感器、一个小传送带)的同学,纯做仿真也可以,但一定要把物理世界的误差考虑进去,否则论文答辩时一问“现场球卡住了怎么办”就会愣住。
2. 从传感器到执行机构:硬件选型与检测边界
2.1 先定检测方案:为什么我推荐“光电开关+限位挡板”而不是视觉
最常见的两套大小球检测方案,一套是视觉识别(摄像头加图像处理),一套是接触式或光电式的机械检测。我的建议很直接:本科论文阶段,优先选光电开关配合限位挡板,而不是视觉。原因有三个:第一,PLC项目考察的核心是逻辑控制和时序,不是图像算法,视觉方案会把论文重心带偏;第二,实验室环境下球的颜色、光泽、背景光线都不稳定,视觉调试成本远高于机械式;第三,答辩时老师最爱问的“你的检测可靠性怎么保证”,用光电开关加机械挡板反而容易讲清楚——物理结构决定了只有直径够大的球才能撞到挡板,这个解释既直观又有说服力。
常见的机械检测形式有两种:一种是让球经过一个高度固定、宽度略大于小球直径的通道,小球直接通过,大球撞到上方的行程开关或光电传感器;另一种是采用斜面加可调节挡板,通过调整挡板高度来改变“通过阈值”。我一般采用后者,因为可调节意味着你不用为每种球径单独做一套机械件,论文里也能多写一小节“阈值调整机构的设计”。
2.2 PLC选型与I/O点估算
以三菱FX系列或西门子S7-200 SMART为例,一套基础的分拣系统涉及的输入输出点大致如下:
| 信号类型 | 元件 | 数量 |
|---|---|---|
| 输入 | 启动按钮、停止按钮、急停 | 3 |
| 输入 | 上料检测光电传感器 | 1 |
| 输入 | 大小球检测传感器或限位开关 | 1 |
| 输入 | 料道满料检测(可选) | 2 |
| 输出 | 传送带电机接触器 | 1 |
| 输出 | 推球气缸电磁阀(大球道) | 1 |
| 输出 | 推球气缸电磁阀(小球道) | 1 |
| 输出 | 指示灯或蜂鸣器 | 2 |
算下来输入约5~7点,输出约5点,一台14点左右的继电器型PLC主机就够用,不需要扩展模块。不要一上来就选带模拟量输入的型号,这个项目用不到连续电压信号,数字量开关就能解决,选模拟量反而增加论文里需要解释的篇幅。
2.3 执行机构的两种选型:气缸推球 vs 拨杆翻板
执行机构上,常见做法是气缸推球:传送带运行到中间位置,传感器判断大小后,PLC在一个固定的延时时间后触发对应气缸,把球推出传送带,推入侧面料道。另一种是拨杆翻板:在传送带末端做一个可摆动的翻板,大球来时翻板保持水平让球滚进远端料道,小球来时翻板抬起把球导入近端料道。
两种我都做过,倾向性很明确:气缸方案更贴近工业现场,梯形图的时序逻辑也更丰富——你需要在“检测到球”和“气缸推出”之间处理一个传送带速度相关的延时,这个延时就是论文里可以深挖的点。翻板方案机构简单,但梯形图逻辑偏弱,“分拣判断”几乎被机械结构替代了,PLC程序的含金量会显得不足。对论文而言,气缸推球方案是更好的选择。
3. 梯形图里怎么表达“大小判断”:三步搭出可分拣的状态机
3.1 关键不是“判断大小”,而是“等球到位再推”
很多初学者拿到这个题目,第一反应是写一段“如果传感器1亮就是大球,就置位输出”的逻辑。这没有错,但忽略了一个致命的时序问题:传感器装在检测点,气缸装在执行点,两个位置之间隔着一段传送带。球离开检测点之后,还要经过一段距离才走到气缸位置,如果你的程序在检测瞬间立刻推气缸,球还没到,推杆就伸出来了,等球真正过来时已经错过最佳推出时机。
正确的思路是建立一个“两步状态”:第一步,检测传感器从暗变亮(球进入检测区),PLC记录该球是大还是小;第二步,PLC启动一个定时器,定时时间等于传送带把球从检测点运到推球点所需的时间,定时器到时且球到位传感器(或同一个定时器推算)确认后,才触发气缸。这个“检测瞬间只记录、不执行”的思维转换,是整个程序设计的第一个分水岭。
3.2 用ST语言写核心逻辑:一个可直接移植的骨架
虽然图文档里最终要画梯形图,但我在设计逻辑时习惯先用结构化文本(ST)把思路跑通,再对照翻译成梯形图。下面这段代码可以在任意支持ST的PLC IDE里直接编译验证(三菱GX Works3和西门子TIA Portal都支持),然后你再用梯形图把它“翻译”回去。代码里的注释对应了梯形图里每个网络的含义。
// 大小球分拣核心逻辑(ST示意) // 输入变量: // X0: 启动按钮(常开) // X1: 停止按钮(常闭) // X2: 上料检测光电(暗通,即无球时输出ON) // X3: 大小检测光电(亮通,即检测到小球时ON) // 输出变量: // Y0: 传送带电机 // Y1: 大球推料气缸 // Y2: 小球推料气缸 // 第一步:运行控制 IF X0 AND NOT X1 THEN RunState := TRUE; ELSE RunState := FALSE; END_IF; // 第二步:传送带运行 Y0 := RunState; // 第三步:检测与分类 IF RunState THEN // 用上升沿检测球的到达:X2从ON变为OFF表示球进入检测区 // 实际PLC中应使用上升沿指令,这里用逻辑表达意图 IF NOT X2 AND NOT X2_Prev THEN // 记录当前球的类型:X3为ON时小球,OFF时大球 IF X3 THEN BallType := SMALL; // 小球,目标推球气缸Y2 ELSE BallType := LARGE; // 大球,目标推球气缸Y1 END_IF; // 启动传送延时定时器:球从检测点走到推球点 DelayTimer := TON(START_DELAY_TIME := 500MS); END_IF; X2_Prev := NOT X2; // 保存本次采样值,用于下次上升沿比较 // 第四步:定时器到时后推球 IF DelayTimer.Q THEN IF BallType = LARGE THEN Y1 := TRUE; // 推大球 // 推杆伸出后保持1秒,让球完全离开传送带 RetractTimer := TON(RETRACT_TIME := 1000MS); ELSE Y2 := TRUE; // 推小球 RetractTimer := TON(RETRACT_TIME := 1000MS); END_IF; END_IF; // 第五步:推杆自动缩回 IF RetractTimer.Q THEN Y1 := FALSE; Y2 := FALSE; RetractTimer.IN := FALSE; END_IF; END_IF;逻辑说明:这段代码的核心是把“判断”和“执行”分开成两个独立阶段。上升沿检测是一种边沿触发,目的是确保同一个球只被记录一次,不会因为球在传感器前停留而反复触发。传送带延时这个定时器解决的是物理距离带来的时间差,它的时间值是传送带速度与两个安装点之间距离的比值。气缸推出后不能一直保持伸出,否则下一个球会被卡住,所以加了缩回定时器。
参数说明:START_DELAY_TIME初值设为500毫秒只是示意,实际值必须在现场根据传送带线速实测标定。一个简单方法是:手动把球放到检测点,按下启动,用秒表量从球离开检测点到它到达推球点中心的时间,这个时间就是你要填的延时值。RETRACT_TIME设1秒通常够用,如果气缸动作偏慢可以加大到1.5秒,但不要太长,否则球流量大时会堵料。
3.3 从ST翻译成梯形图:三条最容易对不上的点
从ST翻译到梯形图时,有三处最常见的对应关系容易出问题。第一处,ST里的IF NOT X2 AND NOT X2_Prev在梯形图里要变成一个“上升沿微分”指令,三菱里叫PLS或LDP,西门子里叫R_TRIG,不是简单地把两个常闭触点串联。如果你在梯形图里用普通的常闭触点组合,你会发现同一个球经过时程序重复触发了多次,计数器乱跳。第二处,ST里的BallType存储变量要映射到PLC的内部继电器,三菱用M,西门子用M或DB位,建议拿两个连续的M点分别表示“当前球是大球”和“当前球是小球”,不要在梯形图里用OUT指令反复覆盖同一个线圈。第三处,定时器不能放在条件分支内部太深的位置,有些小型PLC对嵌套层数有限制,翻译时把定时器独立分成一个网络,用中间继电器M0去触发起动,会稳定得多。
4. 尺寸阈值怎么定才不误判:传感器的标定、滤波与现场调整
4.1 先搞懂你的传感器是“亮通”还是“暗通”
光电传感器使用前必须确认输出逻辑:亮通(Light-ON)指接收器收到足够光强时输出ON,暗通(Dark-ON)指光线被遮挡时输出ON。同一个光电开关,拨码开关切一下,逻辑就反过来了。这直接决定你的梯形图里是用常开触点还是常闭触点去判断“有球通过”。常见的翻车现场是:程序里写的是“传感器有信号就代表小球”,结果现场传感器是暗通,挡光时输出ON,于是所有球都被当成小球推到同一个料道里,分拣系统瞬间变成集球系统。
我的习惯是:硬件接线完成后的第一步不是写程序,而是做一次“传感器逻辑验证”。手动拿一个大球和一个小球分别经过检测点,用PLC的输入指示灯或软件在线监控观察X点的状态变化,记录下表:
| 球类型 | 传感器输出(屏上X点) | 应该判断为 |
|---|---|---|
| 大球 | OFF→ON→OFF | 大球 |
| 小球 | OFF→ON→OFF | 小球 |
如果大球和小球的X点变化完全一样,说明你的传感器选型有问题——两个球都在相同高度触发了光电,那它根本分不出大小。这时候要做的是调整传感器的安装高度,让它的光轴恰好低于大球直径、高于小球直径。这一步做完,你才真正拥有了“分类能力”。
4.2 安装高度:最关键的毫米级参数
传感器安装高度的计算公式可以这么理解:设光轴中心离传送带表面的高度为H,大球直径为D1,小球直径为D2,那么让大球能遮挡光轴、小球不能遮挡光轴的条件是D1 > H > D2。看起来简单,实际有两个容易忽略的细节。一是球的材质和颜色会影响光电传感器的检测距离和灵敏度,深色球吸光,即使尺寸够大也可能不触发,这时要调大传感器灵敏度或改用漫反射式传感器。二是球在传送带上不是理想地贴着带面运动的,它可能弹跳或滚动,球中心的实际高度会有波动,所以H不要取在D1和D2的正中间,而是应该贴近小球直径一侧,比如D1=40mm、D2=30mm时,H取32~33mm,给大球留出足够的触发余量。
这组参数不是拍脑袋定完就完事的,我要求每次换一批球之后都要重新标定一次。因为所谓“大球”和“小球”在实验室里往往不是标准钢球,而是乒乓球、网球、橡皮球混在一起,同一堆球里直径差可能达到2~3mm。阈值取中间值,就会有一批“临界球”一会儿被分到大球道一会儿被分到小球道,这就是现场“时灵时不灵”的常见根源。
4.3 滤波不是PLC的活,但你要知道为什么偶尔误触发
传感器误触发有两种情况:一种是真的有干扰信号,比如现场电机的启停造成电磁干扰,让传感器莫名其妙ON了一下;另一种是机械上的,球在检测区弹跳,造成传感器信号在短时间内反复变化。我见过有人试图在PLC里写滤波逻辑来处理这两种情况,出发点没有错,但小型PLC的扫描周期加上滤波延时,会导致高速运动的小球还没走到气缸位置就被误判。更稳妥的排队列是硬件侧解决:传感器供电用独立的24V开关电源,不要和电磁阀共用;传感器线和电机线保持至少20厘米间距,不要走同一个线槽;球弹跳问题优先在传送带两侧加导向挡板,而不是在程序里加延时。
如果做完硬件侧处理还想在程序里加一道保险,建议加的不是滤波,而是“稳定时间确认”:检测信号变化后,延时50~100毫秒再读取一次状态,如果两次一致才确认。50毫秒对低速传送带来说几乎不影响时序,但能滤掉大部分接触抖动导致的误判。
5. 调试现场最常见的5个坑:现象、原因与对策
做完硬件和程序之后,真正花时间的往往不是写代码,而是把现场“跑顺”。下面这5个坑是我在做这类项目时真金白银换来的经验,每一条都是“现象→原因→解决”的结构,希望你能在进场调试前就提前避开。
坑一:大球小球混入同一个料道。现象是程序在线监控里X3的判断结果是对的,但实际球却全被推到同一个方向。原因是传感器安装高度虽然对了,但推球气缸的执行延时没有按传送带速度重新标定,球还没走到气缸位置就被推,或者已经走过头了才推。解决方法是重新测量“检测点到推球点”的实际距离,除以传送带实测线速度,把计算值写进定时器。注意不要用皮尺量完就直接算,要实际让球跑几次,用秒表取平均。
坑二:连续进料时,第二个球被第一个球的推杆卡住。现象是单球测试一切正常,连续投球时分拣系统乱套。原因是气缸缩回时间太短,推杆还没完全退回,第二个球已经到达推球位置,被推杆侧面挡住或弹飞。解决方法是量一下气缸从伸出到完全缩回的实际时间,把缩回定时器设置成这个时间的1.3倍。同时在上料口加一个限位挡板,人为控制球的投放间隔,不要手工一次性倒一堆球进去。
坑三:PLC程序“运行正常”,但偶尔整个系统突然停机。现象是传送带走着走着突然停了,触摸屏或指示灯复位后又能继续。原因多半是急停回路或停止按钮的常闭触点接触不良,导致PLC收到瞬间断开的信号。解决方法是把启动、停止逻辑做成“置位/复位”形式,而不是靠按钮持续按住。启动用上升沿置位运行标志,停止用下降沿复位,这样按钮抖动就不会直接导致系统停机。
坑四:光电传感器灵敏度越调越乱。现象是调试时把传感器灵敏度旋钮拧到最大,结果大球小球都能触发,拧到最小又都不触发。原因是灵敏度旋钮不是线性刻度,调过头后放大器饱和,输出逻辑反而翻转。解决方法是把灵敏度恢复出厂默认值,用遮挡法粗调:用手挡住光轴,确认输出翻转;再分别用大球和小球实测,微微调整直到大球可靠触发、小球可靠不触发。每次调整幅度不超过刻度盘的1/4圈。
坑五:梯形图在线监控时逻辑正确,一断电重启就失灵。现象是程序下载后在线跑一遍没问题,断电重启后分拣系统完全不动作,或者动作逻辑错乱。原因是存储型变量没有被初始化。PLC断电后内部继电器M的初始状态是不确定的,有些保持型M会保留断电前的值。解决方法是给程序加一段“初始化逻辑”:在首次扫描周期或开机脉冲信号触发时,把所有内部M点、定时器、输出Y全部复位为初始状态。这段初始化网络要放在主程序最前面,而且论文里单独写一小节说明,答辩是一个加分项。
6. 交付前怎么验证:仿真联调与三组必跑的测试物料
程序写完不代表论文可以收尾,我习惯在提交前做一轮“三层验证”,用最小的成本把绝大部分逻辑错误暴露出来。第一层是离线仿真,在IDE里用仿真模式或软元件测试,把所有输入X点手动置位复位,观察Y点输出是否符合预期。这一步能查出程序语法错误和逻辑跳转错误,但查不出时序问题,因为仿真环境里没有真实的传送带速度。第二层是空载测试,不投球,只启动传送带,观察传感器信号是否稳定。这一步能查出传感器安装和接线的问题。第三层才是投料实测。
投料实测时我固定用三组测试物料,每一组都覆盖一个特定的边界场景:
第一组是单球交替测试:先放一个大球,等它完全分拣完毕后再放一个小球,交替10次。目的是验证最基本的判断逻辑和气缸推球时序。预期结果:大球全部进入大球道,小球全部进入小球道,成功率100%。如果这一组都做不到,后面不用继续测。
第二组是临界直径测试:专门找一批直径介于大球和小球之间的“临界球”,每种各10个,观察它们被分到哪个道。预期结果是它们可能在大球道也可能在小球道,但只要分布稳定(同一个球每次都被分到同一个道),系统就是可靠的。如果同一个球两次测试结果不一致,说明传感器的阈值余量不足,需要重新调整安装高度或灵敏度。
第三组是连续流量测试:一次性投放20个球,混合大小,间隔0.5秒左右连续进料。这一组主要考察的是气缸缩回时间、定时器参数在连续工况下的表现。常见的结果是前几个球分拣正常,后面开始卡球,这就是缩回时间不够或上料节奏太快导致的,要回去调参数。
完成这三组测试后,我还会做一次断电恢复测试:在系统运行过程中突然断电,重启后确认所有状态自动复位,再投一次料确认系统能正常工作。这个测试的结果会写进论文的“系统调试与运行”章节,它比任何一段程序代码都能证明你的系统是可靠可交付的。
最后说一个我自己养成的小习惯:每次调完一组参数,就在现场记录下当时的传感器安装高度、灵敏度档位、延时时间值和测试结果,哪怕只是拍张照片写在手机备忘录里。因为这类项目调试过程中参数会被反复调整,“原来那组参数还能用”的情况经常发生,没有记录就只能靠重新标定从头来,费时间也费信心。这套方法帮我避开了无数重复劳动,也让我每次交项目时都心里有底,希望你也能用得上。
本文还有配套的精品资源,点击获取