# Property of PMA Electrical Solutions, LLC. # # ABB ACS 600 running the STANDARD APPLICATION PROGRAM 6.x, controlled through # the EMBEDDED Standard Modbus Link. # # CLAIMED: ACS 600 with Standard Application Program 6.x and 98.07 COMM # PROFILE = ABB DRIVES. # NOT CLAIMED: # * Any other ACS 600 application program (System, Pump Control, # Master/Follower, Crane). The Group 3 signal indexes, the fault-word bit # names, the group 52 defaults and the rating parameter in this file were # read out of the Standard Application Program manual and hold for that # program alone. # * Program versions 2.8 and 3.0. Those use the CSA 2.8/3.0 communication # profile, whose Control and Status Words are DIFFERENT tables (C-19 and # C-20) — [FW] p. C-17. If 98.07 is set to CSA 2.8/3.0 the control words # below are wrong. The ABB Drives profile requires program 5.0 or later. # * The ACS 100 / 140 / 160 / 400 (different documents, different mapping # detail, and the ACS 100 has no serial interface at all — see # docs/UNSUPPORTED.md), and the ACS 800, which is a separate file. The ABB # Drives control/status word LAYOUT is shared across ABB's portfolio; the # addresses, scalings and bit names here are claimed for the ACS 600 alone. # # COMMUNICATION PATH — EMBEDDED, NO ADAPTER MODULE. # "The modular jacks (X28 and X29) on the ACS 600 NIOC-01 board form the # Standard Modbus Link. The Link can be used for external control by a Modbus # RTU-protocol controller" ([FW] p. C-5). An NBCI Panel Bus Connection # Interface gives galvanic isolation and long-distance/parallel wiring; an # NPCU-01 PC Connection Unit converts to RS-232. Neither is required for a # direct RS-485 master. # THE OTHER PATH IS NOT THIS ONE. The ACS 600 also has a fibre-optic DDCS # channel CH0 on the NDCO board that takes a separate fieldbus adapter module # ([FW] p. C-1, Figure C-1). That path uses Group 51, not Group 52. This file # describes the embedded link only. # # SOURCE — primary ABB documentation only: # [FW] ACS 600 Firmware Manual, Standard Application Program 6.x for ACS 600 # Frequency Converters, 3AFY 61201441 R0725 EN, effective 16.10.2000, # supersedes 06.09.1999. # manuals/abb_acs600_stdprg_firmware_manual.pdf # Page ranges each section came from (PRINTED page numbers; Appendix pages are # printed "A-1", "C-5" etc. and the PDF index is offset by 208 in Appendix C — # printed C-18 is PDF page 226): # [FW] p. C-1 Figure C-1, the two independent fieldbus channels # [FW] p. C-5 Standard Modbus Link, Table C-3 set-up parameters # [FW] pp. C-6..C-8 Table C-4 drive control parameters # [FW] pp. C-9..C-12 data-set update times, reference scaling table (C-11) # [FW] p. C-13 reference direction diagrams # [FW] p. C-14 Modbus addressing table (40001-40012), Actual Values # [FW] p. C-17 communication profiles, 98.07 # [FW] p. C-18 Table C-5 Control Word bits # [FW] p. C-19 Table C-6 Status Word bits # [FW] p. C-20 Figure C-4 state machine # [FW] pp. C-21..C-23 Table C-7 aux status, C-9 FAULT WORD 1, C-10 FAULT # WORD 2, C-11 SYSTEM FAULT WORD, C-12 ALARM WORD 1 # [FW] pp. A-1..A-3 Table A-1 group 1 actual signals, Table A-3 group 3, # each with its Modbus register number and fieldbus scaling # [FW] p. A-12 Group 52 alternative settings # [FW] p. A-4 Group 99 start-up data, 99.06 MOTOR NOM CURRENT # [FW] pp. 7-3, 7-8 COMM MODULE warning / fault-tracing entries # [FW] pp. B-5, B-7 Appendix B default settings: 30.18 / 30.19, group 52 # # DRIVE-SIDE SETUP. Without these the drive ACKs writes and ignores them: # 98.02 COMM. MODULE LINK = STD MODBUS initialises the Standard Modbus Link # and activates Group 52 ([FW] p. C-5) # 98.07 COMM PROFILE = ABB DRIVES REQUIRED for this profile. It # affects BOTH channels ([FW] p. C-17) # 52.01 STATION NUMBER = 1..247 (default 1) # 52.02 BAUDRATE (default 9600) Table C-3 lists 600/1200/2400/4800/ # 9600; the Group 52 alternatives on # [FW] p. A-12 also list 19200. Treat # 19200 as unconfirmed on this link. # 52.03 PARITY = ODD (default) / EVEN / NONE1STOPBIT / NONE2STOPBIT # 10.01 EXT1 STRT/STP/DIR = COMM.MODULE fieldbus Control Word commands # 10.02 EXT2 STRT/STP/DIR = COMM.MODULE # 10.03 DIRECTION = REQUEST or reverse is refused # 11.02 EXT1/EXT2 SELECT = COMM.MODULE Control Word bit 11 picks EXT1/EXT2 # 11.03 EXT REF1 SELECT = COMM.REF fieldbus REF1 becomes the reference # 11.06 EXT REF2 SELECT = COMM.REF # 16.01 RUN ENABLE = COMM.MODULE then CW bit 3 also drives Run Enable # 16.04 FAULT RESET SEL = COMM.MODULE enables CW bit 7 reset # 16.07 PARAM SAVE fieldbus writes are not auto-saved # 30.18 COMM FAULT FUNC / 30.19 MAIN REF DS T-OUT — see the watchdog note # # ADDRESSING FORMULA — 0-BASED PROTOCOL ADDRESSES THROUGHOUT, never 4xxxx. # Two mappings, both published by ABB: # (a) The fixed data-set registers, [FW] p. C-14: # 40001 Control Word 40004 Status Word # 40002 REF1 40005 ACT1 # 40003 REF2 40006 ACT2 # 40007 REF3 40010 ACT3 # 40008 REF4 40011 ACT4 # 40009 REF5 40012 ACT5 # (b) Every actual signal and parameter, through the "Modbus/Modbus Plus # Par. No." column of Appendix A — e.g. 1.04 CURRENT is 40104, 3.05 # FAULT WORD 1 is 40305, 99.06 MOTOR NOM CURRENT is 49906. That column # is 4GGPP: group GG, index PP. # Modbus holding register 40001 is protocol address 0, so throughout this file # 0-based = (4xxxx number) - 40001 = 100 * group + index - 1 # Worked examples: # Control Word 40001 -> 40001 - 40001 = 0 # Status Word 40004 -> 40004 - 40001 = 3 # REF3 40007 -> 40007 - 40001 = 6 # ACT3 40010 -> 40010 - 40001 = 9 # 1.04 CURRENT 40104 -> 40104 - 40001 = 100*1 + 4 - 1 = 103 # 3.05 FAULT WORD1 40305 -> 40305 - 40001 = 100*3 + 5 - 1 = 304 # 99.06 MOTOR NOM CURRENT -> 49906 - 40001 = 100*99 + 6 - 1 = 9905 # # CONFIGURATION-DEPENDENT, do not treat any of this as fixed: # - REF1/REF2 scaling is 20000 = parameter 11.05 EXT REF1 MAXIMUM (or 11.08 # for REF2), and 11.05 is a SPEED reference in rpm that the site sets # ([FW] p. C-11, the scaling table — the diagrams on pp. C-12/C-13 are # illustrations of it). The normative raw range is -32765..32765, so a # value beyond +/-20000 overshoots 11.05. (+/-32767 are the axis end # labels on the direction diagrams, not the table's range.) # REF2's scaling factor is selected by the APPLICATION MACRO 99.02, not by # an abstract reference type: FACTORY / HAND-AUTO / SEQ CTRL give a speed # reference at 20000 = [11.08]; T CTRL and MASTER/FOLLOWER give torque and # PID CTRL gives PID, both at 10000. This profile assumes a speed # reference. Percent is what the register takes; it is NOT Hz and NOT rpm. # The final reference is then limited by 20.01/20.02 (speed) or # 20.07/20.08 (frequency), so a commanded 100% is not necessarily 100% of # what the motor will do. # - ACT1 and ACT2 (registers 4 and 5) carry whatever parameters 92.02 and # 92.03 point at ([FW] p. C-16, Figure C-3). Factory defaults ARE published # — [FW] p. B-7 gives 92.02 = 102 (1.02 SPEED) and 92.03 = 105 (1.05 # TORQUE) on all five application macros, with 92.01 fixed at 302. They are # still DELIBERATELY ABSENT from [monitor] because a commissioned site can # repoint them and the profile would then read the wrong signal. The group # signals below are addressed directly through mapping (b) and need no # site commissioning. # - Group 1 scalings below are the FIELDBUS scalings from the "Scaling for # Fieldbus" column of [FW] p. A-1, not panel decimals. 1.02 SPEED is # percent of the motor's ABSOLUTE MAXIMUM speed and 1.05/1.06 are percent # of motor NOMINAL torque/power, all of which come from the group 99 motor # data — the same number means different rpm/Nm on a differently # commissioned drive. # - The auxiliary data set (REF3-5 / ACT3-5, registers 6-11) is a separate, # slower path with its own timeout parameter 30.21 AUX REF DS T-OUT # ([FW] p. C-15, Figure C-2). [FW] p. C-9 gives the update times: 12 ms for # the Main Reference and Main Actual Signal data sets, 100 ms for the # Auxiliary ones. # None of the points below live in the auxiliary set. name = "ABB ACS600" vendor = "ABB" device_type = "vfd" verified = false probe_register = 3 # 40004 Status Word, readable whenever the link is alive # Group 52 factory defaults, [FW] p. B-7 default settings table: 9600 bps, ODD. # stopbits = 1 is INFERRED, not stated: [FW] p. A-12 lists the alternatives as # NONE1STOPBIT / NONE2STOPBIT / ODD / EVEN, so only the NONE settings name a # stop-bit count and ODD is taken to imply one. Neither p. A-12, nor Table 6-29 # on p. 6-97, nor Table C-3 on p. C-5 says so outright. Confirm on a bench. [serial] baudrate = 9600 parity = "O" stopbits = 1 [monitor] # Fixed data set registers, [FW] p. C-14. Bit names from Table C-5 / C-6. # NOTE the family difference against the ACS 140/160/400: on the ACS 600 bit 4 # RAMP_OUT_ZERO IS USED, and bit 10 REMOTE_CMD IS USED and must be 1. control_word = { address = 0, bits = { 0 = "ON_OFF1", 1 = "OFF2_N", 2 = "OFF3_N", 3 = "START", 4 = "RAMP_OUT_ZERO_N", 5 = "RAMP_HOLD_N", 6 = "RAMP_IN_ZERO_N", 7 = "RESET", 8 = "INCHING_1", 9 = "INCHING_2", 10 = "REMOTE_CMD", 11 = "EXT_CTRL_LOC" } } reference_1 = { address = 1, signed = true, scale = 0.005, unit = "%" } # 20000 = par 11.05 reference_2 = { address = 2, signed = true, scale = 0.005, unit = "%" } # 20000 = par 11.08 status_word = { address = 3, bits = { 0 = "RDY_ON", 1 = "RDY_RUN", 2 = "RDY_REF", 3 = "TRIPPED", 4 = "OFF_2_STA", 5 = "OFF_3_STA", 6 = "SWC_ON_INHIB", 7 = "ALARM", 8 = "AT_SETPOINT", 9 = "REMOTE", 10 = "ABOVE_LIMIT", 11 = "EXT_CTRL_LOC", 12 = "EXT_RUN_ENABLE", 15 = "FB_COMM_ERR_CH0" } } # Group 1 ACTUAL SIGNALS, register number and fieldbus scaling from # [FW] p. A-1 Table A-1. motor_speed = { address = 101, signed = true, scale = 0.005, unit = "%" } # 1.02, 20000 = 100% of motor abs. max speed output_frequency = { address = 102, signed = true, scale = 0.01, unit = "Hz" } # 1.03, 100 = 1 Hz motor_current = { address = 103, scale = 0.1, unit = "A" } # 1.04, 10 = 1 A motor_torque = { address = 104, signed = true, scale = 0.01, unit = "%" } # 1.05, 10000 = 100% of motor nom. torque # signed is INFERRED here: [FW] p. A-1 prints 1.06 POWER as 0 = 0% / 1000 = # 100% with no negative branch, unlike 1.05 TORQUE and 1.02 SPEED on the same # page where the negative scaling IS printed. Regenerative power is genuinely # negative, so the flag is kept as the safe reading — but it is not sourced. output_power = { address = 105, signed = true, scale = 0.1, unit = "%" } # 1.06, 1000 = 100% of motor nom. power dc_voltage = { address = 106, unit = "V" } # 1.07, 1 = 1 V mains_voltage = { address = 107, unit = "V" } # 1.08, 1 = 1 V output_voltage = { address = 108, unit = "V" } # 1.09, 1 = 1 V drive_temp = { address = 109, unit = "C" } # 1.10, 1 = 1 degC # Group 3 fieldbus data words, [FW] p. A-3 Table A-3, contents in Appendix C: # Table C-7 3.03 and Table C-8 3.04 on p. C-21, Tables C-9/C-10 3.05/3.06 on # p. C-22, Table C-12 3.08 on p. C-23. aux_status_word = { address = 302, bits = { 1 = "OUT OF WINDOW", 3 = "MAGNETIZED", 5 = "SYNC RDY", 6 = "1 START NOT DONE", 7 = "IDENTIF RUN DONE", 8 = "START INHIBITION", 9 = "LIMITING", 10 = "TORQ CONTROL", 11 = "ZERO SPEED", 12 = "INTERNAL SPEED FB", 13 = "M/F COMM ERR" } } # 3.03, Table C-7 limit_word_1 = { address = 303, bits = { 0 = "TORQ MOTOR LIM", 1 = "SPD_TOR_MIN_LIM", 2 = "SPD_TOR_MAX_LIM", 3 = "TORQ_USER_CUR_LIM", 4 = "TORQ_INV_CUR_LIM", 5 = "TORQ_MIN_LIM", 6 = "TORQ_MAX_LIM", 7 = "TREF_TORQ_MIN_LIM", 8 = "TREF_TORQ_MAX_LIM", 9 = "FLUX_MIN_LIM", 10 = "FREQ_MIN_LIMIT", 11 = "FREQ_MAX_LIMIT", 12 = "DC_UNDERVOLT", 13 = "DC_OVERVOLT", 14 = "TORQUE LIMIT", 15 = "FREQ_LIMIT" } } # 3.04, Table C-8 fault_word_2 = { address = 305, bits = { 0 = "SUPPLY PHASE", 1 = "NO MOT DATA", 2 = "DC UNDERVOLT", 4 = "RUN DISABLED", 5 = "ENCODER FLT", 6 = "I/O COMM", 7 = "AMBIENT TEMP", 8 = "EXTERNAL FLT", 9 = "OVER SWFREQ", 10 = "AI < MIN FUNC", 11 = "PPCC LINK", 12 = "COMM MODULE", 13 = "PANEL LOSS", 14 = "MOTOR STALL", 15 = "MOTOR PHASE" } } # 3.06, Table C-10 system_fault_word = { address = 306 } # 3.07, Table C-11 — read raw alarm_word_1 = { address = 307, bits = { 0 = "START INHIBIT", 3 = "MOTOR TEMP", 4 = "ACx 600 TEMP", 5 = "ENCODER ERR", 6 = "T MEAS ALM", 12 = "COMM MODULE", 13 = "THERMISTOR", 14 = "EARTH FAULT" } } # 3.08, Table C-12 alarm_word_2 = { address = 308 } # 3.09 — read raw. The bit table is # [FW] p. C-24 Table C-13; not yet # transcribed, so no bits are invented. int_fault_info = { address = 311 } # 3.12 NINT Fault Info Word — read raw. # Table C-14 is [FW] p. C-25; not yet # transcribed, so no bits are invented. # ABB Drives profile, Control Word at 40001 -> 0-based 0 ([FW] p. C-14, C-18). # The state machine of [FW] p. C-20 Figure C-4 prints the transitions # literally, and every one of them carries bit 10 set: # READY TO SWITCH ON CW = xxxx x1xx xxxx x110 # READY TO OPERATE CW = xxxx x1xx xxxx x111 # OPERATION ENABLED CW = xxxx x1xx xxxx 1111 and SW bit 12 = 1 # RFG: OUTPUT ENABLED CW = xxxx x1xx xxx1 1111 # RFG: ACCELERATOR ENABLED CW = xxxx x1xx xx11 1111 # OPERATING CW = xxxx x1xx x111 1111 # 0x0476 = bits 1,2,4,5,6,10 — every interlock released, OFF1 (bit 0) low, so # the drive ramps down and sits in READY TO SWITCH ON. 0x047F adds bits 0 and # 3, the full OPERATING word. NOTE: the manual does not print these as literal # hex; they are the sum of the per-bit meanings on p. C-18 and the bit # patterns on p. C-20. VERIFY ON A BENCH BEFORE TRUSTING THEM. # Bit 10 REMOTE_CMD must be 1 or, with a non-zero Control Word or reference, # the drive RETAINS THE LAST Control Word and reference instead of taking the # new one ([FW] p. C-18). [control] command_register = 0 speed_register = 1 speed_scale = 0.005 # write %, 20000 raw = 100% of par 11.05 ([FW] p. C-13) speed_signed = true # direction IS the sign of the reference speed_unit = "%" # NOT Hz and NOT rpm — percent of 11.05 max_ref = 100.0 step_delay = 0.05 # OFF1: bit 0 low stops "within time defined by Par. 22.07 EM STOP RAMP TIME". # Bits 1 and 2 stay HIGH so this is not the Emergency OFF coast-to-stop # (bit 1 low) or the Emergency stop (bit 2 low), which [FW] p. C-18 carries an # explicit Warning against. stop = [0x0476] run_fwd = [0x0476, 0x047F] # Reset is Control Word BIT 7 on a 0->1 EDGE ([FW] p. C-18), not a separate # register, so there is no reset_register. 0x04F6 raises bit 7 on top of the # idle word while OFF1/OFF2/OFF3 stay released. reset = [0x0476, 0x04F6, 0x0476] # run_rev is deliberately absent. On the ABB Drives profile direction comes # from the SIGN OF THE REFERENCE — [FW] p. C-13 prints six diagrams of # resultant REF1/2 against fieldbus reference for 10.03 = FORWARD / REVERSE / # REQUEST, with -20000 mapping to -[11.05]. A "reverse" control word would be # byte-identical to forward. Reverse with a negative reference and # 10.03 DIRECTION = REQUEST. # 30.18 COMM FAULT FUNC DEFAULTS TO FAULT and 30.19 MAIN REF DS T-OUT to # 1.00 s ([FW] p. B-5 default settings table), so out of the box this drive DOES trip # on comm loss — the master must keep refreshing the Main Reference data set. # The fault/warning is COMM MODULE, "Cyclical communication between ACS 600 # and fieldbus/ACS 600 Master is lost" ([FW] p. 7-3), also 3.06 FAULT WORD 2 # bit 12. 300 ms is inside the 1.00 s window; shorten it if the site has # lowered 30.19. [control.watchdog] interval_ms = 300 fault = "COMM MODULE (30.18 COMM FAULT FUNC, timeout 30.19 MAIN REF DS T-OUT)" # Status Word bit 2 RDY_REF = OPERATION ENABLED — the bit Figure C-4 sets on # the run transition and clears on OFF1/OFF2/OFF3. Bit 8 AT_SETPOINT is # stricter and reads false while accelerating. # BLIND SPOT: the stop word 0x0476 has control-word bit 3 low, and Table C-5 # bit 3 = 0 is "Inhibit operation. Enter OPERATION INHIBITED" ([FW] p. C-18), # which Table C-6 ([FW] p. C-19) and Figure C-4 ([FW] p. C-20) show clearing # status bit 2 immediately. So this check reports STOPPED the moment the stop # is accepted, while the motor is still ramping down over 22.07 EM STOP RAMP # TIME. It still does its real job — catching a drive that ACKs a command and # ignores it — but do not read it as "the shaft has stopped". [running_check] register = 3 bit = 2 # NO NUMERIC ACTIVE-FAULT REGISTER IS DOCUMENTED. Appendix A publishes a # Modbus register for every actual signal, and there is no "last fault code" # signal among them — the ACS 600 has no group 1 LAST FAULT the way the # ACS 140/400 do, and the Fault History is a panel feature with no documented # Modbus address. Faults are therefore read as the 3.05 / 3.06 BITFIELDS. # This is a named gap, not a guess: no fault code table is filled in below, # and none should be added from another family's manual or from memory. # # 3.05 FAULT WORD 1 -> 100*3 + 5 - 1 = 304, bits from [FW] p. C-22 Table C-9. # Bits 10-15 are Reserved. Bit 7 SYSTEM_FAULT means the detail is in 3.07 # SYSTEM FAULT WORD — read the system_fault_word monitor point. [faults] register = 304 bitfield = true bits = { 0 = "SHORT CIRC", 1 = "OVERCURRENT", 2 = "DC OVERVOLT", 3 = "ACx 600 TEMP", 4 = "EARTH FAULT", 5 = "THERMISTOR", 6 = "MOTOR TEMP", 7 = "SYSTEM_FAULT (see 3.07)", 8 = "UNDERLOAD", 9 = "OVERFREQ" } # 99.06 MOTOR NOM CURRENT, range 1/6 * I2hd to 2 * I2hd of the ACS 600, # fieldbus scaling "1 = 0.1 A" ([FW] p. A-4). Address 100*99 + 6 - 1 = 9905. # THIS IS MOTOR NAMEPLATE DATA AND IT DOES NOT ESTABLISH CONVERTER FRAME # IDENTITY. The legal window is 1/6 * I2hd .. 2 * I2hd in DTC mode and # 0 * I2hd .. 2 * I2hd in SCALAR mode ([FW] p. 3-3) — a factor of twelve in # DTC and unbounded-below in SCALAR — so the same motor reads the same 99.06 # on two converters of different frame size and the guard passes. It also # defaults to 0.0 A on every application macro ([FW] p. B-1), which is exactly # what a factory-fresh replacement drive reads. This register catches a # differently-commissioned MOTOR; it is not a frame-size check. It is kept # because it is the only rating-adjacent parameter the ACS 600 publishes a # Modbus number for (Appendix A has actual-signal tables for groups 1, 2 and 3 # only, and group 33 INFORMATION carries software version and test date). [rating] register = 9905 words = 1 scale = 0.1 unit = "A" label = "99.06 MOTOR NOM CURRENT" # NO [parameters] BLOCK, DELIBERATELY, even though Appendix A publishes a # Modbus register number for essentially every parameter. Two reasons out of # the manual itself: # 1. 16.07 PARAM SAVE exists precisely because fieldbus parameter writes are # not stored automatically. A restore that swept a range would leave the # drive looking correct until the next power cycle — the worst failure # mode for a drive-replacement clone — and this profile format has no # place for the trailing 16.07 = SAVE write. # 2. The Appendix A register column is sparse: groups 1, 2 and 3 are # read-only actual signals living inside the same address space (Tables # A-1, A-2 and A-3 — there is no group 4 actual-signal table in this # program), several parameters print no Modbus number at all (group 45 # FUNCTION SELECTION is printed "Not accessible from Profibus" with a # blank register column, [FW] p. A-11), and index gaps within a group # are not addressable. A blind range sweep would write into read-only # addresses and stall on an exception. Enumerating the writable indexes # means transcribing Appendix A and bench-checking each; that has not # been done. [connection] summary = "The ACS600 Standard Modbus Link is on NIOC-01 modular jacks X28/X29; a controller may connect directly, through an NBCI isolation interface, or from RS-232 through an NPCU-01." warnings = ["X28/X29 are galvanically unisolated.","Pin 6 carries +24 V and pins 1/2 are internal TRANS/FAULT signals; a direct Modbus master must use only pins 3, 4 and 5.","These six-position modular jacks are not Ethernet ports."] [[connection.methods]] id = "nio_direct_rs485" title = "Direct NIOC-01 Standard Modbus Link" transport = "serial" hardware = "built_in" port = "NIOC-01 modular jack X28 or X29" connector = "Six-position modular jack: pin 3 B-, pin 4 A+, pin 5 GND; pin 6 is +24 V and must remain disconnected from the master" adapter = "Isolated USB-to-RS-485 adapter" cable = "Three-conductor RS-485 cable terminated to modular-jack pins 3/4/5; ABB grey straight-through cable for drive chaining" parts = ["Isolated USB-to-RS-485 adapter","Documented six-position plug or breakout","Shielded twisted pair plus signal common"] steps = ["Lock out the drive and locate X28/X29 on NIOC-01.","Terminate only pins 3 B-, 4 A+ and 5 GND to the isolated adapter; leave pins 1, 2 and 6 open.","Set NIOC switch SW1 for the physical bus position; ABB's grey drive-to-drive cable is straight through.","Restore power with the motor inhibited and verify a read."] setup = ["Set 98.02 = STD MODBUS and 98.07 = ABB DRIVES.","Set 52.01 station, 52.02 baud and 52.03 parity.","Set command/reference selectors to COMM.MODULE/COMM.REF and configure 30.18/30.19."] warnings = ["Direct connection is galvanically unisolated.","Never connect adapter power to pin 6 (+24 V).","X28 pin 2 is GND while X29 pin 2 is FAULT; neither pin is part of the external three-wire Modbus connection."] source = "ABB hardware manual 3AFY61201394 Rev D, pp. A-13 through A-14; firmware 3AFY61201441 R0725, pp. C-1 and C-5 through C-8." [[connection.methods.wiring]] adapter = "D- / negative" device = "X28/X29 pin 3 — B-" signal = "RS-485 negative" [[connection.methods.wiring]] adapter = "D+ / positive" device = "X28/X29 pin 4 — A+" signal = "RS-485 positive" [[connection.methods.wiring]] adapter = "COM / signal common" device = "X28/X29 pin 5 — GND" signal = "Signal reference" [[connection.methods]] id = "nbci_isolated_rs485" title = "NBCI isolated/multidrop interface" transport = "serial" hardware = "option" port = "NIOC-01 X28/X29 through ABB NBCI Panel Bus Connection Interface" connector = "ABB preterminated modular link to NBCI; field side per the NBCI manual" adapter = "Isolated USB-to-RS-485 adapter or RS-485 controller" cable = "ABB preterminated NIOC-to-NBCI lead plus shielded RS-485 trunk" parts = ["ABB NBCI interface","ABB preterminated modular lead","RS-485 master","Shielded twisted pair"] steps = ["Lock out the drive and install/connect NBCI according to its own installation guide.","Use the ABB preterminated lead between X28/X29 and NBCI.","Wire the controller-side trunk strictly to the NBCI terminal markings.","Restore power with the motor inhibited and verify a read."] setup = ["Use the same Standard Modbus Link settings: 98.02 = STD MODBUS, 98.07 = ABB DRIVES and group 52.","Select fieldbus command/reference sources and communication-loss handling."] warnings = ["The ACS600 firmware manual names NBCI but does not reproduce its terminal pinout; the NBCI manual is required at the panel."] source = "ABB ACS600 firmware 3AFY61201441 R0725, pp. C-1 and C-5." [[connection.methods.wiring]] adapter = "ABB preterminated NIOC-to-NBCI lead" device = "NIOC-01 X28/X29 to NBCI" signal = "Complete isolated link; connector pins not reproduced in firmware manual" [[connection.methods]] id = "npcu_01_rs232" title = "NPCU-01 RS-232/RS-485 conversion" transport = "serial" hardware = "option" port = "NIOC-01 X28/X29 through ABB NPCU-01 PC Connection Unit" connector = "ABB preterminated modular link to NPCU-01; PC-side RS-232" adapter = "PC RS-232 port or isolated USB-to-RS-232 adapter" cable = "ABB preterminated NIOC-to-NPCU lead plus RS-232 cable" parts = ["ABB NPCU-01","ABB preterminated modular lead","RS-232 port/adapter"] steps = ["Lock out the drive and connect NPCU-01 to X28/X29 with the ABB preterminated lead.","Connect the PC serial port to NPCU-01 as specified in the NPCU manual.","Restore power with the motor inhibited and verify a read."] setup = ["Set 98.02 = STD MODBUS, 98.07 = ABB DRIVES and match group 52.","Select fieldbus command/reference sources and communication-loss handling."] warnings = ["DriveWindow Light uses the NAMC panel connector, not this Standard Modbus Link path.","The firmware manual does not reproduce NPCU cable pins; do not improvise them."] source = "ABB ACS600 firmware 3AFY61201441 R0725, pp. C-1 and C-5." [[connection.methods.wiring]] adapter = "ABB preterminated NIOC-to-NPCU link" device = "NIOC-01 X28/X29 through NPCU-01" signal = "Complete RS-232-to-RS-485 conversion path; pin assignment not reproduced"