模拟量采集器(4-20mA / 0-10V)
- ✓ 搞懂 4-20mA 电流环和 0-10V 信号各自的优缺点,知道什么时候用哪种
- ✓ 学会采集器的接线(传感器→采集器→网络/485),画出完整链路
- ✓ 会用 Modbus 读保持寄存器(功能码 03)拿到原始计数值,并换算成物理量
- ✓ 拿到选型对比表(通道/精度/接口/隔离)和故障排查表
- ✓ 知道量程换算公式:怎么从 Modbus 返回的整数还原成真实温湿度/电流/液位值
你在展厅里遇到的展柜恒温恒湿控制、机房温度报警、大型雕塑的照度感应、水景装置的液位监测——这些需求背后都有一个共同的问题:那些传感器输出的是模拟信号(4-20mA 电流或 0-10V 电压),中控软件和网络系统只认数字量,两边没法直接对话。
模拟量采集器就是干这个转换的。它把模拟传感器的输出读进来,转成数字值,再通过网络(Modbus TCP)或 RS485(Modbus RTU)报上来,让中控能读到"现在展柜温度是 22.3℃"这样一个具体数字。这一篇以科星互联的 4-20mA 采集器为例(我们在展厅环境监测项目里实际用过),把完整链路讲透。
R2 内容,涉及传感器接线与工业模块配置。电气参数(供电、精度、通道数、寄存器地址)以科星官方产品文档和你手上型号的说明书为准(文末来源);不同型号规格有差异,下文参数均为示例量级,以手册为准。
4-20mA 和 0-10V 是什么:原理讲清楚
展厅会用到两种模拟信号标准,先把原理弄懂,后面接线和排障都会清晰很多。
4-20mA 电流环
用电流而非电压传输信号。传感器(变送器)输出 4mA 到 20mA 之间的电流,对应量程的 0%(4mA)到 100%(20mA)。
关键优势:
- 电流信号抗干扰强:电流在传输线上不会因为线缆电阻造成衰减(电压信号会),适合长距离传输(几百米不衰减)。
- 4mA 不是零点,是"活零点":这意味着 0mA 代表断线/故障,4mA 才是量程下限——系统可以区分"读到最小值"和"线断了/传感器故障",在工程上很有用。
例子:一台量程 -40℃~80℃ 的温度变送器,输出 4mA 对应 -40℃,20mA 对应 80℃。你实测读到 12mA,就是量程中点对应的温度值(20℃)。
0-10V 电压信号
传感器输出 0V 到 10V 之间的电压,对应量程 0%~100%。也有 0-5V 变体。
优势是接线简单、常见于短距离传输。劣势是电压信号对线缆长度和干扰更敏感:长距离传输时导线电阻造成压降,会带来误差;强电干扰也容易耦合进去。展厅里如果传感器和采集器距离不超过 10 米,0-10V 完全可用;距离长了优先选 4-20mA。
一张表对比
| 维度 | 4-20mA | 0-10V |
|---|---|---|
| 传输方式 | 电流信号 | 电压信号 |
| 长距离传输 | 好(抗线阻,可几百米) | 较差(线阻影响精度) |
| 抗干扰 | 好 | 一般(需屏蔽线) |
| 断线检测 | 能(0mA=断线) | 难(0V 可能是正常值也可能是断线) |
| 配件成本 | 略高(需两线供电或四线) | 低 |
| 适用场景 | 长距离、强干扰、工业环境 | 短距离、控制室内 |
完整采集链路:传感器→采集器→网络→中控
搞清楚链路,接线才不会乱。完整的模拟量采集链路是:
模拟传感器/变送器
(输出 4-20mA 或 0-10V)
│ 模拟信号线(双绞屏蔽线,屏蔽层单端接地)
▼
科星模拟量采集器
(把模拟信号转成数字值)
│ RS485(Modbus RTU)或 网口(Modbus TCP)
▼
网络交换机 / RS485 总线
│
▼
中控软件(SoftControl)
读保持寄存器 → 换算成物理量 → 驱动联动逻辑
采集器处于这条链路的关键中间位置:左边接模拟世界,右边接数字世界,两边分开,互不影响。
接线方法:按你的传感器供电方式来
4-20mA 传感器分两线制、三线制、四线制,接法略有差别。最常见的是两线制(二线制)变送器:传感器本身不需要额外供电线,靠采集器从信号回路里取电(叫"环路供电")。
二线制变送器接采集器(最常见接法)
采集器供电端(+24V)─────────────┐
│
变送器 + 端(VCC)
变送器输出信号
变送器 - 端(GND/SIGNAL)
│
采集器信号输入 AI+(电流输入正)◀──┘
采集器信号输入 AI-(电流输入负/GND)
│
▼(采集器测量这两端的电流)
简化说:采集器的 +24V 出来,经过变送器的两根线形成电流回路,再回到采集器的 AI- 端,采集器测量这个回路里流过的电流值(4-20mA),转成数字。
接线注意事项:
- 信号线用双绞屏蔽线,屏蔽层一端接地(采集器端),另一端悬空,防止干扰进入。
- 二线制变送器靠环路供电,确认采集器能提供足够的环路电压和电流(以采集器手册参数为准)。
- 严禁把 4-20mA 信号线和强电线共管、共线槽穿行——工业现场基本做法,展厅同样适用。
- 通道数多时,每个通道接线要做标记(通道号+传感器位置),后期排障找线靠这个。
三线制/四线制变送器
三线制变送器有独立供电(通常 24V DC),信号线和供电线分开,接法是单独给变送器供 24V,信号线(+/−)接采集器 AI 端。四线制同理,只是再加一根地线。以你手上变送器的接线图为准。
Modbus 读保持寄存器示例
采集器挂上 Modbus 之后,你用功能码 03(读保持寄存器) 来获取通道的数字值。
一条 Modbus RTU(RS485 总线)的读保持寄存器请求帧格式(以 Modbus 官方规范为准):
[设备地址 1B][功能码 03][起始寄存器 2B][寄存器数量 2B][CRC 2B]
举例:读地址为 1 的采集器,从保持寄存器地址 0x0000 开始读 4 个寄存器(4 个通道),HEX 请求帧:
01 03 00 00 00 04 44 09
└─┘ └─┘ └──┬──┘ └──┬──┘ └──┬──┘
地址 功能 起始 数量 CRC16
1 03 0000 4 (按标准算出)
采集器回应(每通道占 2 字节,4 通道共 8 字节数据):
01 03 08 [CH1高][CH1低] [CH2高][CH2低] [CH3高][CH3低] [CH4高][CH4低] [CRC]
每通道返回一个 16 位无符号整数(原始计数值),通常范围 04095(12 位 ADC)或 065535(16 位 ADC)。以你的采集器手册为准。
用 Python + pymodbus 读取示例(Modbus TCP 版本,采集器走网口):
from pymodbus.client import ModbusTcpClient
# 替换为你采集器的实际 IP(Modbus TCP 默认端口 502)
client = ModbusTcpClient('192.168.1.80', port=502)
client.connect()
# 读保持寄存器:从地址 0 开始读 4 个通道,slave=1(以设备手册地址设定为准)
result = client.read_holding_registers(address=0, count=4, slave=1)
if not result.isError():
raw_values = result.registers # 例如 [1638, 3276, 2048, 4095]
print("原始计数值:", raw_values)
else:
print("读取失败:", result)
client.close()
寄存器起始地址各家定义不同——有的从 0 开始(地址 0 = 第 1 通道),有的从 1 开始,有的有偏移量(如 30001 偏移)。务必对着你手上型号的寄存器地址表填,别猜。首次调试用 Modbus Poll(Windows 图形工具)手动读一次,确认能拿到随传感器变化的数值,再写进中控逻辑。
量程换算:从原始计数值还原物理量
Modbus 读回来的是一个整数(原始 ADC 计数),要换算成有意义的物理量(℃、%RH、mA、lux),需要量程换算。
换算公式(线性映射)
设:
raw:Modbus 读回的原始值raw_min:对应量程下限的原始值(以采集器手册为准,如 0 或 800)raw_max:对应量程上限的原始值(如 4095 或 4000)phys_min:量程物理下限(如 -40.0℃)phys_max:量程物理上限(如 80.0℃)
physical_value = (raw - raw_min) / (raw_max - raw_min) × (phys_max - phys_min) + phys_min
举例(假设 12 位 ADC,原始值 04095 对应 4mA20mA,传感器量程 -40℃~80℃):
- 读到原始值 = 1638,映射:(1638 - 0) / 4095 × (80 - (-40)) + (-40) = 8.0℃(近似)
- 读到原始值 = 2048,约对应量程中值 20℃
有些采集器会在寄存器里直接存放已经换算过的工程值(如温度×10 存为整数 223 表示 22.3℃),不需要你自己做映射——以具体型号手册为准。如果手册说是"工程值寄存器",直接除以缩放因子即可。
# 示例:原始计数值换算成温度(参数以你的采集器手册为准)
def raw_to_physical(raw, raw_min, raw_max, phys_min, phys_max):
return (raw - raw_min) / (raw_max - raw_min) * (phys_max - phys_min) + phys_min
# 例:量程 -40~80℃,ADC 0~4095
temp_celsius = raw_to_physical(raw=1638, raw_min=0, raw_max=4095, phys_min=-40, phys_max=80)
print(f"温度: {temp_celsius:.1f} ℃")
你应该看到什么
- 把温湿度传感器放在手心(升温),采集器读回的原始值应该明显增大。
- 换算后的温度值应该和你手边温度计的读数接近(允许±1℃左右误差,以采集器精度指标为准)。
- 原始值如果一直固定不变(比如一直是 4095 或 0),说明接线有问题(参考故障排查表)。
选型对比表
| 维度 | 选项 | 怎么选 |
|---|---|---|
| 通道数 | 1/2/4/8/16 通道 | 按你要接的传感器数量,留 20% 余量;多传感器同一采集器省布线但故障影响范围大 |
| 信号类型 | 4-20mA / 0-10V / 两者兼容 | 确认你的传感器输出类型;两者兼容型更灵活 |
| ADC 精度 | 12 位(4096 分辨率)/ 16 位(65536) | 展厅环境监测 12 位够用;要求高精度(如精密液位)选 16 位 |
| 隔离 | 通道间隔离 / 非隔离 | 多传感器接一台采集器时,若传感器之间有地位差,选通道间隔离型,防干扰和地环路 |
| 通信接口 | RS485 Modbus RTU / 网口 Modbus TCP | 优先网口(直接进局域网,中控一路网线搞定);现场只有 485 总线时选 485 |
| 供电 | 12V/24V DC 宽压 | 展厅机柜统一 24V DC 供电最方便;核对采集器供电范围 |
| 防护 | 导轨安装 / 普通 | 展厅机柜装导轨型,整齐且固定可靠 |
科星互联的模拟量采集器系列在展厅项目里用过 4 通道 4-20mA 型号,带网口走 Modbus TCP,配置简单,上述链路完整可跑。型号细节和精度参数以官方文档为准。
故障排查表
| 现象 | 最可能的原因 | 怎么办 |
|---|---|---|
| Modbus 连接不上 | IP 配错/端口错/Modbus 功能未开 | ping 采集器 IP;确认端口(默认 502);查设备配置 |
| 读到的值全是 0 或全是最大值 | 信号线断/传感器未供电/通道配置错 | 量采集器 AI 端电流(应为 4~20mA 之间);查传感器供电 |
| 读到的值固定不变(传感器变化也不动) | 信号线接触不良/通道地址读错 | 检查接线紧固;确认寄存器地址对应正确通道 |
| 换算后物理值偏差很大 | 量程参数配置错/换算公式用错了 | 对照手册核量程设定和寄存器值含义;重新核算公式参数 |
| 读数跳动不稳(噪声大) | 信号线干扰(未屏蔽/走强电旁边) | 换屏蔽双绞线;屏蔽层单端接地;信号线远离强电 |
| 接多台 485 从机只有部分应答 | 地址冲突/终端电阻/A-B 接线 | 每台设备唯一地址;总线两端 120Ω;查 A/B 正确对应 |
| 4mA 时换算值不在量程下限 | 采集器零点未校准或量程下限配错 | 按手册做零点校准;核寄存器里量程下限对应的计数值 |
进阶 / 应用案例
- 展柜恒温恒湿监控:4 通道采集器接 2 路温度变送器 + 2 路湿度变送器,Modbus TCP 上报中控,中控读到温湿度超阈值触发空调/加湿器联动。典型的环境安防用法。
- 水景液位监测:水景装置的水位靠投入式液位变送器(4-20mA)监控,低水位报警、高水位停泵,中控接到报警联动声光提示。
- 照度自适应调光:光照传感器(0-10V 输出)接采集器,中控读照度,按时段或照度阈值联动 DMX 调光控制器,展厅亮度自适应。
- 多点集中采集:展厅分散的多台采集器全部走 RS485 总线挂一根线,或分区域走 Modbus TCP,中控定时轮询所有通道,做全场环境数据看板。
动手挑战
- 用 Modbus Poll(免费工具)直接读采集器的保持寄存器,先脱离中控,确认每个通道能读出随传感器变化的数值——这是调通链路的最小闭环。
- 把量程换算公式用 Python 写出来,输入从 Modbus 读到的几个不同原始值,确认换算结果和你传感器规格的量程对得上。
本节学到的知识
- 4-20mA 是电流环:4mA=量程 0%、20mA=量程 100%,4mA 是"活零点"——0mA 代表断线/故障,能区分"读到最小值"和"传感器坏了"。
- 4-20mA 抗线阻、可传几百米;0-10V 只适合 10 米内短距离,长了导线压降带误差、易受干扰,距离长优先选 4-20mA。
- 最常见接法是二线制(环路供电)变送器:靠采集器从信号回路取电,无需单独供电线;三线制/四线制要单独供 24V,接法以变送器接线图为准。
- 信号线用双绞屏蔽线、屏蔽层单端接地(采集器端),严禁与强电共管共线槽。
- 采集器挂 Modbus,用**功能码 03(读保持寄存器)**取值;每通道返回一个 16 位无符号整数(原始计数),常见 0~4095(12 位 ADC) 或 0~65535(16 位),以手册为准。
- Modbus TCP 默认端口 502;寄存器起始地址各家不同(0 起 / 1 起 / 30001 偏移),务必对着型号寄存器表填、别猜;首调用 Modbus Poll 手动读一次验证。
- 量程换算是线性映射:
物理值 =(raw - raw_min)/(raw_max - raw_min)×(phys_max - phys_min)+ phys_min;raw_min/raw_max 以手册为准(未必是 0 和 4095)。 - 有些采集器直接存工程值(如 223 表示 22.3℃),除以缩放因子即可,不必自己映射——以型号手册为准。
- 选型看:通道数(留 20% 余量)、信号类型(4-20mA/0-10V/兼容)、ADC 精度(展厅监测 12 位够、精密选 16 位)、通道间隔离(防地环路)、接口(优先网口 Modbus TCP)、供电(机柜统一 24V DC)、导轨安装。
- RS485 多从机总线:每台设备唯一地址、总线两端各接 120Ω 终端电阻、A/B 别接反,否则只有部分从机应答。
小结 · 你掌握了什么
- 你懂了 4-20mA 电流环为什么比 0-10V 更适合长距离、强干扰环境(电流信号、活零点、抗线阻)。
- 你学会了二线制变送器接采集器的完整链路(传感器→采集器→网络→中控),知道信号线用屏蔽双绞、强弱分离。
- 你会用 Modbus 功能码 03 读保持寄存器拿到原始计数,知道量程换算的线性映射公式,能写代码把原始值还原成℃/%RH。
- 你拿到了选型对比表(通道/精度/隔离/接口)和完整故障排查表。
有了模拟量采集,展厅里那些模拟传感器就能接入中控数字体系。要把这些数据变成联动动作(读到超温→触发报警→切灯光场景),了解 SoftControl 展厅中控系统;要了解怎么把 RS485 设备接入网络,参考 串口服务器图鉴。