# Property of PMA Electrical Solutions, LLC. # # AUTOMATIONDIRECT STELLAR SR55 SOFT STARTER — not a VFD. No speed reference, # no reverse. "Running" here means the SCRs are conducting under the starter's # control (P0.7), which covers soft-start ramp, bypassed full-voltage run, and # soft stop alike. It does NOT mean "at full voltage" — for that read End Of # Start (P0.8), which only goes true when the start ramp has completed. # # COMMUNICATION PATH THIS PROFILE ASSUMES: the BUILT-IN Modbus RTU on the # RJ12 port. Every SR55 has it; no option module is required ("All SR55 soft # starters have a built-in RJ12 serial port", ch.5 p.5-2). The optional # SR55-CM-MODTCP and SR55-CM-ENETIP modules are a different physical layer, # and AutomationDirect warns they must NOT be fitted while the RJ12 port is in # use — "the presence of a communications module will cause interference with # the Modbus RTU communications" (p.5-2). The Modbus TCP module exposes this # same map ("All Modbus functions and addresses that are available in the # preceeding Modbus Serial Communications section are also available via # modbus TCP", p.5-8), so this profile is valid over TCP too. The EtherNet/IP # module is NOT this map — it is a CIP assembly with its own control/status # word (p.5-9..5-10) and is not covered here. # # SR35 IS A DIFFERENT PRODUCT WITH A COMPLETELY DIFFERENT REGISTER MAP (small # PNU numbers, 0-300). Nothing here transfers. See automationdirect_sr35.toml. # SR22 has no communications interface at all and has no profile. # # Source — AutomationDirect primary only: # "Stellar SR55 Series Soft Starter User Manual", 2nd Ed. Rev. C, # 06/20/2024 (sr55manual.pdf): # p.5-2..5-6 Modbus RTU interface, RJ12 pinout, FC03/06/16, addressing # p.5-8 Modbus TCP: "Protocol Addressing (Base 0); not PLC (Base 1)" # p.3-14 summary of the P0.x network-only parameters used below # p.3-19 P15 monitor parameter summary # p.3-20 P17 trip log summary # p.3-22 P26 network settings and their factory defaults # p.3-25 P0.0 Start/Stop, P0.1 Freeze Ramp, P0.2 Reset # p.3-26..3-28 P0.4..P0.12 status indications # p.3-35..3-36 P3.1/P3.4 start ramp and current-limit settings # p.3-39 P5.0 Motor Current (32-bit) # p.3-44 P7.0 Control Method values # p.3-48 P8.13 Communications Trip # p.3-63..3-68 P15 monitor scaling, per parameter # p.3-91 P26.5 Timeout, P26.6 Communications Shutdown # p.3-101..3-104 trip code table and fail-safe codes # # ADDRESSING: no conversion is needed — the manual's "Modbus Address" decimal # column IS the 0-based protocol address, and its hex column is the same # number ("The data addressing is zero offset, such that the parameter Modbus # address corresponds to the register number", p.5-6; "SR55 Modbus addressing # starts at zero; not 1 as some devices do", p.5-5). Every address in this # file is that decimal value verbatim: # 0-based register = manual "Modbus Address" decimal = hex column # e.g. P0.0 Start/Stop 17920 = 0x4600, P15.5 Irms 32896 = 0x8080. # Do NOT apply a 4xxxx offset. The manual mentions a leading 4 only as advice # for Modicon-style masters that need it (p.5-5); this app addresses the wire # directly, so 17920 is 17920. Everything is a HOLDING register, read with # FC03 ("SR55 parameters are defined as holding type registers", p.5-5) — # there is no FC04-only region on this device. # # BLOCK SIZE: AutomationDirect limits a read or write block to 8 REGISTERS # (p.5-5, p.5-6). This is well under the Modbus maximum, and the monitor # points below are scattered across the map, so expect many small reads. # # DRIVE-SIDE SETUP. Without these the starter answers reads and ignores # commands: # - P7.0 Control Method (59392) = 4, "Modbus Network" (p.3-44). Anything # else (0 Local Touch Screen, 1 User Programmable, 2 Two Wire, 3 Three # Wire) leaves command on the keypad or the terminals. Setting 4 DISABLES # the digital inputs; digital outputs keep working (p.3-44, p.5-2). # - P26.0 Address (16000) = 1..32. Only 32 nodes, not 247. # - P26.1 Baud (16064), P26.2 Parity (16128) to match the bus. # - P26.5 Timeout ms (15808) must be > 0 if P8.13 Communications Trip is on, # "otherwise the SR55 will fault as soon as communication is enabled" # (p.5-2). # # SCALING is NOT panel decimals. Currents and powers are milli-units in 32-bit # registers (1 count = 1 mA / 1 W / 1 VA / 1 VAR); line frequency is # milli-hertz; percentages are 0-16384 full scale (1 count = 0.006104%), which # is 2^14, not 100 or 1000. Each scale below is taken from that parameter's # own detail page, not inferred from a neighbour. name = "AutomationDirect Stellar SR55 (soft starter)" vendor = "AutomationDirect" device_type = "soft_starter" verified = false probe_register = 37184 # P0.4 Ready — read-only, valid from power-up [connection] summary = "Every SR55 includes Modbus RTU on RJ12; the optional SR55-CM-MODTCP module adds two switched Modbus TCP ports." warnings = [] [[connection.methods]] id = "rj12_rs485" title = "Built-in RJ12 Modbus RTU" transport = "serial" hardware = "built_in" port = "SR55 built-in RJ12 serial port" connector = "RJ12 wired as RS-485" adapter = "Isolated USB-to-RS-485 adapter, 2-wire half-duplex" cable = "Shielded twisted-pair cable terminated to the documented modular-plug pins" parts = ["Isolated two-wire RS-485 adapter", "Shielded twisted-pair cable terminated to the documented modular-plug pins", "Field-terminated modular plug or documented breakout adapter", "Optional SR55-RJ45-RJ12 adapter for an RJ45 field cable", "Optional SR55-SPLT per starter for multidrop"] steps = ["Lock out line and control power, wait the vendor-specified discharge time, and verify the DC bus is de-energized before opening a cover or landing conductors.", "Land the positive and negative data conductors exactly as shown; connect the cable shield or signal common only where the method identifies it.", "Route the communications cable away from motor and mains conductors. Terminate the two physical ends of a long multidrop trunk only.", "Restore control power with the motor area clear, configure the drive from its keypad, then verify identity and read-only monitor data before enabling remote control."] setup = ["Set P7.0 Control Method=4 Modbus Network, P26.0 address, P26.1 baud, P26.2 parity, and set P26.5 Timeout above zero before enabling communications."] warnings = ["A modular communications jack is not automatically Ethernet. Never connect it to a LAN switch unless this guide explicitly identifies a Modbus TCP method.", "RS-485 A/B naming is not consistent between manufacturers. Follow the + and - mapping shown here.", "RJ12 pin 2 is reserved and carries an explicit do-not-connect warning.", "Do not install any SR55-CM-xxxx module while using the built-in RJ12 RTU port; the manual warns that it causes interference."] source = "AutomationDirect Stellar SR55 User Manual, 2nd Ed. Rev C, printed pp. 5-2 to 5-8 (RJ12 pinout, SR55-RJ45-RJ12/SR55-SPLT, module installation, Modbus TCP)" [[connection.methods.wiring]] adapter = "Adapter D+ / +" device = "RJ12 pin 5 (TXD1-B-OUT / SG+)" signal = "RS-485 data positive" required = true [[connection.methods.wiring]] adapter = "Adapter D- / -" device = "RJ12 pin 6 (TXD0-A-OUT / SG-)" signal = "RS-485 data negative" required = true [[connection.methods.wiring]] adapter = "Adapter signal ground / shield" device = "RJ12 pin 1 (GND)" signal = "Signal reference or shield drain" required = false [[connection.methods]] id = "sr55_modtcp" title = "SR55-CM-MODTCP option module" transport = "tcp" hardware = "option" port = "Either RJ45 port on SR55-CM-MODTCP" connector = "Two switched RJ45 Ethernet ports" adapter = "Computer Ethernet interface or Ethernet switch" cable = "Category-rated Ethernet patch cable" parts = ["SR55-CM-MODTCP option module", "Ethernet patch cable"] steps = ["Lock out and isolate the equipment before fitting an option module or opening the enclosure.", "Install and fully seat the specified communications module according to its installation instructions.", "Connect the computer or switch with the specified Ethernet cable; keep it separated from motor and mains wiring.", "Restore control power, assign an IP address on the same subnet, discover the device, and verify read-only data before enabling network control."] setup = ["Install SR55-CM-MODTCP in the bottom option slot, configure its IP address with the AutomationDirect tool, set P7.0 Control Method=4, and set Timeout above zero."] warnings = ["An Ethernet link does not make remote motor control safe. Verify the drive-side communication-loss action and the independent hardwired stop circuit before commanding run.", "Seat the module carefully to avoid damaging the internal pins.", "The SR55-CM-ENETIP modules are not Modbus TCP and are not valid for this method."] source = "AutomationDirect Stellar SR55 User Manual, 2nd Ed. Rev C, printed pp. 5-2 to 5-8 (RJ12 pinout, SR55-RJ45-RJ12/SR55-SPLT, module installation, Modbus TCP)" # P26.0/P26.1/P26.2 factory defaults, p.3-22: address 1, 19200 baud, EVEN # parity. NOT 9600 8N1. Data bits 8 and stop bits 1 are fixed and not # settable (p.5-4). "none" parity is offered in the P26.2 menu but the # factory ships even, so a default-configured unit needs 19200 8E1. [serial] baudrate = 19200 parity = "E" stopbits = 1 # The SR55 has NO packed status word on Modbus. Each status indication is its # own 16-bit register holding 0 or 1 (p.3-26..3-28), so these are read as # separate points rather than bits of one word. P0.12 is the only true # bitfield and it covers the hardware I/O terminals, not drive state. [monitor] ready = { address = 37184 } # P0.4 1 = healthy and ready to start enabled = { address = 37248 } # P0.5 1 = enabled error = { address = 37312 } # P0.6 1 = tripped and shut down running = { address = 37632 } # P0.7 1 = motor under starter control end_of_start = { address = 37760 } # P0.8 1 = start ramp completed (bypassed) current_limit = { address = 37824 } # P0.9 1 = ramp held by current limit iers_active = { address = 38080 } # P0.10 1 = iERS energy saving engaged io_status = { address = 62016, bits = { 0 = "DI D1-1I", 1 = "DI D1-2I", 2 = "DI D2-1I", 4 = "DO 12", 5 = "DO 24", 6 = "DO 34", 7 = "DO 44" } } # P15 monitor group, p.3-19 for addresses, p.3-63..3-68 for the scales. line_frequency = { address = 32000, scale = 0.001, unit = "Hz" } # P15.0 1 = 0.001 Hz phase_rotation = { address = 32064 } # P15.1 0 = L1-L2-L3, 1 = L1-L3-L2 motor_current = { address = 32896, words = 2, scale = 0.001, unit = "A" } # P15.5 Irms, max of 3 phases phase_current_l1 = { address = 33536, words = 2, scale = 0.001, unit = "A" } # P15.2 phase_current_l2 = { address = 33538, words = 2, scale = 0.001, unit = "A" } # P15.3 phase_current_l3 = { address = 33540, words = 2, scale = 0.001, unit = "A" } # P15.4 # P15.6. Derived internally, not measured: AutomationDirect states the error # can reach 35% on a lightly loaded starter (p.3-64). Treat as indicative. line_voltage = { address = 32960, unit = "V" } power_factor = { address = 33024, scale = 0.001 } # P15.7 1 = 0.001 true_power = { address = 34688, words = 2, scale = 0.001, unit = "kW" } # P15.8 1 = 1 W apparent_power = { address = 34816, words = 2, scale = 0.001, unit = "kVA" } # P15.9 1 = 1 VA reactive_power = { address = 34944, words = 2, scale = 0.001, unit = "kVAR" } # P15.10 1 = 1 VAR # Percentages are 0-16384 full scale, so 1 count = 100/16384 = 0.006104%. iers_saving = { address = 35008, scale = 0.006104, unit = "%" } # P15.11 motor_thermal = { address = 33408, scale = 0.006104, unit = "%" } # P15.20 Overload; trips at 100% motor_thermistor = { address = 10432 } # P15.19 PTC, 0-1024 internal units; trips >400, open circuit = 1023 last_peak_start_current = { address = 38400, words = 2, scale = 0.001, unit = "A" } # P18.0 start_count = { address = 35840, words = 2 } # P22.0 total starts # iERS firing-angle diagnostics, 1 count = 1 degree of mains cycle (p.3-66). delay_angle = { address = 22400, unit = "deg" } # P15.12 delay_backstop = { address = 23040, unit = "deg" } # P15.13 # Ramp and current-limit setpoints, read here for diagnosis. Left NOT writable # on purpose: this app has no soft-starter commissioning screen, and a write # to the wrong one mid-ramp is a nuisance trip. start_time = { address = 7104, unit = "s" } # P3.0 1 = 1 s start_pedestal = { address = 704, scale = 0.006104, unit = "%" } # P3.1 initial volts start_current_limit_time = { address = 26944, unit = "s" } # P3.4 1 = 1 s stop_time = { address = 7296, unit = "s" } # P4.0 1 = 1 s stop_pedestal = { address = 896, scale = 0.006104, unit = "%" } # P4.1 stop_current_limit_time = { address = 28864, unit = "s" } # P4.4 1 = 1 s motor_fla = { address = 25728, words = 2, scale = 0.001, unit = "A" } # P5.0 motor nameplate FLA trip_class = { address = 25664 } # P5.1 10/20/30 # P15.18 HeatSink Temp is deliberately ABSENT. The manual's own encoding is # not a linear scale — "bit12=0: [HighByte*16 + LowByte/16], bit12=1: # 256 - [HighByte*16 + LowByte/16]" (p.3-68) — which this app's scale/signed # decode cannot express. Reading 36544 as a plain integer gives a wrong # temperature, not a rounded one, so it is left out rather than shipped wrong. # CONTROL. There is no control word: P0.0 Start/Stop (17920) is its own # register and takes 1 to start, 0 to stop or soft stop (p.3-25). A soft # starter has no speed reference and no reverse, so neither speed_register # nor run_rev is defined and `control speed` / `control run_rev` refuse. # # P0.0 is described as the "Digital Input Control Command Function" — it is # the same command the terminals drive, and it is only obeyed when P7.0 # Control Method = 4 (Modbus Network), which is exactly when the digital # inputs are disabled. # # BEFORE ARMING: if P8.10 Remote Start Trip (53804) is ON — the factory # default — the starter trips 2001 at power-up or reset whenever P0.0 is # already 1 (p.3-48). Leave the resting value at 0. [control] command_register = 17920 step_delay = 0.05 stop = [0] run_fwd = [1] # Reset is a rising edge on its OWN register (18368), pulsed high then low: # "To reset pulse high and then low when resetting using communications" # (p.3-25). It cannot be a run command — 18368 is not the run register, and # writing 1 there while P0.0 holds 0 does not start the motor. The trailing 0 # matters: leaving reset latched at 1 blocks the next reset. reset_register = 18368 reset = [1, 0] # P8.13 Communications Trip (53796) is ON by default and P26.5 Timeout ms # (15808) defaults to 5000 ms, so an armed session must touch the bus at least # every 5 s. ANY read or write of ANY address feeds the timer — "there must be # at least one Modbus read or write (any address) during the Timeout ms # period" (p.3-48) — so the monitor poll alone keeps it alive. 1000 ms leaves # a 5x margin for a retry storm. # # WHAT SILENCE DOES: with the factory defaults the motor STOPS. P26.6 # Communications Shutdown (53802) ships ON, which per p.3-91 means the unit # "will shut down instead of tripping if the communications fail" — a # controlled stop with no latched trip. Set P26.6 OFF and the same silence # trips 1701 Communications Trip instead, which latches and needs a reset. # The dangerous configuration is P8.13 OFF: "if the Communications Trip is # disabled, the SR55 will not be stopped by the communications failure" # (p.3-102) — the motor then KEEPS RUNNING with nothing on the other end of # the wire. Check P8.13 before trusting the link as a stop path. [control.watchdog] interval_ms = 1000 fault = "1701 Communications Trip" # P0.7 Running holds 0 or 1, so the whole register is bit 0. [running_check] register = 37632 bit = 0 # P17.0 Last Trip (60608) with the nine older entries as history (p.3-20). # HONEST LIMITATION: this is the trip LOG, not a live active-fault register. # It keeps the last code after a successful reset, so a non-zero value here # does not by itself mean the starter is faulted now. Read P0.6 Error (37312) # to know whether the trip is still active. # # Codes below are the complete "Trip Codes (from Trip Log)" table, p.3-101 to # p.3-102, plus the fail-safe ranges from p.3-103..3-104. Where the manual # gives a contiguous block one code per phase or per SCR, the range is named # as the manual prints it rather than expanded into invented per-code text. # 2013 "Rotation Undetermined" is printed exactly that way in the manual, # out of sequence between 2102 and 2201 — kept verbatim rather than # "corrected" to 2103. [faults] register = 60608 history = [60609, 60610, 60611, 60612, 60613, 60614, 60615, 60616, 60617] [faults.codes] 101 = "Input side phase loss — L1 missing at start" 102 = "Input side phase loss — L2 missing at start" 103 = "Input side phase loss — L3 missing at start" 104 = "Input side phase loss while running (104-117)" 201 = "Maximum temperature exceeded — heatsink over 80 C" 208 = "Thermal sensor trip — internal temperature sensor failed" 300 = "Thyristor firing trip, in-line firing mode (300-307)" 350 = "Thyristor firing trip, delta firing mode (350-357)" 401 = "Motor side phase loss at start" 402 = "Motor side phase loss while running (402-403)" 601 = "Control voltage too low" 701 = "Sensing fault trip (701-710)" 801 = "Fan problem — internal cooling fan failed (801-802)" 1001 = "Short circuit thyristor" 1101 = "Low current trip" 1201 = "Current limit timeout trip — start" 1202 = "Current limit timeout trip — stop" 1301 = "Overload trip — overload exceeded 100%" 1302 = "Overload trip — current over 475% for more than 250 ms" 1401 = "Shearpin trip" 1501 = "PTC thermistor trip" 1701 = "Communications trip — no Modbus read or write within Timeout ms" 1801 = "Bypass relay trip — failed to close (1801-1802)" 1803 = "Bypass relay trip — failed to open" 1901 = "Cover open, close to enable motor start" 2001 = "Remote start is enabled — Start/Stop was active at power-up or reset" 2101 = "Rotation L1 L2 L3 trip" 2102 = "Rotation L1 L3 L2 trip" 2013 = "Rotation undetermined trip" 2201 = "MPU trip — internal failure of the main processing unit (2201-2209)" 2402 = "Main board fail-safe (2402-2436) — not clearable by power cycle" 2428 = "Main board fail-safe — Modbus communication unable to recover" 2436 = "Main board fail-safe — Anybus communication unable to recover" 2501 = "Touchscreen fail-safe, local (2501-2531); add 50 for remote keypad" 2601 = "Logging fail-safe (2601-2603)" # NO [rating] SECTION. The SR55 exposes its own frame rating nowhere on # Modbus — P27.1 "About" carries the model number but the manual prints "-" # for its Modbus address (p.3-22, p.3-92). Every current setting is expressed # as a MULTIPLE of the starter's rated amps, so a config cloned from a large # frame onto a small one would silently over-set the motor FLA and current # limits with nothing to catch it. Read the type label by eye before copying # settings between units. # # NO [parameters] SECTION, so clone/restore is unavailable on this profile. # That is deliberate. The map is sparse and interleaved: register 53796 is # Communications Trip, 53802 is Communications Shutdown and 16064 is the baud # rate, all sitting among ordinary trip settings. A range-based restore would # walk straight through the settings that own the link it is being restored # over, and would also cross read-only registers. Restoring an SR55 needs a # named parameter list, not an address range — until that exists, the USB # route (P27.5/P27.6, "Parameters to/from USB", p.3-22) is the supported one. # # UNRESOLVED, deliberately omitted rather than guessed: # - P3.3 Start Current Limit Level (26880) and P4.3 Stop Current Limit Level # (28800) are printed "16-bit unsigned" with a scale of 1 count = 1 mA and # a range up to 450% of the starter's rated amps (p.3-36, p.3-39). Those # cannot all be true: 16 bits at 1 mA caps at 65.5 A, far under the range, # and P5.0 Motor Current with identical units is explicitly 32-bit. One of # the three fields is a typo in the manual. Both registers are left out # until a bench read settles the width. # - The manual documents no register that distinguishes "bypassed" from # "ramping" beyond P0.8 End Of Start, and none for bypass CONTACTOR state; # 1801-1803 report bypass relay failures only after the fact.