CAN Protocol – CAN Bus Hardware Design with 1000 Nodes

canprotocolstm32

I am looking to develop a CAN Bus System employing up to 1000 nodes on a single network. I am using an existing design based on STM32F072CB that has the CAN Controller embedded along with TJA1050 as the CAN Transceiver. Below is a detailed insight:

The Master is going to be a Personal Computer which will use a RS-232 to CAN Bus Transceiver to send commands to 999 slaves. The slaves all have a STM32F072CB Processor and a TJA1050 CAN Bus Transceiver. Each slave will have a stepper motor with them and the purpose is to drive the stepper motors based on configuration parameters set.
The purpose of CAN Bus is to send configuration commands to all slaves. The data rate can be very slow here as well. The master will not continuously send commands but only when needed maybe only once a day.
The processors on slaves will store the configuration parameters and do all the processing / feedback comparison such as Planned Position vs Current Position or Planned Speed vs Current Speed. Slaves however will have to report back their status to master every 0.5 Seconds whether there is an error in reading or not.

The maximum length of the whole setup will be 400 meters and the nodes maybe variably placed across this length i.e not equidistant.

My queries are:
What is the best approach / strategy to build a fault tolerant system having 1000 nodes? I understand that I will have to compromise on the data rate which is completely fine in my requirement but what will be maximum limit I can achieve?

Can the current design support my requirement? The TJA1050 is HIGH Speed CAN Transceiver but I believe I will need to adapt Low Speed CAN Bus design. Am I correct in this assumption?

What should be the hardware design practices in this regard? Is there a document or reference that can help set me up on the correct path? I believe I will have difficulty in achieving such high number of nodes. Is this possible?

I am open to changing the system from having a single network to multiple CAN-CAN links, is this more feasible? If so, what is the best design approach in this scheme?

Best Answer

  • 1000 nodes can't be on single bus
  • 100 kbps is suggested for 500m bus length
  • TJA1050 is a high speed device, although intended between 60kbaud and 1Mbaud, it may be too fast for your bus and you may need a slower transceiver.
  • TJA1050 guarantees operation with at least 110 nodes. It might work with more depending on environment, but it is not guaranteed to work with 111 nodes or more.
  • Low speed CAN is fault tolerant
  • Depending on specs and standards, node count could be limited to much lower than 100