# Property of PMA Electrical Solutions, LLC. # # Schneider Electric Altivar 212, embedded Modbus RTU on either the RJ45 port # or the open-style A/B/COM terminal. This Toshiba-derived map is unique to # ATV212; do not substitute the usual Altivar W3201/W8501 CiA402 map. # # Primary source: Schneider S1A53844.02, ATV212 Modbus communication manual, # 09/2012: serial setup pp.20-21; timeout p.28; zero-based register examples # pp.34-38; control/monitor registers pp.45-47; command/status bits pp.48-51; # trip codes pp.54-55. The manual calls its published hexadecimal value the # Modbus register address, so FA00 means protocol address 0xFA00 (64000). # S1A53838.04 (06/2025), pp.148-149, independently confirms F803 ships at # 3 s and F851 ships at 4: an Err5/Err8 drive fault on communications loss. # Unlike ATV21, this backstop is effective at factory defaults; F603 is only # the external-logic-input fault stop mode and does not govern Modbus loss. # # Drive setup: CMOd=2 and FMOd=4, or retain another source and use command # bits 15/14 as below to give Modbus command/reference priority. F807 chooses # RJ45 (0) or open-style (1); F829=1 selects RTU on the open-style port. name = "Schneider Altivar 212" vendor = "Schneider Electric" device_type = "vfd" verified = false probe_register = 64769 # FD01 current status word [serial] baudrate = 19200 parity = "E" stopbits = 2 # ATV212 transmits 2; its receiver accepts 1 or 2 (S1A53844 p.20) [monitor] status_word = { address = 64769, bits = { 0 = "FL", 1 = "TRIPPED", 2 = "ALARM", 3 = "MAIN_UNDERVOLT", 9 = "REVERSE", 10 = "RUNNING", 11 = "COAST_STOP", 12 = "EMERGENCY_STOP", 13 = "STANDBY_ST_ON", 14 = "STANDBY", 15 = "LOCAL" } } output_frequency = { address = 64768, scale = 0.01, unit = "Hz" } # FD00 motor_current_pct = { address = 65027, scale = 0.01, unit = "%" } # FE03, % of rating dc_bus_pct = { address = 65028, scale = 0.01, unit = "%" } # FE04, not volts output_voltage_pct = { address = 65029, scale = 0.01, unit = "%" } run_time = { address = 65044, scale = 0.01, unit = "h" } [control] command_register = 64000 # FA00 speed_register = 64001 # FA01, unsigned frequency reference speed_scale = 0.01 speed_unit = "Hz" max_ref = 200.0 # FA01 is bounded by FH; ATV212 FH maximum is 200 Hz step_delay = 0.05 # Bits 15 and 14 explicitly select Modbus command and reference. Bit 10 runs, # bit 9 selects reverse. Keeping the priority bits set makes the sequence # independent of CMOd/FMOd without asserting coast or emergency stop. stop = [0xC000] run_fwd = [0xC400] run_rev = [0xC600] # Bit 13 is reset. Frame the rising edge while run remains clear. reset = [0xC000, 0xE000, 0xC000] [control.watchdog] interval_ms = 500 fault = "Err5/Err8 communication timeout" [running_check] register = 64769 bit = 10 [direction_check] register = 64769 bit = 9 reverse_when_set = true [faults] register = 64656 history = [65040, 65041, 65042, 65043] [faults.codes] 0 = "NErr no error" 1 = "OC1 overcurrent during acceleration" 2 = "OC2 overcurrent during deceleration" 3 = "OC3 overcurrent at constant speed" 4 = "OCL load overcurrent at startup" 5 = "OCA arm short circuit" 8 = "EPHI input phase failure" 9 = "EPHO output phase failure" 10 = "OP1 overvoltage during acceleration" 11 = "OP2 overvoltage during deceleration" 12 = "OP3 overvoltage at constant speed" 13 = "OL1 inverter overload" 14 = "OL2 motor overload" 16 = "OH overheat" 17 = "E emergency stop" 18 = "EEP1 EEPROM write fault" 19 = "EEP2 EEPROM read fault" 20 = "EEP3 EEPROM fault" 21 = "Err2 RAM fault" 22 = "Err3 ROM fault" 23 = "Err4 CPU fault" 24 = "Err5 communication error" 26 = "Err7 current detector fault" 27 = "Err8 optional circuit board type error" 28 = "Err9 graphic display terminal communication error" 29 = "UC small-current trip" 30 = "UP1 main-circuit undervoltage" 32 = "Ot overtorque" 34 = "EF2 ground fault" 37 = "OC1P power-element overcurrent during acceleration" 38 = "OC2P power-element overcurrent during deceleration" 39 = "OC3P power-element overcurrent during operation" 41 = "EtYP drive type error" 46 = "OH2 external thermal input" 47 = "SOUt VIA cable break" 50 = "E-18 analog cable break" 51 = "E-19 CPU communication fault" 52 = "E-20 excess torque boost" 53 = "E-21 CPU fault" 72 = "Fd1 closed damper 1" 73 = "Fd2 closed damper 2" 84 = "Etn1 autotuning error" [connection] summary = "The ATV212 supports Modbus RTU through either its open-style RS-485 terminals or its RJ45 communications port." warnings = ["Lock out the drive before moving the port-selection or termination switches.", "Use only one selected Modbus port at a time and set F807 to match it.", "Keep communications cable at least 30 cm from power wiring."] [[connection.methods]] id = "open_style_rs485" title = "Open-style RS-485 terminal" transport = "serial" hardware = "built_in" port = "Control board open-style Modbus connector beside SW103" connector = "Screw-cage terminals B, A, GND, SCR" adapter = "Isolated USB-to-RS-485 adapter" cable = "RS-485 double-shielded twisted pair, Schneider TSX CSA 100 or equivalent" parts = ["Isolated USB-to-RS-485 adapter", "Shielded twisted pair plus common", "Small screwdriver"] steps = ["Lock out and verify the drive is de-energized.", "Open the control cover and locate B, A, GND and SCR.", "Land the conductors exactly as shown below; two wires may share a cage for daisy chaining.", "Set SW103 to Term only if this drive is at a physical end of the bus.", "Restore power with the motor inhibited and verify a read."] setup = ["Set F807 = 1 (open style).", "Set F829 = 1 (Modbus RTU on the open-style port).", "Match baud/parity; this profile uses 19200, even parity, and two transmitted stop bits.", "Set CMOd = 2 and FMOd = 4, or use command bits 15/14 to select Modbus."] warnings = ["Move SW103 only while power is off.", "Do not use the cable shield as signal common."] source = "Schneider S1A53844.02 (09/2012), pp. 12-15 and 20-21." [[connection.methods.wiring]] adapter = "B / + / D1" device = "B — +" signal = "RS-485 D1/B" [[connection.methods.wiring]] adapter = "A / - / D0" device = "A — -" signal = "RS-485 D0/A" [[connection.methods.wiring]] adapter = "COM / signal common" device = "GND — Common" signal = "Signal reference" [[connection.methods.wiring]] adapter = "Cable shield" device = "SCR — Shield" signal = "Shield" required = false [[connection.methods]] id = "rj45_rs485" title = "RJ45 Modbus port" transport = "serial" hardware = "built_in" port = "Control board RJ45" connector = "RJ45; pin 4 D1/B, pin 5 D0/A, pin 8 Common (pin 2 is also Common)" adapter = "Isolated USB-to-RS-485 adapter" cable = "VW3A8306D30 RJ45-to-stripped Modbus cable or equivalently pinned shielded cable" parts = ["Isolated USB-to-RS-485 adapter", "VW3A8306D30 or documented equivalent"] steps = ["Lock out and verify the drive is de-energized.", "Plug the RJ45 cable into the communications port.", "Land only D1, D0 and Common at the adapter using the mapping below.", "Restore power with the motor inhibited and verify a read."] setup = ["Set F807 = 0 (RJ45).", "Match 19200 baud, even parity, and the ATV212 stop-bit setting.", "Set CMOd = 2 and FMOd = 4, or use command bits 15/14 to select Modbus."] warnings = ["Do not connect adapter power to RJ45 pin 7 (VP 10 V).", "Schneider explicitly says to use cabling/taps that connect only D0, D1 and Common."] source = "Schneider S1A53844.02 (09/2012), pp. 13-15 and 20-21." [[connection.methods.wiring]] adapter = "D1 / B / +" device = "RJ45 pin 4 — D1 / B" signal = "RS-485 D1" [[connection.methods.wiring]] adapter = "D0 / A / -" device = "RJ45 pin 5 — D0 / A" signal = "RS-485 D0" [[connection.methods.wiring]] adapter = "COM / signal common" device = "RJ45 pin 8 — Common" signal = "Signal reference"