CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

How to scan device on RS485 Network

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
J_GROUP



Joined: 25 Aug 2015
Posts: 18

View user's profile Send private message

How to scan device on RS485 Network
PostPosted: Wed Oct 14, 2015 10:59 pm     Reply with quote

Hi Friends,

I need your ideas about how to scan to list device on haft-duplex rs 485 network.

I have project to make device with serial number (8 digits).
Now I want list devices connected to network (device with random serial number) with single comman : "Scan" from Master.

Please give me your idea about solution in this case.

Thank you
Ttelmah



Joined: 11 Mar 2010
Posts: 19433

View user's profile Send private message

PostPosted: Thu Oct 15, 2015 12:41 am     Reply with quote

Depends totally on the _protocol_ you are going to use/design. RS485, is a signalling standard, not a protocol. You need to be using a protocol 'over' the 485 signalling.
Now the standard way to implement such a thing is totally dependant on the serial number. The master implements a 'Broadcast serial request', to the bus, and the slaves then respond to this at an interval that is dependant on their serial number, to avoid clashing. Do you really mean 8 digit, or 8 bit?. With an 8 bit serial, you respond after (say) serial*2mSec, so the master can find all the devices in just over half a second, with serial#0 responding immediately, serial #10, responding after 20mSec, and so on.
Once the master has a list of the numbers, a packet addressed to device#10, is responded to by just this device, ASAP.
J_GROUP



Joined: 25 Aug 2015
Posts: 18

View user's profile Send private message

PostPosted: Thu Oct 15, 2015 8:10 am     Reply with quote

Thank for your reply,

I was tried solution as yours but have some problem.

I have 8 digits as resource for serial device.

That mean the biggest value of serial is 99999999

If following your solution,the longest delay time is 99999999*2ms

That impossible.
Ttelmah



Joined: 11 Mar 2010
Posts: 19433

View user's profile Send private message

PostPosted: Thu Oct 15, 2015 8:17 am     Reply with quote

Totally. But why on earth have a hundred million serial numbers?. You are never going to use more than perhaps fifty on any practical RS485 network.

If you are determined to have such a huge number, then you need to design a hash function, that calculates a short time from the number, in such a way that the probability of two devices getting the same time value is very low. Then add an ability to handle two devices clashing at the same time. Getting a lot more complex...
J_GROUP



Joined: 25 Aug 2015
Posts: 18

View user's profile Send private message

PostPosted: Fri Oct 16, 2015 11:16 am     Reply with quote

sir,
if you manuafactured and sell alot, you cannot control what serialnumber of devices on your customers network.
Ttelmah



Joined: 11 Mar 2010
Posts: 19433

View user's profile Send private message

PostPosted: Fri Oct 16, 2015 11:25 am     Reply with quote

Which is why you then design an efficient hash. This is how ethernet serials are used to generate exactly this sort of delay, or the numbers in SMBUS devices are also used when you perform an automatic ID allocation on this.
temtronic



Joined: 01 Jul 2010
Posts: 9197
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Fri Oct 16, 2015 12:28 pm     Reply with quote

'Old School' method
1) powerup Master
2) powerup a 'slave'
3) master sees this 'new' slave
3a) master assigns it an address and slave records it's address
4) repeat 2 and 3 as required...

When finished, master will have a list or table of all slaves in the network and all slaves will have unique addresses.

I did this 30 years ago when RS485 wasn't around. Each network consisted of a maximum of 32 slaves, propriatory protocol, hacker proof, network extended for about 15 miles.

Now while each slave can have an 8 digit address, RS485 is limited to less than 128 devices, usually less than 32 depending on the driver chip used.

Jay
J_GROUP



Joined: 25 Aug 2015
Posts: 18

View user's profile Send private message

PostPosted: Sat Oct 17, 2015 9:06 am     Reply with quote

dear Sir,

Thank for your reply,

I working on OmniBus Lighting control of Leviton security and Automation. That lighting system reach 255 node. That mean 255 slave on single network. I check their hardware very carefully, They using RS485 half duplex (RS 485 chip using is VP485, VP486)

Their software can read devices connected to RS485 network any time by serial number. I still dont know how they can do it so exactly

Now I have project have same function as them.

I have little successful for this method, but I think this way still not reliable.

So I need collect ideas from user of this forum. So thank for your time for me and I hope receive your new ideas
Ttelmah



Joined: 11 Mar 2010
Posts: 19433

View user's profile Send private message

PostPosted: Sat Oct 17, 2015 11:03 am     Reply with quote

It uses a protocol called Z-wave.
It just requests a reply, from each number in turn. This is done by the FI command, It supports 232 devices (some numbers are reserved). This builds the table that the master holds to know what is on the network. You can restrict the search also to 'types' of devices.
Once the table is built, it can talk immediately to the devices it knows about.
Perfectly OK for a small number of devices, but not for millions....

It is the sheer number of your devices that creates the problem.
Consider if you could use something akin to DHCP?.
Use a local ID and serial together and have the slave device issue a request. It means you will have to potentially arrange the bus as multi-master, so the client can initiate the request.
ezflyr



Joined: 25 Oct 2010
Posts: 1019
Location: Tewksbury, MA

View user's profile Send private message

PostPosted: Sat Oct 17, 2015 2:02 pm     Reply with quote

J_GROUP wrote:
sir,
if you manuafactured and sell alot, you cannot control what serialnumber of devices on your customers network.


Hi,

Well, this thread has fallen into total silliness.....

Being a skilled programmer is not just about coding, it's also about intelligent program design. In fact, a good case can be made that the latter is actually more important than the former....

If you are the manufacturer, why in heavens name even offer a 8 digit serial number? Clearly, nowhere near that many total nodes will ever exist on a network, so what's the point?

My company offers many different varieties of wired network connected sensors. In the days before flash memory, addresses were selected using DIP or rotary switches with a reasonable, finite address limit (32, 64, or 256 depending on the sensor type). Now, addresses are programmed and stored in non-volatile memory, but similar limits are coded into the firmware.
_________________
John

If it's worth doing, it's worth doing in real hardware!
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group