Dynamic Retargeting for gearing with limits

The RMC has a number of gearing commands that work very well in many situations. However, there are some situations where something else is needed. For example, if you need to gear with limits on the position, velocity or acceleration, the Track Position command can work, but it is sometimes finicky. Or, if you need to gear to a velocity and limit the acceleration, such as in a joystick application.

In all these cases, and many more, Dynamic Retargeting can save the day. It is also known as “poor man’s gearing”. This involves making a single-step user program that continuously sends a motion command to the axis, commanding the axis to always go to the position of something else.

In order for this to work, it is very important that the velocity profile be set to trapezoidal, rather than the default s-curves. Otherwise, the Target Acceleration will be reset to zero each time the command is sent, which will cause the Target Position to misbehave. To set the profile to trapezoidal:

  • RMC200:
    In the Axis Tools > Axis Parameters > All tab > Target section, set the Target Type to Trapezoidal.
  • RMC75/150:
    In the Axis Tools > Axis Parameters > All tab > Target section, set the Requested Jerk to zero.

For example, here is a user program that continuously commands axis 0 to go to the position of axis 1:

Remember, the Requested Jerk axis parameter must be set to zero.

This method can be used for any axis, such as velocity, pressure, force. Additional calculations can be done in the user program step, such as applying limits to the master value.

1 Like

I prefer one of the two tracking commands.
Tracking (57 )
Tracking (I-pd) (58)
The Tracking I-PD is the easiest command to use because instead of having to issue a new command position all the time a registers that contains the command position is specified. The RMC will continuously read the specified registers without having to issue the tracking I-PD command again. You issue the command once and then forget. Tracking I-PD command will try to get to the command position at all times but there will always be some lag depending on how high the gains are. Like the “Dynamic Re-targetting” the Tracking I-PD is always trying to move closer to the command position.

The Tracking(57) command is the most sophisticated way of tracking a target. There is special code that anticipates where the the command position will be by looking at the rate of change of the command position. The tracking command then generates a position, velocity and acceleration along with the necessary feed forwards so the actual position will track the command position almost perfectly, without the lag of the “Dynamic Re-targetting” or Tracking I-PD, unless the command position changes directions or speed very quickly. The Tracking command will not always move directly at the command position. Sometimes it will back up like a defensive back doing pass protection in football. The goal is to merge with the command position smoothly.

Notice that there is no need for a link type that repeats the command

1 Like

Hello Mr. Peter and Mr. Jacop,

As you know we are manufacturing test machines, static, qua-static and dynamic(fatigue) and i managed to design system doing dynamic tests of samples from biomedical to asphalt , concrete to metal . However now i am facing with an application that is beyond them since the waveform is custom defined.

It is not certain but there is a big possibility that we are going to built up Turkey’s most functional and capable earthquake shaking table. I will do both electronics and software of the system also will help other designs (hydraulic and mechanical). I plan to do this system’s control with my reliable friend RMC 75. But i would like to know your opinions.

The professor who will handle the tests in University says that especially the acceleration profiles should be same for every test since he will be able to observe the changes and effects of each design. I rode lots of documents and papers , and see that in the end , he has to give me a displacement profile according to damping ratio that he will define. However i need to not only track this value but also track velocity targets correct.
I though it is best for me to write down a target generator with best choice time intervals. Then use track position command and follow the master register that i create. What do you recommend?
One of the challenging part is control loop time. At some regions i need to make 10 Hz even more velocity changes. Do you think i will have enough time ?
Another problem which is at equal difficulty is that , i need to apply this to 2 axis maybe with different profile synchronized. Running maybe 4 or more tasks will restrict my loop time ? Maybe i need to use 2 separate RMCs? (For simple fast communication i can use one digital output)


Murat Meral

mmeral, the tracking command would work OK but it would have a tendency to filter some of your data.
Also, it looks like your data is specified as acceleration or gs as a function of time. To use the tracking command the acceleration would need to be integrated to get velocity and position because the tracking command only uses the position it wants to track. Internally the tracking command generates the velocity and acceleration from the position but you already have that data.

I would use the Advanced Time Move Absolute where you specify the position, velocity and acceleration and time period. You would have all that data if you integrated the acceleration.
Integrating the acceleration can easily be done in a user program just before calling the advanced time move. I can show you how to do that if necessary.

Synchronizing 2 or more axes is not a problem.


Like Peter, I think this application is very doable. I don’t think there is any issue with the RMC processing keeping up. 10 Hz isn’t a problem (for the RMC anyhow). There are many ways of doing this application. If you create your own master in a variable, and update it at some time interval, then you can follow it with the Track Position or Dynamic Retargeting or use the Advanced Time Move as Peter suggested. If you update the variable every loop time, then you can follow it with the Gear Absolute. Or, you could make a curve and just run it on the axis. If this were my project, I would be inclined to try curves. If you make the position points close to each other, you can get a very accurate velocity profile. The RMC can store more than 200,000 points in RAM. You can write curve data to the RMC from another controller, even from Microsoft Excel.

1 Like

Curve would work but the accelerations still need to be integrated into positions.
integrating accelerations is so easy

pos:=pos+vel\cdot \Delta t+0.5\cdot acc\cdot { \Delta t }^{ 2 }\\vel:=vel+acc\cdot \Delta t

The above would be needed to be done for each point in the curve to calculate positions.