UPS MetaSystem PUBLIC Protocol 1.20b
UPS MetaSystem PUBLIC Protocol 1.20b
All the numeric data are little-endian, i.e. are sent LSB first.
The "check" byte is computed as the sum modulus 256 of all the bytes in the packet
except the STX and the check byte itself.
In order to flush the receiver buffer of UPS, send 255 bytes of NUL (ASCII 0) without
expecting any answer.
The serial communication is half duplex: while the UPS is sending an answer to a pending
packet, the receiver is disabled.
1
Applies to…
2
Common commands
#0 UPS info (read):
Request command:
byte =0
Answer:
byte Command (replica of the request command)
byte ID code (family code - see model table)
byte Config (number and/or type of modules - see model table)
word Maximum active power (W)
byte Firmware version
byte Firmware subversion
char [1 ..12] Serial number
3
#4 Battery data (read):
Request command:
byte =4
Answer:
byte Command (replica of the request command)
word Actual value (V*10)
word Reserve Threshold (V*10)
word Exhaust Threshold (V*10)
#6 Scheduling (read):
Request command:
byte =6
Answer:
byte Command (replica of the request command)
longint Remaining time to shutdown (s) { -1: no shutdown }
longint Programmed time to restart (s) { -1: no restart }
4
29: Hardware Fault: Booster Overheat
30: Hardware Fault: Inverter Booster Overheat
31: Hardware Fault: P.F.C. Booster Overheat
32: Hardware Fault: Inverter P.F.C. Booster Overheat
33: Hardware Fault: Battery charger
34: Hardware Fault: Overheat & Battery charger
35: Output Plug Removed
# 10 Scheduling (set):
Request command:
byte = 10
longint Remaining time to shutdown (s) { -1 = no shutdown }
longint Programmed time to restart (s) { -1 = no restart }
Answer:
byte Command (replica of the request command)
longint Remaining time to shutdown (s) { -1 = no shutdown }
longint Programmed time to restart (s) { -1 = no restart }
N.B.: If a selected time is longer than the maximum allowed the UPS uses the maximum
and reports this in the answer.
5
# 12 Times on battery (set):
Request command:
byte = 12
word Max time on battery (s) { 0 = not purposedly limited }
word Max time after battery reserve (s) { 0 = not purposedly limited }
byte not 0 -> Autorestart after battery depleted enabled
Answer:
byte Command (replica of the request command)
word Max time on battery (s) { 0 = not purposedly limited }
{ -2: not available }
word Max time after battery reserve (s) { 0 = not purposedly limited }
{ -2: not available }
byte not 0 -> Autorestart after battery depleted enabled
N.B.: If a selected time is longer than the maximum allowed the UPS uses the maximum
and reports this in the answer.
6
“ECO” specific commands
# 19 Stabiliser level (read):
Request command:
byte = 19
Answer:
byte Command (replica of the request command)
byte Stabiliser set level (1..3)
7
“HF” specific commands
# 21 No load threshold (set):
Request command:
byte = 21
word No load threshold (W)
Answer:
byte Command (replica of the request command)
word No load threshold (W)
N.B.: If the threshold is above or below the allowed range the UPS uses the maximum
or minimum value respectively.
This will be reported in the answer.
8
# 25 Bypass (set):
Request command:
byte = 25
byte not 0 -> Bypass enabled
byte not 0 -> Bypass is forced
byte not 0 -> Off-line mode of operation
byte not 0 -> Load Waiting Mode enabled
Answer:
byte Command (replica of the request command)
byte not 0 -> Bypass enabled
byte not 0 -> Bypass is forced
byte not 0 -> Off-line mode of operation
byte not 0 -> Load Waiting Mode enabled
N.B.: Load Waiting Mode, Off-line mode and forced bypass can not be enabled if the
bypass is disabled.
# 26 Bypass (read):
Request command:
byte = 26
Answer:
byte Command (replica of the request command)
byte not 0 -> Bypass enabled
byte not 0 -> Bypass is forced
byte not 0 -> Off-line mode of operation
byte not 0 -> Load Waiting Mode enabled
9
# 31 Bus voltages (read):
Request command:
byte = 31
Answer:
byte Command (replica of the request command)
word Positive bus voltage
word Negative bus voltage (absolute value)
10
“ALLY HF” specific commands
# 21 No load threshold (set):
same as HF specific command ( # 21 )
# 25 Bypass (set):
same as HF specific command ( # 25 )
# 26 Bypass (read):
same as HF specific command ( # 26 )
11
“MEGALINE” specific commands
# 21 No load threshold (set):
same as HF specific command ( # 21 )
# 25 Bypass (set):
same as HF specific command ( # 25 )
# 26 Bypass (read):
same as HF specific command ( # 26 )
12
# 39 Battery autonomy management (read / set):
Request command:
byte = 39
byte 0 -> Set classic management
1 -> Set S.O.C. management
2 -> Read actual status
Answer:
byte Command (replica of the request command)
byte Actual battery autonomy management
0: Classic management
1: S.O.C. management
13
# 45 Output voltage control (read):
Request command:
byte = 45
Answer:
byte Command (replica of the request command)
byte Output set level (V)
byte not 0 -> Output 60 Hz
byte not 0 -> PLL inhibited
byte not 0 -> Extended PLL lock range
byte Dip detector speed:
1 -> fast
2 -> standard
3 -> slow
14
37 = Watchdog reset
38 = Battery Startup failed
39 = Battery Calibration aborted by user
40 = Mains Power: SAG
41 = Mains Power: SWELL
42 = Mains Power: BROWNOUT
43 = Mains Power: SPIKE
44 = Mains Power: Harmonic distortion
45 = Neutral Voltage: SWELL
46 = Neutral Voltage: SPIKE
byte Event Code - extended byte 1
byte Event Code - extended byte 2
byte Event Memory Position
# 48 Date/Time (set):
Request command:
byte = 48
byte Year (BCD packed)
byte Month (BCD packed)
byte Day (BCD packed)
byte Hour (BCD packed)
byte Min (BCD packed)
byte Sec (BCD packed)
byte Day of Week { 0 = Sunday; 1 = Monday; … }
Answer:
byte Command (replica of the request command)
byte Year (BCD packed)
byte Month (BCD packed)
byte Day (BCD packed)
byte Hour (BCD packed)
byte Min (BCD packed)
byte Sec (BCD packed)
byte Day of Week { 0 = Sunday; 1 = Monday; … }
# 49 Date/Time (read):
Request command:
byte = 49
Answer:
byte Command (replica of the request command)
byte Year (BCD packed)
byte Month (BCD packed)
byte Day (BCD packed)
byte Hour (BCD packed)
byte Min (BCD packed)
byte Sec (BCD packed)
byte Day of Week { 0 = Sunday; 1 = Monday; … }
15
byte Step index (0..step_memory_dimension-1)
byte Month (BCD packed) { 0xAA = wildcard }
byte Day (BCD packed) { 0xAA = wildcard }
byte Day of Week { 0 = Sunday; 1 = Monday; … ; 0xAA = wildcard }
byte Hour (BCD packed)
byte Min (BCD packed)
byte Action
0: No Action
1: Turn Off
2: Turn On
3: Battery Calibration
4: Battery Test
255: Step index out of range
16
DHEA specific commands
# 21 No load threshold (set):
same as HF specific command ( # 21 )
# 25 Bypass (set):
same as HF specific command ( # 25 )
# 26 Bypass (read):
same as HF specific command ( # 26 )
# 48 Date/Time (set):
same as MEGALINE specific command ( # 48 )
17
# 49 Date/Time (read):
same as MEGALINE specific command ( # 49 )
18