Add a dither to a curve

I have program that I run each axis from their own curves, I would like to add a simple sinusoidal dither effect to one of the axis.

The curves use a master virtual axis now to control their rate.

How can I add the dither to just one axis?

Thanks,

Chuck

Chuck,

I have some questions about specifics of the end result you are trying to achieve. Normally when people talk about dither they are referring to a sine or square wave superimposed on the Control Output to a servo-valve. In this case it sounds like you want to modify the target for an axis. Is this correct?

What characteristics are you trying to achieve with the superimposed sine wave? Constant or variable amplitude? Constant or variable frequency?

Do you need to superimpose the sine wave on the target all the time, only when the axis is following the curve, only during part of the curve or…?

Is the curve generated once and then used over and over? Do you dynamically calculate the curve each time you use it?

Does the sine wave need to be the same every time you run the curve or is it dynamically updated each time you run the curve?

Is the sine wave frequency dependent on the master virtual axis or is it based on time?

Any details about what you ultimately are trying to accomplish will probably be helpful.

The amount of flexibility you need in the curve and sine wave generation will dictate the complexity of the solution.

Regards,

David Shroyer
Delta Computer Systems, Inc.

YES

CONSTANT AMPLITUDE AND CONSTANT FREQUENCY

ONLY WHEN AXIS IS FOLLOWING THE CURVE

THE CURVE IS GENERATED ONCE VIA EXCEL SPREADSHEET, AND USED OVER AND OVER. WHEN A NEW CURVE IS DESIGNATED, THE SAME DITHER WILL BE APPLIED TO IT.

DYNAMICALLY UPDATE, The curve will have to be changed from time to time, but not the dither.

SINE WAVE SHOULD BE DEPENDENT ON MASTER ALSO.

This is a hydraulic system, so I need to keep an eye on the accumulative velocities of the dithered axis.

Thanks Again,

Chuck

Chuck,

Here are three options for adding the sine wave to the curve:

  1. Generate another curve in Excel that includes the sine motion added to your original curve. This is the most restrictive, but possibly the easiest.

  2. Generate a modified curve within the RMC. There are two options for this:
    a) Generate both the original curve and the sine wave all within the RMC.
    b) Start with the curve from Excel and then add the sine wave to create a new curve.
    This would probably be my first choice. The choice of a) or b) depends on how you currently have Excel set up to generate your original curve.

  3. Generate the target for the axis on the fly using Advanced Gear Moves. This is the most flexible, but the most difficult.

Example: Outline of method 2b.
Load the original curve into the RMC.
Based on your sine wave frequency, select a suitable interval for the points on the new curve. (Lets say the space between points should be 1/10 of the sine wave period.)
Using the Curve Interpolation function CRV_INTERP_Y find the value of the Position of the original curve at the selected interval.
Add to this the position sine wave using the SIN function.
Create a new curve using these new points.

Do any of these mechanisms look like they will work for you?

David Shroyer

The origin of the curves comes from CAD cross sections of a 3D model and are around 1k to 3k points, adding a hi freq dither to it would XXX the size for sure. My excel skills are lacking the chops too. :frowning:

I’m curious, Is the curve offset parameter dynamic?

Example: use the sine generator virtual axis target position register in the curve offset parameter.

While the curve runs, the curve offset keeps changing to the sine generator?

Thanks,
Chuck

Can you manipulate a curve like this? It certainly would be really cool! :stuck_out_tongue:

Chuck,

It may actually be possible to do that by adjusting curve offset. However, resending the command will actually restart the curve, not continue it. You can still make it work as you want by setting the options to have an absolute master. That way, thee curve will be restarted at your current master position. You will need to use the transition command as well.

As David Shroyer mentioned, another way is to generate the target yourself with the Advanced Time Move or Advanced Gear Move commands. This is quite complicated, but we have some examples. Peter here may try it just for grins.

Another way is to run your curve on a virtual axis, and run the sine wave on another cirtual axis. Then, have a user program that continuously adds the Target Positions of the two virtual axes together and puts the result in a variable. Your real axis will then gear to that variable. For the gearing, you can use a Gear Absolute, or you can use what we call Poor-man’s gearing, where you have a user program that send a Move Absolute command every few milliseconds (requires the Target Jerk axis parameter to be set to zero).
Or, you can use just one virtual axis, and have user program contiuously calculate a sine wave that it adds to it.

So, there are several ways here to do it. The virtual axes method would require the least amount of programming.