--------------------------------------------------------------------------------
 ModbusTCP registers (P8510, P8511, P8541, P8552, P8610, P8611, P8631,
                      P8641, P8652, P8653)

 standard ModbusTCP port: 502

 v5.0 for firmware 4-5-8-2, 2023-02-24
 ModbusTCP specification is free available: http://modbus.org/specs.php
--------------------------------------------------------------------------------


List of Supported Modbus commands
--------------------------------------------------------------------------------

|-------------------------------------|-------|--------------------------------|
| Command                             | Code  | Description                    |
|                                     | [HEX] |                                |
|-------------------------------------|-------|--------------------------------|
| Read Holding Register(s)            | 0x03  | Reads 16 bit register(s)       |
|-------------------------------------|-------|--------------------------------|
| Read Input Register(s)              | 0x04  | Reads 16 bit register(s)       |
|-------------------------------------|-------|--------------------------------|


Device informations
--------------------------------------------------------------------------------

|-------------------|--------|--------|-----|--------|-------------------------|
| Variable          | Adr.   | Adr.   | Nr. | Type   | Description             |
|                   | [HEX]  | [DEC]  |     | *)     |                         |
|-------------------|--------|--------|-----|--------|-------------------------|
| serial number     | 0x9C22 | 39970  | 1   | BCD    | 1st two digits of s/n   |
|                   | 0x9C23 | 39971  | 1   | BCD    | 2nd two digits of s/n   |
|                   | 0x9C24 | 39972  | 1   | BCD    | 3rd two digits of s/n   |
|                   | 0x9C25 | 39973  | 1   | BCD    | 4th two digits of s/n   |
|-------------------|--------|--------|-----|--------|-------------------------|
| device type       | 0x9C26 | 39974  | 1   | HEX    | 0x1100 ... P8511        |
|                   |        |        |     |        | 0x1101 ... P8541        |
|                   |        |        |     |        | 0x1102 ... P8510        |
|                   |        |        |     |        | 0x1103 ... P8610        |
|                   |        |        |     |        | 0x1104 ... P8631        |
|                   |        |        |     |        | 0x1106 ... P8611        |
|                   |        |        |     |        | 0x1107 ... P8641        |
|                   |        |        |     |        | 0x1108 ... P8652        |
|                   |        |        |     |        | 0x1109 ... P8552        |
|                   |        |        |     |        | 0x110A ... P8653        |
|-------------------|--------|--------|-----|--------|-------------------------|


Measured values
--------------------------------------------------------------------------------

|-------------------|--------|--------|-----|--------|-------------------------|
| Variable          | Adr.   | Adr.   | Nr. | Type   | Description             |
|                   | [HEX]  | [DEC]  |     | *)     |                         |
|-------------------|--------|--------|-----|--------|-------------------------|
| actual value ch1  | 0x9C27 | 39975  | 1   | Int*10 | register is in format   |
| actual value ch2  | 0x9C28 | 39976  | 1   | Int*10 | of integer*10 - 16bit;  |
| actual value ch3  | 0x9C29 | 39977  | 1   | Int*10 | error value <= -11000   |
| actual value ch4  | 0x9C2A | 39978  | 1   | Int*10 |                         |
| actual value ch5  | 0x9C2B | 39979  | 1   | Int*10 |                         |
|-------------------|--------|--------|-----|--------|-------------------------|
| unit on ch1       | 0x9C2C | 39980  | 1   | String | unit on the channel     |
| unit on ch2       | 0x9C2D | 39981  | 1   | String | "C", "F", "RH"          |
| unit on ch3       | 0x9C2E | 39982  | 1   | String |                         |
| unit on ch4       | 0x9C2F | 39983  | 1   | String |                         |
| unit on ch5       | 0x9C30 | 39984  | 1   | String |                         |
|-------------------|--------|--------|-----|--------|-------------------------|
| alarm state ch1   | 0x9C31 | 39985  | 1   | Int2   | 0 ... none              |
| alarm state ch2   | 0x9C32 | 39986  | 1   | Int2   | 1 ... high alarm        |
| alarm state ch3   | 0x9C33 | 39987  | 1   | Int2   | 2 ... low alarm         |
| alarm state ch4   | 0x9C34 | 39988  | 1   | Int2   |                         |
| alarm state ch5   | 0x9C35 | 39989  | 1   | Int2   |                         |
|-------------------|--------|--------|-----|--------|-------------------------|

|-------------------|--------|--------|-----|--------|-------------------------|
| actual value ch1  | 0x9C40 | 40000  | 1   | Int*10 | register is in format   |
| actual value ch2  | 0x9C46 | 40006  | 1   | Int*10 | of integer*10 - 16bit;  |
| actual value ch3  | 0x9C4C | 40012  | 1   | Int*10 | error value <= -11000   |
| actual value ch4  | 0x9C52 | 40018  | 1   | Int*10 |                         |
| actual value ch5  | 0x9C58 | 40024  | 1   | Int*10 |                         |
|-------------------|--------|--------|-----|--------|-------------------------|
| alarm state ch1   | 0x9C41 | 40001  | 1   | String | "no" ... none           |
| alarm state ch2   | 0x9C47 | 40007  | 1   | String | "hi" ... high alarm     |
| alarm state ch3   | 0x9C4D | 40013  | 1   | String | "lo" ... low alarm      |
| alarm state ch4   | 0x9C53 | 40019  | 1   | String |                         |
| alarm state ch5   | 0x9C59 | 40025  | 1   | String |                         |
|-------------------|--------|--------|-----|--------|-------------------------|
| upper limit ch1   | 0x9C42 | 40002  | 1   | Int*10 | register is in format   |
| upper limit ch2   | 0x9C48 | 40008  | 1   | Int*10 | of integer*10 - 16bit   |
| upper limit ch3   | 0x9C4E | 40014  | 1   | Int*10 |                         |
| upper limit ch4   | 0x9C54 | 40020  | 1   | Int*10 |                         |
| upper limit ch5   | 0x9C5A | 40026  | 1   | Int*10 |                         |
|-------------------|--------|--------|-----|--------|-------------------------|
| lower limit ch1   | 0x9C43 | 40003  | 1   | Int*10 | register is in format   |
| lower limit ch2   | 0x9C49 | 40009  | 1   | Int*10 | of integer*10 - 16bit   |
| lower limit ch3   | 0x9C4F | 40015  | 1   | Int*10 |                         |
| lower limit ch4   | 0x9C55 | 40021  | 1   | Int*10 |                         |
| lower limit ch5   | 0x9C5B | 40027  | 1   | Int*10 |                         |
|-------------------|--------|--------|-----|--------|-------------------------|
| hysteressis ch1   | 0x9C44 | 40004  | 1   | Int*10 | register is in format   |
| hysteressis ch2   | 0x9C4A | 40010  | 1   | Int*10 | of integer*10 - 16bit   |
| hysteressis ch3   | 0x9C50 | 40016  | 1   | Int*10 |                         |
| hysteressis ch4   | 0x9C56 | 40022  | 1   | Int*10 |                         |
| hysteressis ch5   | 0x9C5C | 40028  | 1   | Int*10 |                         |
|-------------------|--------|--------|-----|--------|-------------------------|
| delay ch1         | 0x9C45 | 40005  | 1   | Int    | register is at range    |
| delay ch2         | 0x9C4B | 40011  | 1   | Int    | of 0-65535 [sec]        |
| delay ch3         | 0x9C51 | 40017  | 1   | Int    |                         |
| delay ch4         | 0x9C57 | 40023  | 1   | Int    |                         |
| delay ch5         | 0x9C5D | 40029  | 1   | Int    |                         |
|-------------------|--------|--------|-----|--------|-------------------------|

|-------------------|--------|--------|-----|--------|-------------------------|
| ch1 min. value    | 0x9C5E | 40030  | 1   | Int*10 | register is in format   |
| ch2 min. value    | 0x9C5F | 40031  | 1   | Int*10 | of integer*10 - 16bit   |
| ch3 min. value    | 0x9C60 | 40032  | 1   | Int*10 | error value = -11000    |
| ch4 min. value    | 0x9C61 | 40033  | 1   | Int*10 |                         |
| ch5 min. value    | 0x9C62 | 40034  | 1   | Int*10 |                         |
|-------------------|--------|--------|-----|--------|-------------------------|
| ch1 max. value    | 0x9C63 | 40035  | 1   | Int*10 | register is in format   |
| ch2 max. value    | 0x9C64 | 40036  | 1   | Int*10 | of integer*10 - 16bit   |
| ch3 max. value    | 0x9C65 | 40037  | 1   | Int*10 | error value = -11000    |
| ch4 max. value    | 0x9C66 | 40038  | 1   | Int*10 |                         |
| ch5 max. value    | 0x9C67 | 40039  | 1   | Int*10 |                         |
|-------------------|--------|--------|-----|--------|-------------------------|


Binary inputs
--------------------------------------------------------------------------------

|-------------------|--------|--------|-----|--------|-------------------------|
| Variable          | Adr.   | Adr.   | Nr. | Type   | Description             |
|                   | [HEX]  | [DEC]  |     | *)     |                         |
|-------------------|--------|--------|-----|--------|-------------------------|
| bin1 state        | 0x9C36 | 39990  | 1   | Int1   | 0 ... open              |
| bin2 state        | 0x9C37 | 39991  | 1   | Int1   | 1 ... closed            |
| bin3 state        | 0x9C38 | 39992  | 1   | Int1   |                         |
| bin4 state        | 0x9C39 | 39993  | 1   | Int1   |                         |
| bin5 state        | 0x9C3A | 39994  | 1   | Int1   |                         |
|-------------------|--------|--------|-----|--------|-------------------------|
| bin1 alarm state  | 0x9C3B | 39995  | 1   | Int1   | 0 ... none              |
| bin2 alarm state  | 0x9C3C | 39996  | 1   | Int1   | 1 ... alarm active      |
| bin3 alarm state  | 0x9C3D | 39997  | 1   | Int1   |                         |
| bin4 alarm state  | 0x9C3E | 39998  | 1   | Int1   |                         |
| bin5 alarm state  | 0x9C3F | 39999  | 1   | Int1   |                         |
|-------------------|--------|--------|-----|--------|-------------------------|


Notice
--------------------------------------------------------------------------------

 In table are stated addresses of the Modbus registers (Adr.). Modbus register
 number is plus one than address of register (e.g. register with number 0x9C41
 have the Modbus address 0x9C40). Inside Modbus TCP frames are physically
 send address.


*)  Type:

    BCD ...... register is in BCD format (16bit)
    HEX ...... number in HEX format (16bit)
    Int ...... register is in range 0 to 65535 (16bit)
    Int1 ..... register is in range 0 to 1 (16bit)
    Int2 ..... register is in range 0 to 2 (16bit)
    Int*10 ... register is in format integer*10 (16bit); 125=12.5C;
               error1=-11001, error2=-11002, n/a=-11000
    String ... two bytes text via one 16bit modbus register

