Modbus TCP driver to RS485 Device

I am trying to replicate the modbus enquiry in the image and would like to know how to add this request in MODBUS TCP driver. I am attempting to send this request via a TCP driver to a MOXA 3280 and ten on through slave ID 1 2 wire RTU RS485

from this I seem to get a transmit signal pulse from the Moxa every coupleof seconds but there is no receive. Having created a tag this toggles between green and red as shown.

image
image

I am missing something somewhere and would appreciate any feedback.

Why do you have unit ID set to 0 instead of 1?

Initially I had this set to 0 and then 1 attempting to get a response only due to the university clip.
since then i have connected via my laptop using a RS232 to 2 wire 485 converter direct to the unit and these are the results.
I am also asking Moxa for support but am sure they will come back with the way that Ignition is set up.

Having managed to get data from the Modbus device i have then used a TCP client to request data through the Moxa serial converter.

The device settings in Ignition are as below

This then gave the tags

image

I am unable to change the data source to equal the same results as per the TCP client and need some assistance, also the data only changes when the request is sent via the client so is there a way to send a request with the device set up?

Have you tried setting the starting “Modbus Address” to 1 instead of 0?

Great that has now fixed the update issue.

Although it fixes the issue on 1 address (G41) is then does not work on the second (G4) is there a way to regulate the scan? if the Modbus address is 1 then i get a null response but if it is 0 then i get values but no update?


if I do a scan on the simply Modbus TCP client this then updates the holding registers.

Unless you’ve changed the “One-based addressing” setting on the driver to be false, starting at Modbus Address 0 is going to be wrong and you should stop tinkering with that. I can see from the Modscan logs that it’s set up the same way Ignition’s driver is (40001 == HR1 == protocol offset 0).

It might help if you captured some Wireshark logs with those 2 mappings set up starting at Modbus Address 1, but it’s starting to sound like the device you’re talking to on the other end is junk.

Finally worked out that the junk at the end as so nicely put can only handle certain requests and 6 was the magic number for the 2 devices to get the data I require.

Also the HR should have been looking for unsigned integers which is why making the figures all wrong.

image

The next issue I have is to mathematically work out in ignition the sum of 1_G1_4 in hex (8=8) and 1_G1_5 in hex (19754=4D2A ) then put the 2 together giving 84D2A finally then transfering this back to decimal 84D2A=544042
Does anyone have any idea how to do this? I will trawl the forum for similar questions but probably know i would be the only one asking for this!

Something like this in an expression tag: fromHex(toHex({[~]Tag1})+toHex({[~]Tag2}))

Any reason you aren’t using the HRI or HRUI address formats?

Phil, I did try using the manual formatting but again it returned a null reading although I would have had to use an HRUS and it seems throughout this challenge the Modbus info from the meter manufacturer was poor.
As for the expression tag this worked perfectly, thanks Kevin.

No, HRUS is a 16-bit value. Kevin's expression combines two 16-bit values into a 32-bit value. HRI or HRUI should have worked. Consider skipping the mapping in the device (it's optional) and directly entering [devicename]2.HRI4 in a new tag's OPC item path.