简介:这份资源是一份面向电气工程、自动化及相关专业学生的PLC课程设计文档,聚焦饮料、食品行业装瓶流水线的控制方案。内容围绕手动与自动两种控制模式展开:手动模式下设有10道工序,由指示灯模拟,配合启动、复位、停顿按钮实现单步移位与两次循环;自动模式简化为5道工序,每5秒完成一道并循环两次,便于对比理解移位寄存器与定时器指令的编程差异。文档还系统梳理了PLC选型依据、I/O分配表与接线图绘制、梯形图及指令语句表编写、系统测试调试流程,以及过载保护、紧急停止等安全维护要点,并附有设计目的与总结章节。资源包内含1个doc文件,约836KB,为完整的集中实践报告书,可直接用于课程设计参考或编程思路借鉴。目前已有74人学习,适合需要掌握PLC编程软件操作、锻炼逻辑设计与问题解决能力的初学者和参赛学生使用。
1. 装瓶流水线 PLC 控制到底在控什么
第一次拿到装瓶流水线控制这份课程设计的人,往往会被两组数字卡住:手动模式 10 道工序,自动模式 5 道工序,输出却只有 Y1 到 Y12。PLC 要做的不是把瓶子真的灌满,而是用指示灯和按钮复现一套顺序控制逻辑:按下启动,工序按移位寄存器往后走,定时器负责 5 秒节拍,复位和停顿随时打断。它适合电气、自动化专业的集中实践,也适合想从继电器控制过渡到 PLC 编程的工程师。FX2n 加 GX Developer 是这套方案里最常见的组合,难点不在写一条自锁,而在把 10 个工序、2 次循环和两种模式整理成不会串步的状态机。
2. FX2n 选型与 I/O 分配:从 10 道工序到端子号
2.1 为什么是 FX2n,而不是继电器板或单片机
装瓶流水线的被控对象看起来简单:选瓶、装瓶、盖盖、贴签、传送、入库,每一步用指示灯模拟。但课程设计里明确要求手动移位、自动定时、循环两次、复位和停顿,这些动作放在继电器回路里会变成一堆时间继电器和中间继电器互相咬合,改一个工序就要重新接线。单片机也能做,但需要自己处理输入消抖、输出驱动、定时器中断和掉电保持,对电气专业的学生来说,调试成本反而更高。
FX2n 系列在三菱 FX 家族里属于指令集比较完整的一档。它支持移位指令、定时器、计数器、比较指令和大量中间继电器,I/O 点数也能覆盖这套系统:输入有自动启动、移位、复位、手动启动、停顿共 5 个按钮,输出有 A1 到 A10 共 10 个指示灯,合计 15 个数字量点。选 FX2n-32MR 这类 16 入 16 出的机型,点数刚好留出余量。继电器输出类型可以直接驱动指示灯,不需要额外加晶体管放大板;如果后续要驱动电磁阀或小型电机,继电器输出也能撑住常见负载。
| 对比项 | 继电器控制 | 单片机控制 | FX2n PLC |
|---|---|---|---|
| 顺序步进实现 | 中间继电器互锁,改线麻烦 | 状态机代码,需自己写 | 移位寄存器/比较指令,梯形图直观 |
| 定时精度 | 受机械时间继电器影响 | 依赖晶振和中断 | 内部定时器,100ms 基准稳定 |
| 输入输出驱动 | 需单独继电器 | 需驱动电路 | 继电器输出可直接带指示灯 |
| 调试方式 | 看灯、听响、万用表 | 串口打印、示波器 | GX Developer 监控与强制 |
| 适合场景 | 固定逻辑、小批量 | 成本敏感、批量产品 | 课程设计、小型自动化设备 |
选型时不要只看“能不能跑”,还要看“改起来疼不疼”。装瓶流水线的手动模式和自动模式工序数不一样,手动是 10 道,自动是 5 道。如果全部用硬接线,两种模式要两套回路;用 PLC,只需要在程序里切换移位步长和定时器使能。常见做法是:输入按钮全部接常开触点,程序里用上升沿触发移位;输出指示灯按 Y1 到 Y12 分配,公共端接 24V 或 220V 根据指示灯电压决定。
2.2 I/O 分配表与端子号落地
I/O 分配表不是抄一遍就完事,它决定了后面梯形图里每一个 X 和 Y 能不能对得上。原设计里输入分配是:自动启动 SB0 接 X0,移位 SB1 接 X1,复位 SB2 接 X2,手动启动 SB3 接 X3,停顿 SB4 接 X4。输出分配是:选瓶 A1 接 Y1,装瓶 A2 接 Y2,盖盖 A3 接 Y3,贴签 A4 接 Y4,传送 A5 到 A9 接 Y5 到 Y11,成品入库 A10 接 Y12。注意这里没有 Y0,因为 Y0 通常留给脉冲输出或备用,课程设计里直接跳过不影响。
| 信号类型 | 元件 | PLC 地址 | 说明 |
|---|---|---|---|
| 输入 | 自动启动按钮 SB0 | X0 | 常开,按下进入自动模式 |
| 输入 | 移位按钮 SB1 | X1 | 常开,手动模式每按一次走一步 |
| 输入 | 复位按钮 SB2 | X2 | 常开,回到第一道工序 |
| 输入 | 手动启动按钮 SB3 | X3 | 常开,进入手动模式 |
| 输入 | 停顿按钮 SB4 | X4 | 常开,暂停当前工序 |
| 输出 | 选瓶工序 A1 | Y1 | 指示灯 |
| 输出 | 装瓶工序 A2 | Y2 | 指示灯 |
| 输出 | 盖盖工序 A3 | Y3 | 指示灯 |
| 输出 | 贴签工序 A4 | Y4 | 指示灯 |
| 输出 | 传送工序 A5 | Y5 | 指示灯 |
| 输出 | 传送工序 A6 | Y6 | 指示灯 |
| 输出 | 传送工序 A7 | Y7 | 指示灯 |
| 输出 | 传送工序 A8 | Y10 | 指示灯 |
| 输出 | 传送工序 A9 | Y11 | 指示灯 |
| 输出 | 成品入库 A10 | Y12 | 指示灯 |
接线前可以用一段 Python 脚本检查点数够不够、地址有没有重复。下面这个脚本把输入输出表写成字典,跑一遍就能发现 Y8、Y9 缺失和地址冲突。
# io_check.py plc_inputs = { "SB0_auto_start": "X0", "SB1_shift": "X1", "SB2_reset": "X2", "SB3_manual_start": "X3", "SB4_pause": "X4", } plc_outputs = { "A1_select_bottle": "Y1", "A2_fill": "Y2", "A3_cap": "Y3", "A4_label": "Y4", "A5_transfer": "Y5", "A6_transfer": "Y6", "A7_transfer": "Y7", "A8_transfer": "Y10", "A9_transfer": "Y11", "A10_warehouse": "Y12", } all_points = list(plc_inputs.values()) + list(plc_outputs.values()) duplicates = [p for p in set(all_points) if all_points.count(p) > 1] print("输入点数:", len(plc_inputs)) print("输出点数:", len(plc_outputs)) print("总点数:", len(all_points)) print("重复地址:", duplicates if duplicates else "无") # 检查输出是否连续占用了 Y1-Y12 范围内的可用点 used_y = sorted([int(p[1:]) for p in plc_outputs.values()]) missing_y = [y for y in range(1, 13) if y not in used_y] print("Y1-Y12 中未使用的地址:", missing_y)这段脚本的逻辑很直接:把 I/O 分配表变成可遍历的数据,先统计点数和重复地址,再检查 Y1 到 Y12 里哪些编号没有被占用。参数说明:plc_inputs和plc_outputs的键是元件名,值是 PLC 地址;duplicates用列表推导找出出现次数大于 1 的地址;missing_y用来提醒接线时不要误把 Y8、Y9 当成输出。实际工程里如果 Y8、Y9 被其他模块占用,这里就能提前发现。
2.3 接线图里的公共端、按钮常开常闭与指示灯限流
FX2n 的输入端子接按钮时,常见做法是按钮一端接 X 端子,另一端接 COM 端。如果按钮是常开,程序里就要用上升沿或自锁逻辑;如果按钮是常闭,按下时信号断开,程序逻辑要反过来写。装瓶流水线的启动、移位、复位、停顿建议全部用常开按钮,这样梯形图里看到 X0 为 ON 就代表自动启动被按下,读图更直接。
输出侧要注意 COM 端分组。FX2n-32MR 的输出通常分成几组公共端,每组 COM 对应若干 Y 点。接指示灯时,先确认指示灯电压是 24V 还是 220V:24V 指示灯可以直接由 PLC 输出公共端供电,220V 指示灯则要确保 COM 端接火线或零线的方式与 PLC 输出类型匹配。指示灯串联限流电阻时,电阻功率要留余量,否则长时间点亮会发热。传送工序 A5 到 A9 有 5 个灯,如果同时点亮,公共端电流会叠加,接线前要算一下总电流是否超过输出模块单点或公共端额定值。
| 接线检查项 | 正确做法 | 常见错误 |
|---|---|---|
| 输入按钮 | 常开按钮接 X 与 COM | 把常闭按钮当启动,程序逻辑反相 |
| 输入电源 | 内部 24V 或外部 24V 与 COM 对应 | 外部电源与 PLC 内部电源混接 |
| 输出公共端 | 按 COM 分组接线,不跨组混用 | 不同电压指示灯共用同一 COM |
| 指示灯限流 | 串联电阻,计算功率 | 直接接 24V 灯不加电阻 |
| 复位按钮 | 接 X2,程序中优先复位移位寄存器 | 只复位输出,未复位步序号 |
| 停顿按钮 | 接 X4,断开定时器使能或移位使能 | 直接切断输出,导致状态丢失 |
接线完成后不要急着写复杂程序,先用 GX Developer 监控 X0 到 X4 的通断。按一下按钮,监控画面里对应 X 点变绿,说明输入回路没问题;如果按了没反应,先查 COM 端和按钮触点,再查 PLC 是否处于 RUN 状态。输出侧可以强制 Y1 为 ON,看指示灯亮不亮,确认公共端和限流电阻没问题。这些基础检查做完,后面调移位和定时器会省很多时间。
3. 手动/自动模式下的移位寄存器与定时器编程
3.1 移位寄存器实现工序步进的核心逻辑
手动模式的 10 道工序可以用移位寄存器来做。基本思路是:用一个位元件区表示当前工序,比如 M10 到 M19 对应 10 道工序,或者直接移位 Y1 到 Y12。每按一次移位按钮 X1,移位寄存器左移一位,当前工序的指示灯点亮。循环两次可以用计数器 C0 记录移位次数,当移位次数达到 20 次时停止,或者当工序走到第 10 步时把步序号重置回第 1 步,同时计数器加一。
FX2n 的移位指令有 ROL、ROR、SFTR 等。以左移为例,如果使用 M10 到 M19 作为工序位,程序可以写成:X1 上升沿触发,将 M10 到 M19 左移一位,最低位 M10 补 0 或补 1 取决于是否需要循环。手动模式要求“循环两次”,更稳妥的做法是用一个步序号寄存器 D0 记录当前是第几步,然后用比较指令驱动输出。但课程设计原始资料里提到使用了左移指令,所以下面给一段指令表形式的参考逻辑。
; 三菱 FX 指令表片段:手动移位与循环计数 ; X3 手动启动,X1 移位,X2 复位,X4 停顿 ; M10-M19 对应 10 道工序,C0 记录循环次数 LD X3 ; 手动启动按钮 OR M0 ; 手动模式自锁 ANI X4 ; 停顿按钮断开 OUT M0 ; M0 为手动模式标志 LD X1 ; 移位按钮 AND M0 ; 仅在手动模式有效 AND M1 ; M1 为允许移位标志 PLS M2 ; M2 为移位脉冲 LD M2 MOV K0 D0 ; 初始化步序号,按需可改为复位逻辑 ROL M10 ; M10-M19 左移一位 LD M10 SET Y1 ; 第 1 步选瓶 LD M11 SET Y2 ; 第 2 步装瓶 ; ... 依次驱动 Y3-Y12 LD M19 ; 第 10 步完成 AND M2 INC D1 ; 循环次数加一 CMP K2 D1 M3 ; 比较循环次数是否达到 2 LD M3 RST M0 ; 达到两次后停止手动模式这段指令表的逻辑说明:X3 按下后 M0 自锁,表示进入手动模式;X1 按下产生一个脉冲 M2,用来触发移位。ROL M10把 M10 到 M19 的位整体左移,当前为 ON 的位往高位移动,代表工序前进。M19 为 ON 时表示第 10 道工序完成,用INC D1记录循环次数,再用CMP K2 D1 M3判断是否满两次。参数说明:K2 是比较常数,代表循环两次;D1 是数据寄存器,初值应为 0;X4 停顿按钮通过ANI X4断开 M0 自锁,实现暂停。实际编程时要注意移位脉冲只能用PLS产生一个扫描周期的脉冲,否则按住按钮会连续移位。
3.2 定时器节拍:自动模式 5 秒一道工序
自动模式有 5 道工序,每 5 秒完成一道。FX2n 的普通定时器 T0 到 T199 是 100ms 基准,所以 5 秒对应 K50。如果要更精确,可以用 T200 到 T245 的 10ms 定时器,5 秒对应 K500。课程设计里常见做法是用 T0 K50 产生 5 秒定时,再用定时器完成位触发移位。需要注意:自动模式循环两次,总共 10 次定时,每次 5 秒,整个周期大约 50 秒。
| 定时器编号 | 基准 | 设定值 | 实际时间 | 用途 |
|---|---|---|---|---|
| T0 | 100ms | K50 | 5s | 自动模式工序节拍 |
| T1 | 100ms | K10 | 1s | 按钮消抖或短延时 |
| T2 | 100ms | K100 | 10s | 超时报警备用 |
| C0 | 计数器 | K2 | 2 次 | 自动模式循环次数 |
自动模式的梯形图可以这样组织:X0 自动启动后置位 M100,M100 接通 T0 定时;T0 每次到点产生一个脉冲,触发移位寄存器左移一位。移位寄存器可以用 M20 到 M24 表示 5 道工序,也可以直接移位 Y1 到 Y4 和 Y5。每完成 5 道工序,计数器 C0 加一,C0 达到 K2 时停止自动运行。停顿按钮 X4 可以断开 T0 的驱动条件,让定时器复位,恢复后重新计时。复位按钮 X2 则直接复位移位寄存器、计数器 C0 和模式标志。
; 自动模式:5 秒节拍 + 5 道工序 + 循环两次 LD X0 ; 自动启动 OR M100 ANI X4 ; 停顿断开 ANI X2 ; 复位断开 OUT M100 ; 自动模式标志 LD M100 OUT T0 K50 ; 5 秒定时器 LD T0 PLS M101 ; 定时到,产生移位脉冲 LD M101 ROL M20 ; M20-M24 左移,对应 5 道工序 LD M24 ; 第 5 道工序完成 AND M101 INC D2 ; 循环计数 CMP K2 D2 M102 LD M102 RST M100 ; 两次后停止 LD X2 RST M20 ; 复位工序位 RST C0 ; 复位计数器 MOV K0 D2 ; 循环计数清零参数说明:T0 K50中 K50 是 50 个 100ms,等于 5 秒;PLS M101保证每个定时周期只产生一个移位脉冲;ROL M20移位的对象是 M20 到 M24 共 5 位;CMP K2 D2 M102比较 D2 与常数 2,当循环两次后 M102 为 ON,复位自动模式标志。常见错误是把OUT T0 K50放在 M100 后面但没有自锁,导致按一下启动只定时一次;或者用OUT T0 K50直接驱动移位,结果定时器未到点时梯形图每个扫描周期都在移位。正确做法是用定时器的完成位产生脉冲,再触发移位。
3.3 启动、复位、停顿的互锁与模式切换
手动和自动不能同时运行,否则 X1 手动移位和 T0 自动移位会同时改变工序位。程序里要用互锁:手动启动 X3 置位 M0 时复位 M100,自动启动 X0 置位 M100 时复位 M0。停顿按钮 X4 要同时作用于两个模式,但处理方式不同:手动模式下停顿是禁止移位脉冲,自动模式下停顿是断开定时器使能。复位按钮 X2 优先级最高,按下后不管当前什么模式,都回到第一道工序,并且重新开始运行。
| 按钮 | 地址 | 手动模式 | 自动模式 |
|---|---|---|---|
| 启动 | X0/X3 | X3 置位 M0,复位 M100 | X0 置位 M100,复位 M0 |
| 移位 | X1 | 上升沿触发手动移位 | 不参与 |
| 复位 | X2 | 复位 M0、M10-M19、D1 | 复位 M100、M20-M24、D2 |
| 停顿 | X4 | 断开 M1 允许移位 | 断开 T0 驱动 |
| 循环 | D1/C0 | D1 计 2 次 | D2 计 2 次 |
互锁逻辑可以用下面的指令表片段补充。注意复位按钮 X2 使用RST直接复位状态位,而不是用ZRST批量复位,这样在 GX Developer 监控时更容易看清每一位的变化。停顿按钮 X4 不要直接复位 M0 或 M100,否则恢复后需要重新按启动;更合理的做法是断开允许移位或定时器使能,保留当前工序号。
; 模式互锁与停顿处理 LD X3 SET M0 ; 手动模式 RST M100 ; 自动模式复位 LD X0 SET M100 ; 自动模式 RST M0 ; 手动模式复位 LD M0 ANI X4 ; 手动模式且未停顿 OUT M1 ; 允许手动移位 LD M100 ANI X4 ; 自动模式且未停顿 OUT M103 ; 允许自动定时 LD X2 RST M0 RST M100 ZRST M10 M19 ; 复位手动工序位 ZRST M20 M24 ; 复位自动工序位 MOV K0 D1 MOV K0 D2这段逻辑的关键是 X4 停顿不改变模式标志,只切断 M1 和 M103。M1 为 OFF 时,X1 的移位脉冲即使按下也不起作用;M103 为 OFF 时,T0 不计时,恢复后从当前工序继续。参数说明:ZRST M10 M19是区间复位,把 M10 到 M19 全部清 0;MOV K0 D1把循环计数器清零。如果复位后要求“重新开始运行”,可以在 X2 处理完后自动置位当前模式标志,这取决于设计任务里“复位后重新开始运行”的具体含义。
4. GX Developer 仿真联调与故障排查
4.1 仿真环境搭建与程序写入步骤
GX Developer 是三菱 FX 系列常用的编程软件,课程设计里用它做梯形图编辑和仿真。仿真不需要真实 PLC,但需要安装 GX Simulator。常见操作顺序是:新建工程,选择 PLC 系列为 FX2n,程序语言选梯形图,然后在“在线”菜单里启动模拟器。程序写完后先做语法检查,再写入模拟器,最后用监控模式观察 X、Y、M、T、C、D 的状态。
下面用命令行式的操作清单记录关键步骤,方便在实验室机器上复现。注意这些是软件操作路径,不是 shell 命令,所以用文本块表示。
1. 打开 GX Developer -> 工程 -> 新建工程 2. PLC 系列选择 FXCPU,型号选择 FX2n 3. 程序类型选择梯形图,确定 4. 在左侧导航栏双击“程序”,开始绘制梯形图 5. 编辑完成后按 F4 转换/编译,检查是否有语法错误 6. 工具 -> 启动模拟器,或在线 -> 模拟器启动 7. 模拟器启动后,在线 -> 写入到 PLC,选择全部程序 8. 监控 -> 监视模式,观察 X0-X4、Y1-Y12、M0、M100、T0、D1、D2 9. 强制 -> 强制输入,依次置位 X0/X3,验证手动和自动模式这段步骤的逻辑说明:先建工程再选型号,是因为 FX2n 的定时器基准和指令范围与 FX1n、FX3U 不同;编译转换必须在下载前完成,否则模拟器里跑的是旧程序。写入时选择“全部程序”,避免只写入主程序而遗漏注释或子程序。监控模式下,X 点变绿表示输入有效,Y 点变绿表示输出被驱动,T0 的当前值会从 0 增加到 50 然后归零。参数说明:模拟器里的 X 输入可以通过强制功能手动置位,相当于按按钮;但强制 X0 为 ON 后要记得强制 OFF,否则模拟器会一直处于启动状态。
| 仿真检查点 | 预期现象 | 异常处理 |
|---|---|---|
| 按 X0 | M100 置位,T0 开始计时 | M100 不置位查 X0 强制是否生效 |
| T0 到 5s | T0 完成位变 ON,移位一次 | 定时器不动查 T0 驱动条件 |
| 手动按 X1 | 工序位左移一位 | 不移位查 M1 允许标志 |
| 按 X4 | 定时器暂停,工序保持 | 若工序复位,查是否误接复位逻辑 |
| 按 X2 | 工序回到第 1 步,D1/D2 清零 | 若输出不灭,查 Y 点是否被直接置位 |
| 循环两次 | D1 或 D2 达到 2 后停止 | 若一直循环,查比较指令常数 |
4.2 监控表与强制输入输出验证
GX Developer 的监控表可以同时观察多个软元件。对于装瓶流水线,建议建三组监控:第一组看输入 X0 到 X4,确认按钮信号;第二组看输出 Y1 到 Y12,确认工序指示灯;第三组看 M10 到 M24、D1、D2、T0、C0,确认内部状态。监控表里不要只看 Y 点,因为 Y 点可能被 SET 指令置位后一直保持,如果不复位,程序看起来在跑,实际工序已经乱掉。
监控表 1:X0 X1 X2 X3 X4 监控表 2:Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y10 Y11 Y12 监控表 3:M0 M1 M2 M10-M19 M20-M24 D1 D2 T0 C0强制输入时,每次只强制一个点,观察状态变化后再取消。比如强制 X3 为 ON,手动模式 M0 应该置位,此时自动模式 M100 应该为 OFF;再强制 X4 为 ON,M1 应该变为 OFF,此时按 X1 不产生移位。这些验证步骤能提前发现互锁写反的问题。输出侧可以强制 Y1 为 ON,确认第 1 道工序指示灯亮,但不要长期强制输出,以免模拟器退出后忘记取消。
4.3 故障排查:步进丢失、定时器不复位、循环次数异常
步进丢失是最常见的问题。表现是按下移位按钮后,工序指示灯跳过了某一步,或者直接从第 3 步跳到第 5 步。原因通常是移位脉冲用了普通OUT而不是PLS,导致一个扫描周期内移位多次;或者移位寄存器里有两个位同时为 ON,按一次移位后两个位一起移动。排查方法是在监控表里看 M10 到 M19 是否只有一位为 ON。如果有多位为 ON,先执行ZRST复位,再检查程序里有没有多个地方对同一位使用SET。
定时器不复位也经常出现。自动模式按停顿后再按启动,定时器可能从上次的值继续计时,而不是重新从 0 开始。FX2n 的定时器在驱动条件断开后会自动复位,但如果程序里用SET T0或把 T0 放在持续接通的逻辑里,就不会复位。正确做法是让 T0 的驱动条件受 M103 控制,停顿或复位时断开 M103。循环次数异常通常和比较指令的常数有关,比如想循环两次却写成 K3,或者 D1 没有在复位时清零。排查时先看 D1、D2 的当前值,再看CMP指令后面的输出位是否接错。
| 故障现象 | 可能原因 | 排查动作 |
|---|---|---|
| 按 X1 不移位 | M1 允许标志为 OFF,或 X4 被强制 ON | 监控 M1 和 X4 |
| 按一次移位跳两步 | 移位脉冲未用 PLS,或双线圈 | 检查 M2/M101 是否只在一个地方输出 |
| 自动模式不定时 | T0 驱动条件不满足,或 M103 断开 | 监控 M100、M103、T0 当前值 |
| 定时器到点不动作 | T0 完成位被覆盖,或移位对象错误 | 查看 T0 触点是否接在 PLS 前 |
| 循环次数不准确 | D1/D2 未清零,或比较常数写错 | 复位时把 D1/D2 清零,检查 CMP 指令 |
| 输出指示灯常亮 | Y 点被 SET 后未 RST | 在复位逻辑里加入 ZRST Y1 Y12 |
调试时建议先手动模式、后自动模式,先单步、后连续。手动模式验证移位寄存器和复位逻辑,自动模式验证定时器和循环计数。每改一次程序,先编译再写入模拟器,不要直接在线修改后忘记保存。GX Developer 的监控表可以同时打开多个窗口,把 X、Y、M、T、D 分开放,排查时不用来回切换。
5. 从 10 工序到参数化状态机:一个可复用的步进模板
5.1 用 D 寄存器存步号替代移位寄存器
移位寄存器写 10 道工序还算直观,但如果工序增加到 20 道、循环次数改成 5 次、自动模式节拍改成 3 秒,移位方案就要改大量触点。更可复用的做法是用一个数据寄存器 D0 存“当前步号”,每一步用比较指令驱动输出。手动模式按 X1 时 D0 加一,自动模式定时到 D0 加一;D0 超过最大步号时回到 1,同时循环计数器加一。这样工序数、循环次数、定时器设定值都可以用常数或数据寄存器统一管理。
下面给出一段结构化文本形式的参数化模板,虽然 FX2n 原生以梯形图为主,但这段逻辑可以直接翻译成比较指令和加减指令。重点看步号管理和边界处理。
; 参数化步进模板(可翻译为 FX 梯形图比较指令) ; D0:当前步号,范围 1-10 ; D10:最大步号,手动=10,自动=5 ; D11:目标循环次数,手动=2,自动=2 ; D12:当前循环次数 ; T0:自动模式节拍定时器,K50 对应 5 秒 IF X1 AND M0 AND NOT X4 THEN D0 := D0 + 1; (* 手动步进 +1 *) IF D0 > D10 THEN D0 := 1; (* 回到第 1 步 *) D12 := D12 + 1; (* 循环计数 *) END_IF; END_IF; IF T0 AND M100 AND NOT X4 THEN D0 := D0 + 1; (* 自动步进 +1 *) IF D0 > D10 THEN D0 := 1; D12 := D12 + 1; END_IF; END_IF; IF D12 >= D11 THEN M0 := FALSE; M100 := FALSE; (* 达到循环次数停止 *) END_IF; (* 用比较指令驱动输出 *) Y1 := (D0 = 1); Y2 := (D0 = 2); Y3 := (D0 = 3); Y4 := (D0 = 4); Y5 := (D0 = 5); Y6 := (D0 = 6); Y7 := (D0 = 7); Y10 := (D0 = 8); Y11 := (D0 = 9); Y12 := (D0 = 10);这段模板的逻辑说明:D0 是唯一的状态变量,所有输出都由 D0 比较得到,不再需要 M10 到 M19 同时保持。参数说明:D10 根据模式切换,手动模式赋 10,自动模式赋 5;D11 是目标循环次数,默认 2;D12 在复位时清零。边界处理是D0 > D10时回到 1,并让 D12 加一。这样改工序数只需要改 D10,改循环次数只需要改 D11,改自动节拍只需要改 T0 的设定值。
| 参数 | 手动模式 | 自动模式 | 修改方式 |
|---|---|---|---|
| 最大步号 D10 | 10 | 5 | 用 MOV 指令按模式赋值 |
| 节拍定时器 T0 | 不启用 | K50(5s) | 改 K 值即可 |
| 目标循环 D11 | 2 | 2 | 修改常数或数据寄存器 |
| 当前循环 D12 | 复位清零 | 复位清零 | 在 X2 复位逻辑中 MOV K0 D12 |
| 当前步号 D0 | 1-10 | 1-5 | 手动 X1 或自动 T0 触发加一 |
5.2 验证参数化模板的两个技巧
第一个技巧是先用小步号验证边界。把 D10 临时改成 3,D11 改成 2,观察 D0 是否按 1-2-3-1-2-3 循环,D12 是否在第三次步号回到 1 时加一。这样比直接跑 10 步更容易看清边界。第二个技巧是在 GX Developer 监控表里同时观察 D0、D10、D11、D12 和 Y 点,把 D0 的当前值改成 1 到 10 逐个强制,检查对应 Y 点是否按表点亮。如果某个 Y 点不亮,先查比较指令的常数,再查该 Y 点是否在别处被 RST 或 ZRST 覆盖。参数化模板的调试重点是边界,不是单步逻辑;把 D10 和 D11 改小,循环边界会更快暴露问题。
本文还有配套的精品资源,点击获取