以下是三菱 FX1S 系列 PLC 通过FX2N-2PG 双轴脉冲模块控制两个伺服电机的编程实例,包含核心逻辑梯形图及注释,实现 “双轴独立定位控制” 功能(如 1 号轴正转定位、2 号轴反转定位,带限位保护和急停)。
一、控制需求
二、FX2N-2PG 模块核心参数(BFM 地址)
| 功能 | 1 号轴(CH1)BFM 地址 | 2 号轴(CH2)BFM 地址 | 设定说明(示例) | 
|---|---|---|---|
| 定位模式 | BFM#100 | BFM#110 | K0 = 相对定位;K1 = 绝对定位 | 
| 脉冲频率(Hz) | BFM#101 | BFM#111 | 1 号轴设 K5000;2 号轴设 K8000 | 
| 脉冲数(低 16 位) | BFM#102 | BFM#112 | 1 号轴 K20000;2 号轴 K15000 | 
| 脉冲数(高 16 位) | BFM#103 | BFM#113 | 脉冲数≤65535 时设 K0 | 
| 方向设定 | BFM#104 | BFM#114 | 1 号轴 K0 = 正向;2 号轴 K1 = 反向 | 
| 启动 / 停止 | BFM#105 | BFM#115 | K1 = 启动;K0 = 停止 | 
| 状态反馈 | BFM#200 | BFM#210 | BIT0=1 = 定位完成;BIT1=1 = 限位报警;BIT2=1 = 故障 | 
三、梯形图程序(核心逻辑)
1. 初始化与使能控制
plaintext
|----[X0]----+----[X12]----(M0)----| // M0=系统正常(急停未触发+无报警) | // X0急停闭合时M0才可能ON |----[M0]----(Y10)----| // 系统正常时,伺服使能Y10输出(驱动器SON得电)
2. 1 号轴控制逻辑
plaintext
// ① 写入1号轴定位参数(仅在未运行且无报警时执行) |----[X10]----+----[M0]----+----[NOT M10]----(M1)----| // M1=1号轴启动请求 | | // 写入定位模式(相对定位) |----[M1]----(TO K0 K100 D0 K1)----| // D0=K0(BFM#100=K0) // 写入脉冲频率(5kHz) |----[M1]----(TO K0 K101 D1 K1)----| // D1=K5000(BFM#101=K5000) // 写入脉冲数(低16位20000) |----[M1]----(TO K0 K102 D2 K1)----| // D2=K20000(BFM#102=K20000) // 写入脉冲数(高16位0) |----[M1]----(TO K0 K103 D3 K1)----| // D3=K0(BFM#103=K0) // 写入方向(正向) |----[M1]----(TO K0 K104 D4 K1)----| // D4=K0(BFM#104=K0) // ② 启动1号轴(参数写入完成后) |----[M1]----+----[T0 K10]----(M10)----| // T0延时100ms确保参数写入,M10=1号轴运行中 | |----[M10]---(TO K0 K105 D5 K1)----| // D5=K1(BFM#105=K1,启动脉冲输出) // ③ 读取1号轴状态(定位完成/报警) |----[M10]------------------------(FROM K0 K200 D10 K1)----| // 读BFM#200到D10 |----[D10.0]----+----[NOT M10]----(M11)----| // D10.0=1(定位完成),M11=1号轴完成 | |----[D10.1 OR D10.2]----(M12)----| // D10.1=限位报警,D10.2=故障,M12=1号轴报警 // ④ 1号轴停止条件(完成/报警/急停) |----[M11 OR M12 OR NOT M0]----+----(RST M10)----| // 停止时复位运行标志 | |----[M11 OR M12]--------------(TO K0 K105 D6 K1)----| // D6=K0(BFM#105=K0,停止脉冲)
3. 2 号轴控制逻辑(与 1 号轴类似,地址偏移 10)
plaintext
// ① 写入2号轴定位参数 |----[X11]----+----[M0]----+----[NOT M20]----(M2)----| // M2=2号轴启动请求 | | |----[M2]----(TO K0 K110 D20 K1)----| // D20=K0(BFM#110=相对定位) |----[M2]----(TO K0 K111 D21 K1)----| // D21=K8000(BFM#111=8kHz) |----[M2]----(TO K0 K112 D22 K1)----| // D22=K15000(BFM#112=15000脉冲) |----[M2]----(TO K0 K113 D23 K1)----| // D23=K0(BFM#113=0) |----[M2]----(TO K0 K114 D24 K1)----| // D24=K1(BFM#114=反向) // ② 启动2号轴 |----[M2]----+----[T1 K10]----(M20)----| // T1延时100ms,M20=2号轴运行中 | |----[M20]---(TO K0 K115 D25 K1)----| // D25=K1(BFM#115=启动) // ③ 读取2号轴状态 |----[M20]------------------------(FROM K0 K210 D30 K1)----| // 读BFM#210到D30 |----[D30.0]----+----[NOT M20]----(M21)----| // M21=2号轴完成 | |----[D30.1 OR D30.2]----(M22)----| // M22=2号轴报警 // ④ 2号轴停止条件 |----[M21 OR M22 OR NOT M0]----+----(RST M20)----| | |----[M21 OR M22]--------------(TO K0 K115 D26 K1)----| // D26=K0(停止脉冲)
4. 报警与复位逻辑
plaintext
// 报警触发(急停/1号轴报警/2号轴报警) |----[NOT X0 OR M12 OR M22]----(M50)----| // M50=系统报警 |----[M50]----(Y20)----| // 报警灯Y20亮 // 报警复位(按X12且急停正常) |----[X12]----+----[X0]----(RST M50)----| // 复位报警标志 | |----[X12]----(RST M12)----(RST M22)----| // 清除轴报警标志
四、数据寄存器初始化(D 区设定)
在程序开头通过初始化脉冲(M8002)设置参数值:
plaintext
|----[M8002]----(MOV K0 D0)----(MOV K5000 D1)----(MOV K20000 D2)----| |----(MOV K0 D3)----(MOV K0 D4)----(MOV K1 D5)----(MOV K0 D6)----| // 1号轴参数 |----(MOV K0 D20)----(MOV K8000 D21)----(MOV K15000 D22)----| |----(MOV K0 D23)----(MOV K1 D24)----(MOV K1 D25)----(MOV K0 D26)----| // 2号轴参数
五、关键说明
此实例可直接用于 FX1S+FX2N-2PG 的双伺服控制场景,根据实际需求修改脉冲数、频率、方向等参数即可。调试时建议先单轴测试,确认无丢脉冲后再联动运行。
 

