Yup. Modbus just sends you a 16-bit value (sometimes you have to combine two of them if it is a 32-bit value). The interpretation thereof, whether it is signed or unsigned, is something that is up to you. Values that cannot be negative (such as the yield) will be an unsigned integer. And the moment it goes over halfway (32767) it becomes negative.
I assume you mean uint. I see in the later versions they prefer uint16, which is technically more accurate.
I can tell you a tale about this. So one day, I get a call from someone whose battery is requesting a negative maximum charge current. I investigate. I see that this is a battery with a massive capacity, around 3500Ah. The protocol says, you send this value as a signed integer, with one place sacrificed for a decimal.
This means it can handle -3276.8A to 3276.7A values. But why on earth would we ever want this value to be negative? This should have been a uint (which would allow up to 6553.5A), and the decimal could have been dropped, which would allow up to 65535A. That should be enough for anyone… at least for now. So I look at the spec sheets for the top three batteries, and every single one of them got it wrong. Probably because we all copied from the same original…
To make it funnier, the charge voltage… that one is specified as unsigned. Now voltage actually CAN be negative (even though it still makes no sense), but here the spec went with uuint… and again everyone just copied it.