|
View:
New views
20 Messages
—
Rating Filter:
Alert me
|
| < Prev | 1 - 2 | Next > |
|
|
61 Node CAN BusHey everyone. I'm new to this board, and to CAN for that matter and I've got a question. I've got a CAN bus that we are attempting to setup. It has 61 nodes on it (including the VALUECAN USB adapter). I'm trying get all the nodes communicating and am having some problems. Let me give you the specs.......
Speed: 500kbs Osc Freq : 40Mhz Bus length: ~20ft Wiring: twisted pair Terminating Resistors: 120 ohms at each end Message Rate: Each node is sending 1 message/second The symptoms I am having is that as I add in nodes I reach a point at which all the cards stop sending messages completely. I'm not entirely sure why. Based on all the speed calculations I have done I can't figure out why the bus is failing. Could it be that I need to up the terminating resistors since I have so many nodes in parallel? I'm at a total loss here so any help would be greatly appreciated. Thanks, matt |
|
|
RE: 61 Node CAN BusMatt,
What is the spec of your CAN transceivers on each node? The input impedance may be causing this. Regards Charles E. Pinkstone Senior Development Engineer cpinkstone@... www.liftstore.com 01352 793261 ------------------------------------------------------------------------ ------------------------------------------- Legal Disclaimer: Any views expressed by the sender of this message are not necessarily those of LiftStore Limited. Information contained in this e-mail may be confidential and is for the use of the intended recipient only, no mistake in transmission is intended to waive or compromise such privilege. Please advise the sender if you receive this e-mail by mistake. -----Original Message----- From: canlist-owner@... [mailto:canlist-owner@...] On Behalf Of mddolloff Sent: 13 May 2008 13:19 To: canlist@... Subject: [CANLIST] 61 Node CAN Bus Hey everyone. I'm new to this board, and to CAN for that matter and I've got a question. I've got a CAN bus that we are attempting to setup. It has 61 nodes on it (including the VALUECAN USB adapter). I'm trying get all the nodes communicating and am having some problems. Let me give you the specs....... Speed: 500kbs Osc Freq : 40Mhz Bus length: ~20ft Wiring: twisted pair Terminating Resistors: 120 ohms at each end Message Rate: Each node is sending 1 message/second The symptoms I am having is that as I add in nodes I reach a point at which all the cards stop sending messages completely. I'm not entirely sure why. Based on all the speed calculations I have done I can't figure out why the bus is failing. Could it be that I need to up the terminating resistors since I have so many nodes in parallel? I'm at a total loss here so any help would be greatly appreciated. Thanks, matt -- View this message in context: http://www.nabble.com/61-Node-CAN-Bus-tp17189381p17189381.html Sent from the CAN Bus mailing list archive at Nabble.com. -- Archives and useful links: http://groups.yahoo.com/group/CANbus Subscribe and unsubscribe at www.vector-informatik.com/canlist/ Report any problems to <canlist-owner@...> ************************************************************************************* Before you print, please think about the ENVIRONMENT! ************************************************************************************* - -------------------------------------------------------------------------------------------------------- Legal Disclaimer: Any views expressed by the sender of this message are not necessarily those of LiftStore Ltd. Information in this e-mail may be confidential and is for the use of the intended recipient only, no mistake in transmission is intended to waive or compromise such privilege. Please advise the sender if you receive this e-mail by mistake. --------------------------------------------------------------------------------------------------------- Company info: - Registered office: LiftStore Ltd, Unit 15, Manor Farm Ind Est, Flint, Flintshire, Wales, CH6 5UY Registration no: 2931013 Cardiff -- Archives and useful links: http://groups.yahoo.com/group/CANbus Subscribe and unsubscribe at www.vector-informatik.com/canlist/ Report any problems to <canlist-owner@...> |
|
|
|
|
|
|
|
|
|
|
|
RE: 61 Node CAN BusI'm using a an MCP2551 which looks like it has an input impedence of 5k-50k according to the data sheet.
Datasheet I'm not sure on this though since there is a common-mode input resistance listed as well as a Differential input resistance. The differential is listed as 20k-100k.
|
|
|
Re: 61 Node CAN BusI have done that and it works. I need to run all 61 nodes though. Running fewer is not an option.
|
|
|
RE: 61 Node CAN BusHi Matt,
Thanks for posting the detailed hardware info. You've stated that each node is sending a message once per second. Is the ID of each message unique? How many data bytes are you sending in each message? At what point in a bit are you sampling? Next, let's do a little math here. Assuming roughly 135 bits per message including stuff bits on 8 data bytes and a 29 bit ID, it takes about 270uS per message. 0.000270 * 61 is 0.01647 seconds. So at first glance it would appear you have plenty of time and you are not overloading the bus over a 1 second period. In fact if you were sending only one byte of data on an 11 bit ID the message probably wouldn't take more than about 50uS so now 61 messages take up 0.00305 seconds out of a one second period. Again one would think that the bus isn't overloaded. But, perhaps your processors are. A common protocol error is to ask all nodes to be synchronized in their time clock and then spit out a message. Or alternatively one node broadcasts a message once per second that tells all nodes to send status. So there you have your 61 nodes sending once per second. Now think about what really happens here. Each nodes receives the request either from the bus or when the internal clock says send NOW. All 61 nodes try to send. One node wins arbitration so the other 60 nodes switch over to receive it. As soon as it's correctly received (CRC passes and ACK issued) the rest of the nodes try again and again one succeeds and so on. So what you may really have is once per second a burst of 61 messages occurring in just over 3mS. Can your processor handle that many messages in a row or does the code blow up? John Dammeyer. Automation Artisans Inc. http://www.autoartisans.com Ph. 1 250 544 4950 > -----Original Message----- > From: canlist-owner@... > [mailto:canlist-owner@...] On > Behalf Of mddolloff > Sent: Tuesday, May 13, 2008 5:19 AM > To: canlist@... > Subject: [CANLIST] 61 Node CAN Bus > > > > Hey everyone. I'm new to this board, and to CAN for that > matter and I've got > a question. I've got a CAN bus that we are attempting to > setup. It has 61 > nodes on it (including the VALUECAN USB adapter). I'm trying > get all the > nodes communicating and am having some problems. Let me give you the > specs....... > Speed: 500kbs > Osc Freq : 40Mhz > Bus length: ~20ft > Wiring: twisted pair > Terminating Resistors: 120 ohms at each end > Message Rate: Each node is sending 1 message/second > The symptoms I am having is that as I add in nodes I reach a > point at which > all the cards stop sending messages completely. I'm not > entirely sure why. > Based on all the speed calculations I have done I can't > figure out why the > bus is failing. Could it be that I need to up the > terminating resistors > since I have so many nodes in parallel? I'm at a total loss > here so any > help would be greatly appreciated. > Thanks, > matt > -- > View this message in context: > http://www.nabble.com/61-Node-CAN-Bus-tp17189381p17189381.html > Sent from the CAN Bus mailing list archive at Nabble.com. > > -- > Archives and useful links: http://groups.yahoo.com/group/CANbus > Subscribe and unsubscribe at www.vector-informatik.com/canlist/ > Report any problems to <canlist-owner@...> > > -- Archives and useful links: http://groups.yahoo.com/group/CANbus Subscribe and unsubscribe at www.vector-informatik.com/canlist/ Report any problems to <canlist-owner@...> |
|
|
|
|
|
RE: 61 Node CAN BusThanks for all the suggestions John.
Yes, all the message id's are unique. It's only an 11 bit ID with 4 bytes of data. My sample point is at about 73% but I have tried everything from 60% to 80%. 60% resulted in far fewer nodes being able to be connected before the system "crapped.' Right now each message is sent when the clock times out on each node, so I can certainly see that being a problem at start up. However, after a small amount of time I would expect that to work itself out as the arbitration occurs. And I guess more accurately the messages are sent from each node 1 second after it's last successful message transmission. If I exclude the USB/CAN adapter there are no nodes actually handling any of the messages. They all get filtered out before they even get to the software on the PIC, so there should only be nodes sending data and none actually doing anything with the data. Does this clear things up at all?
|
|
|
Re: 61 Node CAN BusI have not tried that yet. I had thought about doing that but wasn't sure if it was worth my time. I'm thinking I'll actually just hook a decade box up to give me some change capability without resoldering a resistor every time.
|
|
|
RE: 61 Node CAN BusOK. At that bit rate I'd suggest closer to 87% sample point.
I know it's probably a pain in the rear to do it but dropping down to 100kbps for a trial run might give you an idea of what's happening. A total of 61 nodes on the bus is not out of specification even with worst case data sheet values however at 500kbps your cable may be adding significant capacitance hence the sample point further up and also the suggestion to try a lower bit rate. All nodes will ACK the messages regardless of filtering. You can use that to your advantage. Each node driving the bus will bring the CAN_H and CAN_L lines to approximately +3.5V and +1.5V values. But when all 61 nodes ACK or issue the ERROR flags the combined drive tends to drive the bus harder. Now CAN_H will go to +4.0V and CAN_L closer to +1.0V. You can use that to set the scope trigger level so it only triggers on the ACK or ERROR flag and not on the message bits. Then move the trigger point to the right of the screen and set your sweep rate to be able to get the last few bits of a message. The point of the above exercise is you can now look at the actual signals to see how rounded they are. You can see if you have noise spikes. And, since an FLAG of 6 bits from one node creates a response from other nodes you could see 12 bits worth of error flag. If it's only 6 bits then all nodes are seeing the same error and responding at exactly the same time. If it's 12 bits then one or more nodes are seeing a unique error while the others are not and are responding to your error flag. That tells you whether you are having bus wide problems or node problems. Needless to say a logic analyzer storing on edge transitions or a scope with CAN interpretation would also be helpful here but if you don't have that don't give up. Your first step will be to make sure the bus is clean. The above experiments and slower bit rates will help you there. Don't start mucking around with different resistors. The two 120 Ohm termination are there for bus impedance matching and aren't there specifically to load the bus although they do provide a return path for the current. After that we'll blame software again. Do you know if all your nodes are staying bus active or have they gone passive or bus off? Oh. One more question. Do all the nodes have a common ground? It's a common misconception that CAN should have only two wires. It works with two wires (I've even used two batteries to power two drivers and done experiments with that) but that doesn't mean it works optimally with two wires. Yes, I realize this statement will probably provoke all sorts of responses from those running only a two wire CAN bus without a common ground but, anecdotal evidence aside, CAN works _best_ at high bit rates with a common ground. John Dammeyer > > > Thanks for all the suggestions John. > > Yes, all the message id's are unique. It's only an 11 bit ID > with 4 bytes > of data. > > My sample point is at about 73% but I have tried everything > from 60% to 80%. > 60% resulted in far fewer nodes being able to be connected > before the system > "crapped.' > > Right now each message is sent when the clock times out on > each node, so I > can certainly see that being a problem at start up. However, > after a small > amount of time I would expect that to work itself out as the > arbitration > occurs. And I guess more accurately the messages are sent > from each node 1 > second after it's last successful message transmission. > > If I exclude the USB/CAN adapter there are no nodes actually > handling any of > the messages. They all get filtered out before they even get to the > software on the PIC, so there should only be nodes sending > data and none > actually doing anything with the data. > > Does this clear things up at all? > > > John Dammeyer wrote: > > > > Hi Matt, > > > > Thanks for posting the detailed hardware info. > > > > You've stated that each node is sending a message once per > second. Is > > the ID of each message unique? How many data bytes are you > sending in > > each message? At what point in a bit are you sampling? > > > > Next, let's do a little math here. Assuming roughly 135 bits per > > message including stuff bits on 8 data bytes and a 29 bit > ID, it takes > > about 270uS per message. 0.000270 * 61 is 0.01647 seconds. > So at first > > glance it would appear you have plenty of time and you are not > > overloading the bus over a 1 second period. > > > > In fact if you were sending only one byte of data on an 11 > bit ID the > > message probably wouldn't take more than about 50uS so now > 61 messages > > take up 0.00305 seconds out of a one second period. Again one would > > think that the bus isn't overloaded. > > > > But, perhaps your processors are. A common protocol error > is to ask all > > nodes to be synchronized in their time clock and then spit out a > > message. Or alternatively one node broadcasts a message > once per second > > that tells all nodes to send status. So there you have > your 61 nodes > > sending once per second. Now think about what really happens here. > > Each nodes receives the request either from the bus or when > the internal > > clock says send NOW. > > > > All 61 nodes try to send. One node wins arbitration so the other 60 > > nodes switch over to receive it. As soon as it's correctly received > > (CRC passes and ACK issued) the rest of the nodes try again > and again > > one succeeds and so on. > > > > So what you may really have is once per second a burst of > 61 messages > > occurring in just over 3mS. Can your processor handle that many > > messages in a row or does the code blow up? > > > > John Dammeyer. > > > > Automation Artisans Inc. > > http://www.autoartisans.com > > Ph. 1 250 544 4950 > > > > -- > View this message in context: > http://www.nabble.com/61-Node-CAN-Bus-tp17189381p17212675.html > Sent from the CAN Bus mailing list archive at Nabble.com. > > -- > Archives and useful links: http://groups.yahoo.com/group/CANbus > Subscribe and unsubscribe at www.vector-informatik.com/canlist/ > Report any problems to <canlist-owner@...> > > -- Archives and useful links: http://groups.yahoo.com/group/CANbus Subscribe and unsubscribe at www.vector-informatik.com/canlist/ Report any problems to <canlist-owner@...> |
|
|
RE: 61 Node CAN BusMatt,
Can you put a scope on the bus? You may be loading the bus with too much capacitance. When that happens the tpHL (dominant to recessive transition time) of the transceiver becomes longer and longer until a bit error is encountered and the bus shuts down. I've seen this happen a couple of times. Try increasing the cable distance between nodes, keeping the distance as uniform as possible. That should correct the problem. If not, you'll have to use a different transceiver with a faster dominant to recessive transition time. Cheers, Steve C. -----Original Message----- From: canlist-owner@... [mailto:canlist-owner@...] On Behalf Of mddolloff Sent: Tuesday, May 13, 2008 7:19 AM To: canlist@... Subject: [CANLIST] 61 Node CAN Bus Hey everyone. I'm new to this board, and to CAN for that matter and I've got a question. I've got a CAN bus that we are attempting to setup. It has 61 nodes on it (including the VALUECAN USB adapter). I'm trying get all the nodes communicating and am having some problems. Let me give you the specs....... Speed: 500kbs Osc Freq : 40Mhz Bus length: ~20ft Wiring: twisted pair Terminating Resistors: 120 ohms at each end Message Rate: Each node is sending 1 message/second The symptoms I am having is that as I add in nodes I reach a point at which all the cards stop sending messages completely. I'm not entirely sure why. Based on all the speed calculations I have done I can't figure out why the bus is failing. Could it be that I need to up the terminating resistors since I have so many nodes in parallel? I'm at a total loss here so any help would be greatly appreciated. Thanks, matt -- View this message in context: http://www.nabble.com/61-Node-CAN-Bus-tp17189381p17189381.html Sent from the CAN Bus mailing list archive at Nabble.com. -- Archives and useful links: http://groups.yahoo.com/group/CANbus Subscribe and unsubscribe at www.vector-informatik.com/canlist/ Report any problems to <canlist-owner@...> -- Archives and useful links: http://groups.yahoo.com/group/CANbus Subscribe and unsubscribe at www.vector-informatik.com/canlist/ Report any problems to <canlist-owner@...> |
|
|
RE: 61 Node CAN BusSteve,
That is actually on my list of things to do as soon as I can get back in the lab and on the rig. What sort of time am I looking at for tpHL? Right now my connections between the nodes are only maybe 6" long or so. Will increasing the terminating resistor value help with the tpHL but given the bus more of a place to sink the charge? I really don't want to make the technician redo all the wiring since I don't know if we fail until I get up close to 60 nodes. That's a lot of wiring...... Thanks, Matt
|
|
|
Re: 61 Node CAN Bus |