Sign in to follow this  
Followers 0
jaxrpc

Modbus addressing

6 posts in this topic

Hi, I am new to modbus protocol, now i need to get data from 3 different devices with 20 AI and DI data each. Do i assign the modbus addresses to each of the AI , DI of these devices (i.e. i define the addresses) or these addresses are usually fixed and to be given to the vendor or these address can be reconfigured. the address range is 4xxxx or 4xxxxx ? saw different addressing range. I am more of a software person and pretty new to these. I am using Citect with modbus/tcp, i am now doing the programming portion for citect has not connected to the devices (have to wait for devices to be ready) but i would like to gain more knowledge on modbus so i will not be stumbled during testing. thanks, Eugene

Share this post


Link to post
Share on other sites
The devices will generally have info on the actual location of the data that you require and you are correct in that the analogue values will be something like 40001 or 40002 etc... generally bit level is at 10000 but since you are getting them in address registers the devices might only respond to 4xxxxx requests.. as such you will then read them into citect and maniplate at bit level then.

Share this post


Link to post
Share on other sites
generally bit level is at 10000 but since you are getting them in address registers the devices might only respond to 4xxxxx requests.. as such you will then read them into citect and maniplate at bit level then. sorry for my poor understanding, i don't quite get it. You meant that bit is in the 10000's range, so do i assign 10000 addresses? and reading them into citect and manipulate at bit level?

Share this post


Link to post
Share on other sites
This is a sort of addressing structure for Modbus: 1xxxx digital inputs(Boolean) Read-only 3xxxx analog inputs(16 bit) Read-only 4xxxx internal registers (16 bits) Read/Write 0xxxx internal bits(Boolean) REad/Write Whatever data you get will be in these address ranges. Generally, devices like PID controllers transmit analog data over 3xxxx and digital on 1xxxx. what you write to the device thru SCADA like Citect, this is done thru 4xxxx for analog and 0xxxx for digital. Mnipulating 4xxxx is that, in cases where only such registers are read/written, here the boolean data needs to be mapped to 4xxxx registers. Ex. if u have a device which gives certain status in boolean fromat, and only 4xxxx are communicating, then this satus bit is mapped to abit of 4xxxx, read as 4xxxx:1 in case of second bit of that particular 4xxxx register. Similarly u can write the same to 4xxxx. Regards, Mandar

Share this post


Link to post
Share on other sites
Have you started by reading the Citect driver help file for Modbus ? It gives detalied answers to every question that you have asked. Go to Citect Project Editor then Help>Driver Help

Share this post


Link to post
Share on other sites
Citect is the Modbus master. The Modbus master generates the queries to the slave devices or writes data to the slave devices. Each brand/model slave device defines its own modbus map defining which value resides where. The Modbus map is provided in the slave's documentation. It is up to the Modbus master to query the appropriate address from the appropriate slave for the data the master needs. Some slave devices have the same data in different registers in different formats. For instance, a value might reside at 40401 & 40402 as a floating point value, but at 40105 as an integer. Some slave devices 'pack' a byte with discrete boolean values, so that a read gets the results of multiple 'points'. The received value that has to be 'unpacked' and the appropriate bit(s) examined. Dan

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0