恭喜,你发布的帖子
发布于 2016-05-03 12:15:37
1楼
FUNCTION "模拟量输入" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
IW : Word;
ID : Int;
max : Real;
min : Real;
END_VAR
VAR_OUTPUT
"TEST_Current/Voltage" : Real;
Sensor_error : Bool;
END_VAR
VAR_IN_OUT
REAL_out : Real;
END_VAR
VAR_TEMP
iw_real : Real;
END_VAR
BEGIN
#iw_real := INT_TO_REAL(WORD_TO_INT(#IW));
IF (#ID=1) THEN //4-20ma
#"TEST_Current/Voltage" := (16 * #iw_real) / 27648 + 4;
#REAL_out := (#max - #min) * NORM_X_REAL(MIN :=0, VALUE := #iw_real, MAX := 27648);
END_IF;
IF (#ID = 2) THEN//0-10v
#"TEST_Current/Voltage" := #iw_real*10/27648 ;
#REAL_out := (#max - #min) * NORM_X(MIN := 0, VALUE := #iw_real, MAX := 27648);
END_IF;
IF (#IW = 16#ffff OR #IW=16#7fff OR #IW=16#8000) THEN
#Sensor_error := 1;
#REAL_out := 0;
#"TEST_Current/Voltage" := 0;
ELSE
#Sensor_error := 0;
END_IF;
END_FUNCTION
FUNCTION "模拟量输出" : Void
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1
VAR_INPUT
Per_In : Int;
max : Int;
min : Int;
END_VAR
VAR_OUTPUT
QW : Word;
END_VAR
VAR_TEMP
Error_Word : Word;
Q_INT : Int;
T_int : Int;
END_VAR
BEGIN
#T_int:= LIMIT(MN := #min, IN := #Per_In, MX :=#max);
#QW := INT_TO_WORD(SCALE_X(MIN := #min, VALUE := #T_int, MAX := #max));
END_FUNCTION
请填写推广理由:
分享
只看
楼主