3
\$\begingroup\$

I'm looking into the possibility of building a CAN bus network with ~400 nodes in it. The total cabling distance is about 200m but it doesn't have to be fast; each node only needs to transmit a single packet once per minute so a data rate of 25kbits/sec should be fine.

The nodes are going to be custom hardware, probably using an MCP2515 chip. Power consumption is going to be an issue so I need them to be asleep as much as possible, is it a good idea to isolate them electrically from the bus cabling while they're not in use? In my head that would mean there only actually need to be a few of them connected to the bus at any given time.

What I really want to ask is whether this is A) possible and B) a really stupid way of doing it?

\$\endgroup\$
  • \$\begingroup\$ Your choice of the MCP2515 seems good, especially for the really low currents it leaks in and out of the bus. \$\endgroup\$ – Dzarda Dec 4 '14 at 19:02
  • 1
    \$\begingroup\$ Look at the input loading of a MCP2551. I remember looking at this a while back and concluding the maximum devices on the bus due to loading being much less than 400. You may have to roll your own transceiver, or find one that has virtually no bus loading. \$\endgroup\$ – Olin Lathrop Dec 4 '14 at 19:03
  • \$\begingroup\$ @OlinLathrop Besides both common-mode AND differential input resistances of the chip being stated in kW (which I don't follow), Microchip explicitly says maximum of 112 nodes. I have a feeling though, that those two parts are quite different beasts. \$\endgroup\$ – Dzarda Dec 4 '14 at 19:15
  • \$\begingroup\$ @OlinLathrop This is why I thought we might need to isolate nodes from the bus when they're not transmitting - presumably the loading isn't an issue if they're not attached? \$\endgroup\$ – The Gribble Dec 5 '14 at 12:01
  • \$\begingroup\$ You need to listen to what @OlinLathrop is saying here. The distributed capacitive load of 400 receivers may be so much that the signal will look like mush. \$\endgroup\$ – Daniel Dec 21 '15 at 20:15
1
\$\begingroup\$

The first point I'd make is that this is certainly feasible, although you need to be careful about your software. The CANopen protocol, for instance, only allows 127 physical nodes, even though the CAN bus specification provides an 11-bit arbitration field.

Second, at 200 meters cable length, you can run at 250 kbit/s, so 25 kbit/s is way underspecified.

Third, you don't need to disconnect from the bus to save power. The MCP2515 has a sleep mode that only draws 5 µA. If 5 volts at 2 mA (400 x 5 µA) is a problem, I suggest you're skating awfully near the edge in terms of power budget.


I've got to admit that this is an odd concept - 400 nodes at 20 inch intervals. Oh well. I'd guess that physically it would make more sense to go to fewer bus taps, with each node a multi-channel acquisition circuit. I'd think that some sensor wire would be a lot cheaper than printed circuit boards, power supplies and housings (and be more reliable to boot), but you may be operating under non-obvious constraints.

\$\endgroup\$
  • \$\begingroup\$ Agreed. I would strongly underline the reliability issue. Chances that one of those 400 transceivers goes haywire and ruins your entire bus, are rather high. Especially on such a physically large system. \$\endgroup\$ – Dzarda Dec 4 '14 at 19:01
  • 1
    \$\begingroup\$ Actually, it's possible to get fault-tolerant CANBUS transceivers which run at 250 kHz. \$\endgroup\$ – WhatRoughBeast Dec 4 '14 at 19:02
  • \$\begingroup\$ @WhatRoughBeast: Regarding your third point: It's correct that a (unpowered) module does not need to be disconnected from CAN to save power. But the MCP2515 sleep mode doesn't apply in this situation. Instead, if the module is powered, but is in sleep mode, MCP2515 would wake on bus activity, so power consumption would increase. \$\endgroup\$ – mic Dec 5 '14 at 8:23
  • \$\begingroup\$ For the first - The software's all bespoke so we'll be sending a single, raw CAN packet from each device; they never need to listen at all. They can each use a unique arbitration field so it's very simple that way. for the second, more speed sounds better, thanks! as for the third the sleep mode should be fine, I was just concerned about the bus loading and thought physically detaching them might help. \$\endgroup\$ – The Gribble Dec 5 '14 at 11:56
  • \$\begingroup\$ @WhatRoughBeast said. Take a look at Ti ISO1050 and NXP TJA1050. NXP data sheet says at least 110 nodes, not implying a limit. There are options more advanced than mcp2551; dig through mouser or digikey. \$\endgroup\$ – Chris K Jul 1 '15 at 22:49
1
\$\begingroup\$

To be able to exceed the number of nodes on a segment limit of the transceivers, you need to use a CAN physical layer repeater. These are available from several manufacturers, such as EMS-WUENSCHE, IXXAT and Peak System for example.

\$\endgroup\$
  • \$\begingroup\$ This may well be the answer - we can break the nodes fairly easily into four or five segments. \$\endgroup\$ – The Gribble Dec 5 '14 at 11:59

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.