PLC 编码器程序的编制方法,核心是根据编码器类型(增量式 / 绝对值)和 PLC 型号,通过高速计数器(HSC) 或专用指令读取编码器脉冲,再换算为位置 / 速度等工艺值,以下是通用编制思路、实操示例(以三菱 FX3U 和西门子 S7-1200 为例),覆盖核心逻辑与调试要点。
一、核心前提:编码器与 PLC 的硬件适配
先明确编码器类型和 PLC 高速计数器配置,这是程序编制的基础:
| 编码器类型 | 信号输出 | PLC 适配方式 | 核心用途 |
|---|---|---|---|
| 增量式(NPN/PNP) | A/B 相(正交)+ Z 相(零位) | 高速计数器(HSC)接收 A/B 相脉冲,Z 相清零 | 位置计数、速度计算(如电机转速) |
| 绝对值(单圈 / 多圈) | 并行 / SSI/Modbus | 并行接口 / 专用模块 / 通讯指令读取 | 断电记忆位置(如机械手定位) |
关键硬件配置:
二、通用编程逻辑(增量式编码器为例)
无论哪种 PLC,增量式编码器程序核心是 “脉冲计数→数值换算→工艺应用” 三步:
三、实操示例(主流 PLC 型号)
示例 1:三菱 FX3U + 增量式编码器(A/B 相,正交计数)
需求:读取编码器脉冲数,换算为电机转速(编码器线数 1000,电机 1 转 = 1000 脉冲,60 秒 = 1 分钟)。
ladder
// 1. 高速计数器初始化(HSC0,X0=A相,X1=B相,正交模式) LD M8002 // 上电初始化脉冲 MOV K0 K2500 // HSC0模式设置:K2500=正交计数,加/减模式 MOV K0 C250 // 计数器初始值清零 OUT C250 K0 // 启用C250(HSC0),无预设值 // 2. 转速计算(每秒读取脉冲数,换算为转速) LD M8013 // 1秒脉冲 MOV C250 D100 // 读取当前脉冲数到D100 SUB D100 D101 D102 // 本次脉冲数=当前值-上次值 MOV D100 D101 // 保存本次值为下次基准 MUL D102 K60 D103 // 转速=脉冲数/秒 ×60秒 ÷1000线/转 DIV D103 K1000 D104 // D104=最终转速(rpm) // 3. 零位清零(Z相接X2,按下清零) LD X2 RST C250 // 计数器清零
关键说明:
示例 2:西门子 S7-1200 + 增量式编码器(TIA Portal)
需求:启用 HSC1,正交计数,换算为直线模组位置(编码器线数 2000,模组 1mm=100 脉冲)。
stl
// 1. 高速计数器组态(博途硬件配置) // 步骤:设备组态→数字量输入→HSC1→模式:正交计数,I0.0=A相,I0.1=B相,初始值0,加/减计数。 // 2. 程序编写(ST语言) PROGRAM Main VAR HSC1_Count: DINT; // 计数器值 Position: REAL; // 实际位置(mm) Pulse_per_mm: INT := 100; // 每毫米脉冲数 END_VAR // 读取计数器值 HSC1_Count := HC1; // HC1=HSC1当前计数值 // 换算位置 Position := REAL#HSC1_Count / REAL#Pulse_per_mm; // 零位清零(I0.2触发) IF I0.2 THEN HC1 := 0; // 计数器清零 END_IF;
关键说明:
四、绝对值编码器编程(Modbus 通讯为例)
以台达绝对值编码器(Modbus RTU)+ 西门子 S7-1200 为例:
stl
// 1. Modbus初始化(波特率9600,无校验,从机地址1) MODBUS_INIT(EN:=TRUE, MODE:=0, BAUD:=9600, PARITY:=0, PORT:=1, DONE=>MB_Init_Done, ERROR=>MB_Err); // 2. 读取编码器位置(寄存器地址40001,读取1个字) IF MB_Init_Done AND I0.3 THEN MODBUS_MSG(EN:=TRUE, FIRST:=TRUE, SLAVE:=1, RW:=0, ADDR:=40001, LEN:=1, data:=Encoder_Data, DONE=>MB_Read_Done, ERROR=>MB_Read_Err); END_IF; // 3. 位置换算(编码器单圈4096脉冲,对应360°) Encoder_Angle := REAL#Encoder_Data / REAL#4096 * 360.0;
关键说明:
五、调试与常见问题排查
| 故障现象 | 原因 | 解决方法 |
|---|---|---|
| 计数器不计数 | 编码器接线反、HSC 未启用、极性不匹配 | 调换 A/B 相接线;检查 PLC HSC 组态;匹配 NPN/PNP 输入类型 |
| 计数不准 / 跳变 | 干扰、编码器松动、脉冲频率超 PLC 上限 | 编码器线用屏蔽双绞;紧固编码器轴;降低电机转速或换高速计数器 |
| 转速 / 位置换算错误 | 电子齿轮比 / 脉冲数设置错误 | 重新核对编码器线数、机械传动比(如丝杆导程) |
总结
PLC 编码器程序编制的核心要点:

