nzfm4r123 Posted May 10, 2014 Posted May 10, 2014 Hello all, A vertical jog sequence doesn't occur consistently, and machine cycle time suffers as a result. I am sure to most on this forum, this will entail basic motor moves 101. I hope you can help me navigate this technical abyss, and set me along the right path to resolution. I know I won't provide enough background information and variable definition, so please feel free to ask for whatever information is needed. I have a GeoBrick, GBL6-CO-5F2-10S, that controls a 5-axes friction stir welder. One axis, Z, drives a ballscrew with a Parker Hannifin MPP0922C1E-NPSN motor that has a 2000-line incremental encoder. The Z-axis (motor 2) has one input--home switch. After welding, the Z-axis should jog in the following manner, as defined by PLC18: move #1. PLC18 jogs in the + direction (typically less than 5mm) until axis reaches value specified in M272 = -102mm. Jog at I222 = 10mm/sec. The typical height range at end of weld is -106 to -105mm. move #2. Once motor reaches M272 = -102mm, PLC 18 executes again and jogs in the + direction until axis reaches value specified by M272 = -50mm. PLC jogs at I222 = 200mm/sec. I don't know if the motor stops or blends between move #1 and #2. This is what happens sporadically: move #1. Welder finishes, and Z-axis starts to jog in the + direction at 10mm/sec. move #2. Z-axis reaches the -102mm height (ascertained by direct observation--I don't have not caught this instance yet in PEWin32Pro2 position monitor), but instead of speeding up from 10mm/sec to 200mm/sec, it continues jogging upward at 10mm/sec. Z-axis jogs at 10mm/sec until it reaches the home switch = 0mm, at which point the z-axis speeds up to 200mm/sec, and jogs in the negative direction down to -50mm. I am wondering if the controller gets stuck in a WHILE(M233=0) END WHILE loop? Here is the PLC18 code: OPEN PLC 18 CLEAR I222=M3991*2.6 IF(P1=1) P1=0 P2=0 IF((M200+200) OR((M200-200)>M272) COMMAND"#2j=*" WHILE(M233=1) END WHILE P2=0 P1000=10 WHILE(P1000>0) P1000=P1000-1 END WHILE WHILE(M233=0) END WHILE END IF P2=1 END IF CLOSE Thanks for your help!
Richard Naddaf Posted May 12, 2014 Posted May 12, 2014 Try adding a timer delay right after issuing the jog command. This allows some time while the motor accelerates before the corresponding motor status bits are set. It is not a good practice to use an undeterministic time delay with P-variables, such as you are doing with P1000. Also, for basic jog moves, it is usually recommended to use both the desired velocity zero (M233) and in-position (M240) bits. Timer delay example: CMD"#2J = *" I5111 = 100 * 8388608 / I10 While (I5111 > 0) EndW ; 100 msec delay timer using coordinate system 1 countdown timer Make use of the coordinate system countdown timers (Isx11, and Isx12) in all your logic PLCs. Do not use the same timer in more than one active PLC, thic creates a conflict.
nzfm4r123 Posted May 12, 2014 Author Posted May 12, 2014 Thanks for the detailed reply Richard. I will begin working on your suggestions. I will also look into receiving some formal training.
Recommended Posts