{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "WEG", "model": "SSW900", "models": [ "SSW900" ], "vendor_website": "weg.net", "description": "Soft starter with Modbus RTU through the SSW900-CRS485-W accessory: measurements, status and control words, start and stop settings, motor data and serial settings", "revision": 1, "revised": "2026-11-10", "source": "WEG SSW900-CRS485-W Modbus RTU user's manual V1.6X, document 10004628735 rev. 06", "sources": [ { "title": "WEG SSW900-CRS485-W Modbus RTU manual do usuário (V1.6X)", "version": "10004628735 / R06", "date": "2024-10", "url": "https://static.weg.net/medias/downloadcenter/hdc/he5/WEG-manual-modbus-rtu-10004628735-SSW900-pt.pdf", "note": "linked in issue #193; memory map and table 10.2 (Net Id of each parameter)" } ], "notes": [ "The soft starter needs the SSW900-CRS485-W accessory for Modbus RTU. Every parameter is the holding register whose number is its Net Id (table 10.2 of the manual); the Modicon address is 40001 + the number.", "Values travel as integers without decimals: a current of 12.3 A is sent as 123. Scales follow the decimal places column of table 10.2.", "32-bit values (currents, powers, serial number, energy, hours) use two registers with the least significant word first, so word_order is little.", "The manual lists 8-bit parameters; they are read and written as one register each.", "Only the most used parameters are listed, not the full table 10.2. Other parameters can be added the same way (register = Net Id).", "The parameter numbers (S1.1.1 and so on) in the descriptions are the menu codes of the manual.", "The manual is in Portuguese; the English edition for V1.4X (document 10004628707) could not be downloaded. Written from the manufacturer's document; not tested on a device." ], "protocol": "rtu", "unit_id": 1, "baudrate": 19200, "databits": 8, "parity": "E", "stopbits": 1, "byte_order": "big", "word_order": "big", "address_base": 0, "x_status": "official", "enums": { "ssw_state": {"0": "Ready", "1": "Initial test", "2": "Fault", "3": "Accelerating", "4": "Full voltage", "5": "Bypass", "7": "Decelerating", "8": "Braking", "9": "Reversing", "10": "JOG", "11": "Time before start", "12": "Time after stop", "13": "General disable", "14": "Configuration"}, "pll_state": {"0": "Off", "1": "Ok"}, "phase_sequence": {"0": "Invalid", "1": "RST / 123", "2": "RTS / 132"}, "control_type": {"0": "Voltage ramp", "1": "Voltage ramp + current limit", "2": "Current limit", "3": "Current ramp", "4": "Pump control", "5": "Torque control", "6": "D.O.L. SCR"}, "cmd_source": {"0": "HMI keys", "1": "DIx", "2": "USB", "3": "SoftPLC", "4": "Slot 1", "5": "Slot 2"}, "active_source": {"0": "HMI keys, local", "1": "HMI keys, remote", "2": "DIx, local", "3": "DIx, remote", "4": "USB, local", "5": "USB, remote", "6": "SoftPLC, local", "7": "SoftPLC, remote", "8": "Slot 1, local", "9": "Slot 1, remote", "10": "Slot 2, local", "11": "Slot 2, remote"}, "fan_state": {"0": "Inactive", "1": "Active"}, "model_current": {"0": "10 to 30 A", "1": "45 to 105 A", "2": "130 to 200 A", "3": "255 to 412 A", "4": "480 to 670 A", "5": "820 to 950 A", "6": "1100 to 1400 A"}, "model_voltage": {"0": "220 to 575 V", "1": "380 to 690 V"}, "model_control": {"0": "110 to 240 V", "1": "110 to 130 V", "2": "220 to 240 V", "3": "24 V"}, "accessory": {"0": "None", "1": "Anybus-CC", "2": "RS-485", "3": "PT100", "4": "I/O expansion", "5": "Profibus", "6": "CAN", "7": "Ethernet", "8": "External current acquisition"}, "serial_protocol": {"0": "Reserved", "1": "Reserved", "2": "Modbus RTU"}, "baud": {"0": "9600 bit/s", "1": "19200 bit/s", "2": "38400 bit/s", "3": "57600 bit/s"}, "bytes": {"0": "8 data bits, no parity, 1 stop bit", "1": "8 data bits, even parity, 1 stop bit", "2": "8 data bits, odd parity, 1 stop bit", "3": "8 data bits, no parity, 2 stop bits", "4": "8 data bits, even parity, 2 stop bits", "5": "8 data bits, odd parity, 2 stop bits"}, "serial_state": {"0": "Inactive", "1": "Active", "2": "Timeout error"}, "timeout_mode": {"0": "Inactive", "1": "Fault F128", "2": "Alarm A128"}, "timeout_action": {"0": "Indication only", "1": "Stop by ramp", "2": "General disable", "3": "Go to local", "4": "Go to remote"} }, "registers": [ {"name": "SSW %In", "group": "Measurements", "area": "holding", "address": 1, "type": "uint16", "access": "R", "scale": 0.1, "unit": "%", "description": "S1.1.6; soft starter current as a percentage of its rated current"}, {"name": "Motor %In", "group": "Measurements", "area": "holding", "address": 2, "type": "uint16", "access": "R", "scale": 0.1, "unit": "%", "description": "S1.1.5"}, {"name": "Motor %Vn", "group": "Measurements", "area": "holding", "address": 3, "type": "uint16", "access": "R", "scale": 0.1, "unit": "%", "description": "S1.2.5"}, {"name": "Supply voltage average", "group": "Measurements", "area": "holding", "address": 4, "type": "uint16", "access": "R", "scale": 0.1, "unit": "V", "description": "S1.2.4"}, {"name": "SSW %Vn", "group": "Measurements", "area": "holding", "address": 5, "type": "uint16", "access": "R", "scale": 0.1, "unit": "%", "description": "S1.2.6"}, {"name": "Output voltage %Vn", "group": "Measurements", "area": "holding", "address": 6, "type": "uint16", "access": "R", "scale": 0.1, "unit": "%", "description": "S1.3.2"}, {"name": "Output voltage average", "group": "Measurements", "area": "holding", "address": 7, "type": "uint16", "access": "R", "scale": 0.1, "unit": "V", "description": "S1.3.1"}, {"name": "Power factor", "group": "Measurements", "area": "holding", "address": 8, "type": "uint16", "access": "R", "scale": 0.01, "description": "S1.5.4"}, {"name": "Motor %Tn", "group": "Measurements", "area": "holding", "address": 9, "type": "uint16", "access": "R", "scale": 0.1, "unit": "%", "description": "S1.7.1; torque as a percentage of rated"}, {"name": "Active power", "group": "Measurements", "area": "holding", "address": 10, "type": "uint32", "access": "R", "word_order": "little", "scale": 0.1, "unit": "kW", "description": "S1.5.1"}, {"name": "Apparent power", "group": "Measurements", "area": "holding", "address": 12, "type": "uint32", "access": "R", "word_order": "little", "scale": 0.1, "unit": "kVA", "description": "S1.5.2"}, {"name": "Reactive power", "group": "Measurements", "area": "holding", "address": 14, "type": "uint32", "access": "R", "word_order": "little", "scale": 0.1, "unit": "kVAr", "description": "S1.5.3"}, {"name": "PLL state", "group": "Measurements", "area": "holding", "address": 16, "type": "uint16", "access": "R", "enum": "pll_state", "description": "S1.6.1"}, {"name": "Line frequency", "group": "Measurements", "area": "holding", "address": 17, "type": "uint16", "access": "R", "scale": 0.1, "unit": "Hz", "description": "S1.6.2"}, {"name": "Phase sequence", "group": "Measurements", "area": "holding", "address": 18, "type": "uint16", "access": "R", "enum": "phase_sequence", "description": "S1.6.3"}, {"name": "Average current", "group": "Measurements", "area": "holding", "address": 24, "type": "uint32", "access": "R", "word_order": "little", "scale": 0.1, "unit": "A", "description": "S1.1.4"}, {"name": "Phase R current", "group": "Measurements", "area": "holding", "address": 26, "type": "uint32", "access": "R", "word_order": "little", "scale": 0.1, "unit": "A", "description": "S1.1.1"}, {"name": "Phase S current", "group": "Measurements", "area": "holding", "address": 28, "type": "uint32", "access": "R", "word_order": "little", "scale": 0.1, "unit": "A", "description": "S1.1.2"}, {"name": "Phase T current", "group": "Measurements", "area": "holding", "address": 30, "type": "uint32", "access": "R", "word_order": "little", "scale": 0.1, "unit": "A", "description": "S1.1.3"}, {"name": "Line voltage R-S", "group": "Measurements", "area": "holding", "address": 33, "type": "uint16", "access": "R", "scale": 0.1, "unit": "V", "description": "S1.2.1"}, {"name": "Line voltage S-T", "group": "Measurements", "area": "holding", "address": 34, "type": "uint16", "access": "R", "scale": 0.1, "unit": "V", "description": "S1.2.2"}, {"name": "Line voltage T-R", "group": "Measurements", "area": "holding", "address": 35, "type": "uint16", "access": "R", "scale": 0.1, "unit": "V", "description": "S1.2.3"}, {"name": "Hours energized", "group": "Diagnostics", "area": "holding", "address": 42, "type": "uint32", "access": "R", "word_order": "little", "unit": "s", "description": "D6.1; value in seconds"}, {"name": "Hours enabled", "group": "Diagnostics", "area": "holding", "address": 44, "type": "uint32", "access": "R", "word_order": "little", "unit": "s", "description": "D6.2; value in seconds"}, {"name": "Thermal class state", "group": "Temperatures", "area": "holding", "address": 50, "type": "uint16", "access": "R", "scale": 0.1, "unit": "%", "description": "S4.2.1; highest value, a fault occurs at 100 %"}, {"name": "Present energy counter", "group": "Diagnostics", "area": "holding", "address": 52, "type": "uint32", "access": "R", "word_order": "little", "scale": 0.1, "unit": "kWh", "description": "D4.6.1; total energy"}, {"name": "Start counter", "group": "Diagnostics", "area": "holding", "address": 59, "type": "uint16", "access": "R", "description": "D4.7.1; number of starts"}, {"name": "SCR temperature", "group": "Temperatures", "area": "holding", "address": 60, "type": "int16", "access": "R", "unit": "°C", "description": "S4.1.1"}, {"name": "Motor temperature channel 1", "group": "Temperatures", "area": "holding", "address": 63, "type": "int16", "access": "R", "unit": "°C", "description": "S4.3.1; needs the PT100 accessory"}, {"name": "Motor temperature channel 2", "group": "Temperatures", "area": "holding", "address": 64, "type": "int16", "access": "R", "unit": "°C", "description": "S4.3.2; needs the PT100 accessory"}, {"name": "Motor temperature channel 3", "group": "Temperatures", "area": "holding", "address": 65, "type": "int16", "access": "R", "unit": "°C", "description": "S4.3.3; needs the PT100 accessory"}, {"name": "Present fault", "group": "Alarms and faults", "area": "holding", "address": 90, "type": "uint16", "access": "R", "description": "D1.1.1; fault number"}, {"name": "Alarm 1", "group": "Alarms and faults", "area": "holding", "address": 91, "type": "uint16", "access": "R", "description": "D2.1.1; alarm number"}, {"name": "Alarm 2", "group": "Alarms and faults", "area": "holding", "address": 92, "type": "uint16", "access": "R", "description": "D2.1.2"}, {"name": "Alarm 3", "group": "Alarms and faults", "area": "holding", "address": 93, "type": "uint16", "access": "R", "description": "D2.1.3"}, {"name": "Alarm 4", "group": "Alarms and faults", "area": "holding", "address": 94, "type": "uint16", "access": "R", "description": "D2.1.4"}, {"name": "Alarm 5", "group": "Alarms and faults", "area": "holding", "address": 95, "type": "uint16", "access": "R", "description": "D2.1.5"}, {"name": "Initial start voltage", "group": "Settings", "area": "holding", "address": 101, "type": "uint16", "access": "RW", "unit": "%", "write_min": 25, "write_max": 90, "description": "C1.2"}, {"name": "Maximum start time", "group": "Settings", "area": "holding", "address": 102, "type": "uint16", "access": "RW", "unit": "s", "write_min": 1, "write_max": 999, "description": "C1.3"}, {"name": "Stop time", "group": "Settings", "area": "holding", "address": 104, "type": "uint16", "access": "RW", "unit": "s", "write_min": 0, "write_max": 999, "description": "C1.13"}, {"name": "Current limit at start", "group": "Settings", "area": "holding", "address": 110, "type": "uint16", "access": "RW", "unit": "%", "write_min": 150, "write_max": 600, "description": "C1.7; percent of rated motor current"}, {"name": "Initial current", "group": "Settings", "area": "holding", "address": 111, "type": "uint16", "access": "RW", "unit": "%", "write_min": 150, "write_max": 600, "description": "C1.5"}, {"name": "Start type", "group": "Settings", "area": "holding", "address": 202, "type": "uint16", "access": "RW", "enum": "control_type", "description": "C1.1; changed only with the motor stopped"}, {"name": "Local/remote mode", "group": "Settings", "area": "holding", "address": 220, "type": "uint16", "access": "RW", "description": "C3.1; see the manual for the values"}, {"name": "Local command source", "group": "Settings", "area": "holding", "address": 229, "type": "uint16", "access": "RW", "enum": "cmd_source", "description": "C3.2"}, {"name": "Remote command source", "group": "Settings", "area": "holding", "address": 230, "type": "uint16", "access": "RW", "enum": "cmd_source", "description": "C3.3"}, {"name": "Active command source", "group": "Status", "area": "holding", "address": 232, "type": "uint16", "access": "R", "enum": "active_source", "description": "S3.1.2"}, {"name": "Fan state", "group": "Status", "area": "holding", "address": 293, "type": "uint16", "access": "R", "enum": "fan_state", "description": "S3.4.1"}, {"name": "Model current range", "group": "Device", "area": "holding", "address": 294, "type": "uint16", "access": "R", "enum": "model_current", "description": "S3.3.1"}, {"name": "Model voltage range", "group": "Device", "area": "holding", "address": 296, "type": "uint16", "access": "R", "enum": "model_voltage", "description": "S3.3.2"}, {"name": "Control voltage", "group": "Device", "area": "holding", "address": 297, "type": "uint16", "access": "R", "enum": "model_control", "description": "S3.3.3"}, {"name": "Serial number", "group": "Device", "area": "holding", "address": 298, "type": "uint32", "access": "R", "word_order": "little", "role": "serial", "description": "S3.3.4"}, {"name": "Software package version", "group": "Device", "area": "holding", "address": 328, "type": "uint16", "access": "R", "scale": 0.01, "role": "firmware", "description": "S3.2.1"}, {"name": "Accessory slot 1", "group": "Device", "area": "holding", "address": 335, "type": "uint16", "access": "R", "enum": "accessory", "description": "S3.5.1"}, {"name": "Accessory slot 2", "group": "Device", "area": "holding", "address": 336, "type": "uint16", "access": "R", "enum": "accessory", "description": "S3.5.2"}, {"name": "Motor rated voltage", "group": "Motor", "area": "holding", "address": 400, "type": "uint16", "access": "RW", "unit": "V", "write_min": 1, "write_max": 999, "description": "C2.1"}, {"name": "Motor rated current", "group": "Motor", "area": "holding", "address": 401, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "A", "write_min": 0.1, "write_max": 2424, "description": "C2.2"}, {"name": "Motor rated speed", "group": "Motor", "area": "holding", "address": 402, "type": "uint16", "access": "RW", "unit": "rpm", "write_min": 1, "write_max": 3600, "description": "C2.3"}, {"name": "Motor rated power", "group": "Motor", "area": "holding", "address": 404, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "kW", "write_min": 0.1, "write_max": 1950, "description": "C2.4"}, {"name": "Digital inputs", "group": "Inputs and outputs", "area": "holding", "address": 677, "type": "uint16", "access": "R", "description": "S2.1.1; bit 0 to 5 = DI1 to DI6"}, {"name": "Digital outputs", "group": "Inputs and outputs", "area": "holding", "address": 678, "type": "uint16", "access": "R", "description": "S2.1.2; bit 0 to 2 = DO1 to DO3"}, {"name": "SSW state", "group": "Status", "area": "holding", "address": 679, "type": "uint16", "access": "R", "enum": "ssw_state", "description": "S3.1.1"}, {"name": "Status word", "group": "Status", "area": "holding", "address": 680, "type": "uint16", "access": "R", "description": "S3.1.3.1; full 16-bit word"}, {"name": "Motor turning", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 0}, {"name": "General enable", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 1}, {"name": "JOG active", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 2}, {"name": "Initial test", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 3}, {"name": "Accelerating", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 4}, {"name": "Full voltage", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 5}, {"name": "Bypass closed", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 6}, {"name": "Decelerating", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 7}, {"name": "Remote mode", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 8, "description": "1 = remote, 0 = local"}, {"name": "DC braking", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 9}, {"name": "Reversing direction", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 10}, {"name": "Counter-clockwise", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 11}, {"name": "Ton delay running", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 12, "description": "time before start"}, {"name": "Toff delay running", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 13, "description": "time after stop"}, {"name": "Alarm active", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 14}, {"name": "Fault active", "group": "Status word", "area": "holding", "address": 680, "type": "bool", "access": "R", "bit": 15}, {"name": "Control word Slot 1", "group": "Control", "area": "holding", "address": 685, "type": "uint16", "access": "RW", "description": "S5.2.5; full 16-bit word; the RS485 accessory in slot 1 uses it"}, {"name": "Slot 1 run", "group": "Control", "area": "holding", "address": 685, "type": "bool", "access": "RW", "bit": 0, "description": "1 = run, 0 = stop"}, {"name": "Slot 1 general enable", "group": "Control", "area": "holding", "address": 685, "type": "bool", "access": "RW", "bit": 1}, {"name": "Slot 1 jog", "group": "Control", "area": "holding", "address": 685, "type": "bool", "access": "RW", "bit": 2}, {"name": "Slot 1 counter-clockwise", "group": "Control", "area": "holding", "address": 685, "type": "bool", "access": "RW", "bit": 3, "description": "1 = counter-clockwise, 0 = clockwise"}, {"name": "Slot 1 remote", "group": "Control", "area": "holding", "address": 685, "type": "bool", "access": "RW", "bit": 4, "description": "1 = remote, 0 = local"}, {"name": "Slot 1 reset", "group": "Control", "area": "holding", "address": 685, "type": "bool", "access": "RW", "bit": 7, "description": "0 to 1 resets a fault"}, {"name": "Control word Slot 2", "group": "Control", "area": "holding", "address": 686, "type": "uint16", "access": "RW", "description": "S5.2.6; full 16-bit word; the RS485 accessory in slot 2 uses it"}, {"name": "Slot 2 run", "group": "Control", "area": "holding", "address": 686, "type": "bool", "access": "RW", "bit": 0, "description": "1 = run, 0 = stop"}, {"name": "Slot 2 general enable", "group": "Control", "area": "holding", "address": 686, "type": "bool", "access": "RW", "bit": 1}, {"name": "Slot 2 jog", "group": "Control", "area": "holding", "address": 686, "type": "bool", "access": "RW", "bit": 2}, {"name": "Slot 2 counter-clockwise", "group": "Control", "area": "holding", "address": 686, "type": "bool", "access": "RW", "bit": 3, "description": "1 = counter-clockwise, 0 = clockwise"}, {"name": "Slot 2 remote", "group": "Control", "area": "holding", "address": 686, "type": "bool", "access": "RW", "bit": 4, "description": "1 = remote, 0 = local"}, {"name": "Slot 2 reset", "group": "Control", "area": "holding", "address": 686, "type": "bool", "access": "RW", "bit": 7, "description": "0 to 1 resets a fault"}, {"name": "Configuration mode state", "group": "Status", "area": "holding", "address": 692, "type": "uint16", "access": "R", "description": "S3.1.4.1; bit field: system start, firmware download, guided start-up, incompatible settings, reset needed, HMI copy, test mode"}, {"name": "Digital output value", "group": "Control", "area": "holding", "address": 695, "type": "uint16", "access": "RW", "description": "S5.3.1; bit 0 to 2 set DO1 to DO3 over the network"}, {"name": "Analog output value (10 bit)", "group": "Control", "area": "holding", "address": 696, "type": "uint16", "access": "RW", "write_min": 0, "write_max": 1023, "description": "S5.3.2.1; 0 = 0 %, 1023 = 100 %"}, {"name": "Serial protocol", "group": "Serial communication", "area": "holding", "address": 730, "type": "uint16", "access": "RW", "enum": "serial_protocol", "description": "C8.2.1"}, {"name": "Serial address", "group": "Serial communication", "area": "holding", "address": 731, "type": "uint16", "access": "RW", "write_min": 1, "write_max": 247, "description": "C8.2.2"}, {"name": "Serial baud rate", "group": "Serial communication", "area": "holding", "address": 732, "type": "uint16", "access": "RW", "enum": "baud", "description": "C8.2.3"}, {"name": "Serial byte configuration", "group": "Serial communication", "area": "holding", "address": 733, "type": "uint16", "access": "RW", "enum": "bytes", "description": "C8.2.4"}, {"name": "Serial timeout", "group": "Serial communication", "area": "holding", "address": 734, "type": "uint16", "access": "RW", "scale": 0.1, "unit": "s", "write_min": 0, "write_max": 999.9, "description": "C8.2.5.3"}, {"name": "Serial interface state", "group": "Serial communication", "area": "holding", "address": 735, "type": "uint16", "access": "R", "enum": "serial_state", "description": "S5.4.1"}, {"name": "Telegrams received", "group": "Serial communication", "area": "holding", "address": 736, "type": "uint16", "access": "R", "description": "S5.4.2; cyclic counter"}, {"name": "Telegrams sent", "group": "Serial communication", "area": "holding", "address": 737, "type": "uint16", "access": "R", "description": "S5.4.3; cyclic counter"}, {"name": "Telegrams with error", "group": "Serial communication", "area": "holding", "address": 738, "type": "uint16", "access": "R", "description": "S5.4.4; cyclic counter"}, {"name": "Reception errors", "group": "Serial communication", "area": "holding", "address": 739, "type": "uint16", "access": "R", "description": "S5.4.5; cyclic counter"}, {"name": "Timeout mode", "group": "Serial communication", "area": "holding", "address": 740, "type": "uint16", "access": "RW", "enum": "timeout_mode", "description": "C8.2.5.1"}, {"name": "Timeout alarm action", "group": "Serial communication", "area": "holding", "address": 741, "type": "uint16", "access": "RW", "enum": "timeout_action", "description": "C8.2.5.2"} ] }