# Property of PMA Electrical Solutions, LLC. # # Delta VFD-B (VFD-B General Purpose Drives), discontinued but very common in # the installed base. Embedded RS-485 on the RJ-11 jack next to the control # terminals (pin 3 = SG-, pin 4 = SG+; pin 1 is internal/keypad only and the # manual warns against using it, p. 5-82). # # COVERAGE — the VFD-B family on the firmware this manual documents # (SW V4.08 & V5.00). NOT CLAIMED: VFD-BW (brake unit series) and VFD-B-P # (plate drive), which Delta ships as separate manuals; and not the VFD-M or # VFD-L, whose fault tables differ from this one code-for-code (VFD-B 07 = # occ IGBT short circuit where VFD-M 07 = cF1 CPU failure; VFD-B carries codes # 21-26 that neither of the others has). That carry-over is what corrupted an # earlier Delta profile — see profiles/delta_ms300.toml. # # SOURCES — Delta VFD-B User Manual, English, download-center file # DELTA_IA-MDS_VFD-B_UM_EN_20080725.pdf (footer revision "July 2008, BE16, # SW V4.08 & V5.00"). Citations are PRINTED pages; printed = PDF page - 57. # pp. 5-2 to 5-16 Summary of Parameter Settings — group extents used for # the [parameters] ranges below # p. 5-2 00-00 Identity Code, 00-01 Rated Current Display, # 00-02 Parameter Reset, 00-07/00-08 passwords # p. 5-28 01-00 Maximum Output Frequency, 50.00-400.00 Hz, # Unit 0.01 # p. 5-34 02-00 first master frequency source, 02-01 first # operation command source # pp. 5-11 to 5-13 06-08 present / 06-09-06-11 most-recent fault records # pp. 5-82 to 5-84 09-00 address, 09-01 baud, 09-02 fault treatment, # 09-03 time-out detection, 09-04 protocol # pp. 5-91 to 5-93 the 3.5 Address list: 2000H-2002H command, # 2100H-2110H and 2200H-2206H status monitor, plus the # exception-code table (cE10 = communication time-out) # # DRIVE-SIDE SETUP: 02-00 = 04 or 05 (master frequency from RS-485), 02-01 = # 03 or 04 (operation command from RS-485), 09-00 node address, 09-01 baud, # and 09-04 = 03/04/05 for Modbus RTU. THE FACTORY DEFAULT 09-04 = 00 IS # MODBUS *ASCII* 7,N,2 — an out-of-the-box VFD-B will not answer an RTU master # at all. [serial] below is the 09-04 = 03 (8,N,2 RTU) setting. # # Delta documents these as hex addresses that are already 0-based. # Parameters live at GGnnH: group then index, so Pr.04-01 = 0401H (p. 5-91). name = "Delta VFD-B" 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 02-00=04 or 05, 02-01=03 or 04, 09-00=node, 09-01=baud, and 09-04=03 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.", "Pin 1 is internal/accessory power; use an RJ11 6P2C or 6P4C plug and only pins 3 and 4 for RS-485."] source = "Delta VFD-B User Manual, PDF p. 139 (pinout) and profile-cited group 09 setup pages" [[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 # 09-01 default 01 = 9600 bps (p. 5-82). Parity/stop bits here are the RTU # selection 09-04 = 03 <8,N,2>; the drive ships in ASCII mode. [serial] baudrate = 9600 parity = "N" stopbits = 2 [monitor] # p. 5-92. Bits 0-4 are NOT five independent flags: they hold a single value # 00-04 naming which keypad LED is lit (00 RUN, 01 STOP, 02 JOG, 03 FWD, # 04 REV). Only the genuinely single-bit fields are named here. drive_status = { address = 0x2101, bits = { 5 = "F_display", 6 = "H_display", 7 = "U_display", 8 = "FreqFromComm", 9 = "FreqFromAnalog", 10 = "CmdFromComm", 11 = "ParamsLocked", 12 = "Running", 13 = "JogCommand" } } frequency_command = { address = 0x2102, scale = 0.01, unit = "Hz" } output_frequency = { address = 0x2103, scale = 0.01, unit = "Hz" } # ONE decimal on the VFD-B (manual prints "AXXX.X"), not the two decimals the # MS300 uses. output_current = { address = 0x2104, scale = 0.1, unit = "A" } dc_bus_voltage = { address = 0x2105, scale = 0.1, unit = "V" } output_voltage = { address = 0x2106, scale = 0.1, unit = "V" } # 0x2107 is the multi-step STEP NUMBER, not a speed. multistep_step = { address = 0x2107 } plc_step = { address = 0x2108 } external_trigger_count = { address = 0x2109 } power_factor_angle = { address = 0x210A } estimated_torque_ratio = { address = 0x210B, scale = 0.1, unit = "%" } motor_speed = { address = 0x210C, unit = "rpm" } # The manual gives "Output power (KW)" with no decimal notation, unlike every # neighbouring entry. Scale is UNCONFIRMED — verify on a bench before trusting # the magnitude. output_power = { address = 0x210F, unit = "kW" } pid_feedback = { address = 0x2200, scale = 0.01, unit = "%" } avi_input = { address = 0x2203, scale = 0.01, unit = "%" } aci_input = { address = 0x2204, scale = 0.01, unit = "%" } aui_input = { address = 0x2205, scale = 0.01, unit = "%" } heatsink_temperature = { address = 0x2206, unit = "C" } [control] # p. 5-91 labels 2000H "Command Write only" on the VFD-B (the VFD-M documents # the same address as read/write) — do not expect a read-back of the command # word itself; verify against 2101H instead. command_register = 0x2000 # On 2000H bits 1-0, 10B is RUN. Writing the reset value 0x0002 to the command # register would therefore command an unexpected start. Reset is bit 1 of the # SEPARATE 2002H register. reset_register = 0x2002 speed_register = 0x2001 speed_scale = 0.01 speed_unit = "Hz" max_ref = 400.0 step_delay = 0.05 stop = [0x0001] # bits 1-0 = 01B Stop run_fwd = [0x0012] # bits 1-0 = 10B Run, bits 5-4 = 01B FWD run_rev = [0x0022] # bits 1-0 = 10B Run, bits 5-4 = 10B REV reset = [0x0002] # bit 1 of 0x2002 # Bits 6-7 (accel/decel ramp select), bits 8-11 (16 step speeds) and bit 12 # (enable comm multi-step/ramp) are deliberately left at 0: with bit 12 clear # the drive ignores the step-speed and ramp fields, so the words above cannot # jump the drive onto a preset speed. # The keepalive proves the LINK is alive. It is NOT a stop backstop on a # factory-default VFD-B: 09-02 defaults to 03 "No warning and keep operating" # and 09-03 Time-out Detection defaults to 0.0 (disabled), p. 5-83. Set # 09-02 = 01 or 02 AND 09-03 non-zero at commissioning to get the cE10 trip. [control.watchdog] interval_ms = 300 fault = "cE10 communication time-out (only with 09-02 = 00-02 and 09-03 non-zero; both are disabled by default)" backstop_requires_setup = true # p. 5-92, 2101H bit 12: "0: AC drive stops, 1: AC drive operates". [running_check] register = 0x2101 bit = 12 # p. 5-91. Unlike the MS300 there is NO warning code in the high byte here — # 2100H is documented as a plain error code, so no mask is applied. # History is 06-09/06-10/06-11 (Second/Third/Fourth Most Recent Fault Record, # p. 5-12); 06-08 holds the present record and duplicates 2100H. [faults] register = 0x2100 history = [0x0609, 0x060A, 0x060B] # Transcribed complete from the 2100H table, pp. 5-91 to 5-92. The 06-08 # parameter table on p. 5-12 in the same manual prints 14 and 17 as # "Reserved" where 2100H names them Lv and Base Block; 2100H is the register # this profile reads, so its wording is the one kept. [faults.codes] 0 = "No error occurred" 1 = "oc over-current" 2 = "ov over-voltage" 3 = "oH overheat" 4 = "oL overload" 5 = "oL1 overload 1" 6 = "EF external fault" 7 = "occ IGBT short circuit protection" 8 = "cF3 CPU failure" 9 = "HPF hardware protection failure" 10 = "ocA over-current during accel" 11 = "ocd over-current during decel" 12 = "ocn over-current at constant speed" 13 = "GFF ground fault" 14 = "Lv low voltage" 15 = "cF1 CPU failure 1" 16 = "cF2 CPU failure 2" 17 = "bb base block" 18 = "oL2 overload 2" 19 = "cFA auto accel/decel failure" 20 = "codE software protection enabled" 21 = "EF1 emergency stop" 22 = "PHL phase loss" 23 = "cEF preliminary count value attained, EF active" 24 = "Lc under-current" 25 = "AnLEr analog feedback signal error" 26 = "PGErr PG feedback signal error" # p. 5-2. 00-00 Identity Code of the AC motor drive is read-only and is the # drive's frame identity. 00-01 Rated Current Display is the alternative and # could replace this after a bench read. [rating] register = 0x0000 words = 1 scale = 1.0 label = "Identity code (00-00)" # GGnnH parameter space. Groups 1-8 and 10-11, at the extents printed in the # Summary of Parameter Settings, pp. 5-2 to 5-16. # Deliberately excluded: # group 00 identity code and rated current (read-only), 00-02 # Parameter Reset (settings 09/10 FACTORY-RESET the drive), # 00-06 software version, 00-07/00-08 passwords # 06-08 to 06-11 (0x0608-0x060B) read-only fault records # 07-14, 07-15 (0x070E-0x070F) Accumulative Motor Operation Time (Min/Day). # NOT read-only — p. 5-73 says they "can be cleared by setting # to 00" — but they are the target drive's own hours, so # cloning the donor's would overwrite the replacement's meter. # group 09 node address, baud and protocol. Cloning those onto a # replacement drive moves it to the donor's address, which # either kills the link mid-restore or puts two nodes at one # address on the plant's bus. [parameters] ranges = [ [0x0100, 0x0117], [0x0200, 0x020F], [0x0300, 0x030E], [0x0400, 0x0419], [0x0500, 0x0522], [0x0600, 0x0607], [0x060C, 0x0612], [0x0700, 0x070D], [0x0800, 0x0816], [0x0A00, 0x0A10], [0x0B00, 0x0B07], ]