equal
deleted
inserted
replaced
36 typedef struct { |
36 typedef struct { |
37 %(entry_variables)s |
37 %(entry_variables)s |
38 __CIA402NodeState state; |
38 __CIA402NodeState state; |
39 axis_s* axis; |
39 axis_s* axis; |
40 } __CIA402Node; |
40 } __CIA402Node; |
|
41 |
|
42 #define AXIS_UNIT_TO_USER_UNIT(param)\ |
|
43 (IEC_LREAL)(param) * __CIA402Node_%(location)s.axis->RatioDenominator / __CIA402Node_%(location)s.axis->RatioNumerator |
|
44 #define USER_UNIT_TO_AXIS_UNIT(param)\ |
|
45 (IEC_DINT)(param * __CIA402Node_%(location)s.axis->RatioNumerator / __CIA402Node_%(location)s.axis->RatioDenominator) |
41 |
46 |
42 static __CIA402Node __CIA402Node_%(location)s; |
47 static __CIA402Node __CIA402Node_%(location)s; |
43 |
48 |
44 %(extern_located_variables_declaration)s |
49 %(extern_located_variables_declaration)s |
45 |
50 |
105 return; |
110 return; |
106 } |
111 } |
107 |
112 |
108 // Default variables retrieve |
113 // Default variables retrieve |
109 __CIA402Node_%(location)s.axis->PowerFeedback = __CIA402Node_%(location)s.state == __OperationEnabled; |
114 __CIA402Node_%(location)s.axis->PowerFeedback = __CIA402Node_%(location)s.state == __OperationEnabled; |
110 __CIA402Node_%(location)s.axis->ActualPosition = (IEC_LREAL)(*(__CIA402Node_%(location)s.ActualPosition)) * __CIA402Node_%(location)s.axis->RatioDenominator / __CIA402Node_%(location)s.axis->RatioNumerator; |
115 __CIA402Node_%(location)s.axis->ActualPosition = AXIS_UNIT_TO_USER_UNIT(*(__CIA402Node_%(location)s.ActualPosition)); |
|
116 __CIA402Node_%(location)s.axis->ActualVelocity = AXIS_UNIT_TO_USER_UNIT(*(__CIA402Node_%(location)s.ActualVelocity)); |
111 |
117 |
112 // Extra variables retrieve |
118 // Extra variables retrieve |
113 %(extra_variables_retrieve)s |
119 %(extra_variables_retrieve)s |
114 } |
120 } |
115 |
121 |
140 break; |
146 break; |
141 } |
147 } |
142 |
148 |
143 // Default variables publish |
149 // Default variables publish |
144 if (__CIA402Node_%(location)s.axis->CSP && *(__CIA402Node_%(location)s.ModesOfOperationDisplay) == 0x08) { |
150 if (__CIA402Node_%(location)s.axis->CSP && *(__CIA402Node_%(location)s.ModesOfOperationDisplay) == 0x08) { |
145 *(__CIA402Node_%(location)s.TargetPosition) = (IEC_DINT)(__CIA402Node_%(location)s.axis->PositionSetPoint * __CIA402Node_%(location)s.axis->RatioNumerator / __CIA402Node_%(location)s.axis->RatioDenominator); |
151 *(__CIA402Node_%(location)s.TargetPosition) = USER_UNIT_TO_AXIS_UNIT(__CIA402Node_%(location)s.axis->PositionSetPoint); |
146 } |
152 } |
147 else { |
153 else { |
148 *(__CIA402Node_%(location)s.TargetPosition) = *(__CIA402Node_%(location)s.ActualPosition); |
154 *(__CIA402Node_%(location)s.TargetPosition) = *(__CIA402Node_%(location)s.ActualPosition); |
149 } |
155 } |
150 |
156 |