Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Can gateway controller detect all controllers present on CAN Network?

Status
Not open for further replies.

naseeam

Member
Our PC Application is connected to Embedded Gateway Controller over USB. Gatewary controller is connected to several embedded controllers over CAN bus.
PC Application needs to know what embedded controllers are present on the CAN Network because
PC Application needs to exchange information with these embedded controllers through the Gateway
Controller.

How can Gateway Controller find out which embedded controllers are present on the CAN bus?

Thank you!
 
in general NO, it cannot...

for controller to successfully identify and communicate with nodes on a network some conditions must be met. for example hardware side of the network must be correct (min/max lengths not exceeded, no open or short circuits, proper termination etc.), settings have to match (all nodes must have unique and valid address, support same speed etc.). then finding out what is "out there" is easy - controller tries to talk to each node (blindly generates "hello" message to each node: 1, 2, 3, 4 ... ). nodes that reply are listed as present (and then further questioning takes place), nodes that do not reply are considered missing. it is like taking kids on a trip and going through list:
"is john here"
"is mary here"
"is stephen here"

this is to detect presence. only controller speaks and other nodes (kids) only reply when spoken to.
every message (to and from controller) must have node reference (address or here name "john", "mary", ...)
in human vocal conversation we tend to associate voice as identification of conversation partner.
in computer networks, there is no such thing but there is a substitute, message from each node includes it's name.
if you read books and there is a dialogue, it will be something like this (first word in each line is name of speaker or "node address"):

Mary: did anyone see grandpa?
John: he just went upstairs...

identification phase normally uses short messages just to narrow down list of present nodes (from tens or hundreds possible addresses).
after identification phase, one can get more verbose and collect additional details from those that are present:
"john, did you bring your inhaler"
"mary, did you pack sunscreen"

in computer network that would be:
"controller: node 3, identify yourself"
"node 3: i am I/O device model XYZ version NNN with 16 inputs and 8 outputs"
"controller: node 3, what is your status"
"node 3: faulted"

if there are two or more nodes with same address we have a problem, because both will try to reply and the result is collision.
if the wiring is not done properly, there can be no message exchange (noise, reflections, whatever...)

in certain networks like devicenet etc, scan list is downloaded to controller so it already knows corresponding nodes, size of mapped I/O etc.
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top