3. 过程控制中的模拟量信号处理

在S7-1500过程控制系统中,模拟量信号是连接现场传感器、执行器与PLC控制逻辑的桥梁。温度、压力、流量、液位、阀门开度等连续变化的物理量,最终都要通过模拟量输入/输出模块进入或送出CPU。这一节围绕模拟量信号处理的完整链路展开:从模块接线、量程卡设置、信号类型选择,到程序中的标准化与缩放指令应用,再到工程单位转换,形成一条可落地的技术路径。

模拟量输入/输出模块的接线与量程卡

S7-1500常用的模拟量输入模块如AI 8xU/I/RTD/TC BA,支持电压、电流、热电阻和热电偶多种信号类型。接线时首先要区分两线制、三线制和四线制变送器。以两线制4~20mA压力变送器为例,变送器正端接模块的M+端子,负端接M-端子,模块内部为变送器提供24V回路供电。四线制变送器则有独立的电源和信号线,信号正负分别接入模块的U+/I+和对应的负端。接线错误最常见的后果是信号超限或通道报断线故障。

量程卡(Range Card)是模块侧面的一个可插拔小卡,用于设定通道的测量范围。以AI 8xU/I/RTD/TC为例,量程卡有A、B、C、D四个位置,分别对应不同的电压/电流/热电阻范围。例如A位置对应电压±10V和电流±20mA,B位置对应电压0~10V和电流0~20mA,C位置对应热电阻和热电偶。量程卡设置必须与STEP 7中的通道参数一致,否则会出现“组态与硬件不匹配”的模块诊断错误。实际调试中,先断电插拔量程卡,再在硬件组态中设置对应通道的测量类型和测量范围,两者缺一不可。

信号类型选择与通道参数

在TIA Portal的硬件组态中,每个模拟量通道需要独立设置以下参数:测量类型(电压/电流/热电阻/热电偶)、测量范围(如4~20mA、0~10V、Pt100、Type K)、干扰频率抑制(50Hz/60Hz/400Hz)、以及断线诊断是否启用。对于4~20mA信号,测量范围选择“4~20mA”后,模块会将4mA对应为0,20mA对应为27648,这是S7-1500模拟量通道的标称满量程值。如果选择“0~20mA”,则0mA对应0,20mA对应27648。这个标称值体系是后续NORM_X和SCALE_X指令的基础。

S7-1500模拟量通道的标称范围:单极性0~27648,双极性-27648~27648。4~20mA信号在模块内部被映射为0~27648,其中4mA对应0,20mA对应27648。超出此范围时,模块会输出上溢(32767)或下溢(-32768)值。

标准化与缩放:NORM_X与SCALE_X

NORM_X和SCALE_X是S7-1500中处理模拟量的两个核心指令,通常配合使用。NORM_X(标准化)将原始模拟量值映射到0.0~1.0的浮点数区间,SCALE_X(缩放)再将这个0.0~1.0的值映射到实际的工程单位范围。

NORM_X的参数:MIN为原始值下限,VALUE为当前原始值,MAX为原始值上限,OUT为标准化结果。对于4~20mA信号,MIN=0,MAX=27648。当VALUE=13824时,OUT=0.5,表示50%量程。SCALE_X的参数:MIN为工程单位下限,VALUE为标准化值,MAX为工程单位上限,OUT为最终工程值。例如量程为0~1.6MPa的压力变送器,MIN=0.0,MAX=1.6,当VALUE=0.5时,OUT=0.8MPa。

// 示例:4~20mA压力变送器,量程0~1.6MPa
// 原始值存储在IW100中
#tempRaw := "IW100";                    // 读取原始值
"NORM_X"(MIN := 0,                       // 原始下限
         VALUE := #tempRaw,              // 当前原始值
         MAX := 27648,                   // 原始上限
         OUT => #tempNorm);              // 标准化结果0.0~1.0

"SCALE_X"(MIN := 0.0,                    // 工程下限
          VALUE := #tempNorm,            // 标准化值
          MAX := 1.6,                    // 工程上限
          OUT => #tempEng);              // 工程值MPa

实际编程中,通常将NORM_X和SCALE_X封装在一个FC或FB中,输入参数为原始值、原始上下限、工程上下限,输出为工程值。这样不同通道只需调用同一功能块,传入不同参数即可。需要注意的是,NORM_X的MIN和MAX必须与模块组态的测量范围一致,否则标准化结果会偏移。

工程单位转换与异常处理

工程单位转换不仅仅是线性缩放。对于热电阻和热电偶,模块直接输出温度值(如Pt100输出实际温度×10),此时不需要NORM_X/SCALE_X,而是直接除以10得到摄氏度。对于差压流量计,流量与差压的平方根成正比,需要在SCALE_X之后增加SQRT指令。例如差压变送器量程0~100kPa对应流量0~500m³/h,原始值标准化后先开平方,再乘以500得到流量值。

异常处理同样重要。当原始值超出27648时,说明信号超限,应触发报警并保持上一个有效值或输出安全值。当原始值低于0(4~20mA断线时模块输出负值)时,应判断为断线故障。在程序中可以这样处理:

IF #tempRaw > 27648 THEN
    #tempEng := 1.6;                    // 上溢,输出量程上限
    #alarmHigh := TRUE;
ELSIF #tempRaw < 0 THEN
    #tempEng := 0.0;                    // 断线或下溢
    #alarmWire := TRUE;
ELSE
    // 正常执行NORM_X和SCALE_X
END_IF;

调试时,可以用信号发生器输入4mA、12mA、20mA三个点,观察HMI上工程值是否分别为0、0.8、1.6MPa。如果偏差较大,检查量程卡位置、通道组态和NORM_X的MIN/MAX参数是否一致。对于输出模块,AO 4xI的接线和参数设置与输入类似,但SCALE_X的方向相反:先将工程值缩放到0~27648,再通过NORM_X反向或直接写入输出通道。实际项目中,建议为每个模拟量通道建立一张参数表,记录通道地址、信号类型、量程卡位置、原始上下限、工程上下限和报警阈值,便于后期维护和故障排查。

S7-1500 模拟量信号处理链路 现场变送器 4~20mA / 0~10V Pt100 / Type K 量程卡设置 A/B/C/D 位置 断电插拔 AI 8xU/I/RTD/TC 通道组态: 测量类型 / 范围 50Hz抑制 / 断线诊断 原始值 IW100 0~27648 NORM_X 标准化 MIN=0, MAX=27648 OUT: 0.0 ~ 1.0 SCALE_X 缩放 MIN=0.0, MAX=1.6 OUT: 0.0 ~ 1.6 MPa 工程值 0.0 ~ 1.6 MPa 异常判断 原始值 > 27648 → 上溢 原始值 < 0 → 断线/下溢 输出安全值 + 报警 保持上一有效值 超限检测 通道参数记录表示例: 通道地址 | 信号类型 | 量程卡 | 原始下限 | 原始上限 | 工程下限 | 工程上限 | 报警阈值 IW100 | 4~20mA | A | 0 | 27648 | 0.0 MPa | 1.6 MPa | 1.5 MPa IW102 | Pt100 | C | -2000 | 8500 | -200°C | 850°C | 800°C 两线制/四线制 硬件组态一致 标称值体系

总结来看,模拟量信号处理的核心在于“两端对齐”:一端是硬件侧的量程卡和通道组态,另一端是程序侧的NORM_X/SCALE_X参数。两端参数一致,工程值才能准确。调试时用信号发生器验证三个关键点(4mA、12mA、20mA),配合异常判断逻辑,就能覆盖大多数现场场景。对于热电阻、热电偶和差压流量等特殊信号,在标准缩放之后增加相应的数学处理,即可完成工程单位转换。