欧姆龙 MAD42 模拟量模块与电子尺(位移传感器)的连接程序,核心是完成模拟量输入信号的采集、量程转换、数据校准,将电子尺的电压 / 电流信号(如 0-10V、4-20mA)转换为实际的位移数值(如 0-100mm),同时包含模块配置、接线规范和程序容错处理,以下是可直接落地的完整方案(以 CP 系列 PLC 为例,适配 MAD42 的 4 路模拟量输入特性)。
一、核心前提:MAD42 模块与电子尺基础配置
1. MAD42 模块关键参数
输入类型:4 路模拟量输入(电压 / 电流可选,通过端子跳线设置);
输入范围:电压 0-10V、1-5V;电流 4-20mA(需短接对应端子跳线);
分辨率:12 位(0-10V 对应数字值 0-4095,4-20mA 对应数字值 409-4095);
数据存储:输入值存储在 PLC 的 CIO 区,通道 0 对应 CIO200,通道 1 对应 CIO202,依此类推(双字存储)。
2. 电子尺接线规范(以 0-10V 电压型为例,最常用)
| MAD42 端子 | 电子尺端子 | 接线说明 |
|---|---|---|
| VIN0+(1 号端子) | 信号正(OUT+) | 电子尺电压信号输出正 |
| VIN0-(2 号端子) | 信号负(OUT-) | 电子尺电压信号输出负 |
| 24V+(19 号端子) | 电源正(VCC) | 给电子尺供电(DC24V) |
| 0V(20 号端子) | 电源负(GND) | 电子尺电源地,与信号地共地 |
⚠️ 关键:
电子尺与 MAD42 的电源地、信号地必须单点共地,避免地电位差导致信号漂移;
接线用屏蔽双绞线,屏蔽层单端接地(MAD42 侧),远离动力线,减少干扰。
3. MAD42 模块跳线设置
电压输入(0-10V):将通道 0 的跳线拨至 “V” 侧;
电流输入(4-20mA):将通道 0 的跳线拨至 “I” 侧,并短接 “V/I” 短接片;
未使用通道:跳线拨至 “OFF”,避免干扰。
二、核心程序实现(欧姆龙 CX-Programmer,梯形图 + ST 语言)
以0-10V 电子尺(量程 0-100mm) 为例,实现 “模拟量采集→量程转换→数据滤波→位移显示” 全流程,程序包含容错处理(超量程报警、数据防抖)。
1. 变量定义(符号表)
| 符号名 | 地址 | 数据类型 | 说明 |
|---|---|---|---|
| AI_Raw | CIO200 | INT | MAD42 通道 0 原始数字值(0-4095) |
| Dis_Act | D100 | REAL | 电子尺实际位移值(mm) |
| Dis_Filter | D104 | REAL | 滤波后位移值(消除波动) |
| Alarm_Over | M100 | BOOL | 超量程报警(位移 > 100mm 或 < 0mm) |
| K1 | D200 | REAL | 量程转换系数(100/4095≈0.02442) |
2. 程序段 1:模拟量原始值采集
ladder
// 读取MAD42通道0的原始数字值,存入AI_Raw(CIO200) LD SM0.0 MOV CIO200, AI_Raw
3. 程序段 2:量程转换(数字值→实际位移)
核心公式:实际位移原始数字值电子尺满量程模拟量满量程数字值(0-10V 对应数字值 0-4095,电子尺满量程 100mm,系数 = 100/4095≈0.02442)
st
// ST语言实现量程转换,适配高精度计算 VAR AI_Raw: INT := CIO200; Dis_Act: REAL := D100; K1: REAL := 100.0/4095.0; // 转换系数 END_VAR // 量程转换 Dis_Act := REAL(AI_Raw) * K1; D100 := Dis_Act; // 超量程判断(容错处理) IF Dis_Act > 100.0 OR Dis_Act < 0.0 THEN M100 := TRUE; // 超量程报警置位 ELSE M100 := FALSE; END_IF;
4. 程序段 3:数据滤波(消除电子尺信号波动)
采用滑动平均滤波(取 5 次采样值平均),避免位移值频繁跳变:
st
VAR Dis_Buf: ARRAY[0..4] OF REAL; // 缓存5次位移值 Dis_Filter: REAL := D104; i: INT := 0; Sum: REAL := 0.0; END_VAR // 循环更新缓存数组 FOR i := 4 TO 1 BY -1 DO Dis_Buf[i] := Dis_Buf[i-1]; END_FOR; Dis_Buf[0] := Dis_Act; // 最新值存入数组首位 // 计算平均值(滤波) Sum := Dis_Buf[0] + Dis_Buf[1] + Dis_Buf[2] + Dis_Buf[3] + Dis_Buf[4]; Dis_Filter := Sum / 5.0; D104 := Dis_Filter;
5. 程序段 4:4-20mA 电子尺适配(扩展)
若电子尺为 4-20mA 型(量程 0-100mm),需调整转换公式:实际位移原始数字值(4mA 对应数字值 409,20mA 对应 4095,系数 = 100/3686≈0.02713)
st
// 4-20mA量程转换 Dis_Act := (REAL(AI_Raw) - 409.0) * (100.0/(4095.0-409.0));
三、程序调试与校准(现场必做)
零点校准:电子尺拉至 0mm 位置,若采集的原始值≠0,在程序中增加零点偏移补偿:
st
Dis_Act := (REAL(AI_Raw) - 偏移值) * K1;
(如原始值 = 50,偏移值设为 50,抵消零点误差)
满量程校准:电子尺拉至满量程(如 100mm),若实际计算值 = 98mm,调整转换系数:
st
K1 := 100.0/(4095.0 - 偏移值); // 微调系数至100/4045≈0.02472
滤波参数调整:若位移波动仍大,增加缓存数组长度(如改为 10 次平均),但会降低响应速度,需平衡精度与实时性。
四、常见问题与解决
| 故障现象 | 核心原因 | 解决方法 |
|---|---|---|
| 位移值始终为 0 | 接线错误 / 跳线设置错 | 核对 VIN0+/- 接线,确认跳线拨至 “V”(电压)或 “I”(电流) |
| 位移值跳变剧烈 | 干扰 / 未滤波 | 屏蔽线单端接地,启用滑动平均滤波,增加滤波次数 |
| 位移值与实际不符 | 转换系数错误 / 零点偏移 | 重新计算转换系数,增加零点偏移补偿 |
| 超量程报警误触发 | 电子尺供电不稳 | 给电子尺单独供电(DC24V 开关电源),避免与 PLC 共电源 |
总结
MAD42 与电子尺连接的核心是正确接线 + 跳线设置 + 量程转换,0-10V 和 4-20mA 的转换公式需区分(4-20mA 需减去 4mA 对应的数字值);
程序中必须增加滤波处理(滑动平均)和容错判断(超量程报警),避免信号波动和异常值影响控制逻辑;
现场调试的关键是零点和满量程校准,通过偏移补偿和系数微调,确保位移值与实际一致。

