# Property of PMA Electrical Solutions, LLC. # # Schneider Altivar Machine ATV350 decentralized drive, embedded Modbus TCP. # Exact-family source: Schneider JPT12599.01 Commissioning Manual (02/2026), # Modbus TCP setup/examples pp.379-381, protocol addressing pp.385-390, # permanent process map pp.391-392, comm-loss monitoring pp.393-394, # AC control/status words pp.316-317, and event enumeration pp.481-499. # # Addresses below are zero-based PDU addresses, not the manual's 4xxxx labels: # 42001 -> 2000 and 42101 -> 2100, exactly as JPT12599 pp.380,385 state. # Set 0x231F:005=86 (Modbus TCP), activate network control at 0x2631:037, # choose Network as the setpoint source at 0x2860:001, and hold DI1 high as # the start enable. The adjustable master timeout ships at 2.0 s, starts after # the first valid write, and factory event 0x8116 disables the drive on loss # (pp.393-394,498). name = "Schneider Altivar Machine ATV350" vendor = "Schneider Electric" device_type = "vfd" verified = false probe_register = 2000 [monitor] status_word = { address = 2000, bits = { 0 = "FAULT", 1 = "WARNING", 2 = "RUNNING_FORWARD", 3 = "RUNNING_REVERSE", 4 = "READY", 5 = "NETWORK_CONTROL_ACTIVE", 6 = "NETWORK_SETPOINT_ACTIVE", 7 = "AT_REFERENCE", 8 = "PROFILE_STATE_0", 9 = "PROFILE_STATE_1", 10 = "PROFILE_STATE_2", 11 = "PROFILE_STATE_3", 12 = "PROCESS_CONTROLLER_ACTIVE", 13 = "TORQUE_MODE", 14 = "CURRENT_LIMIT", 15 = "DC_BRAKING" } } output_frequency = { address = 2001, scale = 0.01, unit = "Hz" } drive_status = { address = 2003, bits = { 0 = "NONRESETTABLE_ERROR", 1 = "ERROR", 2 = "WAITING_FOR_START", 4 = "DRIVE_DISABLED", 5 = "STOP_ACTIVE", 7 = "IDENTIFICATION", 8 = "RUNNING", 9 = "ACCELERATING", 10 = "DECELERATING", 11 = "DECEL_OVERRIDE", 12 = "DC_BRAKING", 13 = "FLYING_START", 14 = "CURRENT_LIMIT" } } motor_voltage = { address = 2004, unit = "V" } motor_current = { address = 2005, signed = true, scale = 0.1, unit = "A" } heatsink_temperature = { address = 2009, scale = 0.1, signed = true, unit = "degC" } dc_bus_voltage = { address = 2010, unit = "V" } motor_torque = { address = 2012, signed = true, scale = 0.1, unit = "%" } [control] command_register = 2100 speed_register = 2101 speed_scale = 0.01 speed_unit = "Hz" max_ref = 599.0 step_delay = 0.05 # Bits 5/6 activate network command/reference; run bits 0/1 are edge-driven. stop = [0x0060] run_fwd = [0x0060, 0x0061] run_rev = [0x0060, 0x0062] # Bit 2 is reset on a rising edge; run bits stay clear throughout. reset = [0x0020, 0x0024, 0x0020] [control.watchdog] interval_ms = 50 fault = "0x8116 Modbus TCP master timeout" [running_check] register = 2003 bit = 8 [direction_check] register = 2000 bit = 3 reverse_when_set = true [faults] register = 2002 [faults.codes] 0 = "no active error" 8784 = "0x2250 continuous overcurrent" 8992 = "0x2320 motor short circuit or ground leakage" 9024 = "0x2340 motor-end short circuit" 9040 = "0x2350 motor thermal overload" 9090 = "0x2382 device utilization too high" 9095 = "0x2387 clamp responded too often" 12576 = "0x3120 mains phase error" 12816 = "0x3210 DC bus overvoltage" 12832 = "0x3220 DC bus undervoltage" 16912 = "0x4210 power unit overtemperature" 17024 = "0x4280 heatsink temperature sensor error" 17168 = "0x4310 motor overtemperature" 20757 = "0x5115 6 V supply error" 20759 = "0x5117 3.3 V supply error" 20864 = "0x5180 overload of 24 V supply" 24704 = "0x6080 logic PLC exception" 24705 = "0x6081 logic PLC endless loop" 24965 = "0x6185 basic-device communication error" 24984 = "0x6198 internal error" 24985 = "0x6199 internal error" 24986 = "0x619A internal error" 24987 = "0x619B internal error" 25216 = "0x6280 trigger/functions connected incorrectly" 25217 = "0x6281 user-defined error 1" 25218 = "0x6282 user-defined error 2" 25233 = "0x6291 maximum allowed troubles exceeded" 25249 = "0x62A1 network user error 1" 25250 = "0x62A2 network user error 2" 25265 = "0x62B1 NetWordIN1 configuration incorrect" 25505 = "0x63A1 control-unit ID-tag load error" 25506 = "0x63A2 power-unit ID-tag load error" 25507 = "0x63A3 unknown power unit" 28800 = "0x7080 assertion level monitoring" 28961 = "0x7121 pole-position identification error" 29056 = "0x7180 motor overcurrent" 30338 = "0x7682 invalid user data" 30347 = "0x768B OEM data missing" 30352 = "0x7690 EPM firmware incompatible" 33046 = "0x8116 Modbus TCP master timeout" 33047 = "0x8117 Modbus TCP keep-alive timeout" 33169 = "0x8191 cyclic data exchange disrupted" [connection] summary = "The ATV350 reaches Modbus TCP through its built-in dual-port Multi-Ethernet interface." warnings = ["This is Ethernet/Modbus TCP, not RS-485; do not connect a serial adapter.", "The ordered network may not be Modbus TCP; changing it erases the old network parameters and requires a restart.", "Keep the machine safely inhibited while changing network control ownership."] [[connection.methods]] id = "built_in_modbus_tcp" title = "Built-in dual-port Modbus TCP" transport = "tcp" hardware = "built_in" port = "X396 Network IN or X397 Network OUT" connector = "M12 industrial Ethernet network connector/cable assembly" adapter = "Computer Ethernet interface; use an M12 industrial Ethernet lead or switch appropriate to the installed connector" cable = "Shielded industrial Ethernet M12 cable; the exact coding/pinout is not reproduced in the cached commissioning manual" parts = ["Shielded industrial Ethernet M12 lead", "Ethernet interface or industrial switch"] steps = ["Lock out the machine or otherwise prevent a start.", "Locate X396 Network IN and X397 Network OUT on the drive body.", "Connect the preterminated industrial Ethernet cable to either network port and to the computer or switch.", "Power the control electronics and confirm the port L/A LED shows link.", "Discover or configure the IP address, then verify a Modbus TCP read on TCP port 502 before assigning network control."] setup = ["Set 0x231F:005 Network selection = 86 (Modbus TCP/IP) while the drive is disabled, then restart.", "Assign a trigger to 0x2631:037 Activate network control.", "Choose Network as the setpoint source at 0x2860:001.", "Keep DI1 high as the start enable and configure the master timeout."] warnings = ["The cached manual identifies the ports and M12 communication cable but does not publish a field-wire pinout; use a vendor-preterminated industrial Ethernet lead instead of hand-wiring.", "Do not confuse the X396/X397 network ports with X16 diagnostics."] source = "Schneider JPT12599.01 (02/2026), pp. 28-29, 267-268, 377-381 and 393-394."