{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Active Power", "model": "CS XT / CS HD", "models": ["CS XT", "CS HD"], "vendor_website": "activepower.com", "description": "CleanSource CS XT and CS HD flywheel UPS", "revision": 3, "revised": "2026-10-18", "source": "Active Power, a Division of Piller Power Systems Inc., \"CS XT / CS HD Modbus Register Map\", 6090618-1 Rev. E (2019)", "notes": [ "Active Power CleanSource CS XT and CS HD flywheel UPS (sold by Piller Power Systems in some countries).", "Tested on a CleanSource UPS, October 2026.", "Read-only (FC03). 32-bit values: the lower register holds bits 15-0, so the word order is low word first (CDAB); read both registers in one request." ], "protocol": "tcp+rtu", "byte_order": "big", "word_order": "little", "address_base": 0, "enums": { "output_source": {"0": "Unknown", "1": "Flywheel discharging", "2": "No output", "3": "Online mode", "4": "Bypass mode", "5": "Battery discharge mode"} }, "x_status": "verified", "registers": [ {"name": "ACPW fixed ID", "group": "Identity", "area": "holding", "address": 0, "type": "uint16", "access": "R", "enum": {"16720": "AP"}, "reference": 16720, "description": "Always reads 16720 (0x4150, ASCII \"AP\")", "comment": "Identity"}, {"name": "Published register map version", "group": "Identity", "area": "holding", "address": 1, "type": "uint16", "access": "R"}, {"name": "CIO firmware version", "group": "Identity", "area": "holding", "address": 5, "type": "uint16", "access": "R", "description": "Major revision in the high byte, minor in the low byte"}, {"name": "CIO firmware major", "group": "Identity", "area": "holding", "address": 5, "type": "uint16", "bit": 8, "bits": 8, "access": "R"}, {"name": "CIO firmware minor", "group": "Identity", "area": "holding", "address": 5, "type": "uint16", "bit": 0, "bits": 8, "access": "R"}, {"name": "UPS PPC firmware version", "group": "Identity", "area": "holding", "address": 7, "type": "uint16", "access": "R", "description": "Major revision in the high byte, minor in the low byte"}, {"name": "UPS PPC firmware major", "group": "Identity", "area": "holding", "address": 7, "type": "uint16", "bit": 8, "bits": 8, "access": "R"}, {"name": "UPS PPC firmware minor", "group": "Identity", "area": "holding", "address": 7, "type": "uint16", "bit": 0, "bits": 8, "access": "R"}, {"name": "UPS FPGA firmware version", "group": "Identity", "area": "holding", "address": 9, "type": "uint16", "scale": 0.01, "access": "R"}, {"name": "UPS system serial number", "group": "Identity", "area": "holding", "address": 11, "type": "uint32", "access": "R"}, {"name": "UPS discharge counter", "group": "Counters", "area": "holding", "address": 19, "type": "uint32", "access": "R"}, {"name": "UPS bearing replacement date", "group": "Counters", "area": "holding", "address": 27, "type": "int32", "unit": "s", "access": "R", "description": "Unix time: seconds since 1970-01-01"}, {"name": "UPS Bypass voltage AB", "group": "Bypass", "area": "holding", "address": 701, "type": "int16", "scale": 0.1, "unit": "V", "access": "R", "comment": "Measurements"}, {"name": "UPS Bypass voltage BC", "group": "Bypass", "area": "holding", "address": 702, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Bypass voltage CA", "group": "Bypass", "area": "holding", "address": 703, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS External source voltage AB", "group": "External source", "area": "holding", "address": 704, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS External source voltage BC", "group": "External source", "area": "holding", "address": 705, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS External source voltage CA", "group": "External source", "area": "holding", "address": 706, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Input voltage AB", "group": "Input", "area": "holding", "address": 707, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Input voltage BC", "group": "Input", "area": "holding", "address": 708, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Input voltage CA", "group": "Input", "area": "holding", "address": 709, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Output voltage AB", "group": "Output", "area": "holding", "address": 710, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Output voltage BC", "group": "Output", "area": "holding", "address": 711, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Output voltage CA", "group": "Output", "area": "holding", "address": 712, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Input current A", "group": "Input", "area": "holding", "address": 713, "type": "int16", "scale": 0.1, "unit": "A", "access": "R"}, {"name": "UPS Input current B", "group": "Input", "area": "holding", "address": 714, "type": "int16", "scale": 0.1, "unit": "A", "access": "R"}, {"name": "UPS Input current C", "group": "Input", "area": "holding", "address": 715, "type": "int16", "scale": 0.1, "unit": "A", "access": "R"}, {"name": "UPS Output current A", "group": "Output", "area": "holding", "address": 716, "type": "int16", "scale": 0.1, "unit": "A", "access": "R"}, {"name": "UPS Output current B", "group": "Output", "area": "holding", "address": 717, "type": "int16", "scale": 0.1, "unit": "A", "access": "R"}, {"name": "UPS Output current C", "group": "Output", "area": "holding", "address": 718, "type": "int16", "scale": 0.1, "unit": "A", "access": "R"}, {"name": "UPS Line inductor temperature", "group": "Temperatures", "area": "holding", "address": 732, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R"}, {"name": "UPS Filter inductor temperature", "group": "Temperatures", "area": "holding", "address": 733, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R"}, {"name": "UPS Neutral inductor 1 temperature", "group": "Temperatures", "area": "holding", "address": 734, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R"}, {"name": "UPS Neutral inductor 2 temperature", "group": "Temperatures", "area": "holding", "address": 735, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R"}, {"name": "UPS Flywheel coil temperature 1", "group": "Temperatures", "area": "holding", "address": 736, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R", "description": "CS HD: lower armature; CS XT: armature"}, {"name": "UPS Flywheel coil temperature 2", "group": "Temperatures", "area": "holding", "address": 737, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R", "description": "CS HD: upper armature; CS XT: upper field coil"}, {"name": "UPS Lower bearing temperature", "group": "Temperatures", "area": "holding", "address": 738, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R"}, {"name": "UPS Upper bearing temperature", "group": "Temperatures", "area": "holding", "address": 739, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R"}, {"name": "UPS Flywheel coil temperature 3", "group": "Temperatures", "area": "holding", "address": 740, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R", "description": "CS HD: excitation coil; CS XT: lower field coil"}, {"name": "UPS Air inlet temperature", "group": "Temperatures", "area": "holding", "address": 743, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R"}, {"name": "UPS Cabinet ambient temperature", "group": "Temperatures", "area": "holding", "address": 744, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R"}, {"name": "UPS Bypass frequency", "group": "Bypass", "area": "holding", "address": 745, "type": "int16", "scale": 0.1, "unit": "Hz", "access": "R"}, {"name": "UPS Input frequency", "group": "Input", "area": "holding", "address": 746, "type": "int16", "scale": 0.1, "unit": "Hz", "access": "R"}, {"name": "UPS Output frequency", "group": "Output", "area": "holding", "address": 747, "type": "int16", "scale": 0.1, "unit": "Hz", "access": "R"}, {"name": "UPS Input real power", "group": "Input", "area": "holding", "address": 749, "type": "int16", "scale": 0.1, "unit": "kW", "access": "R"}, {"name": "UPS Input apparent power", "group": "Input", "area": "holding", "address": 750, "type": "int16", "scale": 0.1, "unit": "kVA", "access": "R"}, {"name": "UPS Input power factor", "group": "Input", "area": "holding", "address": 751, "type": "int16", "scale": 0.001, "access": "R"}, {"name": "UPS Output power", "group": "Output", "area": "holding", "address": 752, "type": "int16", "scale": 0.1, "unit": "kW", "access": "R"}, {"name": "UPS Output apparent power", "group": "Output", "area": "holding", "address": 753, "type": "int16", "scale": 0.1, "unit": "kVA", "access": "R"}, {"name": "UPS Output power factor", "group": "Output", "area": "holding", "address": 754, "type": "int16", "scale": 0.001, "access": "R"}, {"name": "UPS Flywheel percent energy", "group": "Flywheel", "area": "holding", "address": 755, "type": "int16", "scale": 0.01, "unit": "%", "access": "R"}, {"name": "UPS Vacuum gauge", "group": "Flywheel", "area": "holding", "address": 756, "type": "int16", "scale": 0.1, "unit": "mTorr", "access": "R"}, {"name": "UPS Flywheel tach", "group": "Flywheel", "area": "holding", "address": 757, "type": "int16", "unit": "RPM", "access": "R"}, {"name": "UPS Percent load", "group": "Output", "area": "holding", "address": 758, "type": "int16", "scale": 0.01, "unit": "%", "access": "R"}, {"name": "UPS Rated output power", "group": "Ratings", "area": "holding", "address": 759, "type": "int16", "scale": 0.1, "unit": "kW", "access": "R"}, {"name": "UPS Rated output current", "group": "Ratings", "area": "holding", "address": 760, "type": "int16", "scale": 0.1, "unit": "A", "access": "R"}, {"name": "UPS Nominal voltage", "group": "Ratings", "area": "holding", "address": 761, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Parallel output power", "group": "Parallel", "area": "holding", "address": 762, "type": "int16", "scale": 0.1, "unit": "kW", "access": "R"}, {"name": "UPS External source frequency", "group": "External source", "area": "holding", "address": 763, "type": "int16", "scale": 0.1, "unit": "Hz", "access": "R"}, {"name": "UPS Bypass voltage AN", "group": "Bypass", "area": "holding", "address": 764, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Bypass voltage BN", "group": "Bypass", "area": "holding", "address": 765, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Bypass voltage CN", "group": "Bypass", "area": "holding", "address": 766, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Input voltage AN", "group": "Input", "area": "holding", "address": 767, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Input voltage BN", "group": "Input", "area": "holding", "address": 768, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Input voltage CN", "group": "Input", "area": "holding", "address": 769, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Output voltage AN", "group": "Output", "area": "holding", "address": 770, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Output voltage BN", "group": "Output", "area": "holding", "address": 771, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Output voltage CN", "group": "Output", "area": "holding", "address": 772, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "UPS Parallel input power", "group": "Parallel", "area": "holding", "address": 773, "type": "int16", "scale": 0.1, "unit": "kW", "access": "R"}, {"name": "UPS Parallel input current A", "group": "Parallel", "area": "holding", "address": 774, "type": "int16", "scale": 0.1, "unit": "A", "access": "R"}, {"name": "UPS Parallel input current B", "group": "Parallel", "area": "holding", "address": 775, "type": "int16", "scale": 0.1, "unit": "A", "access": "R"}, {"name": "UPS Parallel input current C", "group": "Parallel", "area": "holding", "address": 776, "type": "int16", "scale": 0.1, "unit": "A", "access": "R"}, {"name": "UPS Parallel output current A", "group": "Parallel", "area": "holding", "address": 777, "type": "int16", "scale": 0.1, "unit": "A", "access": "R"}, {"name": "UPS Parallel output current B", "group": "Parallel", "area": "holding", "address": 778, "type": "int16", "scale": 0.1, "unit": "A", "access": "R"}, {"name": "UPS Parallel output current C", "group": "Parallel", "area": "holding", "address": 779, "type": "int16", "scale": 0.1, "unit": "A", "access": "R"}, {"name": "UPS Load cell output", "group": "Flywheel", "area": "holding", "address": 780, "type": "int16", "scale": 0.1, "unit": "lb", "access": "R"}, {"name": "UPS notice active", "group": "Status", "area": "holding", "address": 901, "type": "uint16", "access": "R", "enum": {"0": "No", "1": "Yes"}, "comment": "Status (901-903 latch: non-zero for at least five seconds after a condition)"}, {"name": "UPS alarm active", "group": "Status", "area": "holding", "address": 902, "type": "uint16", "access": "R", "enum": {"0": "No", "1": "Yes"}}, {"name": "UPS buzzer state", "group": "Status", "area": "holding", "address": 903, "type": "uint16", "access": "R", "enum": {"0": "Off", "1": "On"}}, {"name": "UPS output source", "group": "Status", "area": "holding", "address": 913, "type": "uint16", "access": "R", "enum": "output_source"}, {"name": "UPS customer IO reg 01", "group": "Customer I/O", "area": "holding", "address": 964, "type": "uint16", "access": "R"}, {"name": "Customer input contact 1 closed", "group": "Customer I/O", "area": "holding", "address": 964, "type": "bool", "bit": 0, "access": "R"}, {"name": "Customer input contact 2 closed", "group": "Customer I/O", "area": "holding", "address": 964, "type": "bool", "bit": 1, "access": "R"}, {"name": "Customer input contact 3 closed", "group": "Customer I/O", "area": "holding", "address": 964, "type": "bool", "bit": 2, "access": "R"}, {"name": "Customer input contact 4 closed", "group": "Customer I/O", "area": "holding", "address": 964, "type": "bool", "bit": 3, "access": "R"}, {"name": "Customer input contact 5 closed", "group": "Customer I/O", "area": "holding", "address": 964, "type": "bool", "bit": 4, "access": "R"}, {"name": "Customer input contact 6 closed", "group": "Customer I/O", "area": "holding", "address": 964, "type": "bool", "bit": 5, "access": "R"}, {"name": "Customer input contact 7 closed", "group": "Customer I/O", "area": "holding", "address": 964, "type": "bool", "bit": 6, "access": "R"}, {"name": "Customer input contact 8 closed", "group": "Customer I/O", "area": "holding", "address": 964, "type": "bool", "bit": 7, "access": "R"}, {"name": "UPS customer IO reg 02", "group": "Customer I/O", "area": "holding", "address": 965, "type": "uint16", "access": "R"}, {"name": "Customer output contact 1 closed", "group": "Customer I/O", "area": "holding", "address": 965, "type": "bool", "bit": 0, "access": "R"}, {"name": "Customer output contact 2 closed", "group": "Customer I/O", "area": "holding", "address": 965, "type": "bool", "bit": 1, "access": "R"}, {"name": "Customer output contact 3 closed", "group": "Customer I/O", "area": "holding", "address": 965, "type": "bool", "bit": 2, "access": "R"}, {"name": "Customer output contact 4 closed", "group": "Customer I/O", "area": "holding", "address": 965, "type": "bool", "bit": 3, "access": "R"}, {"name": "Customer output contact 5 closed", "group": "Customer I/O", "area": "holding", "address": 965, "type": "bool", "bit": 4, "access": "R"}, {"name": "Customer output contact 6 closed", "group": "Customer I/O", "area": "holding", "address": 965, "type": "bool", "bit": 5, "access": "R"}, {"name": "Customer output contact 7 closed", "group": "Customer I/O", "area": "holding", "address": 965, "type": "bool", "bit": 6, "access": "R"}, {"name": "Customer output contact 8 closed", "group": "Customer I/O", "area": "holding", "address": 965, "type": "bool", "bit": 7, "access": "R"}, {"name": "ExRC PPC firmware version", "group": "ExRC", "area": "holding", "address": 1000, "type": "uint16", "access": "R", "description": "CS HD only; major in the high byte, minor in the low byte", "comment": "ExRC (CS HD only)"}, {"name": "ExRC FPGA firmware version", "group": "ExRC", "area": "holding", "address": 1001, "type": "uint16", "scale": 0.01, "access": "R", "description": "CS HD only"}, {"name": "ExRC serial number", "group": "ExRC", "area": "holding", "address": 1002, "type": "uint32", "access": "R", "description": "CS HD only"}, {"name": "ExRC energy storage DC volts", "group": "ExRC", "area": "holding", "address": 1004, "type": "int16", "scale": 0.1, "unit": "V", "access": "R", "description": "CS HD only"}, {"name": "ExRC UPS DC volts", "group": "ExRC", "area": "holding", "address": 1005, "type": "int16", "scale": 0.1, "unit": "V", "access": "R", "description": "CS HD only"}, {"name": "ExRC energy storage amps", "group": "ExRC", "area": "holding", "address": 1006, "type": "int16", "scale": 0.1, "unit": "A", "access": "R", "description": "CS HD only"}, {"name": "ExRC DC bus power", "group": "ExRC", "area": "holding", "address": 1007, "type": "int16", "scale": 0.1, "unit": "kW", "access": "R", "description": "CS HD only"} ] }