三菱 FX3U ES/A PLC 实现定位轴来回往返运动,且加减速距离可参数化调整的完整指令程序,这个程序要能灵活设置往返的目标位置、加减速距离,适配实际运动控制的需求。
一、程序设计思路
二、完整程序(GX Works2/GX Works3 梯形图转指令表)
stl
// ===================== 变量定义(D寄存器分配)===================== // D0: 运行速度 (Hz,对应脉冲频率,如1000=1kHz) // D2: 加速距离 (脉冲数,可调) // D4: 减速距离 (脉冲数,可调) // D6: 正向目标位置 (相对脉冲数,如5000=正向走5000脉冲) // D8: 反向目标位置 (相对脉冲数,如-5000=反向走5000脉冲) // D10: 当前运动方向 0-正向 1-反向 // M0: 启动按钮触发 (常开,I0.0) // M1: 停止按钮触发 (常闭,I0.1) // M2: 急停按钮 (常闭,I0.2) // M3: 正向运行标志 // M4: 反向运行标志 // M5: 正向限位 (I0.3,常闭) // M6: 反向限位 (I0.4,常闭) // Y0: 脉冲输出 (定位轴脉冲) // Y1: 方向输出 (定位轴方向) // Y10: 正向运行指示 // Y11: 反向运行指示 // Y12: 系统运行指示 // ===================== 初始化程序 ===================== NETWORK 1 // 首次扫描初始化 LD M8002 MOV K1000 D0 // 初始速度1000Hz MOV K500 D2 // 初始加速距离500脉冲 MOV K500 D4 // 初始减速距离500脉冲 MOV K5000 D6 // 正向目标位置5000脉冲 MOV K-5000 D8 // 反向目标位置-5000脉冲 MOV K0 D10 // 初始方向正向 RST M3 // 复位正向标志 RST M4 // 复位反向标志 RST Y10 // 复位正向指示 RST Y11 // 复位反向指示 RST Y12 // 复位运行指示 // ===================== 启动/停止控制 ===================== NETWORK 2 // 启动自锁 LD X000 // 启动按钮 (I0.0) OR M10 // 运行自锁 AN X001 // 停止按钮 (I0.1,常闭) AN X002 // 急停按钮 (I0.2,常闭) AN M5 // 正向限位触发时禁止启动 AN M6 // 反向限位触发时禁止启动 = M10 // 运行自锁标志 OUT Y12 // 系统运行指示 NETWORK 3 // 停止复位 LD X001 // 停止按钮按下 OR X002 // 急停按下 OR M5 // 正向限位触发 OR M6 // 反向限位触发 RST M10 // 解除自锁 RST M3 // 复位正向标志 RST M4 // 复位反向标志 RST Y10 // 关闭正向指示 RST Y11 // 关闭反向指示 RST Y12 // 关闭运行指示 ZRST Y0 Y1 // 停止脉冲和方向输出 // ===================== 加减速参数设置 ===================== NETWORK 4 // 绑定加减速距离到定位指令参数 LD M8000 MOV D2 D8340 // 加速距离写入定位指令加速寄存器(FX3U轴1加速脉冲数) MOV D4 D8341 // 减速距离写入定位指令减速寄存器(FX3U轴1减速脉冲数) // ===================== 正向运动控制 ===================== NETWORK 5 // 触发正向定位 LD M10 // 系统运行中 AN M4 // 非反向运行 LD= D10 K0 // 当前方向为正向 OR M6 // 反向限位触发(切换正向) AN M5 // 未到正向限位 = M3 // 正向运行标志 OUT Y10 // 正向指示 RST Y11 // 关闭反向指示 // DRVI S D Y0 Y1: 相对定位,S=目标脉冲,D=速度,Y0=脉冲,Y1=方向 DRVI D6 D0 Y0 Y1// 正向相对定位,目标位置D6,速度D0,加减速距离D2/D4 NETWORK 6 // 正向到位判断(切换反向) LD M3 // 正向运行中 LD M8029 // 定位完成标志 ANI M5 // 未触发正向硬限位 = M20 // 正向到位标志 MOV K1 D10 // 切换方向为反向 RST M3 // 复位正向标志 RST M8029 // 清除定位完成标志 // ===================== 反向运动控制 ===================== NETWORK 7 // 触发反向定位 LD M10 // 系统运行中 AN M3 // 非正向运行 LD= D10 K1 // 当前方向为反向 OR M5 // 正向限位触发(切换反向) AN M6 // 未到反向限位 = M4 // 反向运行标志 OUT Y11 // 反向指示 RST Y10 // 关闭正向指示 DRVI D8 D0 Y0 Y1// 反向相对定位,目标位置D8,速度D0,加减速距离D2/D4 NETWORK 8 // 反向到位判断(切换正向) LD M4 // 反向运行中 LD M8029 // 定位完成标志 ANI M6 // 未触发反向硬限位 = M21 // 反向到位标志 MOV K0 D10 // 切换方向为正向 RST M4 // 复位反向标志 RST M8029 // 清除定位完成标志 // ===================== 限位保护 ===================== NETWORK 9 // 正向限位触发 LD X003 // 正向限位开关 (I0.3) OUT M5 // 正向限位标志 RST M3 // 停止正向运行 OUT Y000 // 停止脉冲输出 NETWORK 10 // 反向限位触发 LD X004 // 反向限位开关 (I0.4) OUT M6 // 反向限位标志 RST M4 // 停止反向运行 OUT Y000 // 停止脉冲输出 // ===================== 手动调整参数(可选,通过触摸屏/输入)===================== NETWORK 11 // 加速距离增加(X005按下,每次+100脉冲) LD X005 ANDP M8000 ADD D2 K100 D2 NETWORK 12 // 加速距离减少(X006按下,每次-100脉冲,最小0) LD X006 ANDP M8000 SUB D2 K100 D2 LD D2 LBL= K0 MOV K0 D2 NETWORK 13 // 减速距离增加(X007按下,每次+100脉冲) LD X007 ANDP M8000 ADD D4 K100 D4 NETWORK 14 // 减速距离减少(X010按下,每次-100脉冲,最小0) LD X010 ANDP M8000 SUB D4 K100 D4 LD D4 LBL= K0 MOV K0 D4


