news 2026/9/28 7:35:55

汇川PLC模拟量采集与输出全流程:接线、组态到程序调试实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
汇川PLC模拟量采集与输出全流程:接线、组态到程序调试实战

做电气自动化这些年,我发现自己对模拟量的敬畏心是越来越高。数据线断了顶多通讯报警,模拟量一出问题,仪表显示137摄氏度,PLC死活读出来45.2,现场能折腾一整天。汇川PLC这几年在中小项目里出镜率很高,Easy系列便宜皮实,AM系列跑Codesys灵活,模拟量采集和输出是绕不开的基本功。这篇把汇川PLC模拟量从硬件接线、信号选型到程序换算、现场调试的完整流程整理出来,希望帮正准备上手的朋友少走几趟弯路。

1. 先想清楚信号制式:4-20mA比0-10V强在哪,又输在哪

模拟量信号看起来就是"电压或者电流",但选错制式,后面接线、抗干扰、模块量程全都要跟着返工。我见过不少新同事上来就问"这个模块能不能接4-20mA",却说不清现场仪表到底输出什么信号。所以在碰PLC之前,先把两个主流信号制式掰扯明白。

1.1 为什么4-20mA能成为工业主流

电流信号的核心优势是:它不随线路电阻衰减。

电压信号走线 100 米,假设导线电阻 5 欧姆,传感器内阻再大一些,末端电压和现场仪表显示值之间可能差出几个百分点。电流信号不一样,整个回路的电流处处相等,只要变送器能把电流推出去,哪怕线长了,PLC 侧采样电阻上得到的信号依然准确。

4-20mA 还有一个天生的故障诊断能力:4mA 是零点,意味着正常工作时电流绝对不会低于 4mA。如果因为断线、供电丢失导致电流跌到 0,PLC 立刻能判断"信号异常"。很多项目里我都是用这个特性做传感器断线报警,完全不用额外加硬件。

1.2 0-10V也不是一无是处

0-10V 电压信号抗干扰能力比电流弱,但它也有自己的主场。

柜内短距离传输、变频器启停控制、一些控制器 AO 输出,很多默认就是 0-10V。原因很简单:电压输出电路简单,驱动能力强,对接收端采样电阻要求低。柜内走线不超过几米,干扰问题不太突出,这时候 0-10V 反而是更经济的选择。

实际项目里我有一条经验法则:

  • 变送器到 PLC 距离超过 20 米,优先 4-20mA;
  • 距离短、柜内走线、信号源本身只有电压输出,用 0-10V;
  • 有强干扰源(变频器柜、大电机附近),能上 4-20mA 就别用 0-10V;
  • 温度、压力、液位这类过程量,绝大多数选 4-20mA。

1.3 汇川PLC的信号兼容范围

汇川 Easy 系列本体的模拟量输入通道,一般可以通过软件把量程配置成 0-10V、0-20mA 或 4-20mA 中的某一种。AM 系列在模块上也预留了相应的量程设置。关键是搞清一件事:模拟量模块的输入通道不是所有信号都能随意乱接,电压信号和电流信号的采样原理不同,接错了可能烧通道。

一个常见的坑是:某一路前一个项目接了 0-10V,换传感器时没改通道组态,直接接 4-20mA 变送器,结果读数直接爆表或乱跳。所以后面专门用一节讲组态环节的配置,这步漏了,程序写得再漂亮都没用。

2. 硬件侧的硬功夫:模块选型、接线制式与屏蔽层处理

模拟量不像开关量那样"通断就完事",它讲究回路、共地、屏蔽、压降。硬件连接不到位,后面所有的滤波和补偿都是亡羊补牢。

2.1 模块选型:本体通道还是扩展模块

汇川 PLC 选型时,模拟量通道先看 CPU 本体是否自带。

我常用的是两条线:

  • Easy 系列小机型:本体带一部分 AI/AO,点数少、项目简单时直接够用。要接脉冲模块或者增加模拟量路数,就扩展 GL20 系列。像现场接过 GL20-2HC 这种脉冲模块,走的是高速计数方向,和模拟量模块的扩展方式类似,在 AutoShop 里配置好槽位就行。
  • AM 系列中型机:像 AM401、AM403 这类,本体也集成模拟量通道,路数不够就挂扩展模拟量模块。

选型时不要只看路数,还要看隔离方式。非隔离模块价格便宜,但外部干扰容易串进 PLC 内部;隔离模块每个通道独立隔离,现场处理地电位差、变频器干扰时省心太多。预算允许,模拟量输入输出尽量选隔离型。

2.2 变送器接线制式:两线制、三线制、四线制

这是模拟量接线最容易被绕晕的地方。同样是 4-20mA,变送器可能有两线制、三线制、四线制三种接法。

制式供电方式信号线公共端典型场景
两线制信号回路串联供电2根无绝大多数压力、温度变送器
三线制独立供电但共用负极2根信号 + 1根电源负共用部分液位、流量计
四线制独立电源正负2根信号独立质量流量计、分析仪

两线制接线时,变送器的两根线一端接 PLC 模块的 AI 通道正端,另一端串入模块提供的 24V 电源。简单理解就是:模块既供电又收信号,所以线断了电流归零,PLC 能立刻发现。

三线制和四线制的区别在于电源和信号是否共用公共端。接错最常见的后果是:读数偏大或偏小、上电后模块通道发热、严重时烧毁通道。

一个我踩过不少次的经验:上手前一定先看变送器铭牌上的接线图,而不是想当然按两线制接。有些进口流量计明明是四线制,按两线制接了半小时,读数纹丝不动,查半天才发现少接一根电源负。

2.3 屏蔽层接 0V 的正确操作

很多资料只说"屏蔽层要接地",但没说接哪一头,导致现场地环路反复炸。

完整的原则是:屏蔽层单端接地,通常在 PLC 侧接到模块的 0V 或屏蔽端子,另一端悬空。

为什么只能接一头?因为如果屏蔽层两端都接地,而两端设备的地电位不完全相等,屏蔽层里就会流过一个地环流,这个电流反而会在信号线上感应出干扰,让原本要防的噪声变得更严重。这个现象我用万用表实测过,两端的电位差有时接近 1V,对 4-20mA 信号来说这是不可接受的误差来源。

操作细节也重要:

  • 屏蔽层剥出的铜网要拧紧,压接到端子上,不能只是搭在金属外壳上;
  • 屏蔽线尽量靠近 PLC 模块侧接入 0V,中间不要经过端子排转接又断开;
  • 模块没有屏蔽端子时,接到机柜汇流排或电源 0V 的干净接地点。

还有一条跟走线相关:模拟量信号线要和动力线分开走、尽量避免同槽。实在避不开,也要保持至少 20 厘米间距,交叉时垂直走。变频器输出侧的动力电缆是模拟量干扰的头号来源,这两路缠在一起,后面滤波都救不回来。

2.4 电源与回路的共地问题

模拟量模块读数异常,十有八九和"地"有关。

最简单的排查思路是:用万用表量一下变送器电源负和 PLC 模块 0V 之间的电压。正常情况下应该是 0V 左右。如果量出几伏甚至更高,说明两边的地电位不一致,信号到了模块端已经叠加了偏置。

解决办法不复杂:把变送器供电电源的负极和 PLC 模块的 0V 接到同一个汇流排上。项目里有强烈干扰时,可以考虑加信号隔离器,把现场传感器和 PLC 模块在电气上隔开,两侧各走各的地,干扰就从根源上被切断了。

3. 组态环节的通道配置:量程、采样时间与码值映射表

硬件接完,接下来是编程软件里的组态。很多人以为把通道使能了就行,实际上量程配置、滤波参数、码值映射这些设置哪一个不对,程序里读到的数都不会正确。

3.1 AutoShop和InoProShop里的硬件组态

汇川 Easy 系列用的是 AutoShop,AM 系列用 InoProShop,两者组态思路类似。

在 AutoShop 里新建工程后,先添加 CPU 型号,再把扩展模块按实际顺序插入槽位。插入后双击模拟量模块,进入通道配置界面,能看到每一路输入的类型选择、量程选择、采样时间等参数。

这一环节最容易犯的错是:硬件组态里的模块顺序和实际安装顺序不一致。扩展模块槽位号如果差一位,后面程序里读取的通道地址就对不上,现场表现出来的现象很迷惑——通路数对,但读到的不是那一路传感器。

所以我的习惯是:组态完成后,在程序里先读一遍所有通道的原始值,看看都有没有反应,再对应到传感器上去。先把通道映射关系验证清楚,才往下做换算。

3.2 量程设置和码值映射表

模拟量模块的 A/D 转换结果通常是 16 位整数,但同样的 4-20mA,在不同品牌模块里映射的码值范围不一样。

以前用某进口 PLC 时,4-20mA 对应 0~27648,这是它的标准化体系。汇川模块我实际用过的有映射到 0~32767 的情况,也有某个模块量程范围对应 0~4000 的。具体以你手里模块手册里的分度表为准。

这里给一张通用对照表,方便理解换算原理:

信号类型低端信号高端信号原始码值低端原始码值高端
4-20mA4mA20mA032767
0-20mA0mA20mA032767
0-10V0V10V032767

组态时把量程选成和现场传感器一致,比如传感器是 0-100℃ 对应 4-20mA,那就在量程设置里把工程上下限填成 0 和 100。有些模块支持直接填工程值,PLC 内部帮你算;不支持的话,就得在程序里手动做标定换算,下一节详细写。

3.3 采样时间和滤波参数的取舍

模拟量模块一般有采样时间设置,单位是毫秒。这个参数决定了 A/D 转换的周期。

采样时间短,响应快,但高频噪声也容易混进来;采样时间长,相当于硬件层面做了积分平滑,数值稳定,但响应变迟钝。通道多、程序扫描周期短的时候,还要注意采样时间的累计影响。

我的经验是:温度、液位这类变化慢的过程量,采样时间可以放宽到几十毫秒甚至几百毫秒,读数非常稳;压力、流量这类需要动态响应的,采样时间放短,然后在程序里做软件滤波,这样既能保证实时性,又能抑制毛刺。

有些模块还带硬件滤波或平均值功能,组态时可以直接开启。但不要完全依赖硬件滤波,后面程序里再做一道移动平均,效果会更好。

4. 从原始码值到工程量的换算程序:滤波与标定的完整写法

这一节是模拟量程序编写的核心。很多新手把原始值直接拿去做比较、做 PID,发现和现场仪表对不上,原因就是少了标定换算这一步。

4.1 读取模拟量原始值

在 AutoShop 里,模拟量输入通道对应的地址是类似 AIW0、AIW2 这样的字地址,用 MOV 指令直接读到数据寄存器里就行。AM 系列在 InoProShop 里可以直接把硬件输入通道映射到程序变量。

读出来的原始值是一个整数,范围由模块的分度表决定,比如 0~32767。这张数据本身没有任何工程含义,必须换算成温度、压力、百分比,程序才有意义。

我的习惯是:先做一个专门的模拟量处理程序段,把每个通道的原始值统一换算成标准化浮点数(比如 0.0~100.0 的百分比),然后再在各功能块里使用。这样后续做 PID、显示、报警,全部基于同一套工程值,不会出现一个项目里几种算法并存、各算各的乱象。

4.2 线性标定公式与ST代码示例

绝大多数模拟量传感器输出和被测物理量是线性关系,所以换算公式就是一个直线方程:

工程量 = (原始值 - 零点码值) / (满量程码值 - 零点码值) * (工程量上限 - 工程量下限) + 工程量下限

以 4-20mA 对应 0-100℃ 为例,假设模块分度表把 4mA 映射到 0、20mA 映射到 32767,那么:

  • 零点码值 0,满量程码值 32767,工程量下限 0,工程量上限 100
  • 换算公式简化为:工程量 = 原始值 / 32767 * 100

在 InoProShop 的 ST 语言里写:

// 变量声明 aiRaw : INT; // 从AI通道读出的原始值 aiScaled : REAL; // 换算后的工程值 spanMin : REAL; // 量程下限 spanMax : REAL; // 量程上限 rawZero : REAL; // 零点对应码值 rawFull : REAL; // 满量程对应码值 // 换算逻辑 aiScaled := (INT_TO_REAL(aiRaw) - rawZero) / (rawFull - rawZero) * (spanMax - spanMin) + spanMin;

Easy 系列的 AutoShop 也支持 ST 语言,或者可以在梯形图里用加减乘除指令搭出同样的算式。区别只是编程习惯,公式和思路完全一致。

4.3 断线检测与超量程判断

换算公式本身不难,难的是让程序应对异常。

4-20mA 信号低于 4mA 通常意味着断线或变送器故障。这个判断要放在换算之前:

IF aiRaw < rawZero + 50 THEN // 码值跌到零点附近以下,判定断线/故障 faultFlag := TRUE; aiScaled := 0.0; ELSE aiScaled := (INT_TO_REAL(aiRaw) - rawZero) / (rawFull - rawZero) * (spanMax - spanMin) + spanMin; END_IF;

同理,满量程以上也要做上限钳位,防止数值算出超出传感器量程的"假值",把下游的逻辑或 PID 带偏。

4.4 移动平均滤波与中值滤波写法

现场模拟量最闹心的就是读数跳变。硬件滤波挡掉一部分高频噪声,程序里再加一道软件滤波,双保险。

移动平均滤波的思路是:每次采样都取最近 N 个值的平均值。适合温度、液位这类平稳信号。

// 使用数组实现滑动窗口平均 VAR samples : ARRAY[0..9] OF REAL; // 存最近10次采样 index : INT; sum : REAL; result : REAL; i : INT; END_VAR samples[index] := aiScaled; index := (index + 1) MOD 10; sum := 0.0; FOR i := 0 TO 9 DO sum := sum + samples[i]; END_FOR; result := sum / 10.0; // result就是滤波后的工程值

中值滤波则适合有尖峰脉冲干扰的场景,比如变频器频繁启停时压力变送器偶尔蹦出的尖刺。做法是把最近 N 个值排序,取中间值输出。N 一般取 5 或 7,太大会让响应明显变慢。

我的实际经验是:先中值滤波去掉尖峰,再移动平均平滑曲线,两者配合效果最好。光靠移动平均,尖峰只是被摊薄了,并没有真正剔除;光靠中值滤波,曲线又容易有台阶感。

5. 模拟量输出通道的接线与编程:把结果真正送出去

采集烧脑,输出也一样一堆门道。PID 算出来的控制量怎么变成 4-20mA 送到变频器、调节阀,这里面接线和换算一步都不能省。

5.1 AO通道的负载与接线限制

模拟量输出模块的电流输出一般有最大负载电阻限制,比如 4-20mA 输出最大负载 500 欧姆或者更大。接变频器模拟量输入端子时,变频器侧输入阻抗通常在几十到几百欧姆,基本没问题。

但接线要分清三件事:

  • 输出电压信号时,如果外部负载的公共端和模块输出负端电位不一致,需要检查共地;
  • 输出电流信号时,回路串接的负载不能超过模块标称的最大负载电阻,否则电流推不上去;
  • 输出通道同样存在短路保护问题,千万别拿电流输出直接去驱动一个线圈之类的负载。

AO 通道的屏蔽层处理方式和 AI 一样,屏蔽层单端接 0V,不要和动力线走同一根线槽。

5.2 输出码值的换算方向

模拟量输出是采集的逆过程:程序里算出的工程值,要先换算成原始码值,再送到 AO 通道。

还是用 4-20mA 对应 0-100% 举例,模块分度表把 4mA 映射到 0、20mA 映射到 32767:

// 把0-100%的控制量换算成输出码值 ctrlPercent : REAL; // PID输出,范围0.0-100.0 aoRaw : INT; // 写入AO通道的码值 aoRaw := REAL_TO_INT(ctrlPercent / 100.0 * 32767.0); aoRaw := LIMIT(0, aoRaw, 32767); // 限幅保护

这里注意:不要在主程序中直接对 PID 输出做限幅,不然 PID 积分饱和问题会在这个环节被放大。正确做法是 PID 内部做抗积分饱和,输出端再对外部码值做最终限幅。

5.3 PID 配合 AO 输出时容易忽略的环节

PID 输出到模拟量输出通道之间,很多人忘记加手动/自动切换功能。

调试现场经常遇到的情况是:"自动模式下 PID 输出一直在 70%,但我不想让阀门按这个开,想手动给 30%,怎么切?"

我的做法是:在 PID 输出和 AO 码值输出之间加一个手动值寄存器。自动模式时把 PID 输出赋给它,手动模式时由屏幕写入,最后统一由这个寄存器换算成码值送出。这样切换时不会抖,阀门不会猛跳。

5.4 输出值来回震荡的处理

调节阀或变频器跟着 PID 输出来回震荡,是很常见的现象。

最先检查的不是 PID 参数,而是输出通道的采样时间和阀的动作时间是否匹配。如果 AO 每 10 毫秒更新一次,而调节阀执行机构要好几秒才能走到位,那 PID 输出敏感度再高,阀门也永远在追目标值。

后续我会配合几个项目实例讲,一般调法包括:

  • 增大 PID 采样时间,让每次输出保持足够长的时间;
  • 减小比例增益,增加积分时间;
  • 在 AO 输出前加一个输出变化率限制,让输出斜率可控,阀门动作更柔和。

6. 现场调试实录:数值跳变、偏差与干扰的排查链路

最后这节是纯实战。模拟量项目调试时翻来覆去就那几个问题,但每次出现,新人总会从头乱查到尾。我按排查顺序整理一套链路,照着走能省很多时间。

6.1 通道没有读数或读数恒为最小值

遇到这种情况,不要先怀疑 PLC 和程序,按下面的优先级查:

  1. 拔下接线,用万用表直接量变送器输出信号,确认传感器端到底有没有信号出来;
  2. 有信号,但 PLC 还是没读数,量模块的 AI 端子两端是否真的收到了这个信号,排除中间端子排接触不良;
  3. 检查 24V 电源是否给到位,两线制变送器如果电源没串对,回路里根本不会有电流;
  4. 组态里看通道量程、使能是否配置正确,地址是否映射到了正确的模块槽位。

实战中最常见的其实是第 1 步,变送器坏了或者供电被保险丝烧断,接线上查了半天,其实源头就没给信号。先量传感器输出,再查 PLC 通道,这个顺序一定不能反。

6.2 读数跳变、毛刺严重的处理链路

读数乱跳,先把"程序滤波"和"硬件干扰"分开来查。

测试方法很简单:把变送器信号用一根短线直接插到模块上,不经过现场长线,用手动信号源给定一个稳定的 4mA/12mA/20mA,看程序里读到的码值稳不稳。如果短接时很稳,走长线就跳,问题出在信号线路上;如果短接时也跳,问题出在模块通道或供电上。

信号线路导致的跳变,排查重点是:

  • 屏蔽层是否单端接地、接的是不是干净 0V;
  • 信号线是否和动力线扎在一起走;
  • 两端地电位差是否过大,必要时加信号隔离器;
  • 变送器供电的 24V 电源是否为开关电源带来纹波,可以并一个 DC/DC 隔离模块解决。

6.3 读数系统性偏差:整体偏高或整体偏低

如果读数不是乱跳,而是整体比现场仪表偏大或偏小百分之几,这是典型的标定偏差。

先用万用表实测变送器输出的电流值,再对照 PLC 读出的原始码值,一起换算一下:

  • 如果 4mA 时 PLC 端偏大、20mA 时还是同一个偏置量,说明零点偏置,程序中调整零点码值偏移;
  • 如果偏差比例和信号大小成正比,说明增益标定不对,对应调整满量程码值。

模块分度表里零点码值和满量程码值,最好在项目调试时用实际信号源做一次"两点标定",不要只看手册里的标称值。原因很简单:模块本身的精度、采样电阻误差、现场电压影响,都会让实际映射关系和手册有细微差异。标定过之后,精度能有显著提升。

6.4 上位机读取模拟量:寄存器地址先确认

模拟量换算如果在 PLC 程序里已经完成,上位机直接读换算结果最好。

汇川 PLC 通过 MODBUS 通讯和上位机对接时,程序里把模拟量工程值放到底层保持寄存器,再做好 MODBUS 地址映射表。上位机组态软件读这些保持寄存器就行。这里最需要注意的是地址映射的对应关系,加 1 减 1 的偏移最容易出错,调试时先用 MODBUS 调试工具读一遍确认,再进组态软件配置。

如果上位机需要读原始码值再自行换算,也建议把分度表和标定公式同步给上位机组态的人员,两边算法不一致,后期维护时会出现"PLC 显示正常、上位机显示偏大"的奇葩问题。

6.5 一条可以复制到项目里的调试清单

结尾整理一份我在模拟量项目里会反复对照的检查清单,新项目调试时照着走,基本能覆盖 90% 的问题:

检查项说明
变送器信号源输出确认先量传感器,再查通道
供电电源电压是否稳定,负极是否与模块0V共地
接线制式两线制/三线制/四线制是否接对
屏蔽层是否单端接地、接0V是否干净
模块组态量程、使能、槽位映射是否匹配
原始码值对照分度表确认零点与满量程码值
两点标定用信号源校准零点和增益
软件滤波中值滤波加移动平均是否合理
输出限幅AO码值是否做了上下限保护
通讯映射上位机寄存器地址和换算逻辑是否一致

这套流程我在好几个汇川项目里都用过,无论是 Easy 系列的 AutoShop 还是 AM 系列的 InoProShop,排查思路完全通用。模拟量本身不神秘,就是一路信号从传感器经过硬件、组态、程序、通讯,最终变成屏幕上那个可信的数字。每个环节都验证到位,项目自然顺利。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/28 7:35:35

DAB变换器EPS优化控制与Simulink仿真实践

做双向储能变换器或者车载充电机项目的时候&#xff0c;DAB这个词一定绕不开。我去年折腾一个2kW双向DC-DC样机&#xff0c;最开始用单移相&#xff08;SPS&#xff09;&#xff0c;轻载下电感电流有效值高得离谱&#xff0c;回流功率带来的损耗让小功率工况效率非常难看。后来…

作者头像 李华
网站建设 2026/9/28 7:35:20

网站可行性分析:3个维度看懂建站要花多少钱

网站可行性分析:3个维度看懂建站要花多少钱 模板网站太丑不够用,这是很多老板找我咨询时第一句话。大家心里都有杆秤,觉得花几千块买个模板,做出来的东西拿不出手,但定制开发又担心“多少钱”是个无底洞,怕被坑。其实,判断一个网站项目的 网站可行性…

作者头像 李华
网站建设 2026/9/28 7:35:17

3步搞定网站注册地查询 免费工具助你快速定位

3步搞定网站注册地查询 免费工具助你快速定位 自己不会代码想做网站,最头疼的往往不是设计,而是那些藏在后台里的“坑”。比如突然想查一下自己的域名到底注册在哪个国家,或者备案主体信息对应的服务器物理位置在哪里,这时候很多人就懵了。其实这事儿没那么玄乎,用对 免费工具…

作者头像 李华
网站建设 2026/9/28 7:34:36

膜蛋白分析七库串联:从Uniprot到TMHMM的完整流程指南

1. 为什么要凑齐这七个数据库&#xff1f;——膜蛋白分析的完整拼图做膜蛋白研究的人大多有过这种体验&#xff1a;好不容易把一条序列拿到手&#xff0c;接下来却不知道该往哪儿查。翻Uniprot&#xff1f;只有注释信息&#xff0c;没有结构&#xff1b;跑TMHMM&#xff1f;只给…

作者头像 李华