在三菱 FX1S 系列 PLC 控制两个伺服电机的程序设计中,由于 FX1S 本身硬件限制(无内置多轴脉冲输出、定位指令少),需结合扩展模块(如 FX2N-2PG)实现功能,因此程序设计需重点关注硬件兼容性、信号可靠性、逻辑安全性三大核心,具体细节如下:
一、硬件与模块通信的细节
扩展模块地址一致性
FX2N-2PG 模块的默认地址为 “0”,需通过模块上的 DIP 开关确认(若多模块扩展,地址不可冲突),程序中
FROM/TO
指令的 “模块号”(如K0
)必须与之匹配,否则无法读写参数。例:若模块地址设为 1,则指令需改为
TO K1 K100 D0 K1
,否则通信失败。BFM 寄存器操作的时效性
FX2N-2PG 的 BFM 寄存器写入后需 1~2 个扫描周期生效,禁止在同一周期内连续写入参数(如同时写脉冲数和启动信号),需通过延时(如定时器 T0=10ms)确保参数稳定。
错误示例:同时执行
TO K0 K102 D2 K1
(写脉冲数)和TO K0 K105 D5 K1
(启动),可能导致脉冲数未生效就启动,定位错误。脉冲频率与模块能力匹配
FX2N-2PG 最大支持 100kHz 脉冲输出,程序中设置的频率(BFM#101/111)需≤100000Hz,且不超过伺服驱动器的接收上限(如 MR-JE 系列支持 500kHz,需留余量)。
若需更高频率,需更换模块(如 FX3U-2PG 支持 200kHz),但 FX1S 兼容性需确认。
二、脉冲输出与定位逻辑的细节
脉冲数的高低位拆分
当定位脉冲数超过 65535(16 位最大值)时,需拆分到 “低 16 位(BFM#102/112)” 和 “高 16 位(BFM#103/113)”。
例:需输出 100000 脉冲,计算得 100000 = 65535 + 34465,则 BFM#102=34465,BFM#103=1(因 65535×1 + 34465=100000)。程序中需通过
DIV
或MOD
指令自动拆分,避免手动计算错误。方向信号与脉冲的同步性
伺服方向(BFM#104/114)需在脉冲输出前设置,禁止在脉冲运行中修改方向,否则会导致电机突然反转(机械冲击)。
程序逻辑:先通过
TO
指令写入方向参数,延时确认后再启动脉冲(BFM#105/115=K1)。相对定位与绝对定位的区分
相对定位(BFM#100/110=K0):脉冲数为 “当前位置的增量”,适合短距离移动;
绝对定位(BFM#100/110=K1):脉冲数为 “相对于原点的绝对位置”,需提前回原点(通过限位开关触发 BFM 复位)。
程序需明确模式,避免混用导致定位偏差(如绝对模式下未回原点直接运行,位置基准错误)。
三、安全与故障处理的细节
急停与限位的优先级
急停(X0)和限位开关(X1~X4)必须为 “常闭信号”,程序中需将其作为 “最高级中断”,无论电机是否运行,一旦触发立即通过
TO
指令停止脉冲输出(BFM#105/115=K0),并断开伺服使能(Y10=OFF)。错误逻辑:仅通过 “停止按钮” 停止脉冲,未关联急停,可能导致危险。
报警状态的实时监控
BIT1=1:限位超程(需复位后才能重新启动);
BIT2=1:伺服驱动器故障(如过流、过载,需排查硬件后复位);
BIT3=1:模块通信错误(检查扩展电缆或模块电源)。
需通过
FROM
指令持续读取 BFM#200/210(状态寄存器),检测以下报警:程序需将报警状态存入中间继电器(如 M12、M22),并锁定启动逻辑(报警时禁止新的启动指令)。
防误操作逻辑
同一轴禁止重复启动:通过 “运行中标志”(如 M10、M20)互锁,确保前一次定位完成或停止后,才能接受新的启动信号(
[X10] AND [NOT M10]
)。双轴联动时的互锁:若两轴有机械干涉(如不能同时运行),需在程序中加入轴间互锁(如 1 号轴运行时锁死 2 号轴启动,
[M10] OR [M20]
禁止对方启动)。
四、抗干扰与稳定性的细节
脉冲信号的完整性保护
程序中需避免 “脉冲输出中途被意外中断”(如 PLC 突然断电、程序错误复位),可通过 “脉冲完成标志”(D10.0、D30.0)与 “预设脉冲数” 对比,若未完成则记录异常状态,重启后提示人工确认。
例:定位 20000 脉冲,若运行中突然停止,重启后检测到 “已输出 15000 脉冲但未完成”,则报警提示 “定位中断”。
扫描周期的影响
FX1S 的扫描周期若过长(如超过 100ms),会导致
FROM/TO
指令执行延迟,影响脉冲输出精度(尤其高频脉冲时)。优化措施:① 简化非关键逻辑,缩短扫描周期;② 使用
IST
指令或中断程序处理急停 / 限位等关键信号,确保响应速度。初始化与复位逻辑
上电初始化(M8002)必须重置所有轴的运行标志(M10、M20)、报警标志(M12、M22),并向 BFM 写入默认参数(如停止信号 K0),避免模块残留上次运行状态导致误动作。
例:
[M8002] → (TO K0 K105 K0 K1)
(1 号轴初始化为停止)。
五、调试与测试的细节
单轴独立调试优先
程序编写完成后,先断开 2 号轴的脉冲线,单独测试 1 号轴:验证启动、停止、定位精度、限位保护是否正常;再测试 2 号轴,最后联动测试,避免双轴同时故障难以排查。
脉冲数与实际位移的校准
因电机分辨率(如 1000 脉冲 / 转)、减速比(如 1:10)影响实际位移,需通过公式计算 “脉冲数 = 目标位移 × 分辨率 × 减速比”,并在程序中预留参数修改寄存器(如 D100 = 分辨率,方便调试时调整)。
例:目标位移 10mm,电机每转移动 5mm,分辨率 1000 脉冲 / 转,则脉冲数 =(10/5)×1000=2000。
异常场景模拟
调试时需手动触发急停、限位开关,观察程序是否立即停止脉冲输出并报警;模拟脉冲丢失(如拔掉脉冲线),检查是否能通过状态寄存器检测到故障。
总结
FX1S 控制双伺服的程序细节,本质是 “弥补硬件短板”+“强化逻辑可靠性”:既要通过FROM/TO
指令精准控制扩展模块,又要通过互锁、报警、初始化等逻辑规避硬件限制带来的风险。实际调试中,需结合示波器监测脉冲信号(确认无丢脉冲)、伺服驱动器参数(如电子齿轮比)配合,才能实现稳定控制。