Owner`s manual

78 | P a g e
MODBUS
DISCLAIMER
There is not a convention on the write-ability of registers. You may write to any register in the system
including registers THAT MAY DAMAGE OR DESTROY your Classic and attached equipment like
battery banks. Please make sure that you understand what you are doing before attempting to change any
settings (like battery voltage) using the raw MODBUS interface. MidNite Solar cannot take
responsibility for any damage to your Classic in the event of misconfiguration.
Registers and bits marked RESERVED are not necessarily unimplemented. Great care must be taken not
to overwrite these registers or bits to ensure proper operation of the Classic.
Wherever possible we have tried to indicate settings that may have an adverse effect on your system if set
incorrectly.
If you need to configure your system, please consider using the MNGP’s built in configuration wizard
which will step you through the process.
Conventions:
Register units are expressed using formulas to try to reduce the ambiguity surrounding converting from
the raw bus formats and human-readable values. Due to the nature of the Classic’s operation, there is not
a uniform convention as far as data endianness so you may find some classes of values that follow a Most
Significant Byte (MSB) first convention and others that use the Least Significant Byte (LSB) first
convention.
Bits are numbered from 0-15 in the little-endian or LSB-0 notation. That is, the least significant bit is
indexed by 0.
For Example, the number 43,981 is 0xABCD in hex is represented in binary as 1010101111001101.
The bit ordering is as shown in the following table:
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
1
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
So that the binary digit indexed by (0) is 1. (1) is 0, (6) is 1, and (10) is 0.
MODBUS registers are 16-bit (2-octet/byte) in size. When using values from the map to indicate
conversion formulas the following convention is used to access different octets:
Note that when talking about bytes or octets, it is more convenient to describe them in hexadecimal (base
16) form than in decimal. Some values are expressed in bytes as it is a more compact way of dealing with
certain classes of numbers (IP addresses, for example). We use the ‘C’ convention of referring to
hexadecimal numbers by prefixing them with ‘0x’. So the decimal value 10 is represented by the
hexadecimal value 0x0A.
A note on Read/Write: The Classic MODBUS does not strictly enforce the Read/Write accessibility of
some registers. It is possible to write to some registers marked Read Only. This will usually have no effect
on Classic operation, but in some cases you may corrupt a register from which you wanted to read data. In
some cases the registers are reset internally as new values. Additionally, some counters are accessible
directly. For example, the AbsorbTime (4139) timer is a “suggested” read only register; however, if your