Delta Tau Forums

Full Version: BiSS C mode encoder changing between Absolute and Relative on reset.
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
We are using a Renishaw Resolute BiSS-C 26 bit encoder to determine the absolute rotational angle of a telescope aperture wheel.

The following issue has become the last bug in our system.

Upon boot or a reset, the encoder may correctly relay the absolute position, or may show the relative position from where it was at the time of the boot or reset.

This inconsistent behavior is strange given that it is occurring on a reset, when the starting conditions should be identical.

The relevant register values are as follows:

For the 25MHz read speed of the encoder
Acc84B[0].SerialEncCtrl=$03000B

For the format of the 26 Bit BiSS C signal
Acc84B[0].Chan[3].SerialEncCmd=$21149A

The EncTable values
EncTable[4].pEnc=Acc84B[0].Chan[3].SerialEncDataA.a
EncTable[4].pEnc1=Acc84B[0].Chan[3].SerialEncDataB.a
EncTable[4].type=2
EncTable[4].index<n>=0

The Motor values
Motor[4].AbsPosFormat=$1a00
Motor[4].pAbsPos=EncTable[4].PrevEnc.a
Motor[4].pAbsPos<2-4>=0
Motor[4].pEnc=EncTable[4].a
Motor[4].pPhaseEnc=Acc84B[0].Chan[3].SerialEncDataA.a

At this point, I've run out ideas for where to find the cause of this behavior. I'm hoping someone here will be able to help.

_
Austin Kootz
(11-16-2018, 04:53 PM)pilotchute Wrote: [ -> ]We are using a Renishaw Resolute BiSS-C 26 bit encoder to determine the absolute rotational angle of a telescope aperture wheel.

The following issue has become the last bug in our system.

Upon boot or a reset, the encoder may correctly relay the absolute position, or may show the relative position from where it was at the time of the boot or reset...

My first guess would be that the absolute position read on power-cycle/reset is occurring before the encoder registers within the ACC84x have been 'filled' by a completed read from the encoder.

<edit - I'm more familiar with the Turbo than Power architecture, so take the above with a grain of salt.>

The 'absolute home' position transferred into the motor[4].<structure> might == 0 in that case. Moves from that point would be the relative moves you're observing.

I expect that waiting a few cycles after startup to perform the absolute home read would fix this. Also, try checking the error bits up in the upper byte before allowing an absolute home; I'd think that the bits that should be '1' would also be zero in your startup condition.

(BTW, we're in a similar position in handling encoder errors or loss, albeit dual Renishaw BiSS-C encoders over MACRO, so we'll need to push the error bits over MACRO I/O, after initializing and handling ring errors, etc.)
Is your encoder's clock speed really 25MHz? The fastest Renishaw I have personally used only ran at 5MHz and their protocol datasheet only mentions 10MHz.

I would try running at 5MHz and see if it behaves any better, even if your encoder can run faster. Once you know it works you can try speeding it up.
(11-19-2018, 09:45 AM)Tony Wrote: [ -> ]Is your encoder's clock speed really 25MHz? The fastest Renishaw I have personally used only ran at 5MHz and their protocol datasheet only mentions 10MHz.

I would try running at 5MHz and see if it behaves any better, even if your encoder can run faster. Once you know it works you can try speeding it up.

I may have misread the spec. However I did try many encoder clock speeds while trying to debug this. (including the default $63000b, for 1.0MHz)

I'll set it to 1MHz for now, and see if that at least improves the behavior.