How to read 48 bit (3 words) via ModBus into a tag

Yeah I know, I’m just trying to find any documentation I can that might help. I just figured they might use a similar format. Either 1 - 6 byte register or 3 - 2 byte registers. same amount of data? I’m sure I can figure out the format with some playing. I’ll just have to extract the data and look at it on a binary level, and I’m sure I can figure it out, and then I can come back and get help on how to do it in ignition. I appreciate everyone’s help!

I’m still not having much luck. I’ve tried reading each register, and looking at the high and low byte, but they are always the same value?
I’m reading it into a OPC tag, then taking two expression tags and {Tag} & 0xFF for one and ({Tag} >> 8) & 0xFF for the other one?
I’ve tried reading the original register in all manner of variable types Int, Dec, Float, string, and always the same result. Any other suggestions?

It looks like I’m only decoding 1/2 of each register. The half I’m getting seems to match the first part of each one, so I guess I’m not seperating the two bytes correctly?
For example the first register of the 3 registers should be YM and I get 22 in both expression variables which does match the year, if I do the next register the dH I get 31 which matches the 31st, and the last one should be MS and I get 8 which matches the minutes.

Show your expresions.

{OPC Item Path}2.HR17047
{[.]RTC_DayofWeekSecondsRaw} & 0xFF
({[.]RTC_DayofWeekSecondsRaw} >> 8) & 0xFF

For each OPC tag, show its name and OPC Item path and current value.
For each expression tag, show its name and expression and current value.

Tag Name: RTC_DayofWeekSecondsRaw
Tag Path: {OPC Item Path}2.HR17049
Tag Value: 2,056
Tag Name: RTC_DayofWeek
Tag Path: {[.]RTC_DayofWeekSecondsRaw} & 0xFF
Tag Value: 8
Tag Name: RTC_Day
Tag Path: ({[.]RTC_DayofWeekSecondsRaw} >> 8) & 0xFF
Tag Value: 8

Those are the correct values broken out from 2056.

I agree and in each case both upper/lower bytes seem to have the same value. So I figured maybe I was doing something wrong.

I’m not convinced you are using the correct registers.
Any particular reason you are using unit #2?

Try [somedevice]1.HRUS12203, [somedevice]1.HRUS12204, and [somedevice]1.HRUS12205.

Yeah I’m using Ethernet to get to the device and the one IP address has multiple units on it. So unit 2 is should be the UPS module. This thing has 1 for the communications card, 1 for the main ups, 1 for each battery module, 1 for the room monitor. I’ll go double check it though to be sure.

Yeah it’s correct, 0 is the main device, 2 is UPM1, 6 is UPM5, 140 is the comm card, 246 is the environment card

Does it make a difference what data type I plug it into on the initial read? I also tried HR, IR, HRUS, IRUS as well.

Use HRUS.

ok, I still get the same value.

I have two of these systems, and each has two batteries I can check and all 4 read the same way. I get the correct value for the first half of the register but the 2nd half is always incorrect. So I think I’m reading the correct register… and I agree the number the initial tag matches what I’m decoding. So it must be the way I’m reading the initial value?
I don’t know, it just shouldn’t be this hard! LOL

That tells me it really doesn't work that way. What exact model numbers are these?

Part Number: 9P010D0009A00R2
Model #: 93PM

Hmm.

The PXGMS card’s manual is adamant that your addresses should be 1.HRUS12203, -4, and -5, as noted above. Try those, please.

It also says you should access the card’s web page and have it general modbus maps in CSV format for you for the definitive lists per unit.