Fanuc ABS encoder data transmission not complete

More
22 Oct 2021 20:15 #223954 by PCW
is the request polarity correct?

Please Log in or Create an account to join the conversation.

More
22 Oct 2021 20:27 #223955 by ExcessiveO
Just tried flipping the request lines and the encoder won't output with them flipped.

Please Log in or Create an account to join the conversation.

More
22 Oct 2021 20:29 - 22 Oct 2021 20:54 #223956 by PCW
Also, do you have fanuc_chan_N=AA64 in the driver config line?
something like:

:CONFIG="num_encoders=1 num_stepgens=5 sserial_port_0=00 fanuc_chan_0=AA64"

For a AA64 encoder, the encoder data is bits 18..33
and the turn count is bits 36..51 so it needs a fairly special format
which is setup with the AA64 option

You can create a custom format by hand, same as you do for SSI encoders
but its a lot more work to get the command string right
 
Last edit: 22 Oct 2021 20:54 by PCW.

Please Log in or Create an account to join the conversation.

More
22 Oct 2021 21:11 #223957 by ExcessiveO
I was able to get it reading correctly, I think the encoders I have only drive the tx line ~20us and ~200us before and after the actual data, so the tx lines just float the rest of the time. hostmot2 thinks the enabling of the tx line is the start of the transfer which shifts everything.

I tried increasing the servo thread speed all the way to 5khz which fixed it since the encoder no longer had time to disable the lines
I also tried leaving the servo thread at 1khz and increasing the dpll to 5khz, it throws the "data transmission not complete..." error but actually works ok. Is it possible to change the dpll so it only starts reading after the tx line has been enabled(add a slight delay)?

Please Log in or Create an account to join the conversation.

More
22 Oct 2021 21:31 - 22 Oct 2021 21:32 #223958 by PCW
What Fanuc encoder is this? Is this a 2 wire RS-485 encoder?

If disabling the driver generates a start bit, this means the RS-485 bias
is backwards on the interface. You may need to bias the undriven lines so that
they are in an idle state when undriven.
Last edit: 22 Oct 2021 21:32 by PCW.

Please Log in or Create an account to join the conversation.

More
22 Oct 2021 21:39 - 22 Oct 2021 21:41 #223959 by ExcessiveO
it is a rs422 encoder, 2 diff pars, one for rx and one for tx. the tx lines appear to get shorted together when disabled, they both float at around 2.5v. I tried pulling the TX+ to 5v and TX- to gnd with 220 ohm resistors, but they both just went to 2.5v again.
Last edit: 22 Oct 2021 21:41 by ExcessiveO.

Please Log in or Create an account to join the conversation.

More
22 Oct 2021 22:52 - 22 Oct 2021 22:52 #223961 by PCW
Hmm that really does not make sense. The AA64 encoders I have
used always  output a valid signal.

What is the Fanuc Model number?
Last edit: 22 Oct 2021 22:52 by PCW.

Please Log in or Create an account to join the conversation.

More
22 Oct 2021 23:08 #223964 by ExcessiveO
its an aA64i
A860-2014-T301

they are from a fanuc r2000ia robot. As it turns out, one if the encoders must have been replaced and is now a aA128i, so I will definitely need to modify the configuration for that.

Please Log in or Create an account to join the conversation.

More
22 Oct 2021 23:22 - 22 Oct 2021 23:23 #223965 by PCW
Its weird that it outputs an invalid RS-422 level

Depending in the receiver chip, a 0V input level
should result in a idle line state but this must not be
the default polarity the Fanuc encoder firmware expects
It might be fixable by inverting the RX data in the FPGA
and swapping the data lines.

I guess you could mask the startbit detection logic
for some time after the request but that seems really
Micky-Mouse
Last edit: 22 Oct 2021 23:23 by PCW.

Please Log in or Create an account to join the conversation.

More
22 Oct 2021 23:42 #223967 by ExcessiveO
I'll have to look into what exacty the TX driver does, there might be a way to get it to give the correct levels with a few external components.

I'm much less experienced in the fpga firmware so I have been doing my best to avoid any really custom changes.

Is there an issue with running the dpll at a higher frequency than the servo thread? I'm able to get the encoder to transmit properly at higher speeds, linuxcnc just gives a "transmission not complete" error on startup, but the transmission seems just fine.

Please Log in or Create an account to join the conversation.

Time to create page: 0.085 seconds
Powered by Kunena Forum