# Property of PMA Electrical Solutions, LLC. # # Delta VFD-S (Simple Type Drives), built-in RS-485 on the RJ-11 jack at the # control terminal block. # # COVERAGE — VFD-S only. NOT CLAIMED: VFD-E, VFD-EL, VFD-EL-W, VFD-M, VFD-L, # MS300. The VFD-S register map is genuinely its own: no accel/decel select # bits in the command word, a monitor block laid out 2104H-2106H (not shifted # to 2108H like the VFD-E/EL), and a fault enumeration that disagrees with # every sibling above code 2 (3 is oH here, oH1 on VFD-EL; 5/6 are oL1/EF here # but oL/oL1 on VFD-EL; 14 is Lv here and PHL there). # # SOURCES — Delta VFD-S User Manual, Revision April 2016, SE10, SW V2.61, # internal doc 5011203310-SE10, file DELTA_IA-MDS_VFD-S_UM_EN_20160412.pdf # from downloadcenter.deltaww.com. PDF page numbers below, not the printed # 5-nn folio: # pp. 127-130 3.5 Address list — 2000H/2001H/2002H command, 2100H error # code table (enumerated in full), 2101H status bits, # 2102H-210AH monitor; 3.6 exception codes # pp. 124-126 worked read/write examples (06H to 0100H, 10H to 0500H) # p. 79 1-00 Maximum Output Frequency 50.0-400 Hz (fact. 60.0) # pp. 84-85 2-00 frequency source (d4/d5 = RS-485), 2-01 operation # source (d3/d4 = RS-485) # pp. 113 6-08/6-09/6-10 fault record enumeration # pp. 119-121 9-00 to 9-04 node/baud/fault treatment/timeout/protocol # p. 74 0-00 Identity Code, 0-01 Rated Current Display # p. 104 5-00 multi-step speed, Unit: 0.01 # pp. 58-68 parameter summary (group extents) # # DRIVE-SIDE SETUP: 2-00 = d4 or d5 (Master Frequency from RS-485; d4 records # the frequency across a power loss, d5 does not), 2-01 = d3 or d4 (Operation # from RS-485), 9-00 node address, 9-01 = d1 (9600), and 9-04 = d6. # # 9-04 HAS NO 8,N,1 OPTION ON THIS FAMILY (p. 120). The RTU choices are only # d6 = 8,N,2 / d7 = 8,E,1 / d8 = 8,O,1. The [serial] block below is d6, so it # is TWO stop bits, not one — a master configured 8,N,1 will not talk to this # drive. The factory default is d0, Modbus *ASCII* 7,N,2. # # ADDRESSING: Delta documents these as hex protocol addresses that are already # 0-based. Parameters are ggnnH, so Pr.4-01 is 0x0401 (manual p. 127). # # WATCHDOG: 9-03 Time-out Detection defaults to d0 = Disable and takes WHOLE # SECONDS (d1~d20), not tenths as on the VFD-E/EL. With 9-03 = 0 the drive # keeps running when the master goes quiet; 9-02 defaults to d0 (warn and keep # operating), so even a set timeout only trips CE10 with 9-02 = d1/d2 for a # stop. Backstop requires commissioning. # # SCALE CAVEAT — 2105H/2106H, AN OVERRIDE OF THE PRINTED DOCUMENT. The address # list prints "(XXX.XX)" for every one of 2102H-2106H (p. 128). That cannot be # literal for the DC bus: Pr.6-01 Over-Voltage Stall Prevention Level is # d700-d820 V on the 460 V series (p. 64), and 820 V at 0.01 V per count is # 82000, which does not fit a 16-bit register. So the printed format is wrong # for these two registers — but the manual never says what replaces it, and # 0.1 V (8200 counts) and 1 V (820 counts) both fit. 0.1 V is used here only # because it is what Delta prints for the same two registers on the VFD-E and # VFD-EL (UXXX.X / EXXX.X), which is a cross-family argument and therefore not # evidence. IF THE TRUE SCALE IS 1 V, EVERY VOLTAGE SHOWN IS TEN TIMES TOO # SMALL — a 780 V bus reads as 78 V, which looks like a dead drive rather than # a fault. Frequency and current keep the documented 0.01 and are unaffected. # Read 2105H on a powered bench drive and compare against the keypad's u # display (Pr.0-04 = d3) before trusting either voltage. # # SCALE — frequency. 2102H/2103H are 0.01 Hz, and the manual settles it three # ways: the address list prints "(XXX.XX)" (p. 128); the 03H worked example # reads 2102H and gets 1770H = 6000 (p. 124), which is 60.00 Hz at 0.01 and an # impossible 600.0 Hz at 0.1 against a 400 Hz maximum; and Pr.5-00 multi-step # speed is "Unit: 0.01" (p. 104) with the 10H example writing the same 1770H # to it (p. 125). Pr.1-00 "Unit: 0.1" (p. 79) is the PARAMETER register 0100H, # not 2102H, and the spec table's "Output Frequency Resolution 0.1 Hz" # (p. 157) is a step size, not a register format — neither contradicts the # above. The ggnnH parameter registers keep each parameter's own printed unit. # # 2001H IS THE ONE STILL OPEN: the address list gives it no format at all. It # is taken as 0.01 because it is the write side of 2102H. CONFIRM ON A BENCH, # AND NOTE THE HAZARD DIRECTION — if 2001H is really 0.1, every reference is # sent ten times too large and the drive clamps to Pr.1-00, so asking for # 60 Hz gives maximum frequency, not 6 Hz. Command a stopped, uncoupled motor # first. name = "Delta VFD-S" vendor = "Delta Electronics" device_type = "vfd" verified = false probe_register = 0x2101 [connection] summary = "This drive has one built-in two-wire Modbus RTU path; no option card is required." warnings = [] [[connection.methods]] id = "built_in_rs485" title = "Built-in RS-485 on RJ11" transport = "serial" hardware = "built_in" port = "Communications RJ11 beside the control terminals" connector = "RJ11 modular jack (RS-485, not Ethernet/telephone)" 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"] 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 2-00=d4 or d5, 2-01=d3 or d4, 9-00=node, 9-01=d1 for 9600, and 9-04=d6 for RTU 8N2."] 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.", "RJ11 pin 1 is accessory power. This family has no RTU 8N1 setting; use two stop bits when parity is none."] source = "Delta VFD-S User Manual, PDF p. 120 (pinout and framing) and pp. 84-85 (sources)" [[connection.methods.wiring]] adapter = "Adapter D+ / +" device = "RJ11 pin 4 (SG+)" signal = "RS-485 data positive" required = true [[connection.methods.wiring]] adapter = "Adapter D- / -" device = "RJ11 pin 3 (SG-)" signal = "RS-485 data negative" required = true [[connection.methods.wiring]] adapter = "Adapter signal ground / shield" device = "RJ11 pin 2 (GND)" signal = "Signal reference or shield drain" required = false # 9-01 default is d1 = 9600 bps (p. 119). Two stop bits because 9-04 = d6 # (RTU 8,N,2) is the only no-parity RTU format this family offers — see header. [serial] baudrate = 9600 parity = "N" stopbits = 2 [monitor] # Bits 0-1 are a 2-bit run state (00 stop, 01 decelerating to stop, 10 standby, # 11 run) and bits 3-4 a 2-bit direction-transition field (00 FWD, 11 REV), so # neither decodes as an independent flag. Read this register as hex. Bit 11 # (parameters locked) exists here and not on the VFD-E/EL. drive_status = { address = 0x2101, bits = { 2 = "Jog", 8 = "FreqFromComm", 9 = "FreqFromTerminal", 10 = "OperFromComm", 11 = "ParametersLocked" } } frequency_command = { address = 0x2102, scale = 0.01, unit = "Hz" } output_frequency = { address = 0x2103, scale = 0.01, unit = "Hz" } output_current = { address = 0x2104, scale = 0.01, unit = "A" } # 0.1 V, not the printed 0.01 — see the SCALE CAVEAT in the header. dc_bus_voltage = { address = 0x2105, scale = 0.1, unit = "V" } output_voltage = { address = 0x2106, scale = 0.1, unit = "V" } # 2107H is the multi-step-speed STEP NUMBER, not a speed. multistep_step = { address = 0x2107 } plc_step = { address = 0x2108 } plc_time = { address = 0x2109 } counter_value = { address = 0x210A } [control] command_register = 0x2000 # Fault reset is a DIFFERENT register. On 0x2000 bits 1-0 = 10B is RUN, so # writing 0x0002 there commands an unexpected start in the last direction. # 0x2002 bit 1 is Reset; bit 0 is EF (external fault), so only bit 1 may rise. reset_register = 0x2002 speed_register = 0x2001 speed_scale = 0.01 speed_unit = "Hz" max_ref = 400.0 # 1-00 upper limit, p. 79 step_delay = 0.05 # 2000H has no accel/decel-select bits 6-7 on this family; only bits 0-1 # (stop/run/jog) and bits 4-5 (direction) are defined. stop = [0x0001] run_fwd = [0x0012] run_rev = [0x0022] reset = [0x0002] [control.watchdog] interval_ms = 300 fault = "CE10 communication time-out (only when 9-03 = d1-d20; the factory default d0 disables it, and 9-02 must be d1/d2 for the drive to stop)" backstop_requires_setup = true # BLIND SPOT — bits 0-1 are a 2-bit field and this check can only test one bit. # Bit 0 is set for 01B (decelerating to stop, motor still turning) and 11B # (running), so a spinning motor always reads Running. It is CLEAR for 10B, # which p. 128 calls "RUN LED light up, STOP LED blink" — the drive holding a # run command at zero output. In that state this reports Stopped, and a restore # precondition would pass on a drive that is armed to start. Watching bit 1 # instead just swaps the blind spot onto deceleration. Check 2101H by hand # before a restore until the schema can express "any of bits 0-1". [running_check] register = 0x2101 bit = 0 # NO MASK: the VFD-S address list documents 2100H as a plain "Error code" with # a single enumeration (pp. 128-129) — no warning byte, unlike the VFD-E and # the MS300. History is Pr.6-08/6-09/6-10, the THREE most recent faults # (p. 113); this family stores three, not five. [faults] register = 0x2100 history = [0x0608, 0x0609, 0x060A] # 2100H error code table, pp. 128-129, cross-checked against the Pr.6-08 fault # record list on pp. 112-113. Codes the manual marks Not used or Reserved # (7, 8, 13, 21, 33, 35, 37) are omitted rather than guessed. This numbering # is VFD-S's and disagrees with VFD-E, VFD-EL and MS300 above code 2. # CODE 4 IS MISSING FROM THE 2100H TABLE (p. 128 jumps 3 -> 5) BUT PRESENT IN # THE Pr.6-08 TABLE as d4 Overload (oL), p. 112. The history registers below # ARE Pr.6-08 to 6-10, so 4 is reachable; it is listed here from p. 112. [faults.codes] 0 = "No errors occurred" 1 = "oc Over-current" 2 = "ov Over-voltage" 3 = "oH Overheat" 4 = "oL Overload" 5 = "oL1 Overload1" 6 = "EF External fault" 9 = "ocA Over-current during accel (>2x rated)" 10 = "ocd Over-current during decel (>2x rated)" 11 = "ocn Over-current at steady state (>2x rated)" 12 = "GF Ground fault" 14 = "Lv Low voltage" 15 = "cF1 CPU failure 1" 16 = "cF2 CPU failure 2" 17 = "Base block" 18 = "oL2 Overload" 19 = "cFA Auto accel/decel failure" 20 = "codE Software protection enabled" 22 = "cF3.1 CPU failure" 23 = "cF3.2 CPU failure" 24 = "cF3.3 CPU failure" 25 = "cF3.4 CPU failure" 26 = "cF3.5 CPU failure" 27 = "cF3.6 CPU failure" 28 = "cF3.7 CPU failure" 29 = "HPF.1 Hardware protection failure" 30 = "HPF.2 Hardware protection failure" 31 = "HPF.3 Hardware protection failure" 32 = "CE10 Communication time-out" 34 = "SErr Software error" 36 = "Pld PID error" 38 = "PHL Phase loss" # Pr.0-00, p. 74. An INTEGER frame identity: even codes are the 115 V/230 V # series (d0/d2/d4/d6/d8), odd the 460 V series (d3/d5/d7/d9). The 115 V and # 230 V units of the same kW share a code, so this narrows a restore mismatch, # it does not prove identity. [rating] register = 0x0000 words = 1 scale = 1.0 label = "Drive identity code (Pr.0-00)" # Group 1 (Basic, 1-00 to 1-18) and group 2 (Operation Method, 2-00 to 2-06), # in Delta's ggnnH layout, per the parameter summary pp. 58-68. Both groups # are much shorter than on the VFD-E/EL — do not reuse those ranges here. # Group 9 is DELIBERATELY EXCLUDED: it holds 9-00 node address, 9-01 baud and # 9-04 protocol. Cloning those onto a replacement drive changes its address to # the donor's — which either kills the link mid-restore or puts two nodes at # the same address on the plant's bus. # Group 0 is excluded because 0-00/0-01 are read-only drive identity, 0-02 is # Parameter Reset and 0-07/0-08 are the password pair. [parameters] ranges = [[0x0100, 0x0112], [0x0200, 0x0206]]