RE: Event triggered Sensor Nodes
"Chuck Hackett" <[email protected]> Thu, 2 Apr 2015 22:06:16 -0400
| Newsgroups | gmane.comp.hardware.bus.can |
|---|---|
| Message-ID | <[email protected]> |
Hi Colin, To my knowledge (see below) you MUST ensure that two different nodes NEVER send the same arbitration field. If they happen to send at the same instant (most likely after the 'quite' period after a transmission by another node) they will not detect that they collided (no arbitration error) but will get a CRC error on their data area (i.e.: data differences will cause recessive bits to be destroyed by dominant bits from the other sender). In this case the two (or more) CAN Controllers will keep trying to send their (different) messages and the controller will eventually report a message/bus transmit error. Easiest way might be to embed a unique 'node number' in the arbitration field of the messages. I only have experience with CAN in my application (ride-on railroad signal system, 1,000's of feet of bus buried outdoors) using nodes that I designed and build but I'm sure someone here will correct/clarify the above if I'm wrong. I have gained 90% of my 'non-datasheet' CAN info from this list and I am grateful to all who have helped me . BTW: To all: My application is now running MUCH better after the guidance from the list. My typical bus 'failures' are now only due to lightning strikes but that too has been beaten down to an acceptable level (the application can't financially support "NASA" protection but I think I have found a good cost-benefit balance J). Cheers, Chuck Hackett "Good judgment comes from experience, experience comes from bad judgment" 7.5" gauge Union Pacific Northern (4-8-4) 844 <http://www.whitetrout.net/Chuck> http://www.whitetrout.net/Chuck From: [email protected] [mailto:[email protected]] On Behalf Of Colin Watson Sent: Monday, January 19, 2015 7:31 PM To: [email protected] Subject: [CANLIST] Event triggered Sensor Nodes Hi, Upon reading the MCP2510 data sheet, I am not sure how to set up a data logging node to accept messages from about 100 sensor nodes being animal feed bin weighers triggered by animals entering and leaving individual feed gates. The feed fence nodes will transmit data to be read by a single node so I am considering setting the arbitration field of all the fence nodes to a common I.D. say 999 and to set the filters in the data logging node to accept this I.D. as the entry to the receiving buffer. The animal/feeder assignment can be part of the 8 byte data frame to ensure animal feed consumptions are recorded correctly. Alternatively I could build a transmit code individual to every sensor node but include a common bit segment to be selected by the buffer mask. The animal entry into feeders will of course be random and collisions will be rare because of the fast CAN bus baud rate when when compared to the randon animal behaviour - however collisions will happen and I expect a queue until all coincident data has been passed. If the transmit I.D.s all have the same I.D. will bus arbitration work. I think it should since the process simply waits for a quiet bus. My question is: WHAT ARE THE BEST OPTIONS FOR SETTING UP A MULTI-SENSOR NODE COMMUNICATION WITH A CENTRAL DATA LOGGING NODE WHERE THE SYSTEM IS EVENT DRIVEN BY SENSOR DATA BECOMING AVAILABLE ? My experience with CAN bus is nil but it seems a good option for this application. An experienced comment would be immensely helpful. Colin Watson. Edinburgh