在PLC中对浮点数进行四舍五入的处理。
首先是变量声明:
FUNCTION round : LREAL
VAR_INPUT
a1:LREAL;
a2:INT;
END_VAR
VAR
x1,x2,x3,x4,d:LREAL;
c : LINT;
i:INT;
END_VAR
然后是程序逻辑部分:
c:=1;
FOR i:=1 TO a2 DO
c:=c*10;
END_FOR
d:=LINT_TO_REAL(c);
x1 := LTRUNC(a1*d)*10;
x2 := LTRUNC(a1*d*10);
x3:=x2-x1;
IF a1 = 0 THEN
round:=0;
ELSE
IF ABS(x3) > 4 THEN
IF a1 >0 THEN
round := x1/d/10+1/d;
ELSE
round := x1/d/10-1/d;
END_IF
ELSE
round := x1/d/10;
END_IF
END_IF
注意函数名称和返回值的名称一样为round。最后贴上完整的图片。