上周有个兄弟在群里问:”S7-1200读压力变送器的4-20mA信号,PIW读出数值怎么转换成实际压力?”这个问题看着简单,实际不管老手新手都容易卡住。我干脆写一篇完整的操作步骤。
一、硬件接线
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模拟量处理不算复杂,但细节不少。对照上面的步骤走一遍,基本不会出问题。你们在模拟量处理上还遇到过什么奇葩问题?评论区交流。