# Property of PMA Electrical Solutions, LLC. # # Allen-Bradley PowerFlex 525 AND PowerFlex 523 over the embedded RS-485 DSI # port in Modbus RTU mode. # # COVERAGE — the RS-485 (DSI) register map is documented for the whole # PowerFlex 520-SERIES, not the 525 alone, and applies unchanged to the 523. # Rockwell 520-UM001O-EN-E (Sept 2025) Appendix C, pp. 205-212: every section # is captioned "PowerFlex 520-series", and the 523 is named directly in the # register tables — p. 207 and p. 210 both read "PowerFlex 523 drives support # only Velocity bit definitions", which is the layout this profile encodes # (the Position variant, C122 = 1, is 525-only and is NOT encoded here). # Logic Command 2000H (8192), Logic Status 2100H (8448), Drive Error Codes # 2101H (8449), Drive Operational Values 2102H-2106H (8450-8454), and "the # Modbus register address equals the parameter number" (p. 212) carry no # per-model split. # NOT claimed for the 523: the [parameters] clone ranges as a whole. Chapter 3 # marks many parameters "PF 525 = Parameter is specific to PowerFlex 525 # drives only" (legend p. 65; e.g. P037 p. 65, t067-t075 p. 73 fn. 1, C122 # p. 102, the L180-L215 StepLogic group per p. 213-214) — a 525-sourced clone # restored to a 523 will fail on those addresses, which surface in the restore # plan's unverifiable list rather than corrupting anything. # # An earlier revision was ported from a PowerFlex 4-family template and # carried that family's parameter numbering and status bits; everything here # is from 520-UM001O-EN-E only. # # Drive-side setup (p. 206 "Configuring Parameters for DSI Network", details # pp. 102-103): P046 [Start Source 1] = 3 "Serial/DSI", P047 [Speed # Reference1] = 3, C123 [RS485 Data Rate] (default 3 = 9600), C124 [RS485 # Node Addr] (default 100, range 1-247 — a factory-fresh drive answers on # node 100, not 1), C127 [RS485 Format] (default 0 = RTU 8-N-1), C121 [Comm # Write Mode] = 0 "Save" (default; 1 "RAM Only" voids a restore at # power-down), then a reset or power cycle. # # Parameter addressing: the 0-based Modbus register IS the parameter number # (p. 212, "decimal '1' is used to address Parameter b001 [Output Freq]"). # Worked: b001 -> 1, P046 -> 46, C124 -> 124, A410 -> 410; Logic Command # 2000H = 8192. Control uses the DSI block at 2000H-2106H. # # Watch the off-by-one: AB documents 0-based addresses, many Modbus masters # take 1-based 4xxxx addresses. p. 207: "Logic Command may be register address # 8192 for some master devices ... and 8193 for others" — if the Logic Command # lands at 8193 in your master, it is doing the +1 for you. # # 8192 (Logic Command) and 8193 (Comm Frequency Command) are documented under # "Writing (06)" only (pp. 207-209); whether they answer an FC03 read is not # stated. The readable frequency values are 8450 (Frequency Command) and 8451 # (Output Frequency), p. 212. The reference write's read-back verification # therefore rides on undocumented behaviour — a bench item. name = "Allen-Bradley PowerFlex 525 / 523" vendor = "Allen-Bradley" verified = false probe_register = 8448 [serial] baudrate = 9600 parity = "N" stopbits = 1 [monitor] # Bits 5,4 of the Logic Command are one 2-bit field (00 = No Command, # 01 = Forward, 10 = Reverse, 11 = No Command, p. 208) — shown as two flags # here for display only. FC03 readability of 8192 is undocumented (see # header). logic_command = { address = 8192, bits = { 0 = "Stop", 1 = "Start", 2 = "Jog", 3 = "ClearFault", 4 = "DIR_FWD", 5 = "DIR_REV", 6 = "LocalCtrl", 7 = "MOP_Inc" } } # 2102H Frequency Command, "Reading (03) Drive Operational Values", p. 212 — # the documented READ path for the commanded frequency. frequency_command = { address = 8450, scale = 0.01, unit = "Hz" } logic_status = { address = 8448, bits = { 0 = "Ready", 1 = "Active", 2 = "CmdFwd", 3 = "ActualFwd", 4 = "Accel", 5 = "Decel", 6 = "NotUsed_PF525", 7 = "Fault", 8 = "AtReference", 9 = "MainFreqCtrl", 10 = "OperCmdCtrl", 11 = "ParamsLocked" } } output_frequency = { address = 1, scale = 0.01, unit = "Hz" } commanded_frequency = { address = 2, scale = 0.01, unit = "Hz" } output_current = { address = 3, scale = 0.01, unit = "A" } output_voltage = { address = 4, scale = 0.1, unit = "V" } # b004 is 0.1 V dc_bus_voltage = { address = 5, unit = "V" } drive_status = { address = 6 } [control] command_register = 8192 # 2001H Comm Frequency Command, "in units of 0.01 Hz" (p. 209). Read-back # verification of this write is undocumented behaviour — see header. speed_register = 8193 speed_scale = 0.01 speed_unit = "Hz" max_ref = 500.0 step_delay = 0.05 stop = [0x0001] # Direction first (bits 5,4 with Start clear), then Start — the manual does # not state which direction a Start with field 00 "No Command" takes, so the # drive is never started direction-less. run_fwd = [0x0010, 0x0012] run_rev = [0x0020, 0x0022] reset = [0x0008, 0x0000] # C125 [Comm Loss Action] default 0 "Fault" and C126 [Comm Loss Time] default # 5.0 s, min 0.1 s (p. 102) — "effective only if I/O that controls the drive # is transmitted through the RS-485 port", i.e. exactly while armed. Error # code 81 = DSI Communication Loss (p. 211). Same convention as # rockwell_powerflex4.toml / rockwell_powerflex40.toml. [control.watchdog] interval_ms = 2000 fault = "F081 DSI Communication Loss" [running_check] register = 8448 bit = 1 # b007/b008/b009 hold the three most recent fault codes. [faults] register = 7 history = [8, 9] # "Drive Error Codes", register 2101H (8449), 520-UM001O-EN-E p. 211, # transcribed COMPLETE (48 codes). [faults.codes] 0 = "No Fault" 2 = "Auxiliary Input" 3 = "Power Loss" 4 = "Undervoltage" 5 = "Overvoltage" 6 = "Motor Stalled" 7 = "Motor Overload" 8 = "Heatsink Overtemperature" 9 = "Control Module Overtemperature" 12 = "HW Overcurrent (300%)" 13 = "Ground Fault" 15 = "Load Loss" 21 = "Output Phase Loss" 29 = "Analog Input Loss" 33 = "Auto Restart Tries" 38 = "Phase U to Ground Short" 39 = "Phase V to Ground Short" 40 = "Phase W to Ground Short" 41 = "Phase UV Short" 42 = "Phase UW Short" 43 = "Phase VW Short" 48 = "Parameters Defaulted" 59 = "Safety Open" 63 = "Software Overcurrent" 64 = "Drive Overload" 70 = "Power Unit Fail" 71 = "DSI Network Loss" 72 = "Option Card Network Loss" 73 = "Embedded EtherNet/IP Adapter Network Loss" 80 = "AutoTune Fail" 81 = "DSI Communication Loss" 82 = "Option Card Communication Loss" 83 = "Embedded EtherNet/IP Adapter Communication Loss" 91 = "Encoder Loss" 94 = "Function Loss" 100 = "Parameter Checksum Error" 101 = "External Storage" 105 = "Control Module Connect Error" 106 = "Incompatible Control-Power Module" 107 = "Unrecognized Control-Power Module" 109 = "Mismatched Control-Power Module" 110 = "Keypad Membrane" 111 = "Safety Hardware" 114 = "Microprocessor Failure" 122 = "I/O Board Fail" 125 = "Flash Update Required" 126 = "Non Recoverable Error" 127 = "DSI Flash Update Required" # P034 [Motor NP FLA], display 0.1 A, default "Based on Drive Rating", max # Drive Rated Amps x 2 (p. 85; register = parameter number per p. 212). A # user-settable motor parameter whose factory default tracks the frame — a # default-value heuristic, not a frame identity. It sits OUTSIDE the # [parameters] ranges below so a restore cannot overwrite the guard's own # reference value. [rating] register = 34 words = 1 scale = 0.1 unit = "A" label = "Motor NP FLA (P034)" # Writable configuration groups per 520-UM001O-EN-E pp. 73-75 "Parameters # List": Basic Program P030-P054, Terminal Blocks t062-t106, Communications # C121-C175, Logic L180-L215, Advanced Program A410-A596. The b group # (display), d360-d394 (Advanced Display) and F604-F731 (fault/diagnostic) # are read-only and excluded. # DELIBERATE HOLES in the C group — network identity must not be cloned onto # a replacement drive: C123/C124/C127 (RS-485 rate, node address, format), # C128-C141 (EtherNet/IP address selection, IP, subnet, gateway, rate, # p. 103) and C171-C174 (Drv 1-4 Addr, p. 73). Restoring any of those either # re-addresses the target mid-burst or puts a duplicate IP/node on the plant # network. P034 (register 34) is excluded as the rating guard's reference. # On a PowerFlex 523, PF 525-only parameters inside these ranges (P037, # t067-t075, C122, L180-L215, various A5xx) do not exist — they surface as # unverifiable/failed writes, see header. [parameters] ranges = [[30, 33], [35, 54], [62, 106], [121, 122], [125, 126], [143, 170], [175, 175], [180, 215], [410, 596]] [connection] summary = "Connect directly to the PowerFlex 525 / 523 built-in RS-485 DSI port using Modbus RTU; no network option module is required." warnings = ["Lock out and verify the drive is de-energized before opening its cover.", "Wire only RJ45 pins 4 and 5; Rockwell states the other pins carry power for peripherals.", "Keep the RS-485 cable at least 0.3 m (1 ft) from power conductors and cross at right angles.", "Rockwell notes that other manufacturers may interpret + and - differently; if a correctly configured two-wire link is silent, swap the pair at the master only."] [[connection.methods]] id = "built_in_dsi_rs485" title = "Built-in RS-485 DSI" transport = "serial" hardware = "built_in" port = "Drive RS-485 (DSI) RJ45" connector = "RJ45; pin 4 TxRxD+, pin 5 TxRxD-; all other RJ45 pins must remain disconnected" adapter = "Isolated USB-to-RS-485 adapter" cable = "Shielded two-conductor RS-485 cable, optionally through Rockwell AK-U0-RJ45-TB2P breakout" parts = ["Isolated USB-to-RS-485 adapter", "Shielded two-conductor cable", "RJ45 plug wired only on pins 4/5 or AK-U0-RJ45-TB2P", "120 ohm terminators at the two bus ends"] steps = ["Lock out all power and verify the DC bus is discharged.", "Locate the RS-485 (DSI) RJ45 port.", "Wire TxRxD+ to pin 4 and TxRxD- to pin 5; leave every other RJ45 pin open.", "Connect the cable shield as specified below, at one end of each segment only, and install 120 ohm termination at both physical ends.", "Restore control power with the motor inhibited and verify a holding-register read before enabling control."] setup = ["P046 [Start Source 1] = 3 Serial/DSI.", "P047 [Speed Reference1] = 3 Serial/DSI.", "Set C123 data rate, C124 unique node, C125 loss action, C126 loss time and C127 format.", "Reset or power-cycle after settings", " C121 = 0 Save for persistent writes."] warnings = ["Never connect Power over Ethernet to this port.", "Do not use an ordinary fully wired Ethernet patch lead between the drive and a serial adapter."] source = "Rockwell 520-UM001O-EN-E (Sept 2025), pp. 205-207." [[connection.methods.wiring]] adapter = "TxRxD+" device = "RJ45 pin 4 — TxRxD+" signal = "RS-485 positive conductor" [[connection.methods.wiring]] adapter = "TxRxD-" device = "RJ45 pin 5 — TxRxD-" signal = "RS-485 negative conductor" [[connection.methods.wiring]] adapter = "Cable shield / PE" device = "I/O terminal C1 (RJ45 Shield) to PE at one end" signal = "Shield bond" required = false