# Property of PMA Electrical Solutions, LLC. # # Delta VFD-VE — field-oriented-control high-performance drive (VFD###V23A-2 / # V43A-2 frames B…E). Built-in RS-485 on the RJ-11 next to the control # terminals; no option card involved. # # NOT CLAIMED: any other Delta family. This map was taken from the VFD-VE # manual alone. It differs from the MS300 in ways that would have been silently # wrong under carry-over — the status word is at 0x2119 (not 0x2101), its bit # layout is the older VFD-B style rather than the MS300 2-bit state fields, # output current is 0.1 A per count (not 0.01 A), and the fault table tops out # at 65 with entirely different numbering above 20. # # SOURCES — Delta VFD-VE User Manual, DELTA_IA-AMD_VFD-VE_UM_EN_20160412.pdf # (downloadcenter.deltaww.com, doc ID 1218), 315 PDF pages. Citations are # PRINTED page numbers, with the PDF page in parentheses. # 4-2 (p. 53) 00-00 identity code, marked Read-only # 4-4..4-8 (pp. 55-59) group 01 / 02 summary — the clone ranges, and # the sweep that found no read-only member # 4-4 (p. 55) 01-00 Maximum Output Frequency 50.00-600.00 Hz # 4-117..4-119 (pp. 168-170) Pr.06-17..06-22 fault code table (AUTHORITATIVE # main-body Group 6 table, codes 0-65) # 4-27..4-28 (pp. 78-79) the same list as printed for firmware 2.02 — # SUPERSEDED, see the note above [faults.codes] # 4-33..4-34 (pp. 84-85) firmware 2.05 revision list, codes 63-65 # 4-59 (p. 110) 00-20 / 00-21 command and reference source # 4-159..4-160 (pp. 210-211) 09-00..09-04 comm defaults # 4-166..4-167 (pp. 217-218) Modbus address list (2000H / 21xxH / 22xxH) # # DRIVE-SIDE SETUP: 00-20 Source of Master Frequency Command = 1 (RS-485), # 00-21 Source of Operation Command = 2 (RS-485, RJ-11; keypad STOP disabled), # 09-00 node address, 09-01 baud. # # 09-04 MUST BE CHANGED. The factory setting is 1 = Modbus ASCII <7,N,2> # (p. 4-160), so an out-of-the-box VFD-VE will not answer Modbus RTU at all. # Set 09-04 = 12 for RTU <8,N,1>, which is what [serial] below assumes. # # Delta documents these as hex addresses that are already 0-based. Parameter # Pr.GG-nn is register 0xGGnn — Pr.04-01 is 0x0401 (p. 4-166). name = "Delta VFD-VE" vendor = "Delta Electronics" device_type = "vfd" verified = false probe_register = 0x2119 [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 00-20=1, 00-21=2, 09-00=node, 09-01=baud, and 09-04=12 for RTU 8N1."] 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; do not connect it. The factory format is ASCII, not RTU."] source = "Delta VFD-VE User Manual, PDF p. 210 (pinout) and printed pp. 4-160 and 4-166 (setup)" [[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 is 9.6 kbps (p. 4-159). Parity/stop bits follow 09-04, whose # factory value is ASCII 7N2 — these are the 09-04 = 12 (RTU 8N1) settings this # profile requires. [serial] baudrate = 9600 parity = "N" stopbits = 1 [monitor] # p. 4-167. Bits 3 and 4 are BOTH printed as "1: REV command" in this manual; # the sibling VFD-ED manual documents that same pair as a 2-bit direction- # transition field, so they are deliberately left unnamed here rather than # exposed as two independent reverse flags. drive_status = { address = 0x2119, bits = { 0 = "FwdCommand", 1 = "Running", 2 = "Jog", 8 = "FreqFromComm", 9 = "FreqFromAnalog", 10 = "CmdFromComm", 11 = "ParametersLocked", 12 = "KeypadCopyEnabled" } } frequency_command = { address = 0x2102, scale = 0.01, unit = "Hz" } output_frequency = { address = 0x2103, scale = 0.01, unit = "Hz" } # Printed as "AXXX.X" — ONE decimal, 0.1 A per count. The MS300 is 0.01 A. output_current = { address = 0x2104, scale = 0.1, unit = "A" } dc_bus_voltage = { address = 0x2105, scale = 0.1, unit = "V" } # UXXX.X output_voltage = { address = 0x2106, scale = 0.1, unit = "V" } # EXXX.X # 0x2107 is the multi-step-speed STEP NUMBER, not a speed. multistep_step = { address = 0x2107 } setting_frequency = { address = 0x211A, scale = 0.01, unit = "Hz" } max_setting_frequency = { address = 0x211B, scale = 0.01, unit = "Hz" } max_output_frequency = { address = 0x211C, scale = 0.01, unit = "Hz" } pid_feedback = { address = 0x2200, scale = 0.01, unit = "%" } igbt_temperature = { address = 0x2206, unit = "degC" } heatsink_temperature = { address = 0x2207, unit = "degC" } # 40 HP and above digital_input_status = { address = 0x2208 } digital_output_status = { address = 0x2209 } [control] command_register = 0x2000 # Fault reset is a DIFFERENT register. On 0x2000 this manual documents bits 0-3 # as a VALUE, not flags — 1 = Stop, 2 = Run, 3 = Jog+Run (p. 4-166) — so writing # the reset value 0x0002 there is literally the RUN command, an unexpected start # in the last direction. Reset is bit 1 of 0x2002 (p. 4-167). reset_register = 0x2002 speed_register = 0x2001 speed_scale = 0.01 speed_unit = "Hz" max_ref = 600.0 # 01-00 range is 50.00-600.00 Hz (p. 4-4) step_delay = 0.05 stop = [0x0001] # bits 3-0 = 1 Stop run_fwd = [0x0012] # bits 5-4 = 01B FWD, bits 3-0 = 2 Run run_rev = [0x0022] # bits 5-4 = 10B REV, bits 3-0 = 2 Run reset = [0x0002] # bit 1 of 0x2002 # The keepalive proves the link is alive. The DRIVE only reacts to silence if # 09-03 Time-out Detection is non-zero AND 09-02 is 0-2; the factory values are # 09-03 = 0.0 (disabled) and 09-02 = 3 "No warning and keep operating" # (pp. 4-159..4-160), i.e. a factory-default VFD-VE keeps running forever after # the master goes quiet. [control.watchdog] interval_ms = 300 fault = "cE10 communication time-out (only if 09-03 != 0.0 and 09-02 = 0-2; the factory default is 09-03 = 0.0 / 09-02 = 3, monitoring disabled)" [running_check] register = 0x2119 bit = 1 # "1: Operation status" (p. 4-167) # 0x2100 "Error code: refer to Pr.06-17 to Pr.06-22" (p. 4-167). This manual # does NOT document a warning code in the high byte the way the sibling VFD-ED # manual does; the mask is a defensive no-op if the high byte is always zero # and prevents a warning from corrupting the lookup if it is not. [faults] register = 0x2100 mask = 0x00FF history = [0x0612, 0x0613, 0x0614, 0x0615, 0x0616] # Pr.06-18..06-22 # Pr.06-17..06-22 settings, from the MAIN Group 6 table on pp. 4-117..4-119. # Transcribed complete; no code is carried from another family. # # This manual prints the list THREE times and they disagree. The firmware 2.02 # revision list (pp. 4-27..4-28) gives 28/29 as insufficient torque 1/2 and 53 # as "Software error (ccodE)"; the firmware 2.05 revision list (pp. 4-33..4-34) # and the main body table (pp. 4-117..4-118) both give all three as Reserved. # The main table wins — it is the current one, and it is the same firmware # level that adds 63-65. A drive old enough to report 28/29/53 with the 2.02 # meanings is noted in the strings rather than silently mislabelled. [faults.codes] 0 = "No fault" 1 = "ocA over-current during acceleration" 2 = "ocd over-current during deceleration" 3 = "ocn over-current during constant speed" 4 = "GFF ground fault" 5 = "occ IGBT short-circuit" 6 = "ocS over-current at stop" 7 = "ovA over-voltage during acceleration" 8 = "ovd over-voltage during deceleration" 9 = "ovn over-voltage during constant speed" 10 = "ovS over-voltage at stop" 11 = "LvA low-voltage during acceleration" 12 = "Lvd low-voltage during deceleration" 13 = "Lvn low-voltage during constant speed" 14 = "LvS low-voltage at stop" 15 = "PHL phase loss" 16 = "oH1 IGBT heat sink over-heat" 17 = "oH2 heat sink over-heat (40 HP and above)" 18 = "tH1o TH1 open loop error" 19 = "tH2o TH2 open loop error" 20 = "Fan error signal output" 21 = "oL drive over-load (150% 1 min)" 22 = "EoL1 motor 1 over-load" 23 = "EoL2 motor 2 over-load" 24 = "oH3 motor PTC overheat" 25 = "FuSE fuse error" 26 = "ot1 over-torque 1" 27 = "ot2 over-torque 2" 28 = "Reserved (firmware 2.02 printed this as insufficient torque 1)" 29 = "Reserved (firmware 2.02 printed this as insufficient torque 2)" 30 = "cF1 memory write-in error" 31 = "cF2 memory read-out error" 32 = "cd0 Isum current detection error" 33 = "cd1 U-phase current detection error" 34 = "cd2 V-phase current detection error" 35 = "cd3 W-phase current detection error" 36 = "Hd0 clamp current detection error" 37 = "Hd1 over-current detection error" 38 = "Hd2 over-voltage detection error" 39 = "Hd3 ground current detection error" 40 = "AuE auto tuning error" 41 = "AFE PID feedback loss" 42 = "PGF1 PG feedback error" 43 = "PGF2 PG feedback loss" 44 = "PGF3 PG feedback stall" 45 = "PGF4 PG slip error" 46 = "PGr1 PG ref input error" 47 = "PGr2 PG ref loss" 48 = "ACE analog current input loss" 49 = "EF external fault input" 50 = "EF1 emergency stop" 51 = "B.B. external base block" 52 = "PcodE password error" 53 = "Reserved (firmware 2.02 printed this as ccodE software error)" 54 = "cE1 communication error (illegal function code)" 55 = "cE2 communication error (illegal data address)" 56 = "cE3 communication error (illegal data value)" 57 = "cE4 communication error (slave device failure)" 58 = "cE10 communication time-out" 59 = "cP10 PU time-out" 60 = "bF brake transistor error" 61 = "ydc Y-connection / delta-connection switch error" 62 = "dEb decel. energy backup error" 63 = "oSL slip error" 64 = "bEb broken belt error" 65 = "tdEv tension PID feedback signal error" # Frame-size guard. Pr.00-00 is the drive identity code, marked "Read-only" # (p. 4-2); it encodes voltage class and kW, so a restore onto a different # frame is refused rather than written. Without this the rating check is # Unverifiable on every clone. [rating] register = 0x0000 words = 1 scale = 1.0 label = "AC motor drive identity code (Pr.00-00)" # Groups 01 (basic, 01-00..01-42) and 02 (digital I/O, 02-00..02-43) in Delta's # 0x01gg-nn layout. Group 09 is DELIBERATELY EXCLUDED: it holds 09-00 node # address, 09-01 baud and 09-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. # # Both groups were swept for the "Read-only" marker on pp. 4-4..4-9 and neither # carries one: the read-only parameters in this manual are 00-00/00-01/00-06, # 06-32..06-36 and 09-21..09-23, all outside these ranges. A read-only register # inside a clone range NAKs on restore and reports a failure for a clean clone. [parameters] ranges = [[0x0100, 0x012A], [0x0200, 0x022B]]