InTouch and SCADAPack (modbus)

T

Thread Starter

Tim

Here's an interesting one...

I've got an old InTouch 6.0b application (that I can't upgrade for now), talking to a SCADAPack over Wonderware's MODBUS driver.

SCADAPack has internal addresses as follows: 49780(integer), 49781-49782(float),and 49783-49784(float).
I can poll the integer using an item name of "49780 I" and get correct results, but for the float registers it seems I need to offset the register to -1. So, if I poll the second float set using "49782 F" (for 49783-49784) the correct results come in, however that means that for the first set, I'm using "49780 F" (for 49781-49782) and I'm getting results that seem to have all three registers combined.

If anyone has had similar past experiences I would greatly appreciate some input on this as I am at an impasse.
 
you may try it as following:

49780(integer): modbus address 49779
49781-49782(float): modbus address 49780
49783-49784(float): modbus address 49782

good luck : )
 
Tim
I have seen similar problems. I believe your problem originates in the way the floating point numbers are stored. Consider the following example using your registers
49781 - ls register number 1
49782 - ms register number 1
49783 - ls register number 2
49784 - ms register number 2

If your host is assumming the float to be stored as ms/ls and you specify 49782 as the address the float will be comprised of ms number 1 plus ls number 2. Because the ls portion of the number contributes relatively little the float produced using ms number 1/ls number 2 will be close in value to the actual number 1.

To correct the problem you have to either change the order in which the remote stores the float or change the way the host interprets it. You will have to check your system to see what control you have over specifying the storage order. Many systems will have a check box identified as Modbus format to control the storage order for floats.

Regards
Lorne
 
E
What happens if you use Absolute Address item convention?

To get the absolute address substract 40001 from your relative address.

Try with items like 9779 HR, 9781 HRF and 9783 HRF.

Well. Try also adding or substracting 1...:)

HTH.Eugenio.
www.codefreaks.net
 
T
hello every one,

It seems that you are adressing scAdapack with registers adresses. So instead of call "nnnnn F" (nnnnn=modbus address), to read register, try "nnnnn HRF", "nnnnn IRF" wether it musts be treated as input register or holding register (nnnnn through 0-65535 for 32 bit floating point). an other notation "nnnnn PV" (process variable) refers to holding registers but assumes 2 registers per floating point numbers. "nnnnn" now goes through 0 PV to 32767 PV.

good luck...
Teva Luc ROBSON
 
Top