# Property of PMA Electrical Solutions, LLC. # # Benshaw M2L 3000 medium-voltage VFD — MODBUS TCP ONLY. Primary source: # Benshaw publication 890048-01-00, "M2L 3000 Series VFD User Manual": control # source and watchdog parameters printed pp. 59-60 / 81-82, faults 253-254 # printed p. 102, and Appendix A's exact Modbus/fieldbus image pp. 129-131. # # The manual advertises Modbus TCP/IP and names Modbus TCP in FUNCTION-32, # FUNCTION-35, and the master-IP watchdog. It does not document a Modbus RTU # slave interface. Select this profile only with the app's TCP transport; the # default [serial] values are intentionally omitted because none are valid for # this drive. # # ADDRESSING: Appendix A prints conventional 4xxxx references. Addresses below # are 0-based protocol addresses: printed address - 40001. # # Setup must use a MATCHED source pair: Local mode is FUNCTION-32 control=2 # Modbus TCP plus FUNCTION-34 speed=17 Modbus TCP; Remote mode is FUNCTION-33 # control=2 plus FUNCTION-35 speed=17. Select the corresponding Local/Remote # mode—do not mix one pair's run source with the other's stale speed source. # Reverse is disabled by default; set DRIVE-07=Enabled (printed pp. 57, 74) # before using the reverse command. # FUNCTION-36..39 restrict the permitted controller IP. # Selecting Modbus TCP as the start/stop source automatically makes a 5-second # loss raise fault 253 and decelerate to stop. For a second, IP-specific layer, # set FUNCTION-40 to 5 seconds and the master IP in FUNCTION-41..44; that layer # raises fault 254 and coasts to stop, but defaults disabled. name = "Benshaw M2L 3000 (Modbus TCP)" vendor = "Benshaw" device_type = "vfd" verified = false probe_register = 5001 # 45002 Drive Status [connection] summary = "The M2L 3000 profile is Modbus TCP only, but the public cached manual does not identify a universal customer Ethernet connector because communications can be built in or supplied through an order-specific industrial gateway." warnings = [] [[connection.methods]] id = "ordered_modbus_tcp" title = "Order-specific Modbus TCP interface" available = false transport = "tcp" hardware = "built_in" port = "Customer Ethernet handoff shown in the drive order drawings" connector = "Not standardized in Benshaw 890048-01-00; confirm the supplied cabinet or gateway" adapter = "Computer Ethernet interface or site Ethernet switch" cable = "Cable type must follow the supplied interface and order drawings" parts = [] steps = ["Lock out and isolate the equipment before fitting an option module or opening the enclosure.", "Install and fully seat the specified communications module according to its installation instructions.", "Connect the computer or switch with the specified Ethernet cable; keep it separated from motor and mains wiring.", "Restore control power, assign an IP address on the same subnet, discover the device, and verify read-only data before enabling network control."] setup = ["Match FUNCTION-32 control=2 with FUNCTION-34 speed=17 for Local mode, or FUNCTION-33 control=2 with FUNCTION-35 speed=17 for Remote mode; configure FUNCTION-36..44 as required."] warnings = ["An Ethernet link does not make remote motor control safe. Verify the drive-side communication-loss action and the independent hardwired stop circuit before commanding run.", "Medium-voltage equipment must be accessed only by qualified personnel under the site arc-flash and lockout procedure.", "Do not assume an RJ45 pinout or cabinet location from another M2L installation; obtain the order drawings."] source = "Benshaw 890048-01-00 M2L 3000 User Manual, printed pp. 11-12 (Modbus TCP via built-in components or industrial gateways), pp. 59-60/81-82 (sources and watchdog), pp. 129-131 (map)" [monitor] output_frequency = { address = 399, scale = 0.01, signed = true, unit = "Hz" } motor_current = { address = 400, unit = "A" } motor_voltage = { address = 401, unit = "V" } dc_voltage = { address = 402, unit = "V" } motor_power = { address = 403, signed = true, unit = "kW" } motor_apparent_power = { address = 404, unit = "kVA" } motor_torque = { address = 405, scale = 0.001, signed = true, unit = "pu" } dc_current = { address = 406, unit = "A" } dc_power = { address = 407, signed = true, unit = "kW" } motor_power_factor = { address = 408, scale = 0.001, signed = true } motor_overload = { address = 409, scale = 0.01, unit = "%" } drive_overload = { address = 410, scale = 0.01, unit = "%" } peak_drive_temperature = { address = 425, signed = true, unit = "degC" } average_drive_temperature = { address = 426, signed = true, unit = "degC" } lockouts_1 = { address = 4827, bits = { 0 = "GPP_INITIALIZING", 1 = "DSP_INITIALIZING", 2 = "CAPACITOR_IMBALANCE", 3 = "REMOTE_IO_COMM_LOSS", 4 = "CONVERTER_OVERTEMPERATURE", 5 = "MOTOR_THERMAL_OVERLOAD", 6 = "INVERTER_THERMAL_OVERLOAD", 7 = "CARD_CAGE_POWER", 8 = "RUN_DISABLE", 9 = "BACKSPIN", 10 = "CELL_IGBT_TEMPERATURE", 11 = "CELL_BOARD_TEMPERATURE", 12 = "DRIVE_DISABLE", 13 = "INTERLOCK", 14 = "INPUT_PHASE", 15 = "TRANSFORMER" } } warnings = { address = 4829, bits = { 0 = "CONVERTER_TEMPERATURE", 1 = "CELL_IGBT_TEMPERATURE", 2 = "CELL_BOARD_TEMPERATURE", 3 = "TRANSFORMER" } } control_source = { address = 4830 } speed_reference_source = { address = 4831 } status_word = { address = 5001, bits = { 0 = "FAULTED", 1 = "WARNING", 2 = "RUNNING_FWD", 3 = "RUNNING_REV", 4 = "LOCKED_OUT", 5 = "READY", 6 = "CONTROL_LIMITED" } } lockouts_2 = { address = 4832, bits = { 0 = "HMI_COMM_LOSS", 1 = "FIELDBUS_COMM_LOSS" } } # Appendix A: 45000 bit0 run forward, bit1 run reverse, bit2 fault reset; # 45001 is Hz x100. Clearing both run bits is stop. [control] command_register = 4999 speed_register = 5000 speed_scale = 0.01 speed_unit = "Hz" max_ref = 300.0 step_delay = 0.05 stop = [0x0000] run_fwd = [0x0001] run_rev = [0x0002] reset = [0x0000, 0x0004, 0x0000] [control.watchdog] interval_ms = 1000 fault = "Fault 253 fieldbus communication loss after 5 s; optional fault 254 master-IP loss requires FUNCTION-40 and -41..44" # Direction uses two status bits, so no single bidirectional [running_check]. [faults] register = 4826 # 44827 VFD Fault Code # No [rating]: the public map exposes configured motor values but no immutable # drive-frame identity. No [parameters]: broad ranges include source/IP/watchdog.