Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Electrical (http://www.chiefdelphi.com/forums/forumdisplay.php?f=53)
-   -   Can I branch the CAN to go to two separate places? (http://www.chiefdelphi.com/forums/showthread.php?t=151509)

Wasabi Fan 24-09-2016 14:21

Can I branch the CAN to go to two separate places?
 
So far, we've always been wiring CAN devices in series so that one pair of CAN wires on a device feeds directly into a pair on the next device, and all devices are in series. What would happen if I were to branch the CAN so that the output wires on a device split and I sent the two resultant pairs to different devices? I've read technical documentation on the CAN so I have some ideas, but I'd like to get an opinion from someone who knows about this in detail before I draw a (potentially incorrect) conclusion.

teslalab2 24-09-2016 14:31

Re: Can I branch the CAN to go to two separate places?
 
If you get it Phased correctly it should work. Do you have the access to just try it? I am curios to find out.

AllenGregoryIV 24-09-2016 14:40

Re: Can I branch the CAN to go to two separate places?
 
It's not recommended but I've seen teams do it and not have any issues. It's probably one of those things where it may work, but it may also cause problems. If you start seeing anything strange like devices not responding it would be a good place to start troubleshooting.

The CAN network seems pretty resilient, I've seen teams run with out any termination in the line. We've used a variety of interconnects between nodes without any issues, etc.

Wasabi Fan 24-09-2016 14:40

Re: Can I branch the CAN to go to two separate places?
 
Yes, we're planning to try it and see how it goes. My main concerns are that it is either not legal (and by extension we would fail inspection) or not functional (the protocol depends on it being sequential and would not function correctly without it). Am I correct that I would theoretically need to add a 120-ohm termination resistor to whichever end doesn't ultimately end up in the PDP? And what do you mean by "phased correctly"?

dirtbikerxz 24-09-2016 15:14

Re: Can I branch the CAN to go to two separate places?
 
My advice would just be to not do that. I get that you might have one talon on one end of your bot, and another talon on the other end. But can wire is so thin anyway, just run a really long strip. No point in introducing points of failure into an already relatively "fragile" system.

techhelpbb 24-09-2016 15:34

Re: Can I branch the CAN to go to two separate places?
 
When you split a terminated bus like this you create the probability of reflections. If you look up a tool called TDR:
https://en.wikipedia.org/wiki/Time-domain_reflectometer

It is not recommended to do this.
Certain patterns of communication traffic might become garbled.
Resulting in intermittent errors you can't see a cause for.

Leaving an end unterminated is actually worse, as well would be using the wrong value terminators.

Arhowk 24-09-2016 17:42

Re: Can I branch the CAN to go to two separate places?
 
Quote:

Originally Posted by dirtbikerxz (Post 1608816)
just run a really long strip. No point in introducing points of failure into an already relatively "fragile" system.

From both a CSA and a head electrical's perspective these seem like two conflicting points. I've seen a great deal of wire cut because of things like drilling, nuts/bolts, zip ties, or just normal wear and tear (robot on robot action). Resilience does not favor one or the other in an "all encompassing" scenario.

jnicho15 24-09-2016 19:32

Re: Can I branch the CAN to go to two separate places?
 
Early in the season, we tried using a central distribution panel for our SRXs in order to decrease the chance of cascading failures. Although this should work since CAN is wired in parallel, we had many problems especially since we were using "PWM" connectors to each one. We then switched to a soldered chain and had fewer problems.

ratdude747 24-09-2016 21:37

Re: Can I branch the CAN to go to two separate places?
 
Quote:

Originally Posted by techhelpbb (Post 1608817)
When you split a terminated bus like this you create the probability of reflections. If you look up a tool called TDR:
https://en.wikipedia.org/wiki/Time-domain_reflectometer

It is not recommended to do this.
Certain patterns of communication traffic might become garbled.
Resulting in intermittent errors you can't see a cause for.

Leaving an end unterminated is actually worse, as well would be using the wrong value terminators.

QFT. Any time termination matters (such as CAN), you've entered the wonderful world of RF where reflections and the like are real. In RF you get to throw away everything you know about electricity and circuits, aside from Kirchoff's laws. Ohm's law? Kiss it goodbye, it doesn't apply any more. Wire spacing and twist rate do matter a ton.

Generally RF rules apply if you're at high frequency (such as CAN, ethernet, or Wifi/Bluetooth) or you're over a massively long distance (such as a 10 mile power transmission line).

TLDR: Don't branch CAN wires, while it seems like it will work in reality it's asking for trouble.

Alan Anderson 26-09-2016 12:14

Re: Can I branch the CAN to go to two separate places?
 
If the entire collection of CAN devices and wiring is physically small enough, you can get away with just about any topology without it breaking.

My advice: don't tempt fate. Use the system as specified and as designed, with a single "chain" of devices each having their own internal very short tap on the bus. Troubleshooting will be much more straightforward.

jee7s 26-09-2016 12:19

Re: Can I branch the CAN to go to two separate places?
 
Quote:

Originally Posted by jnicho15 (Post 1608835)
Early in the season, we tried using a central distribution panel for our SRXs in order to decrease the chance of cascading failures. Although this should work since CAN is wired in parallel, we had many problems especially since we were using "PWM" connectors to each one. We then switched to a soldered chain and had fewer problems.

Emphasis above is mine.

For the record, CAN is "wired in parallel" if and only if you regard the conductors as ideal. The real world scenario has imperfections like resistance, inductance, and capacitance, that make for a much more complicated electrical reality than "wired in parallel". Particularly at 1Mb/s, those lumped elements and the aforemnetioned reflection problem mean that the CAN topology is best implemented as a terminated bus with short branches. The PWM connectors are not the issue, and many teams use that style of connector in a canonical implementation of CAN with no issue. Go back to the Jaguar and the CAN bus uses RJ style connectors with no issues if the connectors are properly assembled and inserted. Connectors in CAN are perfectly acceptable, it's the network topology that needs to be respected.

In other words, like Alan and others have said, don't tempt fate. Wire CAN as recommended in the documentation for best results.

philso 26-09-2016 14:11

Re: Can I branch the CAN to go to two separate places?
 
The CAN standards allow "star" configurations for low data rates over long distances. For your peace of mind, it is probably best to avoid using the star configuration if it can be avoided. With the (low) quality of the wiring I have seen in many FRC robots, a bad connection is at least as likely to be the real cause of their CAN Bus problems.

It is the high edge-rate (short rise-time and fall-time) of the signal that directly leads to reflections, not the data rate. Of course, as the data rate rises, faster edge-rates are required to maintain signal integrity. Many of the CAN transceiver chips have the ability to reduce the edge-rate to minimize reflections when running at lower data rates. Without looking at CTRE and NI's schematics, it is difficult to know if they are using such a feature.

The length of the various line lengths determines whether a reflection causes interference or not. With the rule-of-thumb signal propagation delay of 2 nsec/foot, your CAN wiring would have to be pretty long (in the order of 100 ft.) for it to have an effect on a 1 Mbps signal, longer than one could reasonably put on an FRC robot.

If one wires the CAN Bus with the PDP "at the end of the chain" then one should always have the terminations. With a star configuration (or multi-star), the PDP should still be the furthest from the RoboRio.


Quote:

Originally Posted by ratdude747 (Post 1608843)
QFT. Any time termination matters (such as CAN), you've entered the wonderful world of RF where reflections and the like are real. In RF you get to throw away everything you know about electricity and circuits, aside from Kirchoff's laws. Ohm's law? Kiss it goodbye, it doesn't apply any more. Wire spacing and twist rate do matter a ton.

Generally RF rules apply if you're at high frequency (such as CAN, ethernet, or Wifi/Bluetooth) or you're over a massively long distance (such as a 10 mile power transmission line).

TLDR: Don't branch CAN wires, while it seems like it will work in reality it's asking for trouble.

My coworkers and I are puzzled by some your statements.

wireties 26-09-2016 16:06

Re: Can I branch the CAN to go to two separate places?
 
Do NOT do this! Your goal is to make the robot as robust as possible. One way to make the robot more robust is to wire the power, sensors and control lines per the recommendations of the relevant standards committees or OEMs. Use the correct tools and the correct techniques then test everything over and over again.

Could you get lucky? Sure

Is it worth it? No, a hundred times no

Is it a "professional" thing to do? No buyer would sign off and pay you for something wired incorrectly. You might be thinking "if it works then who cares"? This is where engineering ethics comes in - you are not compliant and you know it. So fix it!

That is my two cents. I've delivered many dozens of high performance systems. And I've been on the receiving end of non-compliant subsystems and made them fix everything (using their own money).

wireties 26-09-2016 16:17

Re: Can I branch the CAN to go to two separate places?
 
Quote:

Originally Posted by ratdude747 (Post 1608843)
QFT. Any time termination matters (such as CAN), you've entered the wonderful world of RF where reflections and the like are real. In RF you get to throw away everything you know about electricity and circuits, aside from Kirchoff's laws. Ohm's law? Kiss it goodbye, it doesn't apply any more. Wire spacing and twist rate do matter a ton.

All the normal rules still apply but there are additional rules (terms in the equations). You are looking at the complex impedance of the load (which did not factor in at low frequencies) rather than simple resistance. The size and shape of the wire and connector pins all matter because they help determine the reactance portion of the impedance (resistance plus reactance). Balancing the impedance of the source and the load become important to reduce mismatches that can cause ringing (reflected waves bouncing around willy-nilly).

So for CANbus the sources have a particular output impedance that performs best when the load has a matching impedance (same resistance and opposite reactance). To keep things simple use wire much like the green/yellow that comes with the Talons. Use connectors with cross sections close to the cross section of the wire. Wire things in series from source to load (like CTE recommends and the CANbus standards dictate). Use a 100-ish ohm resistor for the load (termination). To do otherwise is to ask for troubles that are very difficult to diagnose.

wireties 26-09-2016 16:26

Re: Can I branch the CAN to go to two separate places?
 
Quote:

Originally Posted by philso (Post 1609040)
The CAN standards allow "star" configurations for low data rates over long distances.

QFT - I should have mentioned this. But on the roboRio the CANbus is running near full-speed. You would have to slow the bus down and all kinds of things might stop working (PCM control loops not closing, not enough bandwidth to query/set Talons etc).


All times are GMT -5. The time now is 04:12.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi