-
Notifications
You must be signed in to change notification settings - Fork 1
Home
TBW
There are two kinds of monitoring messages received from the device. There is a "CM2024 SUP" message every second which seems to be an overall status and is used to indicate that a battery is ready to charge (and possibly other things I am yet to figure out). The second type of message is a "CM2024 DAT" which returns the status of each slot independently.
First a message like this will arrive
43 4D 32 30 32 34 20 53 55 50 CM2024 SUP
Followed by another fixed length message like this:
02 00 7B 01 EE 02 0D 00 82 78 78 78 78 78 78 78
78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78
78 98 16 0D 0A
Then when a battery is inserted it will switch to something like:
01 00 7B 01 ED 02 09 00 13 00 01 01 00 02 00 00
00 3C 05 05 00 08 78 78 78 78 78 78 78 78 78 78
78 73 26 0D 0A
78 is a filler value for no data
So far I have figured out the following:
Offset | Description |
---|---|
01 | Unknown |
02 | Unknown |
03 | Unknown |
04 | Unknown |
05 | Unknown |
06 | Unknown |
07 | Unknown |
08 - 09 | Sequence Counter going from 0x0000 to 0x0257 (0-599) in increments of 13 - Little Endian |
10 | Slot awaiting setup (see slot table) |
11 | Chemistry selected (See chemistry table) |
12 | Program selected (See program table) |
13 | Selected maximum charge current (applicable for NiHM/Cd only) (see charge current table) |
14 | Selected discharge rate (see discharge table) |
15 - 16 | Selected capacity in mAh in units of 1. Little Endian |
17 | SD card status (see table) |
18 | Cool time in minutes |
19 | Unknown |
20 | Unknown |
21 | Unknown |
22 | SD Slot status |
23 | Unknown |
24 | Unknown |
25 | Unknown |
26 | Unknown |
27 | Unknown |
28 | Unknown |
29 | Unknown |
30 | Unknown |
31 | Unknown |
32 | Unknown |
33 | Unknown |
34 - 35 | Unknown - likely a CRC16 |
36 - 37 | Always 0D 0A - \r\n |
Offset | Description |
---|---|
01 - 02 | Sequence Counter going from 0x0000 to 0x0257 (0-599) and resetting - big endian |
03 | Slot number (see slot table) |
04 | Chemistry (see chemistry table) |
05 | Unknown flag - either 0 or 1 |
06 | Program state - always the same as the next value (in 06) unless the program finishes and then it's 0B |
07 | Program (see program table) |
08 | Activity Step (see activity table) |
09 - 10 | Time in minutes - big endian. When Ready, this will stop. |
11 - 12 | Voltage in units of 0.001 (big endian). e.g. 5F 07 = 1.887 |
13 - 14 | Current in units of 0.001 (big endian). E.g. 17 02 = 0.535 |
15 - 18 | C-CAP stored in units of 0.01 (big endian) |
19 - 22 | D-CAP stored in units of 0.01 (big endian). e.g. 3D 88 01 00 = 1004.13 |
23 | Unknown |
24 | Unknown |
25 | Maximum charge current (see table) |
26 | Unknown |
27 | Unknown |
28 | Pause time in minutes. Windows software allows increments of 30 mins so not sure if other values supported |
29 - 30 | Battery capacity in mAh - big endian |
31 | Discharge rate (see discharge rate table) |
32 | Unknown - Sometimes the same as previous value in 31 so it’s related |
33 | Unknown |
34 - 35 | Checksum - CRC-16/MODBUS calculated from bytes 02 to 33 |
36 - 37 | Carriage return - always 0D 0A (i.e. \r\n) |
Control messages are send from the PC software to the device. These messages are always 13 bytes long and look like this:
02 00 00 00 00 00 00 00 00 00 01 9D 69
The first byte is always the command type as follows:
Value | Command |
---|---|
01 | Start program |
02 | Cancel |
03 | Set LCD brightness |
When the CM2024 SUP message has values in 10 to 18, the charger is indicating that it is ready to receive the start command. In the windows software, this makes the slot blue allowing you to fill out the fields.
This is a set of common enumerated values which appear in various messages.
Value | Description |
---|---|
00 | Slot 1 |
01 | Slot 2 |
02 | Slot 3 |
03 | Slot 4 |
04 | Slot 5 |
05 | Slot 6 |
06 | Slot 7 |
07 | Slot 8 |
08 | Slot A |
09 | Slot B |
Value | Description |
---|---|
01 | NiHM/Cd |
02 | NiZn |
Value | Description |
---|---|
00 | None / slot empty |
01 | Recharge |
02 | Discharge |
03 | Procharge |
04 | Cycle |
05 | Alive |
06 | Maximize |
07 | No setup |
08 | Unknown |
09 | Unknown |
0A | Error |
0B | Complete |
Value | Description |
---|---|
00 | Idle |
01 | Charging |
02 | Discharging |
03 | Ready |
04 | Unknown |
05 | Cool Down |
06 | Error |
Value | Description |
---|---|
00 | Not Applicable (NiZn) |
01 | 500mA |
02 | 1000mA |
03 | 1500mA |
04 | 2000mA |
05 | 2500mA |
06 | 3000mA |
The values are interpreted differently depending on the chemistry
Value | Description |
---|---|
01 | 150mA |
02 | 300mA |
03 | 450mA |
04 | 600mA |
Value | Description |
---|---|
01 | 125mA |
02 | 250mA |
03 | 375mA |
04 | 500mA |
05 | 625mA |
06 | 750mA |
Value | Description |
---|---|
00 | SD off |
01 | Unknown |
02 | On / Ready |
Value | Description |
---|---|
00 | NO CARD |
01 | Unknown |
02 | Unknown |
03 | Unknown |
04 | Unknown |
05 | Unknown |
06 | Unknown |
07 | Inserted |
08 | Ready |