1. 课程导入
在工业自动化现场,PLC 的数字量输入输出解决的是“通/断、开/关”这类二值问题,而温度、压力、流量、液位、位移、转速、浓度等连续变化的物理量,必须通过模拟量采集模块进入 PLC。可以说,模拟量采集是 PLC 从“逻辑控制”走向“过程控制”的关键桥梁。本课程围绕 PLC 模拟量采集模块的选型、接线、组态、编程、标定、抗干扰与故障排查展开,帮助你把一个“能读到数”的模块,做成一个“读得准、稳得住、查得清”的工程系统。
一、学习目标:从“会接线”到“会交付工程”
本课程不是单纯讲模块手册,而是以工程交付为主线。学完之后,你应当具备以下能力:
- 选型能力:能根据传感器类型、信号制式、通道数量、精度要求、隔离需求和现场环境,选择合适的模拟量输入模块。
- 接线与配电能力:能区分两线制、三线制、四线制变送器的接线方式,正确完成 24V 配电、信号回路与屏蔽接地。
- 组态与编程能力:能在 PLC 中完成通道使能、量程设定、滤波设置,并把原始码值转换为工程量。
- 标定与校准能力:能用信号源或标准器完成零点、满量程校准,判断误差来源。
- 抗干扰与排障能力:能识别跳变、漂移、超量程、断线等典型故障,并按信号链逐段定位。
学习主线可以概括为一条信号链:物理量 → 传感器/变送器 → 信号回路 → 采集模块 → PLC 数据区 → 工程量换算 → 控制/显示/报警。本课程所有章节,都是围绕这条链上的某一环深入展开。
二、核心概念:先把“模拟量”这件事说清楚
模拟量采集的核心,是把连续变化的物理量转换为 PLC 可处理的数字量。这里有几个必须建立的概念:
- 信号制式:常见有 4~20mA、0~20mA、0~10V、±10V、0~5V,以及热电阻 RTD、热电偶 TC 直接输入。工业现场以 4~20mA 电流信号最常用,因为电流环抗干扰能力强、可远传,且 4mA 活零点便于判断断线。
- 分辨率与精度:分辨率决定“最小能分辨多少”,如 12 位、16 位;精度决定“读得准不准”,受模块、传感器、布线、温漂共同影响。分辨率高不等于精度高。
- 采样与滤波:模块按扫描周期采样,PLC 侧常配合平均值、一阶滞后或中值滤波,抑制现场尖峰干扰。
- 量程与工程量换算:模块读到的是原始码值或标准化值,必须按传感器量程换算为温度、压力等工程量。
- 隔离与共模:通道间隔离、通道对地隔离能有效切断地环流,是模拟量稳定采集的重要保障。
三、整体框架:一张图看清模拟量采集工程
下面这张图把本课程的知识结构按“现场层—信号层—采集层—控制层—应用层”展开,同时标出典型信号流向与关键工程动作。后续章节会沿着这条链逐段深入。
四、典型应用场景:模拟量采集在哪里发挥作用
模拟量采集几乎覆盖所有流程工业与离散制造场景。下表列出常见场景、典型信号与工程关注点,便于你建立“场景—信号—模块—程序”的对应关系。
| 应用场景 | 典型被测量 | 常用信号 | 工程关注点 |
|---|---|---|---|
| 恒温箱 / 热处理炉 | 温度 | RTD、TC、4~20mA | 冷端补偿、PID 整定、超温联锁 |
| 水处理 / 供水泵站 | 液位、压力、流量 | 4~20mA、0~10V | 防潮、防雷、断线检测、量程迁移 |
| 空压机 / 风机 | 压力、振动、转速 | 4~20mA、±10V | 高频干扰、屏蔽接地、滤波时间 |
| 称重 / 配料 | 重量、料位 | mV 级桥式信号、4~20mA | 激励电源、零点漂移、标定砝码 |
| 环境监测 | 温湿度、气体浓度 | 0~10V、4~20mA | 低功耗、长距离传输、线性化 |
五、常见误区与复盘:新手最容易踩的坑
误区一:只看分辨率,不看精度。 16 位模块不一定比 12 位模块更准,若传感器精度只有 1%,高分辨率只是把误差放大了显示。
误区二:4~20mA 不接 24V 配电。 两线制变送器需要模块或外部电源供电,接错线会导致无信号或烧通道。
误区三:屏蔽层两端接地。 两端接地容易形成地环流,反而引入干扰。通常采用单端接地,并在 PLC 侧或现场侧根据系统设计确定。
复盘建议: 每完成一个模拟量通道,按“信号源—回路—模块—程序—显示”五段做一次核对,并记录零点、满量程、现场实际值三组数据。长期积累后,你会形成自己的排障数据库。
六、参数与代码示例:从原始值到工程量
下面以常见的 4~20mA、量程 0~100℃ 为例,给出 PLC 中工程量换算的基本思路。不同品牌指令不同,但换算逻辑一致。
// 假设:模块原始值 0~27648 对应 4~20mA
// 传感器量程:0 ~ 100 ℃
// 原始值 raw 来自模拟量输入通道
IF raw < 0 THEN
raw := 0; // 超下限保护
ELSIF raw > 27648 THEN
raw := 27648; // 超上限保护
END_IF;
// 线性换算:工程量 = (raw / 27648) * (100 - 0) + 0
eng_value := (raw / 27648.0) * 100.0;
// 断线判断:4~20mA 时,raw 接近 0 或负值通常表示断线
IF raw < 1000 THEN
wire_break_alarm := TRUE;
END_IF;
这段代码体现了三个工程要点:限幅保护、线性换算、断线诊断。后续章节会进一步讲解不同信号制式、不同模块的换算系数与标定方法。