三菱FX3U系列PLC作为工业自动化领域的经典控制器,在运动控制、定位应用等场景中占据重要地位。PLSR(脉冲输出与定位指令)是其实现高精度位置控制的核心功能模块。在实际产线维护和调试过程中,工程师经常面临一个关键需求:如何在设备保持运行状态(RUN模式)的情况下,安全地完成程序更新和参数调整。
传统PLC程序更新需要停机操作,这在连续生产的工业场景中会造成巨大经济损失。RUN中下载技术(又称"在线写入"或"热更新")正是解决这一痛点的关键技术。本项目提供的源码示例,不仅包含标准的PLSR指令应用代码,更重点演示了如何在FX3U上实现运行状态下的程序安全更新,这对自动化设备维护具有以下实际价值:
要实现RUN中下载功能,需要确保硬件满足以下条件:
注意:FX3G/FX3GC系列PLC虽然也支持PLSR指令,但不完全兼容RUN中下载功能,需特别注意型号差异。
ini复制[COM端口设置]
波特率=115200
数据位=7
奇偶校验=偶校验
停止位=1
流控制=无
PLSR指令是三菱FX系列PLC用于脉冲输出的核心指令,完整格式如下:
st复制PLSR S1 S2 S3 D
典型应用示例:
ladder复制|-[PLSR D100 D102 D104 Y000]-
st复制// 设置运动参数
D100 = K50000 // 频率50kHz
D102 = K100000 // 脉冲数100,000
D104 = K300 // 加减速时间300ms
// 执行PLSR指令
PLSR D100 D102 D104 Y000
// 检测完成信号
IF M8029 THEN
// 定位完成处理
END_IF
需结合DDRVI指令和变址寄存器实现:
st复制// 读取当前位置
DMOV D200 D210
// 计算剩余脉冲
DSUB K500000 D210 D102
// 执行定位
PLSR D100 D102 D104 Y000
脉冲当量计算:
code复制每毫米脉冲数 = 编码器分辨率 / (丝杠导程 * 减速比)
例:17位编码器(131072ppr)、5mm导程、1:1减速比:
code复制131072 / 5 = 26214.4 pulse/mm
加减速时间优化:
PLC参数设置:
程序结构要求:
操作流程:
mermaid复制graph TD
A[连接PLC] --> B[进入监视模式]
B --> C[编辑程序]
C --> D[执行在线写入]
D --> E[验证修改]
ladder复制|-[M8000]---[DMOV D8000 D100]-(记录扫描周期)
|-[M8002]---[ZRST S0 S999]----(初始化状态)
|-[M8013]---[INC D101]--------(运行时间计数)
st复制// 写入标志检测
IF M100 THEN
// 进入安全模式
SET M200
// 暂停运动控制
RST PLSR_ENABLE
// 保存当前位置
DMOV D8340 D9000
END_IF
// 写入完成恢复
IF M101 THEN
// 恢复运动控制
SET PLSR_ENABLE
// 位置恢复
DDRVI D9000 K50000 Y000
END_IF
禁止操作项:
推荐操作顺序:
异常处理:
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 无脉冲输出 | Y地址配置错误 | 检查PLC输出类型(需晶体管输出) |
| 脉冲数不准确 | 32位寄存器溢出 | 使用DMOV替代MOV指令 |
| 方向信号异常 | 输出极性设置错误 | 在伺服驱动器侧调整PA14参数 |
| 加减速不平滑 | 时间设置过短 | 按公式重新计算加减速时间 |
通信错误(错误代码6XXX):
写入区域冲突(错误代码4101):
资源不足(错误代码4202):
位置偏差过大:
st复制// 偏差监测程序
DSUB D8340 D840 D900
IF D900 > K100 THEN
SET ALARM
END_IF
伺服准备超时:
ladder复制|-[M8000]---[T0 K50]---[SET Y004]-
通过PLSR结合变址寄存器实现:
st复制FOR Z0 TO K3
DMOV D100Z D200Z // 频率参数
DMOV D110Z D210Z // 脉冲数
PLSR D200Z D210Z D300 Y000Z
NEXT
利用RUN中下载特性实现:
st复制// HMI写入接口
IF M10 THEN
DMOV D100 K50000 // 实时更新频率
DMOV D102 K200000 // 更新脉冲数
END_IF
软件限位:
st复制IF D8340 > K1000000 THEN
RST PLSR_ENABLE
SET ALARM
END_IF
紧急停止处理:
ladder复制|-[X000]---[ZRST Y000 Y007]---[RST M0]-
掉电位置保存:
st复制// 使用断电保持寄存器
DMOV D8340 D1000
// 上电恢复
IF M8002 THEN
DDRVI D1000 K10000 Y000
END_IF
在实际项目中,我们曾遇到一个典型案例:某包装线因PLSR参数设置不当导致机械冲击过大。通过RUN中下载功能,我们在不停机的情况下逐步调整加减速时间(从300ms优化到800ms),最终使设备振动降低60%,同时生产效率仅下降2%。这种微调过程传统方式需要每天2小时的维护窗口,而在线修改仅耗时15分钟。