2
\$\begingroup\$

The company I have been working for, which is designing a new control system for forestry equipment, has encountered a number of problems with regards to the CAN bus it is using for communication. I work remotely doing design, and as such much of my information is second-hand.

I have been informed that when using a common cable type used in the industry and a data rate of 250kbps, the CAN bus often encounters errors which are frequent enough to stop communication on the bus. The cable used is approximately 15m in length, with 4 conductors for power and ground, and a pair of conductors for data that are not twisted or nor shielded.

Upon my recommendation, the company has now ordered a new cable with a shielded twisted-pair, but I was not involved with the specification of conductor sizes and insulation.

It is my hope that using this new cable will solve problems with regards to the lack of twisted-pairing, however, my concern is that the characteristic impedance of the new cable will not be near 120\$\Omega\$ , as specified for the high-speed CAN physical layer in ISO 11898-2.

When I calculated the characteristic impedance of the new cable using $$Z_o = \frac{276}{\sqrt{\epsilon_r}}*log(\frac{d}{r})$$ where \$\epsilon_r\$ is the insulation relative permittivity, \$d\$ is the distance between conductors, and \$r\$ is the conductor radius

I get a characteristic impedance of 187\$\Omega\$. This is obviously outside the recommendations of the CAN physical layer.

My question remains, to match the characteristic impedance of the transmission line, is it advisable to use a resistor value larger than 120\$\Omega\$? If not, would the difference be negligible enough that 120\$\Omega\$ would work fine or should I be advising them to look at a properly specified cable? I have never come across anything other than 120\$\Omega\$ for CAN, and would prefer that the transmission lines have the required characteristic impedance, but I'm trying to suggest a solution with the current hardware.

Thanks for any suggestions you may have.

\$\endgroup\$
  • \$\begingroup\$ read my revised answer --- looks like the CAN errors come from magnetic coupling from VDD current spikes into the differential CAN wiring \$\endgroup\$ – analogsystemsrf Aug 8 '19 at 8:17
4
\$\begingroup\$

15 meters is about 50 feet. round trip in air is 100 feet or almost exactly 100 nanoseconds. If the dielectric Er is 4, the velocity is C/2, making the length be 200 nanoseconds.

Your bit period is 4 uS or 4,000 nanoseconds, or 20X the round-trip cable delay.

You can experiment with Rterm higher than 120 ohm, but I think you should worry more about where to tie the cable shields. What are your plans?

[also read Lundin's answer, with upsets to GND shared with hydraulic valve coils]

Additionally, the current surges on GND and on Power may be trashing the CAN wires, even if the CAN is twisted pair. You can evaluate local-battery approaches to reduce the spikes. Use large ferrite beads in the VDD wiring, or 10 uH or 100 uF inductors that will not saturate at your current levels.

How much trash will the VDD inject into the CAN bus? Assume current spikes of 10mA in 10nanoSeconds (easily 10x larger can occur). Assume VDD is 1mm from the CAN wires. And assume the two CAN wires are 1mm apart.

Use the math Vinduce = [MU0 * MUr * Area/(2 * PI * Distance)] * di/dT

with Area = 15meter * 1mm, and Distance = 1mm.

This is not precise, given the closeness of the wires, but we'll ignore the math errors, so we get an estimate of how much VDD spikes can inject trash into the CAN differential signal.

Set MU0 to 4 * PI * 1e-7, set MUr to 1 (air, copper, FR-7)

Vinduce = 2e-7 * (15m * 1mm) / 1mm * 0.01amp/0.01 uS [ / missing in orig\

Vinduce = 2e-7 * 15 * 1e+6

Vinduce = 30e-7 * 1e+6 == 3 volts.

Thus I think your VDD needs heavy filtering at the load ends.

[ added Aug 9, 2019] Lets consider how to reduce the interference into the CAN wires.

There are THREE tasks here

1) keep the grounds, located 15 meters apart, within a volt of each other so the CAN bus remains error-free (yes, the CAN spec may permit more than 1 volt, but lets play safe)

2) reduce the current transients in the GND and VDD wires, to reduce the magnetic field interference with the CAN buss (the twisted pair CAN wires may help with this)

3) reduce the voltage transients in the GND and VDD wires, to reduce the electric field interference in the CAN buss (the shielded CAN wires may help with this)

Task #1 --- keep the GROUNDs within 1 volt: that is up to your wiring size and the DC currents (and peak transients).

Task #2 --- keep the magnetic field interference low; my approach is to heavily filter the GND and VDD at the load end, with this

schematic

simulate this circuit – Schematic created using CircuitLab

How to tie the TWO ENDS of the shield around the CAN bus wires?

For magnetic shielding, you need current flowing in the shield (at least for a single-center-conductor coax). Here we have nominally-balanced twisted wires, with the symmetry of twist determining how well the magnetic field is symmetrically coupled into the two wires, with common-mode-rejection of the CAN receiver determining the CAN bus tolerance of that trash. This requirement of symmetrically-induced trash means the symmetry of the OTHER 4 WIRES is paramount, yet is not under our control; hence my emphasis on reducing the dI/dT in GND and in VDD wires, by using PI filters.

For electric shielding (assuming the shield is somewhat optically-opaque with dense woven braid or actually fragile-in-repeated-folding foils), the folklore says to ground the shield at the load end, yet this is a bi-directional bus with no "load" end. Hence the option of capacitively-grounding the shield, avoiding DC currents. 1uF at 1MHz is about -j0.16 ohms, thus should be satisfactory. You cannot assume the various LARGE metal pieces of your machinery are electrically-continuous, so are useless as shields.

\$\endgroup\$
  • \$\begingroup\$ Thanks for the answer. I suspect you might be right with regards to current spikes. I know they have had problems related to spikes (the machine this is used on has a large number of solenoid coils and such), and could certainly see interference from those lines causing problems. There are some large capacitors on the load side, but I haven't looked into these since they were put into the system. As for shielding, that's what I'm currently looking into to let them know what they should be doing. \$\endgroup\$ – Mark Jones Aug 8 '19 at 17:42
  • 1
    \$\begingroup\$ You've got a good point about the supply noise trashing the data signal. The new twisted cable for the data lines (not taken into account in your estimate) should help mitigate the problem substantially, though. \$\endgroup\$ – joribama Aug 8 '19 at 21:34
  • \$\begingroup\$ Insert some small inductors in the VDD lines, at the loads. 1uH will help. 1uH and 100uF will resonate at 16KHz. Place 1ohm in parallel with the 1uH to provide dampening. \$\endgroup\$ – analogsystemsrf Aug 9 '19 at 1:55
2
\$\begingroup\$

CAN lines are supposed to be terminated at both ends to avoid reflection on either sides. Taps in the middle should be high impedance.

Having said that, if the characteristic impedance of your transmission line is 187Ω, you should have 187Ω loads on both ends of it. Not doing so will result in some amount of non-negligible reflection, what can lead to signal integrity problems. Since 187Ω is higher than the 120Ω from the spec, the transmitters should have no problem in driving this higher impedance.

In theory, higher impedance transmission lines will be more susceptible to electrical interference. However, 187Ω is not such a high impedance compared to 120Ω. It should be just fine.

\$\endgroup\$
1
\$\begingroup\$

Out of experience, I'd say this is not likely caused by the cable itself. Twisted pair and shield are good, but they can't fix the underlying causes. A bit overkill on a forestry machine with short distances.

Having power in the same cable is obviously not a good idea, depending on how high currents there are. Spontaneously, "with 4 conductors for power and ground" sounds like you use the power ground as reference for CAN - if so then that's your problem, you simply cannot do that on a machine with lots of hydraulic valves. Most often such machines have no free wheel diodes anywhere near the coils, so all manner of EMI trash will go through the power ground.

Apart from that, here's the most common causes for CAN errors for these type of machines:

  • Missing dedicated signal ground for CAN.
  • Missing termination in both ends. Use ~120 Ohm, that's what the CAN transceivers expect.
  • Too long/too many stubs. Use the recommendations from CAN in Automation here. At 250 kbps this shouldn't be a problem.
  • Badly designed industrial computers. Some of the most well-known brands have horrible immunity characteristics.
  • Ground loops caused by incorrect shields, incorrect ground to chassis, lack of "star ground" topology and so on.
\$\endgroup\$
  • \$\begingroup\$ lundin ---I refer to your excellent answer now. \$\endgroup\$ – analogsystemsrf Aug 17 '19 at 4:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.