47 lines
780 B
Markdown
47 lines
780 B
Markdown
```pascal
|
|
FUNCTION_BLOCK "SlewLimit"
|
|
{ S7_Optimized_Access := 'FALSE' }
|
|
AUTHOR : 'Author'
|
|
FAMILY : 'Function'
|
|
NAME : 'Name'
|
|
VERSION : 1.0
|
|
VAR_INPUT
|
|
i_InValue : Real; // REAL Input Value TO Smooth
|
|
i_SlewMax : Real; // Maximum Slew Rate Accepted
|
|
i_Cycle : Real; // Cycle TIME
|
|
END_VAR
|
|
|
|
VAR_IN_OUT
|
|
out : Real;
|
|
END_VAR
|
|
|
|
VAR
|
|
mStep : Real;
|
|
END_VAR
|
|
|
|
|
|
BEGIN
|
|
|
|
|
|
#mStep := #i_SlewMax * #i_Cycle ;
|
|
|
|
IF #i_InValue >= #out THEN
|
|
IF (#i_InValue - #out) > #mStep THEN
|
|
#out := #out + #mStep ;
|
|
ELSE
|
|
#out := #i_InValue ;
|
|
END_IF;
|
|
ELSE
|
|
IF (#out - #i_InValue) > #mStep THEN
|
|
#out := #out - #mStep ;
|
|
ELSE
|
|
#out := #i_InValue ;
|
|
END_IF;
|
|
END_IF;
|
|
|
|
|
|
END_FUNCTION_BLOCK
|
|
|
|
|
|
```
|