# Property of PMA Electrical Solutions, LLC. # # ABB ACS580 standard control program (ASCKX), embedded fieldbus (EFB) # Modbus RTU on the X5 terminals, or via an FSCA-01 RS-485 adapter. # # COVERAGE — ACS580-01 (wall-mount), ACS580-04 (drive modules) and ACS580-07 # (cabinet drives): three packagings of ONE control program and one register # map. ABB 3AXD50000016097 Rev J (eff. 2025-10-01): # p. 13 Applicability: "The manual applies to the ACS580 standard control # program ASCKX version 2.20. ASCK2 is used for frame sizes R1…R5, # and ASCK4 is used for frame sizes R6…R11" — scoped by control # program, not packaging. # p. 15 Related documents list exactly three hardware manuals under this # firmware manual: ACS580-01 (3AXD50000044794), ACS580-04 # (3AXD50000015497), ACS580-07 (3AXD50000045815). # p. 16 carries separate "ACS580-01 / -04 / -07 manuals" listings. # The -07 cabinet options surface as ordinary parameters in this same map # (95.21 bits 6/7 cabinet supervision/fan, printed p. 464; 05.08 Cabinet # temperature "Only visible for ACS580-07 cabinet drives", printed p. 229) — # no cabinet-only fault space exists. # NOT CLAIMED: ACQ580, ACH580, ACS480, ACH480 — each has its own profile, # sourced from its own firmware manual. No "ACS580-31/-34" exists anywhere in # this document (those suffixes belong to the ACH580/ACQ580 families); treated # as not found in primary documentation, not as a proven negative. # # An earlier revision of this profile matched a third-party web page # word-for-word, including a fault-reset value that ABB's own manual carries a # warning against, and panel decimals in place of fieldbus scaling. Treat any # secondary source for ABB registers as untrusted. # # SOURCES — ABB firmware manual 3AXD50000016097 Rev J (EN), ACS580 standard # control program, library.e.abb.com. Printed page = PDF page + 2 from the # parameter chapter onward; citations below are PRINTED pages. # p. 13 applicability (ASCKX 2.20) # pp. 15-16 related documents / coverage # p. 422 46.02 Frequency scaling (default 50.00 Hz; 60.00 Hz per # 95.20 b0) # p. 423 46.03/46.04/46.05 scaling defaults # pp. 436-437 58.03/58.04/58.05 serial defaults (19.2 kbps, 8 EVEN 1) # p. 439 58.14 Communication loss action (default: No action) # p. 442 58.33 Mode 0 addressing formula # p. 485 99.06 Motor nominal current, FbEq16 1 = 1 A (see 46.05) # pp. 539-568 fault message table (transcribed below) # pp. 579-583 ABB Drives control word / status word bit tables # pp. 587-588 state diagram and the literal start/stop words # p. 591 holding register map (400001 CW / 400002 Ref1 / 400004 SW) # # DRIVE-SIDE SETUP: 20.01 = Embedded fieldbus, 58.01 = Modbus RTU, # 58.03 node address, 58.04 baud, 58.05 parity, 58.14 Communication loss # action = Fault (the FACTORY DEFAULT IS "No action" = monitoring disabled, # p. 439 — without this the drive keeps running when the master goes quiet), # then 58.06 = Refresh settings. # # Parameter addressing: 0-based register = 100 * group + index - 1 (58.33 # Mode 0, p. 442: register = 400000 + 100*group + index, minus 400001). # par 01.06 Output frequency -> 100*1 + 6 - 1 = 105 # # SCALING IS FIELDBUS (FbEq16), NOT PANEL DECIMALS. Several of these are # scaled by group 46 parameters and therefore depend on drive configuration — # confirm 46.01-46.05 on the actual unit before trusting the values. name = "ABB ACS580" vendor = "ABB" device_type = "vfd" verified = false probe_register = 3 # status word, readable whenever the fieldbus is alive # 58.04 Baud rate default is "Modbus: 19.2 kbps" and 58.05 Parity default is # 8 EVEN 1 (pp. 436-437) — same as every 580-family sibling. [serial] baudrate = 19200 parity = "E" stopbits = 1 [monitor] control_word = { address = 0, bits = { 0 = "OFF1", 1 = "OFF2_N", 2 = "OFF3_N", 3 = "RUN", 4 = "RAMP_OUT_ZERO_N", 5 = "RAMP_HOLD_N", 6 = "RAMP_IN_ZERO_N", 7 = "RESET", 10 = "REMOTE_CMD", 11 = "EXT_CTRL_LOC" } } reference_1 = { address = 1, signed = true, scale = 0.005, unit = "%" } # 20000 = 100% status_word = { address = 3, bits = { 0 = "RDY_ON", 1 = "RDY_RUN", 2 = "RDY_REF", 3 = "TRIPPED", 4 = "OFF_2_INACTIVE", 5 = "OFF_3_INACTIVE", 6 = "SWC_ON_INHIB", 7 = "ALARM", 8 = "AT_SETPOINT", 9 = "REMOTE", 10 = "ABOVE_LIMIT" } } # 01.06, scaled by 46.02: default 20000 = 50.00 Hz -> scale 0.0025. On a # 60 Hz-market unit 95.20 b0 makes 46.02 = 60.00 Hz and the scale is 0.003 # (p. 422). CONFIG-DEPENDENT. output_frequency = { address = 105, signed = true, scale = 0.0025, unit = "Hz" } motor_current = { address = 106, scale = 1.0, unit = "A" } # 01.07, 1 A per count at the 46.05 default (10000 A = 10000) motor_torque = { address = 109, signed = true, scale = 0.01, unit = "%" } # 01.10, 10000 = 100% (46.03 default) dc_voltage = { address = 110, scale = 0.1, unit = "V" } # 01.11, 10 = 1 V output_voltage = { address = 112, unit = "V" } # 01.13, 1 V per count output_power = { address = 113, signed = true, scale = 0.1, unit = "kW" } # 01.14, via 46.04; unit follows 96.16 Unit selection # 04.01-04.03 are three CONCURRENT active faults, not a history. active_fault_2 = { address = 401 } active_fault_3 = { address = 402 } # ABB Drives profile. The keepalive below proves the link is alive; the DRIVE # only trips 6681 on silence if 58.14 = Fault has been set (default is # "No action" — monitoring disabled, p. 439). [control] command_register = 0 speed_register = 1 speed_scale = 0.005 # write %, 20000 raw = 100% of par 46.01/46.02 speed_signed = true # direction IS the sign of the reference here speed_unit = "%" # NOT Hz — this is percent of the drive's max reference max_ref = 100.0 step_delay = 0.05 # p. 588: "1143 (477h) = Stop according to 21.03 Stop mode (Preferred)". # 0x047E is the documented OFF1 ramp stop alternative. stop = [0x0477] # The manual's own literal start sequence, p. 587: 1142 (476h) -> NOT READY # TO SWITCH ON; then (gated on MSW bit 0 = 1, which the arm sequence's # read-back covers) 1143 (477h) -> READY TO SWITCH ON; 1151 (47Fh) -> # OPERATION. run_fwd = [0x0476, 0x0477, 0x047F] # Reset is bit 7 rising ON TOP of the preferred stop word — bit 3 # INHIBIT_OPERATION stays low throughout, so no step is a run command, and # OFF2/OFF3 stay high so no emergency-off is commanded. The previously # shipped 0x0480 drives OFF1/OFF2/OFF3 low, which the manual flags as # Emergency-OFF / Emergency-stop; it only appeared to work because it was # issued from the FAULT state. reset = [0x0477, 0x04F7, 0x0477] # run_rev is deliberately absent. On the ABB Drives profile direction comes # from the SIGN OF THE REFERENCE, not the control word, so a "reverse" command # word is byte-identical to forward. Reverse with a negative reference. [control.watchdog] interval_ms = 300 fault = "6681 EFB comm loss (only if 58.14 = Fault; the factory default is No action and the drive keeps running)" [running_check] register = 3 bit = 2 # 04.01 active fault; stored history is 04.11-04.13 (addresses 410-412). [faults] register = 400 history = [410, 411, 412] # Fault messages table, 3AXD50000016097 Rev J printed pp. 539-568 (the table # itself runs pp. 553-568), transcribed complete: 100 codes. ABB reports # faults as hex; keys are the decimal equivalents. Warnings (Axxx table) and # per-fault auxiliary sub-codes are deliberately excluded. 64FF Fault reset is # an event, not a fault, and is excluded. [faults.codes] 0 = "No fault" 4224 = "0x1080 Backup/Restore timeout" 4225 = "0x1081 Rating ID fault" 8833 = "0x2281 Calibration" 8976 = "0x2310 Overcurrent" 9008 = "0x2330 Earth leakage" 9089 = "0x2381 IGBT overload" 12592 = "0x3130 Input phase loss" 12673 = "0x3181 Wiring or earth fault" 12816 = "0x3210 DC link overvoltage" 12832 = "0x3220 DC link undervoltage" 13185 = "0x3381 Output phase loss" 13189 = "0x3385 Autophasing" 16656 = "0x4110 Control board temperature" 16912 = "0x4210 IGBT overtemperature" 17040 = "0x4290 Cooling" 17137 = "0x42F1 IGBT temperature" 17168 = "0x4310 Excess temperature" 17280 = "0x4380 Excess temperature difference" 18817 = "0x4981 External temperature 1" 18818 = "0x4982 External temperature 2" 18832 = "0x4990 CPTC-02 not found" 18833 = "0x4991 Safe motor temperature" 20608 = "0x5080 Fan" 20609 = "0x5081 Auxiliary fan broken" 20617 = "0x5089 SMT circuit malfunction" 20624 = "0x5090 STO hardware failure" 20625 = "0x5091 Safe torque off" 20626 = "0x5092 PU logic error" 20627 = "0x5093 Rating ID mismatch" 20628 = "0x5094 Measurement circuit temperature" 20632 = "0x5098 I/O communication loss" 20640 = "0x50A0 Fan" 22145 = "0x5681 PU communication" 22146 = "0x5682 Power unit lost" 22161 = "0x5691 Measurement circuit ADC" 22162 = "0x5692 PU board powerfail" 22163 = "0x5693 Measurement circuit DFF" 22167 = "0x5697 Charging feedback" 22168 = "0x5698 Unknown PU fault" 24961 = "0x6181 FPGA version incompatible" 25088 = "0x6200 Checksum mismatch" 25350 = "0x6306 FBA A mapping file" 25729 = "0x6481 Task overload" 25735 = "0x6487 Stack overflow" 25761 = "0x64A1 Internal file load" 25764 = "0x64A4 Rating ID fault" 25766 = "0x64A6 Adaptive program" 25777 = "0x64B1 Internal SSW fault" 25778 = "0x64B2 User set fault" 25779 = "0x64B3 Macro parameterization error" 25825 = "0x64E1 Kernel overload" 25985 = "0x6581 Parameter system" 26001 = "0x6591 Backup/Restore timeout" 26017 = "0x65A1 FBA A parameter conflict" 26241 = "0x6681 EFB comm loss" 26242 = "0x6682 EFB config file" 26243 = "0x6683 EFB invalid parameterization" 26244 = "0x6684 EFB load fault" 26245 = "0x6685 EFB fault 2" 26246 = "0x6686 EFB fault 3" 26754 = "0x6882 Text 32-bit table overflow" 26757 = "0x6885 Text file overflow" 28801 = "0x7081 Control panel loss" 28802 = "0x7082 I/O module comm loss" 28805 = "0x7085 Incompatible option module" 28806 = "0x7086 AI Overvoltage" 28961 = "0x7121 Motor stall" 28962 = "0x7122 Motor overload" 29057 = "0x7181 Brake resistor" 29059 = "0x7183 BR excess temperature" 29073 = "0x7191 BC short circuit" 29074 = "0x7192 BC IGBT excess temperature" 29456 = "0x7310 Overspeed" 29616 = "0x73B0 Emergency ramp failed" 29680 = "0x73F0 Overfrequency" 29968 = "0x7510 FBA A communication" 32769 = "0x8001 ULC underload fault" 32770 = "0x8002 ULC overload fault" 32928 = "0x80A0 AI supervision" 32944 = "0x80B0 Signal supervision 1" 32945 = "0x80B1 Signal supervision 2" 32946 = "0x80B2 Signal supervision 3" 32947 = "0x80B3 Signal supervision 4" 32948 = "0x80B4 Signal supervision 5" 32949 = "0x80B5 Signal supervision 6" 36993 = "0x9081 External fault 1" 36994 = "0x9082 External fault 2" 36995 = "0x9083 External fault 3" 36996 = "0x9084 External fault 4" 36997 = "0x9085 External fault 5" 54273 = "0xD401 Max cleaning fault" 54276 = "0xD404 Running dry" 54277 = "0xD405 Pipe fill-timeout" 54284 = "0xD40C Cavitation detected" 64129 = "0xFA81 Safe torque off 1" 64130 = "0xFA82 Safe torque off 2" 65377 = "0xFF61 ID run" 65379 = "0xFF63 STO diagnostics failure" 65409 = "0xFF81 FB A force trip" 65422 = "0xFF8E EFB force trip" # 99.06 Motor nominal current, printed p. 485: FbEq16 "1 = 1 A (see 46.05)" — # whole amps at the 46.05 default of 10000 A (p. 423), so a 4.5 A motor reads # 4. A motor-nameplate guard, not a frame identity: two different frames set # for the same motor compare equal. The manual's 07.03 Drive rating id # (read-only drive identity) is the stronger candidate on the siblings and # could replace this after a bench read. [rating] register = 9905 words = 1 scale = 1.0 unit = "A" label = "Motor nominal current (99.06)" [connection] summary = "The ACS580 can be reached either through built-in X5 Modbus RTU or through an optional FSCA-01/-02 RS-485 adapter; choose the matching parameter path." warnings = ["The X5 path uses embedded-fieldbus group 58; the FSCA path uses fieldbus-adapter groups 50-53/51. Do not mix their enable and refresh procedures."] [[connection.methods]] id = "built_in_rs485" title = "Built-in Modbus RTU" transport = "serial" hardware = "built_in" port = "control terminal block X5" connector = "X5:29 B+, 30 A-, 31 DGND; S4 TERM and S5 BIAS" adapter = "Isolated USB-to-RS-485 adapter" cable = "Shielded twisted-pair RS-485 cable with signal common" parts = ["Isolated USB-to-RS-485 adapter","Shielded twisted-pair RS-485 cable with signal common","Termination hardware if required"] steps = ["Lock out all power, verify the motor cannot start, and wait for the DC bus to discharge.","Open the control compartment and locate control terminal block X5.","Land the conductors exactly as shown below, preserving the shield through each daisy-chain node.","Enable termination only if this device is at a physical end of the RS-485 trunk.","Restore control power with the motor inhibited and verify a read before enabling fieldbus control."] setup = ["Set S4 TERM at bus ends and S5 BIAS at one device.","Set 58.01 = Modbus RTU, node, baud, parity and ABB Drives profile.","Select Embedded fieldbus for commands/references, configure 58.14 loss action, then set 58.06 = Refresh settings."] warnings = [] source = "ABB 3AXD50000016097 Rev J, pp. 79-81 and 569-573." [[connection.methods.wiring]] adapter = "D+ / B / positive" device = "X5:29 B+" signal = "RS-485 positive" [[connection.methods.wiring]] adapter = "D- / A / negative" device = "X5:30 A-" signal = "RS-485 negative" [[connection.methods.wiring]] adapter = "COM / signal common" device = "X5:31 DGND" signal = "Signal reference" [[connection.methods]] id = "fsca_01_rs485" title = "FSCA-01/-02 RS-485 adapter" transport = "serial" hardware = "option" port = "FSCA-01/-02 connector X1 in the drive option slot" connector = "4-pole detachable terminal: 1 SHLD, 2 DATA_B positive, 3 DATA_A negative, 4 GND_B" adapter = "Isolated USB-to-RS-485 adapter" cable = "Shielded twisted pair plus isolated signal-ground conductor" parts = ["ABB FSCA-01 or FSCA-02","Isolated USB-to-RS-485 adapter","Shielded twisted pair plus signal common","TX10 screwdriver"] steps = ["Lock out all power and wait at least five minutes for the DC bus to discharge.","Install the FSCA module in an allowed option slot according to the exact drive hardware manual; secure the mounting screw.","Land the bus on X1 using the literal terminal mapping below.","Set the FSCA termination jumper on only when this module is at a physical end of the trunk.","Restore control power with the motor inhibited, refresh the adapter parameters, and verify a read before enabling control."] setup = ["Set 50.01 to the slot containing FSCA and configure communication-loss handling.","Set 51.02 = ABB Classic, 51.03 node, 51.04 baud, 51.05 parity and 51.12 = Mode 0.","Select the FBA for commands/references and set 51.27 = Refresh."] warnings = ["The FSCA path uses fieldbus-adapter groups 50-53/51, not embedded-fieldbus group 58.","Terminate only the two physical bus ends."] source = "ABB 3AUA0000109533 Rev C, pp. 12, 28-31 and 35-39; ACS580 firmware 3AXD50000016097 Rev J, groups 50-53." [[connection.methods.wiring]] adapter = "D+ / B / positive" device = "X1:2 DATA_B" signal = "RS-485 data positive" [[connection.methods.wiring]] adapter = "D- / A / negative" device = "X1:3 DATA_A" signal = "RS-485 data negative" [[connection.methods.wiring]] adapter = "COM / signal common" device = "X1:4 GND_B" signal = "Isolated signal ground" [[connection.methods.wiring]] adapter = "Cable shield" device = "X1:1 SHLD" signal = "Shield/chassis bond" required = false