Recommended Posts

I am trying to read register (400xx's) value through a Banner radio connected to a Murphy controller via DAQFactory.

For some reason it is saying the max register number I can read is 25535.

I then connected a transducer to the same Banner radio and I was able to check the 400xx's series register value via DAQFactory.

What can be the error here?

Share this post


Link to post
Share on other sites

25535 or 65535?  (65535 is 2 to the 16th - 1 and a number you see often in computers, 25535 is not seen often and looks like a typo of 65535).

It is important to understand that Modbus register addressing style can vary from manufacturer to manufacturer.  Some manufacturers use 40,000 notation, so that 40,001 is the first holding register.  This translates to register 0 in the actual Modbus communication packet (strip the 4 and subtract 1).  It also limits one to 9,999 holding registers.  Other manufacturers use 0 notation, so that 0 is the first holding register and matches with the Modbus communication packet.  In this case, there are 65535 possible holding registers locations.  The problem is that a number of manufacturers just flat out misunderstand all this, and will say that there register is, say, 42,323, which one would read as either 2322 or 42,323 depending on which of the two notations they were using, but the manufacturer will actually subtract one without stripping the 4, so they expect 42,322 in the packet.  This is just wrong, and confusing.

In your case, it is hard to tell.  DAQFactory attempts to automatically figure out which notation you are using.  If you only provide holding and input registers in the 30,000 (input) and 40,000 (holding) range, then it assumes you are using the strip 4, subtract 1 notation, and it will do that, making 40,001 into 0.  If, however, you read a register below 30,000 (or above 50,000) it will assume that all your registers are in 0 notation and send them as is.  It sounds a bit like DAQFactory it is doing this, treating 40,001 as 40,001 and not as 0.  You'd have to look at the actual packet to be sure, or just check and see if you are reading registers below 30,000.  

Share this post


Link to post
Share on other sites

I'm not sure I helped.  I would try manually adjusting all your registers to 0 notation. I  almost always do this.  So if the manual says 40,001, strip the 4 and subtract 1 and put 0 in the Channel # in DAQFactory.  So, 41,234 would become 1233.

Share this post


Link to post
Share on other sites

You actually explained the way how it works, which was helpful.

I know even the question was bit confusing and not clear, but I appreciate your help.

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