Wiki source code of 03 Debugging Application

Last modified by Wecon on 2025/09/03 21:04

Show last authors
1 = **3 Debugging Application** =
2
3 == **3.1 In the case of only positioning control-servo positioning is inaccurate** ==
4
5 === **3.1.1 Problem analysis** ===
6
7 (1) The servo has received too many pulses. For example, the single-turn pulse of the servo is 10000, and the plc sends 10000 pulses to the servo, but the servo has moved more than one circle or more.
8
9 (2) The pulse received by the servo is less. For example, the single-turn pulse of the servo is 10000, and the plc sends 10000 pulses to the servo, but the servo does not complete one turn.
10
11 Therefore, we need to determine the situation first, and then make targeted corrections.
12
13 === **3.1.2 Checking problem reason** ===
14
15 We can make the plc send a fixed amount of pulses (it is better to make the servo rotate full circle more intuitive), and then look at the servo's encoder cumulative position U0-13.
16
17 (% style="text-align:center" %)
18 [[image:1637230248435-554.png]]
19
20 The value of U0-13 is related to the number of digits of the motor encoder. 2500 lines correspond to 10000/turn, 17 digits correspond to 131072/turn, and 23 digits correspond to 8388608/turn.
21
22 If there is no way to turn a full circle due to the mechanism, you can refer to the following formula for observation: 2500 lines, encoder cumulative position = plc sent pulse number * 10000/p0-16.
23
24 17-bit encoder cumulative position = plc sent pulses * 131072/p0-16
25
26 23-bit encoder cumulative position = plc sent pulses *8388608/p0-16
27
28 Through the above determination method, we can basically know what the servo problem situation is.
29
30 === **3.1.3 Solution** ===
31
32 (1) The first case
33
34 If the servo receives too many pulses, it means that the servo drive has received the interference signal as a pulse signal. At this time, we need to adjust the position pulse filter on the servo side to filter out the interference signal. The corresponding parameter is p0-14.
35
36 (% style="text-align:center" %)
37 [[image:1637230495968-367.png]]
38
39 Figure 3- 2
40
41 The value of P0-14 cannot be adjusted to the maximum blindly, because if the filtering time is too long, it may filter out normal PLC pulses. So it should be set according to the on-site process requirements. For example, the field technology requires the maximum pulse frequency of the PLC to be 100kHZ, then we can calculate the pulse period sent out under the condition of 100k.The pulse period is about 1/100k=10us, the theoretical pulse width is 10us/2=5us, and the actual situation is a little smaller than 5us. Therefore, in view of this situation, it is clear that p0-14 cannot be set to more than 6.
42
43 Theoretically, the problem can be solved by the setting of p0-14. If it does not work, it means that the electromagnetic environment on site is indeed very poor. At this time, you should find the interference source first. There are two common situations:
44
45 1) The equipment is not connected to the ground. Ensure that the servo drive-motor-[[machine>>url:http://docs.we-con.com.cn/wiki/servo/view/2.%20User%20Manual/04%20Servo%20Guide/#/javascript:;]] [[casing>>url:http://docs.we-con.com.cn/wiki/servo/view/2.%20User%20Manual/04%20Servo%20Guide/#/javascript:;]]-ground is effectively connected.
46
47 2) Interference comes from the power supply. Generally, the DC24v common terminal of the servo drive control line is often directly connected from the power supply. However, the power supply may also provide high-power solenoid valves, contactors, and frequency conversions in addition to the servo. The moment when these devices are turned on/off, it is easy to make the DC24v drop or rise instantly, which will affect the servo end. Therefore, it is recommended that the DC24v common end of the servo control line is directly powered by the output DC24v of the plc(independent power supply), and it is isolated from other devices.
48
49 (2) The second case
50
51 That is, there are fewer pulses received by the servo, so there are two common reasons for this situation:
52
53 1) Pulse direction signal interference during servo operation, that is to say, when that the current servo is in forward rotation, and suddenly the servo pulse direction signal pin comes to a low level to inform the servo to reverse. Due to the stuck pulse inside the servo, At this time, the servo will not reverse, but will only cancel the pulse, so the final result is that the servo does not run,looks like servo do not receive full pulse.
54
55 The solution for this situation is very simple. Remove the servo pulse direction signal and run for a while to see if it is normal. If possible, it is easy to see with an oscilloscope. If this is the case, the solution is to isolate the 24v public end.
56
57 2) The servo control line is longer than 10 meters, and the impedance is too large, which leads to signal attenuation. The original normal pulse waveform is distorted and then filtered out by the servo driver, and the final result is that the servo runs less. The solution is, you can try to connect a resistance of about 1000 ohms (1 watt) in parallel between the PL and plus- of the servo drive. As shown in the figure:
58
59 (% style="text-align:center" %)
60 [[image:1637232217856-278.png]]
61
62 Figure 3- 3
63
64 == **3.2 Servo motor vibrates and screams** ==
65
66 === **3.2.1 Problem analysis** ===
67
68 It is often encountered that the servo will vibrate at a high frequency when it is in enable state, and in severe cases, it will be accompanied by screams. The root of the problem is mostly servo parameters. High-frequency vibration is caused by the resonance of the motor and the equipment. We need to avoid the resonance frequency range. A small part of the situation is a mechanical structure problem.
69
70 In the application environment of multiple servos, first of all, we have to determine which servo is re-vibrating. The scene environment is noisy, and the vibration can be transmitted through metal. It is easy to confuse us.
71
72 For example, we has a painful experience, a three-axis application environment. At that time, the FAE engineer at the site always thought that the z-axis was re-vibrating, but the monitoring waveform was not there. Later, it was discovered that the x-axis was re-vibrating, which was transmitted to the z-axis, which wasted a lot of time.
73
74 === **3.2.2 Positioning problem** ===
75
76 (1) First Method
77
78 Open the servo PC software and monitor the servo waveform, as shown in Figure 3-4 is a normal situation, and Figure 3-5 is a typical vibration situation.
79
80 (% style="text-align:center" %)
81 [[image:1637232816623-186.png]]
82
83 Figure 3-4
84
85 (% style="text-align:center" %)
86 [[image:1637232858670-790.png]]
87
88 Figure 3-5
89
90 (2) Second Method
91
92 Turn off the servo enable signal and the motor is still vibrating to confirm that the vibration source is not the motor. If the motor does not vibrate, it can be determined that the vibrating source is the motor.
93
94 === **3.2.3 Solve vibrating problem** ===
95
96 Solution after locking the vibrating source:
97
98 (1) Open the PC monitor software to monitor the vibration frequency, whether it corresponds to the value of P4-5 first notch filter frequency.
99
100 For example, if the vibration frequency is occasionally 300 and occasionally 500, you can set P4-5 to 400, and then increase the value of the first notch filter width of P4-7.
101
102 (2) After adjusting the frequency of the first notch filter, adjust the P4-4 torque filter time constant. If the value is adjusted to a lower value, the vibration decreases, and then continue to adjust lower with small value. If it is not ideal, you can decrease the value P4-6:1st notch depth (decreasing the value will affect the response speed of the servo).
103
104 If the above methods are not ideal, consider reducing the rigidity level, and the adjusted waveform will look like this as shown in Figure 3-6.
105
106 (% style="text-align:center" %)
107 [[image:1637232958831-524.png]]
108
109 Figure 3-6
110
111 == **3.3 For vibration caused by a small probability of mechanical structure** ==
112
113 In the case of screw drive, it mainly depends on whether the motor shaft and the connector are parallel, whether there is left and right shaking, and whether the screws of the connector are locked well.
114
115 (% style="text-align:center" %)
116 [[image:1637233020678-863.png]]
117
118 Figure 3-7
119
120 The same is true for belt drive, which mainly depends on whether the belt is tilted left and right, and whether the synchronization wheel screw is locked well.
121
122 (% style="text-align:center" %)
123 [[image:1637233082354-748.png]]
124
125 Figure 3-8
126
127 == **3.4 Too slow servo response affects overall output** ==
128
129 In some simple reciprocating positioning and feeding occasions, such as high-speed one-to-one mask machine, terminal machine, feeder, etc., servo positioning is required to respond quickly to achieve higher output of the equipment as a whole. At this time, the servo also needs to adjust the gain with plc.
130
131 === **3.4.1 Problem analysis** ===
132
133 Figure 3-9 is a typical graph before optimization. After the servo finish debugging(auto-tuning), without parameter adjustment, the whole positioning time is almost 225ms, and the plc is 50ms acceleration and deceleration time, so it runs softly.
134
135 (% style="text-align:center" %)
136 [[image:1637233571911-749.png]]
137
138 Figure 3-9
139
140 === **3.4.2 Solution** ===
141
142 (1) Optimize the acceleration and deceleration time of PLC
143
144 Optimize the acceleration and deceleration time of the PLC first. The acceleration time can be set as small as 10ms or less. The deceleration time can be longer but generally can be done within 50ms. If the load is small, the acceleration time can be consistent with the acceleration time, unless the load inertia ratio is very big, then adjust accordingly.
145
146 (% style="text-align:center" %)
147 [[image:1637233500046-492.png]]
148
149 Figure 3- 10
150
151 As shown in the figure: we directly press the acceleration and deceleration of the plc below 5ms, and the overall positioning time is shortened to about 155ms, but it can be seen that the servo lag in the second half of the deceleration is serious and there is a lag of about 75ms, so we have to start adjusting the servo parameters.
152
153 (2) The rigidity level directly adopts self-tuning
154
155 The rigidity level can be directly used as the recommended level from self-tuning, without any changes. Change [P3-3] to 1(manual setting). Then, manually adjust [P2-1]:position loop gain, and gradually increase the position loop gain.
156
157 (% style="text-align:center" %)
158 [[image:1637233668907-566.png]]
159
160 Figure 3- 11
161
162 As shown in the figure above, the position loop gain is 450, the overall positioning time is shortened to 120ms, the second half of the deceleration lag is also shortened to 40ms, there is no overshoot and no vibration, and the gain still can be adjusted up.
163
164 (3) Comparison chart
165
166 Finally, take a look at the final comparison chart. This is that after the position loop gain is set to 550, the overall positioning time is shortened to 107 ms, which is twice as short as the initial 225 ms.
167
168 (% style="text-align:center" %)
169 [[image:1637233729256-783.png]]
170
171 (% style="text-align:center" %)
172 [[image:1637233751441-245.png]]
173
174 Figure 3- 12
175
176 === **3.4.3 Summary** ===
177
178 The cognition of rigidity level: the rigidity level parameter itself has no meaning for the internal algorithm of the servo. It acts more as a "shortcut key", and the position loop gain, speed loop gain, speed loop integral time constant, and torque filter parameters these four parameters can be quickly set by the choice of rigidity level only. And the values of these four parameters at each rigidity level are the best ratios obtained by our research and development according to the theoretical algorithm, just like the formula, of course, it is only limited to the theory, so there is also the parameter p3-3. When we find that directly changing the rigidity level cannot achieve the effect we want, we need to change p3-3 to manual setting, and fine-tune a certain parameter by observing the curve, such as the position loop gain.
179
180 == **3.5 Application occasions of large inertia pulleys-Servo stop instability** ==
181
182 === **3.5.1 Problem analysis** ===
183
184 In the application of large inertia pulley, the servo stops unstable.
185
186 === **3.5.2 Solution** ===
187
188 (1) Servo tuning
189
190 Step 1: Preparation
191
192 P4-4 Torque filtering time constant: try to set the minimum value to 10 first (no filtering);
193
194 P2-3 Speed loop integral time, set 5000 first; (when 5000, the influence of this parameter is small)
195
196 The second step: gradually adjust P2-2 speed loop gain; the larger the value, the faster the response;
197
198 The third step: gradually adjust P2-3 speed loop integral time constant; the smaller the value, the faster the response;
199
200 Finally: adjust P2-1 position loop gain, the larger the value, the faster the response;
201
202 (2) Parameters and curves before commissioning
203
204 (% style="text-align:center" %)
205 [[image:1637233948792-253.png]]
206
207 Figure 3- 13
208
209 (% style="text-align:center" %)
210 [[image:1637234076675-117.png]]
211
212 Figure 3- 14
213
214 It can be seen from the above figure that there will be a short period of uniform speed at the end of the curve and then decelerate to stop, so that there will be an obvious slow-speed and then stop action on the motor.
215
216 Such as video action
217
218 {{velocity output="false"}}
219 #set ($docextras = [])
220
221 #set ($videoCards = [
222 {
223 'url': 'https://wecon-disk.oss-ap-southeast-1.aliyuncs.com/Download/WIKI/Servo/Video/servo%20guide/3.5.2.2%E8%B0%83%E5%89%8D%E5%8A%A8%E4%BD%9C.mp4'
224 }
225
226
227 ])
228
229 #macro (helpVideoCard $data)
230 <div class="videoCard">
231 <iframe src="$data.url" allowfullscreen title="$escapetool.xml($data.title)" role="presentation" ></iframe>
232 <div class="videoCard-body">
233 <div class="videoCard-title">
234
235 </div>
236 <ul>
237 #foreach ($topic in $data.topics)
238 <li>$topic</li>
239 #end
240 </ul>
241 </div>
242 <div class="videoCard-footer">
243
244 <span class="videoCard-duration">
245
246 </span>
247 </div>
248 </div>
249 #end
250 {{/velocity}}
251
252 {{velocity}}
253 {{html clean="false"}}
254 <div class="row">
255 #foreach ($card in $videoCards)
256 ## See http://getbootstrap.com/css/#grid-responsive-resets .
257 #if ($foreach.index > 0 && $foreach.index % 2 == 0)
258 <div class="clearfix visible-sm-block "></div>
259 #end
260 #if ($foreach.index > 0 && $foreach.index % 3 == 0)
261 <div class="clearfix visible-md-block visible-lg-block"></div>
262 #end
263 <div class="col-xs-12 col-sm-6 col-md-4">
264 #helpVideoCard($card)
265 </div>
266 #end
267 </div>
268 {{/html}}
269
270
271 {{/velocity}}
272
273 (3) Adjust P2-2 parameters
274
275 When adjusting the parameters, first increase or decrease the parameters, try several times to see the effect of different curves and motors, summarize the rules, and see if the effect of adjusting the parameters is better or if the parameters are adjusted smaller. After determining the direction, adjust back to the original parameter, and then gradually increase or decrease the parameter until the parameter with the best effect is recalled.
276
277 (% style="text-align:center" %)
278 [[image:1637234424429-924.png]]
279
280 Figure 3- 15
281
282 (% style="text-align:center" %)
283 [[image:1637234473817-237.png]]
284
285 Figure 3- 16
286
287 From the above figure, it can be seen that the smoothness of the curve at the end section reduces the slow uniform speed, but the fluctuation at the end section is still a bit large. At this time, you need to adjust the P2-3 parameter again.
288
289 (4) Adjust P2-3 parameters
290
291 After adjusting the P2-2 parameters. You can adjust the P2-3 parameter according to the speed loop integral time constant; the smaller the value, the faster the response.
292
293 (% style="text-align:center" %)
294 [[image:1637234558361-388.png]]
295
296 Figure 3- 17
297
298 (% style="text-align:center" %)
299 [[image:1637234602299-138.png]]
300
301 Figure 3- 18
302
303 After adjusting the two parameters of P2-2 and P2-3, you can see that the curve has been significantly improved. In addition, depending on the actual action, finally increase the p2-1 position loop gain so that the motor can stop more quickly, but If the adjustment is too large, it is easy to overshoot.
304
305 == **3.6 Servo can not stop and rotate back some position** ==
306
307 {{velocity output="false"}}
308 #set ($docextras = [])
309
310 #set ($videoCards = [
311 {
312 'url': 'https://wecon-disk.oss-ap-southeast-1.aliyuncs.com/Download/WIKI/Servo/Video/servo%20guide/3.6%20motor%20can%20not%20stop%20immediately.mp4'
313 }
314
315
316 ])
317
318 #macro (helpVideoCard $data)
319 <div class="videoCard">
320 <iframe src="$data.url" allowfullscreen title="$escapetool.xml($data.title)" role="presentation" ></iframe>
321 <div class="videoCard-body">
322 <div class="videoCard-title">
323
324 </div>
325 <ul>
326 #foreach ($topic in $data.topics)
327 <li>$topic</li>
328 #end
329 </ul>
330 </div>
331 <div class="videoCard-footer">
332
333 <span class="videoCard-duration">
334
335 </span>
336 </div>
337 </div>
338 #end
339 {{/velocity}}
340
341 {{velocity}}
342 {{html clean="false"}}
343 <div class="row">
344 #foreach ($card in $videoCards)
345 ## See http://getbootstrap.com/css/#grid-responsive-resets .
346 #if ($foreach.index > 0 && $foreach.index % 2 == 0)
347 <div class="clearfix visible-sm-block "></div>
348 #end
349 #if ($foreach.index > 0 && $foreach.index % 3 == 0)
350 <div class="clearfix visible-md-block visible-lg-block"></div>
351 #end
352 <div class="col-xs-12 col-sm-6 col-md-4">
353 #helpVideoCard($card)
354 </div>
355 #end
356 </div>
357 {{/html}}
358
359
360 {{/velocity}}
361
362 === **3.6.1 Problem analysis** ===
363
364 This servo uses position mode.Because the tension of  belt moves the motor backwards,and the motor runs out of the correct position.So servo drive will control motor rotate back.
365
366 === **3.6.2 Solution** ===
367
368 (1) try to add the P2-1 for example P2-1=40.0 .User can set to 80.0
369
370 (2)If P2-1 still can not solve problem.User can try to add P3-2 For example,P3-2=14.User can set to 16,18 ...But please make sure motor do not have noise
371
372 (3)If user want to save the P2-1 and P3-2 parameter after restart servo.Please set P3-3=1
373
374 == **3.7 WECON PLC DVIT to control the Servo stop** ==
375
376 {{velocity output="false"}}
377 #set ($docextras = [])
378
379 #set ($videoCards = [
380 {
381 'url': 'https://global-123-1253699689.cos.na-siliconvalley.myqcloud.com/Download/WIKI/Servo/Video/servo%20guide/3.7%20MICON%20DVIT.mp4'
382 }
383
384
385 ])
386
387 #macro (helpVideoCard $data)
388 <div class="videoCard">
389 <iframe src="$data.url" allowfullscreen title="$escapetool.xml($data.title)" role="presentation" ></iframe>
390 <div class="videoCard-body">
391 <div class="videoCard-title">
392
393 </div>
394 <ul>
395 #foreach ($topic in $data.topics)
396 <li>$topic</li>
397 #end
398 </ul>
399 </div>
400 <div class="videoCard-footer">
401
402 <span class="videoCard-duration">
403
404 </span>
405 </div>
406 </div>
407 #end
408 {{/velocity}}
409
410 {{velocity}}
411 {{html clean="false"}}
412 <div class="row">
413 #foreach ($card in $videoCards)
414 ## See http://getbootstrap.com/css/#grid-responsive-resets .
415 #if ($foreach.index > 0 && $foreach.index % 2 == 0)
416 <div class="clearfix visible-sm-block "></div>
417 #end
418 #if ($foreach.index > 0 && $foreach.index % 3 == 0)
419 <div class="clearfix visible-md-block visible-lg-block"></div>
420 #end
421 <div class="col-xs-12 col-sm-6 col-md-4">
422 #helpVideoCard($card)
423 </div>
424 #end
425 </div>
426 {{/html}}
427
428
429 {{/velocity}}
430
431 === **3.7.1 Problem analysis** ===
432
433 This servo uses position mode.WECON PLC will control servo stop with DVIT.The sersor will check the stop signal,then PLC will receive sensor signal and stop with a setting pulse number.But in different speed,the stop position is different.
434
435 The most possible reason is the servo position control can not follow by PLC in time.
436
437 === **3.7.2 Solution** ===
438
439 After taking many trials, found that Using VD2 and changing the position loop gain, I got a result in position at different speed. I suggest client to check with his existing machine. Below parameter i changed and i got good result in position.
440
441 P2-01 = 310.0
442
443 P2-02 = 20.0