1
+ USING System .Math ;
2
+
1
3
NAMESPACE Simatic .Ax .IO .Input
2
4
/// Class to handle REAL input values
3
5
CLASS RealInput EXTENDS InputBase
@@ -7,29 +9,51 @@ NAMESPACE Simatic.Ax.IO.Input
7
9
_default : REAL := REAL #0.0 ;
8
10
END_VAR
9
11
10
- /// The max and min value of datataype LReal
12
+ /// The max and min value of datataype REAL
11
13
VAR CONSTANT PUBLIC
12
14
MAX : REAL := REAL #+ 3.402823e+38 ;
13
15
MIN : REAL := REAL #- 3.402823e+38 ;
14
16
END_VAR
15
17
16
- /// Read the input value from Input area of type Real
17
- /// The integer input value
18
+ /// Read the input value from Input area of type REAL
19
+ /// The REAL input value
18
20
/// The input value is valid (e.g. periphery is ok)
19
- /// Default value if valid = FALSE
21
+ /// Default value if invalid = 0.0
22
+ /// Tolerance used with HasChanged , defaults to 0.0
20
23
METHOD PUBLIC ReadCyclic
21
24
VAR_INPUT
22
25
value : DWORD ;
23
26
valid : BOOL := TRUE ;
24
27
default : REAL := REAL #0.0 ;
28
+ tolerance : REAL := REAL #0.0 ;
25
29
END_VAR
26
30
27
31
THIS .QBad (value := NOT (valid));
32
+ _hasChanged := ABS (_value - TO_REAL (value)) > tolerance;
28
33
_value := TO_REAL (value);
29
34
_default := default;
30
35
END_METHOD
31
36
32
- /// Returns the actual value of integer
37
+ /// Read the input value from Input area of type REAL
38
+ /// The REAL input value
39
+ /// The input value is valid (e.g. periphery is ok)
40
+ /// Default value if invalid = 0.0
41
+ /// Tolerance used with HasChanged , defaults to 0.0
42
+ METHOD PUBLIC ReadCyclic
43
+ VAR_INPUT
44
+ value : REAL ;
45
+ valid : BOOL := TRUE ;
46
+ default : REAL := REAL #0.0 ;
47
+ tolerance : REAL := REAL #0.0 ;
48
+ END_VAR
49
+
50
+ THIS .QBad (value := NOT (valid));
51
+ _hasChanged := ABS (_value - value) > tolerance;
52
+ _value := value;
53
+ _default := default;
54
+ END_METHOD
55
+
56
+ /// Returns the actual value of the REAL
33
57
/// Actual value of the REAL input
34
58
METHOD PUBLIC Q : REAL
35
59
IF (NOT (THIS .QBad ())) THEN
0 commit comments