先回答你第三个问题:FC105、FC106的详细用法讲解。
1、FC105
SCALE功能接受一个整型值(IN),并将其转换为以工程单位表示的介于下限和上限(LO_LIM和HI_LIM)之间的实型值。将结果写入OUT。SCALE功能使用以下等式:
OUT = [ ((FLOAT (IN) -K1)/(K2-1)) * (HI_LIM-O_LIM)] + LO_LIM
常数K1和K2根据输入值是BIPOLAR还是UNIPOLAR设置。
BIPOLAR:假定输入整型值介于 7648与27648之间,因此K1 = -7648.0,K2 = +27648.0
UNIPOLAR:假定输入整型值介于0和27648之间,因此K1 = 0.0,K2 = +27648.0
如果输入整型值大于K2,输出(OUT)将钳位于HI_LIM,并返回一个错误。如果输入整型值小于K1,输出将钳位于LO_LIM,并返回一个错误。
通过设置LO_LIM > HI_LIM可获得反向标定。使用反向转换时,输出值将随输入值的增加而减小。
2、FC106
UNSCALE功能接收一个以工程单位表示、且标定于下限和上限(LO_LIM和HI_LIM)之间的实型输入值(IN),并将其转换为一个整型值。将结果写入OUT。
UNSCALE功能使用以下等式:
OUT = [ ((IN-O_LIM)/(HI_LIM-O_LIM)) * (K2-1) ] + K1,并根据输入值是BIPOLAR还是UNIPOLAR设置常数K1和K2。
BIPOLAR:假定输出整型值介于 ?7648和27648之间,因此,K1 = -7648.0,K2 = +27648.0
UNIPOLAR:假定输出整型值介于0和27648之间,因此,K1 = 0.0,K2 = +27648.0
如果输入值超出LO_LIM和HI_LIM范围,输出(OUT)将钳位于距其类型(BIPOLAR或UNIPOLAR)的指定范围的下限或上限较近的一方,并返回一个错误。
简要来说,FC105模拟量输入的标准化,FC106模拟量输出的标准化。
举个例子:
在OB1里调用FC105计算压力,压力地址为PIW320,范围0~10Kpa,传输信号为4~20mA,实时压力保存在DB1.DBD0里。
CALL "SCALE"
IN :=PIW320 //压力在PLC里的输入地址
HI_LIM :=10.0 //压力范围上限
LO_LIM :=0.0 //压力范围下限
BIPOLAR:=FALSE //极性选择,此处为单极性
RET_VAL:=MW0 //错误信息
OUT :=DB1.DBD0 //实时压力