Jump to content
OMRON Forums

How to switch encoders without loss


Recommended Posts

Hi, I always appreciate your help.


I am considering the encoder switching.


For Example, There are two encoder head, two scale. (Please refer to the picture)


I tested changing Motor[x].penc, penc2 from Enctable[1].a to Enctable[2].a.


When doing this, the encoder signal is lost.


Is there any way to do this without encoder loss?


If it's not how you tested it, let me know.


If you give me an idea, I will develop and test it.


Even simple explanations are good.


Link to comment
Share on other sites

  • Replies 7
  • Created
  • Last Reply

Top Posters In This Topic

What type of encoder is this?


Are you saying Motor[x].EncLoss goes true as soon as you issue settings for Motor[x].pEnc and Motor[x].pEnc2?

If so I will need more information because I am not able to replicate the issue?


Are you saying Motor[x].EncLoss goes true when you unplug the first encoder after switching?

If so take a look at the setting for Motor[x].pEncLoss and change it with pEnc and pEnc2.


I am not able to view your attachment.

Link to comment
Share on other sites

It is an encoder for linear scale.


When changing the scale, change the parameters below.






To be precise, the expression that loss occurs is a mistake.


No encoder signal loss occurs.


Loss occurs in the Motor Unit (M.U) and Motor[x].PhasePos


If you have any ideas to correct this MU Loss, please tell me.


Thank you.


Link to comment
Share on other sites

If I undestood correctly, I have some ideas some ideas of what might be happening.


Is there an overlap between the scales?

If it exists, you can test change the parameters in this region.


I suppose the loss happens when the encoder head cannot read any signal, because it is out of scale, not in the changing.


You can also check this assumption reading the parameter Gate3.Chan[j].LossCapt (latched value) or Gate3.Chan[j].LossStatus (current status).


If I am right, you are probably configuring as below




In these cases i'm used to set


Gate3.Chan[j].Status = 0


to clear the failure


I hope this helps in some way

Link to comment
Share on other sites

Loss occurs in the Motor Unit (M.U) and Motor[x].PhasePos

From my testing it looks like Motor Position (like in the watch window) does not jump from these settings, but Motor[x].PhasePos does, which causes the motor to be uncontrollable.


Please confirm the first statement by changing Motor[x].pEnc/Motor[x].pEnc2 with the motor killed so the changes do not move the motor. The position should not change.


Phase position is a little more difficult. I would recommend killing the motor before setting Motor[x].pPhaseEnc and rephasing afterwards.


As long as the motor does not move during the process, it should technically be possible to set Motor[x].PhasePosSf=0 during the change and then immediately back to the original value after to prevent the jump. If the motor moves while PhasePos=0 it will need to be rephased before it can be put back into closed loop.


This all assumes both encoders are identical. If they're not, you may have to change some scale factors.

Link to comment
Share on other sites

I have seen systems using 1 readhead instead of 2. This allows continuous counting without any special setting using a single encoder conversion table.

But in your case, there are two read-heads which requires two encoder conversion tables. One idea is to add these in the encoder conversion table and use the result for both phase commutation and servo position.

Link to comment
Share on other sites

This topic is now closed to further replies.

  • Create New...