我对液位做了个10点标定程序,但是编译出错了,不知道是什么问题?
FUNCTION FC2 : REAL
VAR_INPUT
I_AI:REAL;
I_X1:REAL;
I_X2:REAL;
I_X3:REAL;
I_X4:REAL;
I_X5:REAL;
I_X6:REAL;
I_X7:REAL;
I_X8:REAL;
I_X9:REAL;
I_X10:REAL;
I_Y1:REAL;
I_Y2:REAL;
I_Y3:REAL;
I_Y4:REAL;
I_Y5:REAL;
I_Y6:REAL;
I_Y7:REAL;
I_Y8:REAL;
I_Y9:REAL;
I_Y10:REAL;
END_VAR
VAR_OUTPUT
O_OUT:REAL;
O_ERR:BOOL;
END_VAR
VAR_TEMP
// Temporary Variables
END_VAR
BEGIN
IF I_X1 < I_X2 AND I_X2 < I_X3 AND I_X3 < I_X4 AND I_X4 < I_X5 AND I_X5 < I_X6 AND I_X6 < I_X7 AND
I_X7 < I_X8 AND I_X8 < I_X9 AND I_X9 < I_X10 THEN
IF I_AI < I_X2 THEN
O_OUT := ( I_Y2 - I_Y1) / ( I_X2 - I_X1) * ( I_AI - I_X1) + I_Y1;
ELSIF I_AI >= I_X2 AND I_AI < I_X3 THEN
O_OUT := ( I_Y3 - I_Y2) / ( I_X3 - I_X2) * ( I_AI - I_X2) + I_Y2;
ELSIF I_AI >= I_X3 AND I_AI < I_X4 THEN
O_OUT := ( I_Y4 - I_Y3) / ( I_X4 - I_X3) * ( I_AI - I_X3) + I_Y3;
ELSIF I_AI >= I_X4 AND I_AI < I_X5 THEN
O_OUT := ( I_Y5 - I_Y4) / ( I_X5 - I_X4) * ( I_AI - I_X4) + I_Y4;
ELSIF I_AI >= I_X5 AND I_AI < I_X6 THEN
O_OUT := ( I_Y6 - I_Y5) / ( I_X6 - I_X5) * ( I_AI - I_X5) + I_Y5;
ELSIF I_AI >= I_X6 AND I_AI < I_X7 THEN
O_OUT := ( I_Y7 - I_Y6) / ( I_X7 - I_X6) * ( I_AI - I_X6) + I_Y6;
ELSIF I_AI >= I_X7 AND I_AI < I_X8 THEN
O_OUT := ( I_Y8 - I_Y7) / ( I_X8 - I_X7) * ( I_AI - I_X7) + I_Y7;
ELSIF I_AI >= I_X8 AND I_AI < I_X9 THEN
O_OUT = ( I_Y9 - I_Y8) / ( I_X9 - I_X8) * ( I_AI - I_X8) + I_Y8:
ELSE
O_OUT := ( I_Y10 - I_Y9) / ( I_X10 - I_X9) * ( I_AI - I_X9) + I_Y9;
END_IF;
O_ERR := FALSE;
ELSE
O_OUT := I_AI;
O_ERR := TRUE;
END_IF;
END_FUNCTION
请见截图,非常感谢!
图片说明:
最佳答案
有两个地方符号错了,还差一个返回值看附图
图片说明:
提问者对于答案的评价:
是的,问题出在符号上,多谢大师!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc288631.html