FUNCTION_BLOCK MYFB
{S7_m_c:=´true´}
VAR_INPUT
X1{S7_m_c:=´true´}:REAL:=10;
X2{S7_m_c:=´true´}:REAL:=20;
X3{S7_m_c:=´true´}:REAL:=40;
X4{S7_m_c:=´true´}:REAL:=60;
X5{S7_m_c:=´true´}:REAL:=80;
X6{S7_m_c:=´true´}:REAL:=100;
X7{S7_m_c:=´true´}:REAL:=120;
X8{S7_m_c:=´true´}:REAL:=140;
Y1{S7_m_c:=´true´}:REAL:=100;
Y2{S7_m_c:=´true´}:REAL:=200;
Y3{S7_m_c:=´true´}:REAL:=201;
Y4{S7_m_c:=´true´}:REAL:=350;
Y5{S7_m_c:=´true´}:REAL:=350;
Y6{S7_m_c:=´true´}:REAL:=700;
Y7{S7_m_c:=´true´}:REAL:=700;
Y8{S7_m_c:=´true´}:REAL:=900;
PV{S7_m_c:=´true´}:REAL:=10;
START:BOOL;
STOP:BOOL;
PULS:BOOL;
END_VAR
VAR_TEMP
R1:REAL;R4:REAL;R5:REAL;R6:REAL;R7:REAL;R8:REAL;
R2:REAL;
R3:REAL;R11:REAL;R12:REAL;
A:BOOL;B:BOOL;C:BOOL;D:BOOL;E:BOOL;F:BOOL;G:BOOL;
END_VAR
VAR_OUTPUT
OUT{S7_m_c:=´true´}:REAL;
ERR{S7_m_c:=´true´}:BOOL;
OUTB{S7_m_c:=´true´}:BOOL;
PULS_R{S7_m_c:=´true´}:REAL;
PULS_H{S7_m_c:=´true´}:REAL;
OUTR1:REAL;OUTR2:REAL;OUTR3:REAL;OUTR4:REAL;OUTR5:REAL;OUTR6:REAL;OUTR7:REAL;OUTR8:REAL;R:REAL;
END_VAR
BEGIN
R1:=(Y1-30.0)/(X1-0)/60.0; R2:=(Y2-Y1)/(X2-X1)/60.0;
R3:=(Y3-Y2)/(X3-X2)/60.0; R4:=(Y4-Y3)/(X4-X3)/60.0;
R5:=(Y5-Y4)/(X5-X4)/60.0; R6:=(Y6-Y5)/(X6-X5)/60.0;
R7:=(Y7-Y6)/(X7-X6)/60.0; R8:=(Y8-Y7)/(X8-X7)/60.0;
OUTR1:=R1;OUTR2:=R2;OUTR3:=R3;OUTR4:=R4;OUTR5:=R5;OUTR6:=R6;OUTR7:=R7;OUTR8:=R8;
PULS_H:=PULS_R/60.0;
IF PULS=TRUE AND START=TRUE THEN PULS_R:=PULS_R+1.0;
END_IF;
IF OUT<=Y1 THEN R:=R1;
END_IF;
IF OUT>Y1 AND OUT<=Y2 THEN R:=R2;
END_IF;
IF OUT>Y2 AND OUT<=Y3 THEN R:=R3;
END_IF;
IF OUT>Y3 AND OUT<=Y4 THEN R:=R4;
END_IF;
IF OUT>Y4 AND OUT<=Y5 THEN R:=R5;
END_IF;
IF OUT>Y5 AND OUT<=Y6 THEN R:=R6;
END_IF;
IF OUT>Y6 AND OUT<=Y7 THEN R:=R7;
END_IF;
IF OUT>Y7 AND OUT<=Y8 THEN R:=R8;
END_IF;
IF OUT>Y8 THEN R:=0.0;
END_IF;
IF START=TRUE AND PULS=TRUE AND Y8>Y7+1.0 AND Y7>Y6+1.0 AND Y6>Y5+1.0 AND Y5>Y4+1.0 AND Y4>Y3+1.0 AND Y3>Y2+1.0 AND Y2>Y1+1.0 THEN OUT:=OUT+R;//1
END_IF;
IF STOP=TRUE THEN PULS_R:=0.0;
END_IF;
IF STOP=TRUE THEN OUT:=PV;
END_IF;
IF OUT>Y8+10.0 THEN ERR:=TRUE;
END_IF;
IF OUT<=Y8 THEN ERR:=FALSE;
END_IF;
IF OUT>Y8+2.0 THEN OUTB:=TRUE;
END_IF;
IF OUT<=Y8+2.0 THEN OUTB:=FALSE;
END_IF;
END_FUNCTION_BLOCK