三菱 PLC 控制步进电机驱动分度盘的程序设计,需围绕 “精准角度定位”“可靠原点回归”“灵活分度选择” 三大核心需求,结合步进电机脉冲特性与机械结构特点,实现稳定、高精度的分度控制。以下以三菱 FX3U PLC 为例,详细介绍程序设计的完整逻辑(含梯形图指令说明)。
一、控制需求与系统框架
1. 控制需求
2. 系统框架
plaintext
传感器信号(原点/限位)→ PLC → 脉冲指令(控制步进驱动器)→ 步进电机 → 分度盘 ↑↓ 操作按钮(启动/急停/角度选择)
二、硬件选型与 I/O 分配
1. 硬件清单
部件 | 型号 / 规格示例 | 作用 |
---|---|---|
PLC | 三菱 FX3U-40MT/ES-A | 核心控制,输出脉冲与逻辑处理 |
步进电机 | 57HS22(步距角 1.8°,扭矩 2.2N・m) | 驱动分度盘旋转 |
驱动器 | DM542(支持 16 细分) | 接收脉冲信号,驱动电机 |
分度盘 | 直径 300mm,带定位销 | 承载工件,实现角度分度 |
传感器 | 光电开关(原点 X0、正限位 X1、反限位 X2) | 零位检测与超程保护 |
操作按钮 | 启动 X3、急停 X4、角度选择 X5~X8 | 人工操作输入 |
输出设备 | 运行灯 Y0、锁紧电磁阀 Y1 | 状态指示与机械锁紧 |
2. I/O 分配表
输入(X) | 功能描述 | 输出(Y) | 功能描述 |
---|---|---|---|
X0 | 原点检测(常开) | Y0 | 脉冲输出(PLS) |
X1 | 正转限位(常开) | Y1 | 方向输出(DIR) |
X2 | 反转限位(常开) | Y2 | 运行指示灯(红) |
X3 | 启动按钮(常开) | Y3 | 锁紧电磁阀 |
X4 | 急停按钮(常闭) | Y4 | 报警灯(黄) |
X5 | 30° 选择 | ||
X6 | 45° 选择 | ||
X7 | 60° 选择 | ||
X8 | 90° 选择 | ||
X9 | 原点回归按钮 | ||
X10 | 复位按钮 |
3. 数据寄存器(D)定义
寄存器 | 功能描述 | 初始值 / 示例 |
---|---|---|
D0 | 单脉冲对应角度(°) | 0.05625(1.8°/32 细分) |
D10~D13 | 预设分度角度(30°/45°/60°/90°) | 30/45/60/90 |
D20 | 当前选择的目标角度 | 由 X5~X8 赋值 |
D21 | 目标角度对应的脉冲数 | 计算结果(如 30°→533) |
D30 | 绝对位置脉冲数(当前坐标) | 0(原点回归后) |
D40 | 机械误差补偿脉冲数 | 0(可手动校准) |
D50 | 运行速度(Hz) | 2000(可调整) |
D60 | 加减速时间(ms) | 100(通过 D8148 设置) |
三、核心程序设计(梯形图逻辑详解)
1. 初始化与原点回归程序
原点回归是确保分度精度的前提(所有角度基于原点计算),逻辑如下:
plaintext
// ① 原点回归触发(X9按钮或首次上电) LD X9 // 原点回归按钮 OR M8002 // 首次上电脉冲(M8002仅上电时通一次) OUT M0 // M0=原点回归请求 // ② 执行原点回归指令(ZRN):向原点方向运行,触发X0后停止 LD M0 AND X4 // 急停按钮闭合(正常状态) ZRN K1000, K500, Y0, Y1 // ZRN指令:搜索速度1000Hz,爬行速度500Hz,脉冲Y0,方向Y1 // 说明:ZRN会自动驱动电机向原点移动,X0触发后减速停止 // ③ 原点回归完成处理 LD M8029 // 定位/原点回归完成标志(指令执行完自动置1) AND M0 // 仅在原点回归请求时有效 RST M0 // 清除回归请求 MOV K0 D30 // 当前绝对位置清零(原点坐标=0) SET M10 // M10=就绪状态(可执行分度) OUT Y2 // 运行灯亮(表示就绪)
关键点:
2. 角度选择与脉冲数换算程序
将选定的角度(如 30°)转换为步进电机脉冲数,核心是 “角度→脉冲” 的精确计算:
plaintext
// ① 角度选择(仅在就绪状态M10=1时有效) LD M10 AND NOT M20 // 未运行时允许选择角度 LD X5 // 30°选择 OUT M5 LD X6 // 45°选择 OUT M6 // (X7、X8同理,对应M7、M8) // ② 目标角度赋值(将选择的角度存入D20) LD M5 MOV D10 D20 // 30°→D20=30 LD M6 MOV D11 D20 // 45°→D20=45 // (M7、M8对应D12、D13) // ③ 脉冲数计算:脉冲数=目标角度÷单脉冲角度(D0=0.05625°) // 公式:D21 = D20 / D0 (因PLC不直接支持浮点数,用放大法处理) LD D20 // 若目标角度不为0 DIFU M11 // 角度变化时触发计算 LD M11 MUL D20 K100000 D22 // D22=目标角度×100000(放大消除小数) DIV D22 D0 D21 // D21=脉冲数(四舍五入取整) // 示例:30°×100000=3000000 ÷ 5625(D0=0.05625×100000)=533.333→533
关键点:
3. 分度运行控制程序
通过绝对定位指令(DRVA)驱动电机旋转至目标角度,到位后锁紧:
plaintext
// ① 启动条件:就绪(M10=1)+ 未运行(M20=0)+ 启动按钮(X3)+ 急停正常(X4) LD M10 AND NOT M20 AND X3 AND X4 SET M20 // M20=运行中 RST Y2 // 熄灭就绪灯 OUT Y2 // 运行灯亮(Y2复用,也可单独设指示灯) // ② 执行绝对定位(DRVA):目标位置=当前位置+目标脉冲数+补偿值 LD M20 DRVA D30+D21+D40, D50, Y0, Y1 // DRVA指令:绝对位置=当前位置+目标脉冲+补偿 // 速度=D50(2000Hz),脉冲Y0,方向Y1 // ③ 定位完成处理 LD M8029 // 定位完成标志 AND M20 // 仅在运行中有效 RST M20 // 清除运行状态 MOV D30+D21+D40 D30 // 更新当前绝对位置(D30=新坐标) OUT Y3 // 触发锁紧电磁阀(保持0.5秒) TON T0 K50 // T0=50×10ms=500ms LD T0 RST Y3 // 松开锁紧(根据机械需求选择是否保持) SET M10 // 恢复就绪状态 OUT Y2 // 就绪灯亮
关键点:
4. 保护程序(急停、限位、报警)
plaintext
// ① 急停处理(X4断开时触发) LD NOT X4 RST M20 // 停止运行 RST Y0 // 停止脉冲输出 RST Y3 // 松开锁紧 OUT Y4 // 报警灯亮 RST M10 // 清除就绪状态(需重新原点回归) // ② 限位保护(X1正限位或X2反限位触发) LD X1 OR X2 RST M20 // 停止运行 SPD RST Y0 // 强制停止脉冲 OUT Y4 // 报警灯亮 // (需手动复位X1/X2后,重新原点回归) // ③ 定位超时报警(防止卡料) LD M20 // 运行中 TON T1 K1000 // 超时10秒(1000×10ms)未完成 LD T1 OUT Y4 // 报警灯亮 RST M20 // 停止运行
四、程序优化与精度保障技巧
五、调试步骤
总结
该程序通过 “原点回归→角度选择→脉冲换算→绝对定位→保护逻辑” 的闭环设计,实现了分度盘的高精度控制。核心是脉冲数与角度的精确转换和绝对定位指令的可靠执行,配合机械锁紧和误差补偿,可满足 ±0.1° 以内的分度精度需求(更高精度需增加光栅尺闭环反馈)。