# Property of PMA Electrical Solutions, LLC. # # Schneider Altivar Process ATV630 over the EMBEDDED Modbus RTU serial port # (RJ45), CiA402 profile. No option card is assumed. # # Sources — Schneider Electric primary documentation only: # EAV64325.01 ATV600 Modbus Serial Link Manual (Embedded), 11/2014, 116 pp # pp. 20-23 CiA402 operating states # pp. 24-25 control word CMD bit map + command values # p. 26 control-word bit assignment (bit 11 = rrS reverse) # p. 27 status word ETA bit map + state table # pp. 36-37 supported functions and the addressing example # pp. 52-55 Add / tbr / tFO / tto # p. 100 [Modbus Error Resp] SLL -> SLF1 # pp. 102-105 control/reference channel configuration # EAV64332 V4.6 ATV600 Communication Parameters (workbook) # "Parameters" sheet logic addresses, type, unit, range # "Enumerations" sheet the LFT error-code list below # "Registers" sheet ETA / ETI / CMD bit definitions # EAV64318.14 ATV600 Programming Manual, 692 pp # p. 108 [Motor Current] LCR step, rating-dependent # pp. 110-111 LFR / RFR / ULN / VBUS value ranges # # ADDRESSING — no conversion needed, and no 4xxxx anywhere. Schneider publishes # a "logic address" per parameter in decimal and hex; that number goes straight # into the FC03/FC06/FC16 starting-address field, so it IS the 0-based protocol # address. EAV64325 p. 37 reads W3102 (0C1E hex) with a request whose address # field is literally 0C1E, and writes W9001 (2329 hex) with FC06 to 2329. # 0-based register = logic address as published (identity) # # Cross-family claims are NOT made. EAV64325/64332/64318 cover the ATV600 range # (ATV630/650/660/680/6A0/6B0); only the ATV630 is claimed here. Do not assume # this map holds on an ATV900/ATV930 — that is a separate range with its own # documentation set. # # DRIVE-SIDE SETUP — without these the drive ACKs the writes and ignores them: # [Modbus Address] Add (6001) factory setting is OFF (0). Set 1...247. # [Modbus baud rate] tbr (6003) 19K2 = 32 (factory) # [Modbus format] tFO (6004) 8E1 = 3 (factory) # Combined CiA402 mode (EAV64325 p. 104): # [Ref Freq 1 Config] Fr1 (8413) = [Modbus] MDB (10) # [Profile] CHCF (8401) = [Not separ.] SIM (1, factory) # Separate CiA402 mode (EAV64325 p. 105): # [Profile] CHCF (8401) = [Separate] SEP (2) # [Cmd channel 1] Cd1 (8423) = [Modbus] MDB (10) — factory is TER # [Cmd switching] CCS (8421) = default # The sequences below are the CiA402 profile. If CHCF is set to [I/O profile] # IO (3) the command word is a plain fwd/rev/reset bitmap instead and these # sequences are WRONG for that drive. # # COMM LOSS: [Modbus Error Resp] SLL (7010) factory setting is [Freewheel] YES, # which trips [Modbus Com Interruption] SLF1 (LFT code 5) and freewheels the # motor. [Modbus Time Out] tto (6005) is 0.1 s units, factory 10.0 s, range # 0.1...30.0 s. The keepalive below is sized for the shortest legal timeout. name = "Schneider Altivar Process ATV630" vendor = "Schneider Electric" device_type = "vfd" verified = false probe_register = 3201 # ETA, read-only, valid whenever the port is alive [serial] baudrate = 19200 parity = "E" stopbits = 1 # ETA is the CiA402 status word; bits 14/15 are Schneider's manufacturer bits. [monitor] status_word = { address = 3201, bits = { 0 = "ReadyToSwitchOn", 1 = "SwitchedOn", 2 = "OperationEnabled", 3 = "Fault", 4 = "VoltageEnabled", 5 = "QuickStop", 6 = "SwitchOnDisabled", 7 = "Warning", 9 = "Remote", 10 = "TargetReached", 11 = "InternalLimit", 14 = "StopKey", 15 = "ReverseRotation" } } output_frequency = { address = 3202, signed = true, scale = 0.1, unit = "Hz" } # RFR, +/-3276.7 Hz ref_freq_before_ramp = { address = 3203, signed = true, scale = 0.1, unit = "Hz" } # FRH # LCR scaling depends on drive rating (EAV64318 p. 108, footnote 2): 0.01 A at # <=15 kW, 0.1 A at 18...160 kW, and 1 A above 160 kW. Expose the register raw # until profiles can select a scale from the exact frame rating. motor_current_raw = { address = 3204 } motor_torque = { address = 3205, signed = true, scale = 0.1, unit = "%" } # OTR ext_status = { address = 3206 } # ETI, internal state, NOT power mains_voltage = { address = 3207, scale = 0.1, unit = "V" } # ULN motor_voltage = { address = 3208, unit = "V" } # UOP, 1 V drive_thermal_state = { address = 3209, unit = "%" } # THD (drive, not motor) motor_power = { address = 3211, signed = true, unit = "%" } # OPR, % of nominal dc_bus_voltage = { address = 3243, scale = 0.1, unit = "V" } # VBUS motor_thermal_state = { address = 9630, unit = "%" } # THR command_word = { address = 8501 } # CMD, read-back speed_setpoint = { address = 8602, signed = true, unit = "rpm" } # LFRD # CiA402: shutdown (0x0006) -> switch on (0x0007) -> enable operation (0x000F). # EAV64325 p. 24. Bit 11 is assigned by default to [Reverse assign.] rrS # (p. 26), so reverse is enable-operation with bit 11 set. [control] command_register = 8501 # CMD speed_register = 8502 # LFR, reference frequency, +/-500.0 Hz speed_scale = 0.1 speed_unit = "Hz" max_ref = 500.0 # LFR range is -5000...5000 raw; TFR tops out at 500.0 Hz step_delay = 0.05 stop = [0x0006] run_fwd = [0x0006, 0x0007, 0x000F] run_rev = [0x0006, 0x0007, 0x080F] # Fault reset is a 0->1 edge on bit 7 (EAV64325 p. 24). 0x0080 leaves bit 1 # (Enable voltage) clear, so it is a Disable-voltage command, not a run # command; 0x0006 then returns the drive to 3 - Ready to switch on. reset = [0x0080, 0x0006] [[control.preconditions]] register = 8504 # CMI mask = 0x0200 expected = 0 message = "CMI bit 9 must be clear so LFR/RFR use the documented 0.1 Hz scale" # tto is adjustable down to 0.1 s, so keep well inside that rather than inside # the 10.0 s factory setting. [control.watchdog] interval_ms = 50 fault = "SLF1 [Modbus Com Interruption]" [running_check] register = 3201 bit = 2 # ETA bit 2, "Operation enabled" = running [direction_check] register = 3201 bit = 15 reverse_when_set = true # LFT [Last Error] 7121; history DP0-DP9 and DPA-DPF. [faults] register = 7121 history = [7200, 7201, 7202, 7203, 7204, 7205, 7206, 7207, 7208, 7209, 7600, 7601, 7602, 7603, 7604, 7605] # Verbatim from the LFT enumeration in EAV64332 V4.6. Codes covering cabinet, # AFE and multipump hardware belong to the shared ATV600 list and simply never # appear on a plain ATV630. [faults.codes] 0 = "[No Error] (NOF) No error detected" 2 = "[Ctrl Memory Error] (EEF1) Control memory error" 3 = "[Incorrect Config] (CFF) Incorrect configuration" 4 = "[Invalid Config] (CFI) Invalid configuration" 5 = "[Mdb Com Interrupt] (SLF1) Modbus communication interruption" 6 = "[Internal Link Error] (ILF) Internal communication interruption with option module" 7 = "[Fdbus Com Interrupt] (CNF) Fieldbus communication interruption" 8 = "[External Error] (EPF1) External detected error" 9 = "[Overcurrent] (OCF) Overcurrent" 10 = "[Precharge Capa] (CRF1) Precharge capacitor" 13 = "[AI2 4-20mA loss] (LFF2) AI2 4-20mA loss" 15 = "[Input Overheating] (IHF) Input Overheating" 16 = "[Device Overheat] (OHF) Device overheating" 17 = "[Motor Overload] (OLF) Motor overload" 18 = "[DC Bus OverV] (OBF) DC bus overvoltage" 19 = "[Supply Mains OverV] (OSF) Supply mains overvoltage" 20 = "[Single out ph loss] (OPF1) Single output phase loss" 21 = "[Input Phase Loss] (PHF) Input phase loss" 22 = "[Supply Mains UnderV] (USF) Supply mains undervoltage" 23 = "[Motor short circuit] (SCF1) Motor short circuit" 24 = "[Motor Overspeed] (SOF) Motor overspeed" 25 = "[Autotuning Error] (TNF) Autotuning detected error" 26 = "[Internal Error 1] (INF1) Internal error 1 (Rating)" 27 = "[Internal Error 2] (INF2) Internal error 2 (Soft)" 28 = "[Internal Error 3] (INF3) Internal error 3 (Intern Comm)" 29 = "[Internal Error 4] (INF4) Internal error 4 (Manufacturing)" 30 = "[Pwr Memory Error] (EEF2) Power memory error" 32 = "[Ground Short Circuit] (SCF3) Ground short circuit" 33 = "[Output Ph Loss] (OPF2) Output phase loss" 34 = "[CANopen Com Interrupt] (COF) CANopen communication interruption" 37 = "[Internal Error 7] (INF7) Internal error 7 (Init)" 38 = "[Fieldbus Error] (EPF2) External error detected by Fieldbus" 40 = "[Internal Error 8] (INF8) Internal error 8 (Switching Supply)" 42 = "[PC Com Interrupt] (SLF2) PC communication interruption" 45 = "[HMI Com Interruption] (SLF3) HMI communication interruption" 51 = "[Internal Error 9] (INF9) Internal error 9 (Measure)" 52 = "[Internal Error 10] (INFA) Internal error 10 (Mains)" 53 = "[Internal Error 11] (INFB) Internal error 11 (Temperature)" 54 = "[Device Overheat] (TJF) Device overheating" 55 = "[IGBT Short Circuit] (SCF4) IGBT short circuit" 56 = "[Mot Short Circuit] (SCF5) Motor short circuit" 58 = "[Out Contact Closed Error] (FCF1) Output contactor closed error" 59 = "[Out Contact Opened Error] (FCF2) Output contactor opened error" 60 = "[Internal Error 12] (INFC) Internal error 12 (Internal current supply)" 64 = "[Input Contactor] (LCF) input contactor" 68 = "[Internal Error 6] (INF6) Internal error 6 (Option)" 69 = "[Internal Error 14] (INFE) Internal error 14 (CPU)" 71 = "[AI3 4-20mA loss] (LFF3) AI3 4-20mA loss" 72 = "[AI4 4-20mA loss] (LFF4) AI4 4-20mA loss" 73 = "[Boards Compat] (HCF) Boards compatibility" 77 = "[Conf Transfer Error] (CFI2) Configuration transfer error" 79 = "[AI5 4-20 mA loss] (LFF5) AI5 4-20 mA loss" 80 = "[Fan Feedback Error] (FFDF) Fan feedback error" 81 = "[Module Overheat] (MOF) Module overheat error" 82 = "[ON Lock Error] (LKON) ON lock error" 99 = "[Channel Switch Error] (CSF) Channel switching detected error" 100 = "[Proc Underload] (ULF) Process underload" 101 = "[Process Overload] (OLC) Process overload" 105 = "[Angle error] (ASF) Angle error" 106 = "[AI1 4-20 mA loss] (LFF1) AI1 4-20 mA loss" 107 = "[Safety Func Error] (SAFF) Safety function detected error" 110 = "[AI2 Th Level Error] (TH2F) AI2 thermal level error" 111 = "[AI2 Th Sensor Err] (T2CF) Thermal sensor error on AI2" 112 = "[AI3 Th Level Error] (TH3F) AI3 thermal level error" 113 = "[AI3 Th Sensor Err] (T3CF) Thermal sensor error on AI3" 114 = "[PumpCycle start Error] (PCPF) Pump cycle start error" 115 = "[Out Pressure Low] (OPLF) Outlet pressure low" 116 = "[High Flow Error] (HFPF) High flow error" 117 = "[Inlet Pres Error] (IPPF) Inlet pressure detected error" 119 = "[Pump Low Flow Error] (PLFF) Pump low flow detected error" 120 = "[AI4 Th Level Error] (TH4F) AI4 thermal level error" 121 = "[AI4 Th Sensor Err] (T4CF) Thermal sensor error on AI4" 122 = "[AI5 Th Level Error] (TH5F) AI5 thermal level error" 123 = "[AI5 Th Sensor Err] (T5CF) Thermal sensor error on AI5" 124 = "[Anti Jam Error] (JAMF) Anti Jam detected error" 125 = "[Out Pressure High] (OPHF) Outlet pressure high" 126 = "[Dry Run Error] (DRYF) Dry run detected error" 127 = "[PID Fdbk Error] (PFMF) PID feedback detected error" 128 = "[Prog Load Error] (PGLF) Program loading detected error" 129 = "[Prog Run Error] (PGRF) Program running detected error" 130 = "[Lead Pump Error] (MPLF) Lead pump not available" 131 = "[Low Level Error] (LCLF) Low level error" 132 = "[High Level Error] (LCHF) High level error" 142 = "[Internal Error 16] (INFG) Internal error 16 (IO module - relay)" 143 = "[Internal Error 17] (INFH) Internal error 17 (IO module - Standard)" 144 = "[Internal Error 0] (INF0) Internal error 0 (IPC)" 146 = "[Internal Error 13] (INFD) Internal error 13 (Diff current)" 148 = "[Motor Stall Error] (STF) Motor stall detected error" 149 = "[Internal Error 21] (INFL) Internal error 21 (RTC)" 150 = "[Embd Eth Com Interrupt] (ETHF) Embedded Ethernet communication interruption" 151 = "[Internal Error 15] (INFF) Internal error 15 (Flash)" 152 = "[FW Update Error] (FWER) Firmware Update error" 153 = "[Internal Error 22] (INFM) Internal error 22 (Embedded Ethernet)" 154 = "[Internal Error 25] (INFP) Internal error 25 (Incompatibility CB & SW)" 155 = "[Internal Error 20] (INFK) Internal error 20 (option interface PCBA)" 157 = "[Internal Error 27] (INFR) Internal error 27 (Diagnostics CPLD)" 158 = "[Internal Error 23] (INFN) Internal error 23 (Module link)" 159 = "[AFE ShortCircuit error] (SCF6) AFE ShortCircuit error" 160 = "[AFE Bus unbalancing] (OBF2) AFE Bus unbalancing" 161 = "[Internal Error 28] (INFS) Internal error 28 (AFE)" 162 = "[MonitorCirc A Error] (IFA) Monitoring circuit A error" 163 = "[MonitorCirc B Error] (IFB) Monitoring circuit B error" 164 = "[MonitorCirc C Error] (IFC) Monitoring circuit C error" 165 = "[MonitorCirc D Error] (IFD) Monitoring circuit D error" 166 = "[CabinetCirc A Error] (CFA) Cabinet circuit A error" 167 = "[CabinetCirc B Error] (CFB) Cabinet circuit B error" 168 = "[CabinetCirc C Error] (CFC) Cabinet circuit C error" 169 = "[MotorWinding A Error] (TFA) Motor winding A error" 170 = "[MotorWinding B Error] (TFB) Motor winding B error" 171 = "[MotorBearing A Error] (TFC) Motor bearing A error" 172 = "[MotorBearing B Error] (TFD) Motor bearing B error" 173 = "[Cabinet Overheat Error] (CHF) Cabinet overheat error" 174 = "[AFE Mains Undervoltage] (URF) AFE Mains undervoltage" 175 = "[Internal Error 31] (INFV) Internal error 31 (Missing brick)" 176 = "[Internal Error 29] (INFT) Internal error 29 (Inverter)" 177 = "[Internal Error 30] (INFU) Internal error 30 (Rectifier)" 179 = "[AFE IGBT over-heat error] (TJF2) AFE IGBT over-heat error" 180 = "[AFE contactor feedback error] (CRF3) AFE contactor feedback error" 181 = "[Pre-settings Transfer Error] (CFI3) Pre-settings transfer error" 182 = "[Circuit Breaker Error] (CBF) Circuit breaker error" 186 = "[MultiDrive Link Error] (MDLF) MultiDrive Link error" 190 = "[M/P Device Error] (MPDF) Multipump device error" 191 = "[AFE DC-Caps Error] (ACF1) AFE DC-capacitors error" 192 = "[AFE Current Control Error] (ACF2) AFE current control error" 193 = "[Mains Freq Out Of Range] (MFF) Mains frequency out of range" 200 = "[FDR 1 Error] (FDR1) FDR Eth embedded error" 201 = "[FDR 2 Error] (FDR2) FDR Eth module error" 203 = "[Cab I/O 24V Error] (P24C) Cabinet I/O 24V missing error" 206 = "[DC Bus Ripple Error] (DCRE) DC Bus ripple error" 207 = "[VxCtrl Error] (VCF) Vortex control error" 208 = "[Egy Saving Exit Error] (IDLF) Idle mode exit error" 211 = "[Security Files Corrupt] (SPFC) Security files corrupt" 212 = "[AFE Line Filter Error] (ACF3) AFE Line filter error" 213 = "[Cooling Pump Error] (COPF) Cooling pump error" 220 = "[Adv.Function Lock] (AFLF) Advanced function locked error" [connection] summary = "Connect to the ATV630 embedded Modbus interface; no fieldbus option card is required for the documented serial path." warnings = ["Lock out the drive/starter before opening covers or moving switches.", "Keep communications cable at least 30 cm from line and motor wiring.", "Prove read-only communication with the motor inhibited before enabling network control."] [[connection.methods]] id = "built_in_rs485" title = "Built-in Modbus RJ45" transport = "serial" hardware = "built_in" port = "Built-in Modbus RJ45" connector = "RJ45; pin 4 D1, pin 5 D0, pin 8 Common; pin 7 is vendor peripheral power" adapter = "Isolated USB-to-RS-485 adapter" cable = "VW3A8306D30 RJ45-to-stripped Modbus lead or equivalently pinned shielded twisted-pair cable" parts = ["Isolated USB-to-RS-485 adapter", "Shielded twisted pair plus common conductor", "End termination for a multidrop bus"] steps = ["Lock out the equipment and verify it is de-energized.", "Locate Built-in Modbus RJ45.", "Wire D1, D0 and Common exactly as shown below; leave the peripheral-power pin unused.", "Route the communications cable at least 30 cm from power conductors and terminate only the two physical ends.", "Restore control power with the motor inhibited and verify a read before enabling control."] setup = ["Set Add @6001 to 1..247, tbr @6003 to 19200, and tFO @6004 to 8-E-1.", "Set Fr1 = Modbus and CHCF = SIM, or Cd1 = Modbus in separate mode.", "Keep CMI bit 9 clear and commission tto/SLL."] warnings = ["Do not connect adapter power to the vendor peripheral-power pin.", "Connect only the documented data and Common conductors."] source = "Schneider EAV64325.01 (11/2014), pp. 45-55 and 100-105." [[connection.methods.wiring]] adapter = "D1 / B / +" device = "RJ45 pin 4 — D1" signal = "RS-485 D1" [[connection.methods.wiring]] adapter = "D0 / A / -" device = "RJ45 pin 5 — D0" signal = "RS-485 D0" [[connection.methods.wiring]] adapter = "COM / signal common" device = "RJ45 pin 8 — Common" signal = "Signal reference"