PLC装配线毕业设计实战:I/O分配、梯形图与Modbus变频器控制
2026/9/20 0:33:17 网站建设 项目流程

简介:基于PLC的自动化零件装配线系统本科毕业设计文档,面向自动化、机电一体化及电气工程类专业学生,适用于课程设计、毕业设计及工业现场控制系统学习。文档以西门子S7-200 PLC为核心,围绕供料、加工、装配、运输、分拣五个工作站,系统讲解工件从送料、冲压、装配到分类输出的完整流程,并融入气动驱动、伺服电机位置控制、传感器检测及PPI/RS485分布式组网技术。内容涵盖系统总体思路、各单元机械结构与工作原理、气动控制回路,以及PLC本地控制与网络控制实现,其中对供料单元料仓检测、推料动作、电磁阀控制等细节有较多展开,便于理解数据交互与控制逻辑。资源共1个doc文件,压缩包仅4.88MB,目前已有163人学习下载。对需要完成类似自动化产线设计或准备毕设答辩的读者,可直接参考其中的方案架构、硬件选型与程序控制思路,节省从零梳理的时间。

1. 基于 PLC 的自动化零件装配线,毕业设计从哪张图开始落手

零件装配线的自动化改造在制造现场很常见,但落到本科毕业设计里,最容易卡住的不是“方案漂不漂亮”,而是三件事:输入输出点数算不准、程序里没有互锁与超时保护、变频器通讯老掉线。这篇基于 PLC 的自动化零件装配线,直接从选型开始,到 I/O 分配、梯形图状态机、Modbus 多变频器通讯、仿真与上电调试,最后给出一张可直接抄走的参数表。文中代码基于三菱 FX5U 与西门子 S7-1200 这类常见 PLC 写,组态以 MCGS 为例,适合正在做 PLC 毕业设计的学生,也适合刚接手小型装配线的自动化初级工程师,照着章节能一步步把程序和硬件调通。

2. 装配线 PLC 选型与硬件组态:先算 I/O 再选 CPU

2.1 一条典型装配线的工艺段与 I/O 点数测算

装配线的机械结构可以千变万化,但控制在 PLC 眼里只有两类东西:输入信号和输出执行。先建立一条最常见的四工位参考线:供料段用振动盘排序、推出气缸把零件送到定位夹具;装配段用夹爪气缸夹持,再驱动拧紧枪或压装气缸完成装配;检测段用光电传感器和接近开关确认零件到位与装配结果;分拣段按结果驱动电磁阀,合格品放行、不合格品吹出。

做 I/O 测算时不能只看“现在有几个传感器”,要把每个气缸拆成动作来算。一个双作用气缸要 2 个磁性开关做伸出/缩回到位检测,占用 2 个输入点;一个电磁阀控制气缸进退,占用 1 个输出点;真空吸盘还要多算 1 路真空释放阀。螺栓拧紧机如果是自带控制器,PLC 只接收一个“完成”信号,不占普通输出点;如果决定用伺服轴做拧紧,那部分走通讯,也不占开关量点。

以一条 4 工位、8 气缸的小型装配线为例:

  • 输入点 = 8×2 个气缸限位 + 6 个物料/到位光电 + 4 个主控信号(启动、急停、手动/自动、安全门) = 26 点;
  • 输出点 = 8 个电磁阀 + 4 个三色灯/报警 + 2 个皮带电机启停 = 14 点;
  • 合计 40 点,再按 20% 余量预留,目标就是 48 点以上。

所以选型时不要看到“点数差不多”就买 32 点主机,扩展余量决定了后期接线时你还有没有空间加安全回路。实际常见的做法是选 64 点主机,也就是三菱 FX5U-64MT 或西门子 S7-1200 1214C DC/DC/DC,再预留一个 16 点输入扩展槽位。这样哪怕是毕设装置,答辩时你也能说清楚“余量为什么是 20%”。

2.2 PLC 主机与扩展模块:FX5U 与 S7-1200 的选择逻辑

毕业设计平台其实就两个主流方向:三菱和西门子。两者不存在绝对优劣,要看装配线的“控制重心”落在哪里。

维度三菱 FX5U西门子 S7-1200
编程环境GX Works3TIA Portal 博途
I/O 扩展本体最大点数约 256 点,可挂扩展模块最多挂 8 个信号模块,每模块 8/16 点
串行通讯RS-485 串口,Modbus RTU 指令简洁通过 CM1241 RS-485 模块做 Modbus
运动控制本体内置 4 轴脉冲输出,定位指令直观需要配置运动控制工艺对象
在线诊断监控窗口简洁,适合初学者在线表和强制功能更强

如果装配线上有伺服定位或者要控制多台变频器,我一般推荐三菱 FX5U,原因是它的 ADPRW 指令写 Modbus 频率特别直接,学习曲线短;如果装配线逻辑复杂、现场爱用 PROFINET 组网,S7-1200 的块式编程在后期维护时更规整。做毕业设计还有一个现实约束:实验室现有备件是什么就用什么。如果实验室只有三菱 FX3U,那 FX3U 完全够用,重点是把程序和调试思路做完整。

提示:不要为了“显得高级”强行上大型 PLC。装配线这类小型离散系统,PLC 的扫描周期远远快于气缸动作,瓶颈通常在传感器响应和机械节拍上,不在一级一级的 CPU 型号里。

2.3 I/O 地址分配与 NPN/PNP 传感器接线规范

I/O 表要在一开始就写死,不能边接线边改。以下是一张可直接套用的 FX5U 地址分配示例。

地址信号含义类型备注
X0启动按钮输入常开触点
X1急停按钮输入常闭触点
X2料仓缺料检测输入NPN 接近开关
X3工位 1 工件在位输入对射光电
X10气缸 A 伸出到位输入磁性开关
X11气缸 A 缩回到位输入磁性开关
Y0气缸 A 电磁阀输出24V DC
Y1气缸 B 电磁阀输出24V DC
Y2不合格品剔除电磁阀输出24V DC
D100当前产量计数寄存器组态屏读取

传感器接线是新手最容易翻车的地方。三菱 FX3U/FX5U 的漏型输入接法对应 NPN 型传感器:棕色线接正 24V,蓝色线接 0V,黑色信号线接 PLC 的 X 端子;公共端 COM 接 0V。西门子 S7-1200 的输入回路则更常见 PNP 型传感器,信号线输出高电平有效。如果传感器类型和 PLC 模块不匹配,现象就是“传感器指示灯亮了但程序里看不到输入”。

我在现场通常先用万用表做一次静态测量:传感器动作时,量黑色线与 0V 之间的电位,NPN 会从高阻变成接近 0V,PNP 会从 0V 变成接近 24V。确认清楚了再上电,不然后面查线的时间比接线时间还长。

3. 梯形图程序框架:用状态机组织装配线核心控制

3.1 为什么装配线程序不能从上到下“一条路跑到底”

刚接触 PLC 编程时,最容易把装配线程序写成一大段顺序控制:条件满足就置位下一步,不满足就一直等。问题在于一旦某个传感器闪断,流程直接跳到错误步,现场完全看不出卡在哪。装配线控制更像一个有限状态机:每个工位有明确的“待机、执行、完成、异常”状态,状态之间靠条件和超时迁移。

用三菱 GX Works3 的 ST 语言写一个框架示例,同样思路也能转成梯形图的 SET/RST 写法:

CASE step OF 0: (* 待机,等待启动 *) IF bStart THEN step := 10; END_IF; 10: (* 供料气缸推出 *) bFeed := TRUE; IF xFeedDone THEN step := 20; END_IF; 20: (* 夹爪夹紧 *) bClamp := TRUE; IF xClampDone AND tClampDelay THEN step := 30; END_IF; ELSE step := 0; END_CASE;

逻辑说明:step 是整型步骤变量,每个数字代表流程中的一个稳定状态,比如 10 在供料、20 在夹紧。只有当上一个状态的条件满足时,step 才会变化,所以单个传感器的瞬时抖动不会直接引发跳变。代码里的 bStart 来自启动按钮 X0 的读入,xFeedDone 是推料到位传感器。这里还要注意每个状态的输出不是“按下按钮就通一下”,而是这个状态下的持续使能信号,所以用 bFeed、bClamp 这类布尔量表示。

参数层面的经验是:每个状态都要配一个超时定时器。比如 step=10 最长允许 2 秒,超过就置报警位。没有超时保护的装配线程序,一旦机械卡料,PLC 会一直输出,气缸顶着工件不动,最终烧电磁阀线圈或损坏机械结构。

3.2 气缸互锁、超时与急停怎么织进逻辑里

装配线非正常停机的根源,大多不是“没有编某个动作”,而是动作之间缺少互锁条件。以两个相邻气缸为例:气缸 A 把零件推到夹具中心,气缸 B 再进行夹紧。B 如果提前动作,会把零件顶飞。所以 B 的得电条件里必须显式包含“A 伸出到位”这个位,而不是靠扫描顺序碰运气。

(* 自动模式下,A 缸允许伸出的条件 *) A_extend := mode_auto AND NOT estop AND NOT B_clamp_active; (* B 缸夹紧的互锁条件 *) B_clamp := A_extend AND A_out_sensor AND NOT clamp_cancel;

逻辑说明:A_extend 由模式、急停状态和 B 缸夹持状态共同约束;B_clamp 只有在 A 缸已经伸出到位后才可能得电。这里最容易被忽略的点是:手动模式下操作员也可能动作了 A 缸,再切回自动时,B 缸条件里因为已经有 A_out_sensor,就不会出现“A 还没到位,B 突然夹紧”的危险动作。急停放在 AND 条件的最前面,确保急停按下后所有执行输出立即断开。

互锁之外还要处理“故障复位”。我的习惯是用一组独立的复位位,比如 M100 是故障确认,故障确认后各气缸全部回到缩回到位,才能重新进入自动待机。这样避免“报警消失但气缸还伸在外面”的情况。评审老师在意这个,因为它直接关系到设备安全。

还有一个常见误区:把“停止”当成“急停”来写。普通停止只需要等当前状态做完再停,而急停要求立即切断所有输出。所以停止信号应作为主流程的状态迁移条件,急停则直接穿在输出使能链路上,两者用途完全不同。

3.3 产量计数与连续不合格停止的边界处理

装配线的产量统计看着简单,实际容易踩“重复计数”的坑。如果直接用输入点做加法,输入信号在扫描周期内没有抖动处理,一个零件可能被计成两三次。稳妥的做法是先用上升沿检测生成一个脉冲位,再用这个脉冲去驱动计数。三菱里可以用 PLS/MEP 指令,ST 里可以自己维护一个输入位的“上一周期状态”来判断上升沿。

(* 上升沿检测:当前周期为 TRUE,上一周期为 FALSE *) pulse_part := part_input AND NOT part_prev; part_prev := part_input; IF pulse_part AND bDetectOK THEN dGoodCount := dGoodCount + 1; ELSIF pulse_part AND NOT bDetectOK THEN dBadCount := dBadCount + 1; END_IF; IF dBadCount >= 3 THEN bLineStop := TRUE; END_IF;

逻辑说明:pulse_part 是一个扫描周期宽的脉冲,用它做加法的前提是“一个零件只产生一次上升沿”。part_input 读取检测工位的传感器,bDetectOK 是装配结果判断。连续 3 件不合格就停线,这种阈值不能写死在程序里,应该放到 D 寄存器中,方便组态屏上调整。

计数区域还涉及断电保持问题。三菱 FX5U 的 D 寄存器分普通区和锁存区,产量如果要求断电不丢失,要放在锁存区,并在程序初始化时判断“首次上电”还是“断电恢复”,决定要不要清零。很多毕业设计把计数器放在普通区,断电归零后打样数据全部丢失,就成了答辩时的减分项。

4. 一台 PLC 连接多个变频器:Modbus 通讯与轮询策略

4.1 变频器控制方案的取舍

装配线上的皮带输送机、振动盘和冷却风机,大多数都用变频器驱动。数量少的时候,PLC 用开关量端子控制启停、用模拟量模块输出 0-10V 调速就能满足;但数量一多,比如几十台,模拟量模块的成本、接线量和排查难度都会暴涨。这时候把变频器统一挂到 PLC 的串行总线上,用 Modbus RTU 做集中控制,是行业里最成熟的做法。

Modbus RTU 的物理层是 RS-485,一条总线理论上能挂 32 个标准负载,正好对应 32 台变频器。但这里面的水很深:如果每台变频器都要独立读运行电流、频率、故障码,又写频率又写启停,轮询周期会变得很长。以 9600 波特率、单次请求约 20ms 计算,32 台全部轮询一遍要 0.6 到 1 秒。对于“现场按一秒一次刷新速度”是够的,但如果要每台变频器几百毫秒内响应,就必须分组或用 Modbus TCP。

提示:RS-485 布线要选屏蔽双绞线,屏蔽层单端接地,总线两端各加一个 120Ω 终端电阻。用普通电缆会在远距离时丢帧,而且很难排查。

4.2 FX5U 用 ADPRW 指令写变频器频率的实操

如果选择三菱 FX5U,写变频器频率最直接的指令是 ADPRW。它把 Modbus 请求封装成了一条指令,不需要自己拼接 CRC 校验和状态机。

(* 向 5 号从站写入频率值,数据来自 D100,功能码 H6 写单个寄存器 *) ADPRW(H5, H2001, D100, H6, M200);

逻辑说明:ADPRW 的第一个参数 H5 是变频器通讯地址;第二个 H2001 是变频器中频率设定的寄存器地址;D100 是要发送的数据;H6 是 Modbus 功能码 0x06,表示写单个保持寄存器;M200 是指令完成标志。执行成功或失败后 M200 都会动作,需要根据 M200 的 ON/OFF 状态和错误码判断结果。

对应的 Modbus RTU 报文内容是这样的:从机地址 05,功能码 06,寄存器地址 20 01,数据 00 64,最后跟两个字节 CRC 校验。如果 100 表示 1.00Hz,那要把 D100 里的数值按变频器手册的倍率换算,很多变频器是 0.01Hz 单位,所以写 100 才代表 1.00Hz。

用串口调试助手直接发这个报文能收到从站回应,说明线路和站号没问题;如果收不到,重点检查波特率、数据位、校验位和站号四条。三菱 FX5U 做 Modbus 主站时,我通常配置为 9600、8 数据位、偶校验、1 停止位,也就是常说的 9600 8E1。

4.3 32 台变频器轮询的调度与掉线保护

多台变频器通讯,程序框架上不能一条一条顺序写到死,否则调试时改一台地址就要翻一大段程序。常见做法是建立一张从站表:D20 到 D79 这 60 个字存放 32 台变频器的频率设定值,再维护一个站号索引。

(* 轮询调度:每次只处理当前索引指向的变频器 *) IF M200 THEN (* 上一条指令已完成 *) IF nIndex >= 32 THEN nIndex := 0; ELSE nIndex := nIndex + 1; END_IF; END_IF; ADPRW(H5 + nIndex, H2001, D20 + nIndex, H6, M200);

逻辑说明:nIndex 从 0 到 31,通过 H5 + nIndex 计算出站号,D20 + nIndex 取出对应变频器的目标频率。这样新增一台变频器只需要扩展数据区和索引范围,不需要改指令列表。完成标志 M200 作为下一轮请求的启动条件,上一条没有结束就不发下一条,天然避免总线冲突。

掉线保护是这套方案里的底线。每个从站都做一个“最近通讯时间戳”,比如 M8013 是三菱的 1 秒时钟脉冲,每收到一次成功回应就刷新对应从站的时间戳。如果 3 秒没刷新,就判断这台变频器掉线,置位故障信息,同时锁住装配线主输送,防止先停的段和不停的电段之间零件堆积。这个保护逻辑在答辩时可以直接演示:拔掉一台变频器的通讯线,看 PLC 报警画面会不会在 3 秒内弹出来。

5. 从仿真到上电:组态、调试和验收流程

5.1 GX Works3 或博途仿真能验证什么、不能验证什么

程序写完后直接接硬件是最不推荐的流程。GX Works3 和博途都有自己的仿真器,仿真能提前发现三类问题:状态机跳转逻辑错误、输出位在错误状态下被置位、定时器值类型设定错误。仿真的操作方式很直观:在仿真画面里强制 X0 为 ON 两秒再释放,观察 step 变量的变化轨迹,再强制某传感器为 ON 看程序是否迁移到下一个状态。

(* 仿真自检动作序列,按顺序手动强制: 1) X0 = ON 2 秒,观察 step 是否从 0 变到 10; 2) 强制 xFeedDone = ON,观察 step 是否到 20; 3) 强制 xClampDone = ON,同时观察 tClampDelay 是否完成; 4) 故意跳过某条件,确认程序应该在当前状态等待。 *)

逻辑说明:这个过程叫“按状态路径走查”,每一步都只改一个输入条件,确认流程只走到预期状态。如果一步跳了两位,说明中间有非预期条件在起作用。仿真器最大的局限是它不模拟真实硬件的响应时间,传感器信号上升沿、通讯超时这些边界问题仍然要上电才能验证,但语法和逻辑问题在仿真阶段解决掉,能省大量现场时间。

5.2 HMI 组态变量怎么和 PLC 地址对接

毕业设计展示时,评委看的是“画面上能不能看到当前工位状态、产量和故障信息”。MCGS 是很多学校毕设指定的组态软件,对接方式就是把画面里的标签关联到 PLC 的寄存器或位元件。

比如画面上的“当前产量”文本框绑定 D100,“不合格品”绑定 D101,“急停状态”绑定 X1。MCGS 的变量采集周期默认可以设 100ms 到 500ms,显示频率和运行状态时设 200ms 左右即可。需要注意,MCGS 下发按钮和 PLC 程序内部置位不要重复:清零动作应该由画面按钮触发 PLC 里的 RST 指令,而不是 MCGS 自己往 D 寄存器写 0。否则 PLC 程序在下一个周期又把数据刷新回来,画面数字会跳动。

组态画面与 PLC 的通讯参数必须在两边保持一致,串口通讯时注意站号不能冲突;以太网通讯时注意 PLC 的 IP 地址和组态软件所在电脑要在同一网段。这些是画面连不上的最常见原因。

5.3 上电调试的六步法

上电调试的顺序,比程序本身更能影响项目周期。一个可靠的习惯是分六步走,每步都确认完了再进下一步。

  1. 断电查线:用万用表确认每个传感器输出线、每个输出点的公共端正确,输出端子暂时断开执行机构;
  2. PLC 上电自检:看 CPU 的 ERR 灯和电源灯,程序下载前先把 PLC 清空,跑一次空白程序确认 I/O 模块正常识别;
  3. 单独测输入:逐个触点传感器,在监控表里确认 X 地址与信号含义一一对应;
  4. 单独测输出:用强制功能逐个导通 Y 点,确认电磁阀、指示灯对应正确;
  5. 状态机单步:把手动置位各传感器,按工艺步骤一次走一步,观察 step 变化;
  6. 全自动运行:先空跑不装零件,再放入真实零件跑 20 个循环,最后连续跑 200 个循环记录数据。

这六步的核心思想是把“输入、输出、程序、执行机构”分段隔离。如果全自动运行出问题,按步骤倒推:是传感器没感应到,还是气缸没到位,还是 PLC 状态没有跳转,三个方向分别排查,通常十几分钟就能定位。

6. 装配线系统的可调参数固化与验收验证

装配线调试完成后,最值得做的事是把所有调过的参数固化到一张表里。评审老师问你“这个延时为什么是 0.8 秒”时,一张有实测依据的参数表比任何口头解释都有说服力。下面是一张可以直接拿走的模板。

参数项设置值示例设置依据
气缸 A 伸出超时0.8 s实测电磁阀得电到限位动作时间 ×1.2 安全系数
供料等待超时5 s振动盘缺料到重新送料的最大等待时间
夹紧保持时间2 s工艺要求的压装保压时间加 20% 余量
Modbus 波特率9600 8E132 台变频器总线上最稳定的实测速率
轮询扫描周期1 s32 台写操作的一轮实际耗时统计

参数经过验证后,可以给稳定的时间常数加“面板可调”功能,也就是把这些值全部搬到 D 寄存器,由 MCGS 画面上的数值输入框实时修改,PLC 程序每一周期读取这些 D 值与当前状态比较。这样后期工艺节拍一变化,不需要改程序重新下载,直接在触摸屏上改一个数字就能完成调整。

最后做一次 200 个循环的连续运行验证,每 50 个记录一次产量、次品数和停机次数,算出设备稳定率。如果某一次传感器偶发闪断,把 PLC 输入滤波时间从默认值调到 10-20ms 再继续跑。把这些实测数据一并附在毕业设计文档里,整个项目的逻辑就是“先有计算、再有仿真、后有实测”,而不是一句“运行正常”带过。这样的毕业设计,交付的是一台能持续改参数的装配线 PLC 系统,而不是一段只能演示一次的程序。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询