em đang học STL nên em viết lại hàm FC 105 theo những gì em biết.... em chạy và so kết quả thấy 2 hàm chạy giống nhau
chắc là đúng. mong các anh chỉ bảo thêm
FUNCTION FC 2 : VOID
TITLE =
VERSION : 0.1
VAR_INPUT
in : INT ;
hight_lim : REAL ;
low_lim : REAL ;
bipolar : BOOL ;
END_VAR
VAR_OUTPUT
out : REAL ;
error : INT ;
END_VAR
VAR_TEMP
a : REAL ;
b : REAL ;
b1 : REAL ;
temp : DINT ;
in_temp : REAL ;
ax : REAL ;
temp1 : REAL ;
temp2 : REAL ;
a1 : REAL ;
END_VAR
BEGIN
NETWORK
TITLE =
// chuyen doi dau vao thanh kieu real
L #in;
ITD ;
T #temp;
L #temp;
DTR ;
T #in_temp;
//---------BIPOLAR=1------------------------------------------------------
//if (in_temp > 27648) {in_temp=27648;}
//elseif (in_temp <-27648) {in_temp=-27648;}
// else in_tem=in;
//-----------------------------------------------------------------------
A #bipolar;
JNB lb2;
A( ;
L #in_temp;
L 2.764800e+004;
>R ;
) ;
JNB lbb1;
L 2.764800e+004;
T #in_temp;
lbb1: A( ;
L #in_temp;
L -2.764800e+004;
<R ;
) ;
JNB lbb2;
L -2.764800e+004;
T #in_temp;
lbb2: JU bi;
//---------BIPOLAR=0-------------------------------------------------------------
//if (in_temp > 27648) {in_temp=27648;}
//elseif (in_temp <0) {in_temp=0;}
// else in_tem=in;
//--------------------------------------------------------------------------------
lb2: A( ;
L #in_temp;
L 2.764800e+004;
>R ;
) ;
JNB lbb3;
L 2.764800e+004;
T #in_temp;
lbb3: A( ;
L #in_temp;
L 0.000000e+000;
<R ;
) ;
JNB lbb4;
L 0.000000e+000;
T #in_temp;
lbb4: JU ubi;
//-------------BIPOLAR=0-----------------------------------------------------------
// phuong tinh duong thang y=a*x+b => tim a & b
//trong do b=low_lim
// a=(hight_lim-low_lim)/27648
//----------------------------------------------------------------------------------
ubi: L #low_lim;
T #b; // gan he so b
L #hight_lim;
L #low_lim;
-R ;
T #b1;
L #b1;
L 2.764800e+004;
/R ;
T #a;
JU out;
//-------------BIPOLAR=1------------------------
// phuong tinh duong thang y=a*x+b => tim a & b
//trong do b=(hight_lim +l ow_lim)/2
// a=(hight_lim-low_lim)/55296
//-----------------------------------------------
bi: L #low_lim;
L #hight_lim;
+R ;
T #temp1;
L #temp1;
L 2.000000e+000;
/R ;
T #b;
L #hight_lim;
L #low_lim;
-R ;
T #a1;
L #a1;
L 5.529600e+004;
/R ;
T #a;
//-------------------------------------------------------------------------
//tinh toan dau ra
out: L #in_temp;
L #a;
*R ;
T #ax;
L #ax;
L #b;
+R ;
T #out;
NOP 0;
END_FUNCTION