12-bit Addressing

I’ve been at this for days trying to read and write to a specific address on an ADAM 6022, address 40011. I have been talking with a tech support of Advantech and he says that you can read and write to that address. He says it is a holding register with an unsigned integer, but he also says it is a 12 bit address. There are other addresses on this device that I can read and write to and those addresses I just put in the address with no identifiers. Ex. OPC Item Path [Device name]41138.

I can however, read from the address 40011 using HR11, HRUS11, IR11, and IRUS11. But I can not write to it. I get the error message

“Error writing to MV Value.Value:
The access level does not allow writing to the
Node.”

The Access rights are set to Read/Write.

To add further notes I can read and write to that address using third party software like modscan. So it is an issue with ignition in some way or form. The only thing I can think of is the 12-bit address.

Is there anyway I can write to this address using ignition?

You’ve got this addressed as “HR11” directly, rather than through an address map? Is there an error in the gateway logs when you try to write to it?

I would expect that access level error maybe if you had it configured as an Input Register, which is not writable, but not Holding Register.

[quote=“Kevin.Herron”]You’ve got this addressed as “HR11” directly, rather than through an address map? Is there an error in the gateway logs when you try to write to it?

I would expect that access level error maybe if you had it configured as an Input Register, which is not writable, but not Holding Register.[/quote]

We only use the address map for multiple units like we have multiple ADAM 6016 and ADAM 6066. We know with those all the addressing schemes are the same and so it was easier to define them in ignition that way.

The 6022 which I am referring to, the only one of it’s kind, so it is actually easier to just directly correlate the tags to the addresses of that unit in the general settings of the tag. Like a said before we are writing and reading from other addresses from this module, so I do not know why I can only read from this address in ignition but read and write in other software to this address.

I have tried a holding register, however, this only changes the tag value that ignition sees and not the actual value on the module.

I get the error code when trying it is an input register yes. The gateway shoots this code.

Time	Logger	Message

ERROR 9:31:03 AM Provider[default] [[default]Filter Plant/PID/MV Value] Error writing to OPC address [[Ignition OPC-UA Server][FP-6022]IRUS11]. Result code: [Bad_NotWritable] The access level does not allow writing to the Node.

I have also tried just connecting to the register number without any identifiers (ex. [Device name]40011) which I have done on two other addresses on this module. But in doing so ignition will not make the connection to the tag. It red "X"s it.

Any ideas?

Edit: I get no errors in the gateway when it’s labeled as a holding register (ex.HR11). But it does not change the value in the module. It’s like the command vanishes into thin air over the network.

Can you get a Wireshark capture of you writing while the address is configured as a Holding Register?

You absolutely won’t be able to write to it if it’s configured as an Input Register, and the error code is expected, but an HR should work assuming the device allows it.

So just to be clear when writing to IRUS11 it is expected that you’ll get the above error message. IR is an input register (3x) and therefore non-writable (so IRUS11 would be trying to read from register 30011)

This may be a preaching to the choir moment (and if so I apologize), but looking at the user manual for the ADAM-6022 it looks like the Modbus addressing is zero based. When you configured the device in the gateway did you expand the advanced options and disable the “One-based Addressing” option? Otherwise you might be writing to 40010 or 40012 (I can never remember which way it would go when you don’t have zero-enabled enabled).

If that doesn’t work, I would also try toggling the “Reverse Word Order” option, watch the address above and below your 40011 address and make sure neither of them are changing when you write to it from Ignition.

Beyond that wireshark will definitely be your friend to see if any error codes are being sent back when you try to write to that modbus address.

[quote=“Kevin.Herron”]Can you get a Wireshark capture of you writing while the address is configured as a Holding Register?

You absolutely won’t be able to write to it if it’s configured as an Input Register, and the error code is expected, but an HR should work assuming the device allows it.[/quote]

Do I wireshark on the gateway computer? Or the client computer I am at currently at?

I also tried the suggestion below, “One-based Addressing” and “Reverse Word Order”, however, they did not work. I should have known this since I am reading and writing to 4 other registers with out a problem and I can read from the register I am trying to write to just fine.

You would want one Wireshark from the Ignition gateway machine to see what Ignition is reading and writing, and another capture from whatever machine you’re running Modscan on.

Sorry it took a long time to figure out how I was going to get wireshark to work and capture the right packets. These screen shots are of when I send out the write to that particular address.






Hopefully someone can make heads or tails of this information.

Can you attach or email us the actual wireshark capture? Was this capture from Ignition writing or from Modscan writing?

You know sometimes I read things and they just don’t connect until a lot later. You’re reading and writing correctly to other addresses in this device with no issues? It’s just this one (well at least two if my guess is right) addresses that don’t work?

… after you write to the problem address does it show the new value or does it go back to the previous value?

In ignition it changes to the value you set it as, then if you change the value in the third party software (which doesn’t see the change you made in ignition) then the value in both the third part software and the value in ignition change. Same thing if you use the advantech utility software for the device.

How do you get wireshark to save a file with specific packets? If I were to send you the whole file you would need to search for these specific packets


Also it says extension pcapng is not allowed, what should I save it as?

When you File > Export from Wireshark I think the default options are to export only the displayed packets.

You can email the captures to support @ indutiveautomation.com

Please make sure to capture both Ignition and the other software writing, in separate captures, and make sure to indicate which is which.

[quote=“water2@tds.net”]
In ignition it changes to the value you set it as, then if you change the value in the third party software (which doesn’t see the change you made in ignition) then the value in both the third part software and the value in ignition change. Same thing if you use the advantech utility software for the device.[/quote]

Interesting… so if you write to the tag in ignition it will never update the tag back to the actual value in the device, but remains it at the value you wrote from ignition? What’s the poll rate/scan mode of the tag in ignition?

Also the official software that came with the device has the same problem as ignition (write to the value, but it is never changed in the PLC, and it never reads the current value back in), but the third party software works correctly?

But it only does it for this specific tag, other tags in the device are being read from and written to from ignition correctly?

[quote=“abishur”][quote=“water2@tds.net”]
In ignition it changes to the value you set it as, then if you change the value in the third party software (which doesn’t see the change you made in ignition) then the value in both the third part software and the value in ignition change. Same thing if you use the advantech utility software for the device.[/quote]

Interesting… so if you write to the tag in ignition it will never update the tag back to the actual value in the device, but remains it at the value you wrote from ignition? What’s the poll rate/scan mode of the tag in ignition?

Also the official software that came with the device has the same problem as ignition (write to the value, but it is never changed in the PLC, and it never reads the current value back in), but the third party software works correctly?

But it only does it for this specific tag, other tags in the device are being read from and written to from ignition correctly?[/quote]

The third party software and official software write to the plc, ignition is the only software that the ADAM 6022 doesn’t seems to recognize the write to that particular address.

The poll scan rate is 5 seconds (no change after 5 seconds btw).

[quote=“Kevin.Herron”]When you File > Export from Wireshark I think the default options are to export only the displayed packets.

You can email the captures to support @ indutiveautomation.com

I think I see the problem though. Ignition is writing to single registers and it looks like the Advantech utility is writing to multiple registers.

I put them in a .zip file. So that should work.

Wireshark Adam 6022.zip (1.28 KB)

There’s an advanced setting on the driver to force it to use Write Multiple Register requests even when writing to a single register, give that a shot.

Tried it, but didn’t work.

If I get a chance to wireshark it today with force write multi “true” then I’ll send the data.

I looked at the original captures. You’re not writing to the same registers as the advantech utility.

In Ignition you’re writing to unit id 0, register 10

In Advantech you’re writing to unit id 1, registers 1039 and 1040

[quote=“Kevin.Herron”]I looked at the original captures. You’re not writing to the same registers as the advantech utility.

In Ignition you’re writing to unit id 0, register 10

In Advantech you’re writing to unit id 1, registers 1039 and 1040[/quote]

Thank you so much! I changed the opc item path to [ADAM-6022]HRUS1041 (“There is a step up in the number sequence”) and it worked! The range is 0-100,000, so I had to set a linear scale. But now I can control that value.

It’s amazing what the people working for/with inductive automation can do. I talked with a guy from Advantech (“The makers of the ADAM’s”), e-mailing back and forth, and he told me you can write to address 40010 and even the manual said you could. Yet I could not and nothing pointed me towards 41039-41040.

This problem has been officially solved.