10-09-2009 09:40 AM
Hello all,
Have a interesting problem which may or may not have an easy solution. I am using a 7342 motion controller with UMI 7764 interface to connect to a Compax3 drive which is driving a Parker linear motor. Feedback goes to the drive only and not the 7342. I have a protocol converter to add complementary output (which the drive expects) to step/direction signal. It all works perfectly.
So, the problem is we need to generate a sine wave at 12 Hz (back and forth on the linear motor a very small distance). Using the buffered contoured move examples we are limited by 10 ms update. This works out to be 8.3 points or so per full cycle - not very good. I understand the countoured move is smoothed, but just not sure if this will really do the job.
Is there a better way to output sine wave profile to stepper from LabVIEW?
Many thanks in advance.
Kevin
10-12-2009 02:42 AM - edited 10-12-2009 02:43 AM
Hi Kevin,
the 7342 runs a cubic spline interpolation between the setpoints generated by the trajectory generator at the at the rate of the PID control loop. With a loop rate of 250 µs this effectively means more than 300 setpoints updates per period.
While this doesn't sound too bad, tit probably doesn't leave much performance headroom and depending on your accurracy requirements, it might be already quite hard to reach your specs.
If you are looking for a solution with much more headroom, you should consider an FPGA based R-Series board in combination with the NI-SoftMotion module. There are several threads discussing similar topics:
how to increase the frequency when i use master analog input -slave axis gearing?
can I implement a different controller apart from PID?
Stop motion function in open-loop
Please refer to these threads. I hope this helps,
Jochen
10-12-2009 08:17 AM
Jochen,
Thank you for your reply. I (we) are new to motion control so forgive us. 300 points per period (1/12 or 83 ms)? This would be more than sufficient. We are not using the card for feedback, so not sure how PID (and the 10 ms minimum interval) all fits into the picture.
Are we just going about this the wrong way with contoured move, or do we really need some better hardware.
Basically just looking to have the card put out pulse train, parameters (velocity, etc) can come from an array as far as I'm concerned.
Many thanks again!
Kevin
10-12-2009 09:49 AM
Hi Kevin,
for servo systems the PID loop rate is obviously the rate of the control loop, but in general the PID loop rate is the board's heart beat, that times multiple processes, so it's also relevant for stepper systems. Still contouring (and all other trajectory generation methods) uses the 10 ms interval and the onboard spline algorithm helps to get a smoother result. The drawback here is, that splining doesn't guarantee that the axes move exactly through the contouring points. It depends on your application if the inaccurracy introduced by splining is acceptable or not.
To prevent the question: No, I can't tell you how big the position error will be, as this depends on many factors like velocity, travel distance and so on and it is very hard to predict.
So my only advice is to give it a try. Your specs definitely are close to the board's performance limits, so it might or might not work.
But there is another issue that makes me feel a bit sceptical. 12 Hz are quite high dynamics for a stepper system, so I feel a bit uncertain, if the motor and the mechanics allow such rates. But there are again many relevant factors like the motor/load inertia ratio, motor torque, friction, stiffness of the mechanical system, velocity, travel distance - just to name the most important ones. All of these factors need to be considered carefully when designing such a dynamical system and the motion controller is only one of them.
So again, my pragmatic advice is to give it a try. If it works fine for you with a 7342 controller you are done very quickly. If it doesn't work, you will have to investigate thoroughly, if it's a mechanical problem or a performance issue of the 7342, but this should be feasible and I can try to help you with that. If it turns out, that you need a more powerful motion controller there are alternative options available and we can discuss them in more detail if required.
Kind regards,
Jochen
10-12-2009 10:21 AM
Jochen,
Mechanically I believe we are ok, or have been led to believe we are by the vendor. Won't find out till we can give it the right step/direction output from NI card I guess.
Ultimately the question I have is why do we need to use a contoured move at all? It is a simple move, repeated over and over. Can we use a straight line move and either command many small moves to approximate a sine wave (is there a lag from move to move), or perhaps change parameters while the move is occuring (s curve followed by negative s curve - looped). Perhaps an arc move. Does the PID 10ms rate still come to play.
Just not sure why we cant output simple step/direction sine wave (open loop) without getting into PID rate and complicated smooting/spline tecniques.
Thank you for your help, it is greatly appreciated 🙂
Kevin
10-13-2009 02:47 AM
Hi Kevin,
your moves are not straight moves with trapezoidal velocity profiles. Additionally you need a continuous move profile, but if you need to wait until a move is complete and start the next move then, a non-deterministic delay will occurr between the moves, as the communication between the host and the board takes some time. To get a round that issue you could use blending, but 12 Hz is too fast for blending, too. So as you need sinusoidal velocity profiles, there are two options:
In general generating smooth step/direction signals is not as trivial as you might think. One of the main issues is the discrete quantization of the timebase for the pulse train. Simply using a timebase with integer dividers for generating the step pulse train results in quite rough velocity profiles, that don't reflect accurately your intended velocity profile.
The NI motion control boards use a patented method for step generation (time-borrowing method). I must admit, that I haven't understood completely how this works (I'm not in R&D), but I have seen the difference of boards using this advanced method, compared to boards using simple timebase dividers - and the difference is huge.
Jochen
10-13-2009 07:06 AM
10-13-2009 08:01 AM
Jochen,
Thanks for the info, I gotcha.
The drive is a S025V2F12I10T10M00
Motor is a B3DB0286NSLMC3 (I-force positioner)
Kevin
10-13-2009 12:00 PM
Your move could be done without the controller. If you set the distance, speed,accel, decel, and jerk for an absolute move, you would get your sine wave. If you give me your distance, I can figure out the other settings for 12Hz.
10-13-2009 12:14 PM
+/- 2.5 mm (from center point) @ 12 Hz
I would be interested to run it from ServoManager to see if it works. I have some other profiles I need to run. This one is the kicker, everthing else is easy.