1. 项目概述
三菱FX系列PLC在工业自动化领域应用广泛,其模拟量输入功能是连接传感器与控制系统的重要桥梁。今天要分享的这套程序,是我在去年为一个恒压供水项目开发的模拟量采集方案,经过现场半年多的运行验证,稳定性完全可以满足工业场景需求。
这套程序的核心价值在于:通过合理的滤波算法和标定处理,将4-20mA/0-10V的模拟信号转换为可编程控制的数字量,同时解决了现场常见的信号干扰、零点漂移等问题。特别适合需要采集温度、压力、流量等过程变量的自动化项目。
2. 硬件配置与接线规范
2.1 模块选型要点
FX系列PLC的模拟量输入主要依赖扩展模块,常见型号包括:
- FX2N-4AD:4通道12位分辨率(最常用)
- FX3U-4AD:4通道16位分辨率(精度更高)
- FX5-4AD:新一代模块,支持多种信号类型
选型时需要特别注意:
- 信号类型匹配:确认模块支持电流型(4-20mA)还是电压型(0-10V)
- 通道隔离:非隔离模块需注意共地问题
- 采样速率:高速应用需选择FX3U/FX5系列
2.2 接线实操技巧
以FX2N-4AD连接PT100温度变送器为例:
plaintext复制变送器+ → V+端子
变送器- → I+端子
COM端子 → PLC的24G端子
关键提示:电流信号必须接I+端子而非V+端子,否则会导致采样值异常
常见接线错误排查:
- 信号波动大:检查屏蔽层是否单端接地
- 数值溢出:确认信号类型与模块拨码开关设置一致
- 通道间干扰:避免多路信号共用返回线
3. 核心程序解析
3.1 原始值采集程序
ladder复制LD M8000 // PLC运行常ON触点
TO K0 K17 H0 K1 // 初始化模块(FX2N-4AD的单元号0)
FROM K0 K5 D100 K4 // 读取4个通道的原始值到D100-D103
这段程序实现了:
- 模块初始化(设置模拟量输入模式)
- 循环采集4个通道的原始数据(0-4095对应4-20mA)
3.2 工程值转换算法
实际工程中需要将原始值转换为有物理意义的数值,以压力传感器(0-1MPa对应4-20mA)为例:
ladder复制LD M8000
MOV K4000 D200 // 4mA对应原始值(量程下限)
MOV K20000 D201 // 20mA对应原始值(量程上限)
SUB D100 D200 D202 // 当前值-下限值
DIV D202 D204 K16000 // (当前值-下限值)/量程范围
MUL D204 K1000 D206 // 转换为0-1000kPa
经验之谈:建议保留2位小数运算,最后再取整显示,可减少量化误差
3.3 数字滤波程序
针对现场干扰,我采用了移动平均滤波算法:
ladder复制// 在D300-D309建立10次采样缓冲区
LD M8013 // 1秒时钟脉冲
INC D310 // 缓冲区指针+1
CMP D310 K10 // 判断是否超过缓冲区大小
MOV D100 D300Z // 循环存储采样值(Z寄存器=指针)
// 计算平均值
MEAN D300 K10 D320 // 10次移动平均
实测表明,10次采样间隔1秒的滤波方案,既能平滑波动又不会影响控制响应速度。
4. 高级功能实现
4.1 断线检测功能
通过检测原始值判断传感器是否断线:
ladder复制LD<= D100 K500 // 4mA对应值约为400,设500为断线阈值
SET M100 // 触发断线报警
注意:某些模块需要先设置断线检测使能位(参考模块手册)
4.2 自动标定程序
开发了通过触摸屏操作的标定功能:
- 连接标准信号源(如4mA)
- 按下"低标定"按钮,记录当前值到D500
- 连接20mA信号,按下"高标定"按钮
- 程序自动计算斜率(D501-D500)/16
ladder复制LD X001 // 低标定按钮
MOV D100 D500
LD X002 // 高标定按钮
MOV D100 D501
5. 现场调试经验
5.1 典型问题排查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 采样值跳变 | 电源干扰 | 加装信号隔离器 |
| 数值始终为0 | 接线错误 | 检查I+/V+端子选择 |
| 部分通道异常 | 拨码开关错误 | 重新设置模块单元号 |
| 显示值偏小 | 信号衰减 | 检查线路阻抗是否过大 |
5.2 接地处理要点
在变频器较多的场合,建议:
- 模拟信号线采用双绞屏蔽线
- 屏蔽层在PLC侧单端接地
- 避免与动力线平行走线(最小30cm间距)
- 必要时增加磁环滤波
6. 程序优化技巧
6.1 采样周期优化
通过修改D8120寄存器可以调整PLC的扫描周期:
ladder复制MOV K10 D8120 // 设置扫描周期为10ms
但需注意:
- 过短的周期可能导致程序无法完成
- 模拟量模块的转换时间也需要考虑(FX2N-4AD约15ms/通道)
6.2 内存分配建议
合理的寄存器规划方案:
- D100-D199:原始采样值
- D200-D299:工程转换值
- D300-D399:滤波缓冲区
- D400-D499:报警阈值
- D500-D599:标定参数
7. 扩展应用实例
7.1 温度控制系统
以电加热器控制为例:
- PT100温度变送器→FX2N-4AD
- 程序实现PID控制(使用PLSR指令)
- 输出PWM信号控制固态继电器
关键参数设置:
ladder复制MOV K50 D500 // 目标温度50℃
MOV K2 D501 // 比例系数
MOV K10 D502 // 积分时间
MOV K5 D503 // 微分时间
7.2 流量累计功能
通过模拟量采集瞬时流量,实现累计计算:
ladder复制LD M8014 // 1分钟脉冲
MUL D100 K60 D200 // 瞬时流量×60→小时流量
ADD D210 D200 D210 // 累计流量累加
CMP D210 K999999 // 防止累计值溢出
