西门子S7-1200模拟量输入4-20mA信号处理,SCALE指令详解

上周有个兄弟在群里问:”S7-1200读压力变送器的4-20mA信号,PIW读出数值怎么转换成实际压力?”这个问题看着简单,实际不管老手新手都容易卡住。我干脆写一篇完整的操作步骤。

西门子S7-1200模拟量输入

一、硬件接线

S7-1200模拟量输入模块(SM1231 AI 4×13bit或8×13bit)接收4-20mA信号。接线方式:

  • 两线制变送器:变送器正极接模块通道的+端,负极接模块通道的-端,同时模块的-端和电源M端短接
  • 四线制变送器:变送器独立供电,信号正接模块+,信号负接模块-

注意:S7-1200模拟量模块支持0-20mA和4-20mA两种量程,需要在硬件组态中选择正确的测量类型。

二、硬件组态设置

在TIA Portal中配置:
1. 添加S7-1200 CPU和SM1231模拟量输入模块
2. 双击模拟量模块通道,在属性中设置:测量类型→电流,测量范围→4-20mA
3. 记下硬件地址,默认第一个通道地址是”IW64″

关键参数:4-20mA对应S7-1200内部的整数值范围是0-27648。不是0-32000,很多人在这里算错。0-20mA对应0-27648,4-20mA对应的值就是0-27648。

三、使用SCALE指令转换

TIA Portal中提供了NORM_X和SCALE_X指令来做量程转换。

方法一:用NORM_X + SCALE_X(推荐)

第一步:NORM_X(标准化)
– 输入VALUE=IW64(原始值)
– MIN=0,MAX=27648
– 输出OUT得到0.0-1.0之间的百分比

第二步:SCALE_X(缩放)
– 输入VALUE=上一步的输出
– MIN=0.0(量程下限,0MPa)
– MAX=1.6(量程上限,1.6MPa)
– 输出OUT=实际压力值(浮点数)

方法二:手动计算(适用于早期Step7或不想用SCALE)

公式:工程量 = (原始值 / 27648) × (量程上限 – 量程下限) + 量程下限

以1.6MPa压力变送器为例,读数为13824时:
压力 = (13824 / 27648) × (1.6 – 0) + 0 = 0.8MPa

四、断线检测

S7-1200模拟量模块带断线检测功能。当信号低于1.2mA(整数值小于约1659)时,模块报错。在程序里可以判断:如果IW64 < 2000,说明传感器故障或线路断了,输出报警。

IF IW64 < 2000 THEN
"报警_传感器断线" := TRUE;
"实际压力" := 0.0;
ELSE
"实际压力" := (IW64 / 27648.0) * 1.6;
END_IF;

五、常见坑

  • 坑1:4-20mA时硬件组态选成了0-20mA。读4mA时显示0,实际应该是0%量程。必须选4-20mA测量范围。
  • 坑2:模拟量模块供电不足。两线制传感器需要模块提供24V,电流不够会导致读数偏低或跳变。
  • 坑3:信号线没有用屏蔽线,变频器干扰导致数值波动。用屏蔽双绞线,屏蔽层单端接地。

S7-1200模拟量处理不算复杂,但细节不少。对照上面的步骤走一遍,基本不会出问题。你们在模拟量处理上还遇到过什么奇葩问题?评论区交流。

上一篇 压电阀vs气动喷射阀:精密点胶到底该选哪种?
下一篇 三菱FX5U脉冲定位控制:从参数设置到伺服电机调试全流程