缩放指令是的用法是传感器的上限和下限与5530和27648,成线性关系一一对应上的吗?那如果是0-20mA的直接用缩放指令0——27648和传感器量程对应上可以吗?
SCALE缩放指令1200是没有的,300400才有。如果现场传感器是4-20ma,模拟模板是0-20ma,那么SCALE指令里K1和K2就应该是5530.0和27648.0。但因为SCALE指令里K1和K2固定为两种情况,BIPOLAR为0,K1=0.0,K2=27648.0这是单极性;BIPOLAR为1,K1=-27648.0,K2=27648.0这是双极性。因为K1\K2不在接口参数里,所以K1=5530和K2=27648.0无法实现,你最好自己写一个块更灵活点。
CASE #index OF
1:
#K1 := 0;
#K2 := 27648;
2:
#K1 := -27648;
3:
#K1 := 5530;
ELSE
;
END_CASE;
IF #IN < #K1
THEN
#Temp1 := #K1;
#overflow := 1;
ELSIF #IN > #K2
#Temp1 := #K2;
#Temp1 := #IN;
#overflow := 0;
END_IF;
#Value := (#HI_LIM - #LO_LIM) * ((#Temp1 - #K1) / (#K2 - #K1)) + #LO_LIM;
用NORM_X+SCALE_X就可以啊,没那么麻烦
NORM_X将PIW,以及0-27648(或者5530-27648)转为0.0-1.0,然后SCALE_X将0.0-1.0转化为工程量,比如0-100℃
输出也一样
NORM_X将实际工程量,以及工程量范围,转为0.0-1.0,然后SCALE_X将0.0-1.0转化为0-27648中间的一个值作为PQW
楼上说的没错。一个缩放;一个标准化。
动手试一下就知道了。
同时,要理解西门子编程的规范和理念。推荐尽量用整数,少用浮点。浮点就是用0-1.00范围(因为实际是科学记数法,有效位数是固定的。转成0-100.0没用);位数标定由HIM去做(否则都是浪费时间)。
就是个乘除运算
跟着学习一下