biscchr Posted August 23 Share Posted August 23 Hello, we are currently experiencing some unexpected behaviour when using Lookahead on PPMAC with very high blockrates. In fact, we are sending linear 3-axis moves to the rotary buffer with a spacing of 0.1mm due to customer requirements. We have tested this by moving one axis only on a straight line, like this sample G-code shows. This leads to a rate of 0.1mm/(200mm/s)=0.5ms. G90 F200.000 M5100==1 G1 X0.000 Y0.000 Z0.000 M5100==2 G1 X0.100 Y0.000 Z0.000 ... M5100==10000 G1 X999.900 Y0.000 Z0.000 M5100==10001 G1 X1000.000 Y0.000 Z0.000 All three motor settings are the same with vmax=300mm/s and amax=150mm/s^2. According the the PPMAC Usermanual the lookahead should be configured with a SegMoveTime of the blockrate or lower, so we chose 0.2ms to also be safe at fullspeed. TA is also set to 0.2ms and TS is zero. LHDistance is set to 4/3*vmax*1000/(amax*2*SegMoveTime)=6667 segments, the corresponding Buffer is 10240 Bytes. When executing the move, we are getting a lot of fullstops during movement with the LookAheadFlush bit being set. So we increased the spacing to 1mm and kept everything else the same. After increasing the spacing and executing the move, we are still getting (less) fullstops with LookAheadFlush bit being set. However, when setting LHDistance to 5000 everything works at 200mm/s, but then again, if a higher feedrate of 250mm/s is used, the fullstops come back. If we use a even lower LHDistance at 1mm spacing, e.g. 3000, we are not getting the required 200mm/s but about 170mm/s. At least the fullstops are gone. Higher LHDistance than the 5000, e.g. 10000 lead to fullstops. Btw, we are using PPMAC on ARM CK3M, Phase=16kHz, Servo=8kHz, RTI=2kHz. So we are starting to think that there are computational limits at high blockrates. However, I found an old post from Curt Wilson talking about 10000 move blocks per second, so this should be possible. But maybe not on ARM? https://forums.automation.omron.com/topic/5730-unexpected-stop/?do=findComment&comment=24653 Can you please give us a feedback if such computational limits are known? What would be the recommendes lookahead settings for this application? I would appreciate any help regarding this behaviour. Best, Christopher Quote Link to comment Share on other sites More sharing options...
MoMo Posted August 24 Share Posted August 24 A very important issue when using a rotation buffer is that motion stalls will occur if the program fails to be sent to the controller in time. I suggest you increase the program buffer of PPMAC and download all programs into the controller. Regards, Sangmo Quote Link to comment Share on other sites More sharing options...
biscchr Posted August 26 Author Share Posted August 26 Hello MoMo, this was already checked. The rotary buffer never runs empty. Quote Link to comment Share on other sites More sharing options...
MoMo Posted August 26 Share Posted August 26 If you use the lookahead function, especially if the lookahead length is relatively long, PPMAC will be executed in advance, so it cannot be judged by whether the buffer is empty. Quote Link to comment Share on other sites More sharing options...
biscchr Posted August 27 Author Share Posted August 27 Hello MoMo, thank you for your explanation. The behaviour is clear now and by increasing the rotary buffer accordingly, it works as intended. Your reply helped a lot, thank you. Quote Link to comment Share on other sites More sharing options...
MoMo Posted August 30 Share Posted August 30 If your program has line numbers, you can monitor the Coord[x].Ncalc variable to determine which line the controller has calculated so far. Once the controller finds that there is no subsequent program, it will perform a stop motion process here. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.