equal
deleted
inserted
replaced
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 |
41 |
42 #define AXIS_UNIT_TO_USER_UNIT(param)\ |
42 #define AXIS_UNIT_TO_USER_UNIT(param, type, name)\ |
43 (IEC_LREAL)(param) * __CIA402Node_%(location)s.axis->RatioDenominator / __CIA402Node_%(location)s.axis->RatioNumerator |
43 (IEC_##type)(param) * __CIA402Node_%(location)s.axis->name##RatioDenominator / __CIA402Node_%(location)s.axis->name##RatioNumerator |
44 #define USER_UNIT_TO_AXIS_UNIT(param)\ |
44 #define USER_UNIT_TO_AXIS_UNIT(param, type, name)\ |
45 (IEC_DINT)(param * __CIA402Node_%(location)s.axis->RatioNumerator / __CIA402Node_%(location)s.axis->RatioDenominator) |
45 (IEC_##type)(param * __CIA402Node_%(location)s.axis->name##RatioNumerator / __CIA402Node_%(location)s.axis->name##RatioDenominator) |
|
46 |
|
47 #define DEFAULT_AXIS_UNIT_TO_USER_UNIT(param) AXIS_UNIT_TO_USER_UNIT(param, LREAL,) |
|
48 #define DEFAULT_USER_UNIT_TO_AXIS_UNIT(param) USER_UNIT_TO_AXIS_UNIT(param, DINT,) |
|
49 #define TORQUE_AXIS_UNIT_TO_USER_UNIT(param) AXIS_UNIT_TO_USER_UNIT(param, LREAL, Torque) |
|
50 #define TORQUE_USER_UNIT_TO_AXIS_UNIT(param) USER_UNIT_TO_AXIS_UNIT(param, INT, Torque) |
46 |
51 |
47 static __CIA402Node __CIA402Node_%(location)s; |
52 static __CIA402Node __CIA402Node_%(location)s; |
48 |
53 |
49 %(extern_located_variables_declaration)s |
54 %(extern_located_variables_declaration)s |
50 |
55 |
116 |
121 |
117 // Default variables retrieve |
122 // Default variables retrieve |
118 __CIA402Node_%(location)s.axis->CommunicationReady = *(__CIA402Node_%(location)s.StatusWord) != 0; |
123 __CIA402Node_%(location)s.axis->CommunicationReady = *(__CIA402Node_%(location)s.StatusWord) != 0; |
119 __CIA402Node_%(location)s.axis->ReadyForPowerOn = __CIA402Node_%(location)s.state == __SwitchedOn || __OperationEnabled; |
124 __CIA402Node_%(location)s.axis->ReadyForPowerOn = __CIA402Node_%(location)s.state == __SwitchedOn || __OperationEnabled; |
120 __CIA402Node_%(location)s.axis->PowerFeedback = __CIA402Node_%(location)s.state == __OperationEnabled; |
125 __CIA402Node_%(location)s.axis->PowerFeedback = __CIA402Node_%(location)s.state == __OperationEnabled; |
121 __CIA402Node_%(location)s.axis->ActualPosition = AXIS_UNIT_TO_USER_UNIT(*(__CIA402Node_%(location)s.ActualPosition)); |
126 __CIA402Node_%(location)s.axis->ActualPosition = DEFAULT_AXIS_UNIT_TO_USER_UNIT(*(__CIA402Node_%(location)s.ActualPosition)); |
122 __CIA402Node_%(location)s.axis->ActualVelocity = AXIS_UNIT_TO_USER_UNIT(*(__CIA402Node_%(location)s.ActualVelocity)); |
127 __CIA402Node_%(location)s.axis->ActualVelocity = DEFAULT_AXIS_UNIT_TO_USER_UNIT(*(__CIA402Node_%(location)s.ActualVelocity)); |
|
128 __CIA402Node_%(location)s.axis->ActualTorque = TORQUE_AXIS_UNIT_TO_USER_UNIT(*(__CIA402Node_%(location)s.ActualTorque)); |
123 |
129 |
124 // Extra variables retrieve |
130 // Extra variables retrieve |
125 %(extra_variables_retrieve)s |
131 %(extra_variables_retrieve)s |
126 } |
132 } |
127 |
133 |
150 break; |
156 break; |
151 default: |
157 default: |
152 break; |
158 break; |
153 } |
159 } |
154 |
160 |
|
161 // CIA402 node modes of operation computation according to axis motion mode |
|
162 switch (__CIA402Node_%(location)s.axis->AxisMotionMode) { |
|
163 case mc_mode_cst: |
|
164 *(__CIA402Node_%(location)s.ModesOfOperation) = 0x0a; |
|
165 break; |
|
166 case mc_mode_csv: |
|
167 *(__CIA402Node_%(location)s.ModesOfOperation) = 0x09; |
|
168 break; |
|
169 default: |
|
170 *(__CIA402Node_%(location)s.ModesOfOperation) = 0x08; |
|
171 break; |
|
172 } |
|
173 |
155 // Default variables publish |
174 // Default variables publish |
156 *(__CIA402Node_%(location)s.TargetPosition) = USER_UNIT_TO_AXIS_UNIT(__CIA402Node_%(location)s.axis->PositionSetPoint); |
175 *(__CIA402Node_%(location)s.TargetPosition) = DEFAULT_USER_UNIT_TO_AXIS_UNIT(__CIA402Node_%(location)s.axis->PositionSetPoint); |
|
176 *(__CIA402Node_%(location)s.TargetVelocity) = DEFAULT_USER_UNIT_TO_AXIS_UNIT(__CIA402Node_%(location)s.axis->VelocitySetPoint); |
|
177 *(__CIA402Node_%(location)s.TargetTorque) = TORQUE_USER_UNIT_TO_AXIS_UNIT(__CIA402Node_%(location)s.axis->TorqueSetPoint); |
157 |
178 |
158 // Extra variables publish |
179 // Extra variables publish |
159 %(extra_variables_publish)s |
180 %(extra_variables_publish)s |
160 } |
181 } |