Jump to content
OMRON Forums

re-iterated open loop technique


Recommended Posts

Hello, good morning.

I'm facing a problem in controlling a device using a deltatau controller (Faraday Powerbrick LV IMS).

The motor is a Nanotec L4118S1404-M6x1 two phase stepper

The encoder is an absolute Renishaw 32 bits linear encoder

the device is an uncooled in-flange slit ASM0239 by FMB-Oxford (find drawing attached)


As seen on the attached image, for one axis of the device, when I try to make a negative movement, we find some recurring noise on the position error signal( which can also be heard). At the end of the movement, the position error oscillates by +-50 counts, which corresponds to 2,5 micrometers. This happens only at certain positions on the axis course.


The solution I found for this was to lower the servo frequency, after which the oscillations had their amplitude lowered to +-5 counts. Then I applied a deadband with outdbon=3 and outdboff=5.


However, I'd like to pursue a better solution.

One thing we noted is that when we move the motor in open loop, we cannot find the same oscillation signal in the encoder position signal while the motor moves.

Because of that, we came up with the idea of implementing a "re-iterated open-loop control".

The idea is: Whenever a movement is requested for the axis, a cycle is activated. The cycle goes like this:

First, the motor is moved in open-loop, by a small quantity, towards the desired position. After the movement, the system checks the encoder position, and, if it is not close enough to the desired position, another open-loop movement is issued. This cycle repeats itself until the desired position is reached, within a pre-determined position band.

By doing this, the movement would not be prone to noise and oscillations as observed in closed-loop control, since it would be based now in open-loop control. We can adjust the open-loop increments in order to minimize time to target and prevent introducing new oscillations in the system when the motor is close to its desired position, due to the nature of the technique.

The question is: Is this doable in a deltatau controller? Is there a native solution to implement such a technique? How can I best approach this solution, in order to try it out?


Thank you very much for your attention.



Link to comment
Share on other sites

  • Replies 2
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

It looks like your fundamental problem is that you are trying to close your loop using a load encoder alone, which puts the compliance of the coupling between motor and load "inside the loop", leading to significant oscillations.


It is quite common for people in this case to operate the motor open loop and use the load encoder just for end-of-move confirmation, as you propose. The open-loop control technique with the LV is called "direct microstepping" and it is explained in the manual.


The end-of-move checking is done at the application level in user code, but it is not difficult. You command your move just as you would for true closed-loop control, add a short dwell to permit settling, then read the encoder value to compare it to what you ideally want, and issue a corrective move.

Link to comment
Share on other sites

  • 2 weeks later...
This topic is now closed to further replies.

  • Create New...