# Property of PMA Electrical Solutions, LLC. # # Benshaw EMX4i low-voltage soft starter using the optional Modbus RTU or # Modbus TCP communications card. The card manuals explicitly cover EMX4e and # EMX4i. Benshaw's Low Voltage Products Catalog (2025), printed pp. 26 and 33, # explicitly identifies the packaged MX4PB and RX4E starters as using EMX4i # technology/chassis, so this profile covers those packages when the applicable # Benshaw Modbus card is installed. It claims no other packaged controller. # # Sources (Benshaw primary documentation): # 710-21970-00B, "Modbus RTU Communications option for EMX4e/EMX4i soft # starters, User Guide" (2020), printed pp. 2-13: # pp. 2-3 setup, network control and timeout behavior # pp. 4-10 standard/legacy maps and RTU examples # pp. 11-12 trip codes; p. 13 communications specifications # 710-21971-00A, equivalent Modbus TCP card guide, printed pp. 7-14: # same legacy holding-register map; explicit legacy-mode initialization # 710-21919-00D, "EMX4i User Manual", printed pp. 66 and 138: # Command Source = Network; RTU defaults 9600, no parity, timeout Off # Benshaw Low Voltage Products Catalog (2025), pp. 26, 32-33: MX4PB/RX4E # use an EMX4i chassis and list EMX4i Modbus RTU/TCP card options. # # A distinct EMX4i file is intentional even though the communications-card map # is shared: EMX4e and EMX4i are separately marketed families and operators # must select the actual installed starter/controller name. # # MAP MODE: vfd-core reads holding registers (FC03), while the card's Standard # Mode puts status in the FC04-only 3xxxx space. This profile uses documented # Legacy Mode, which mirrors status at 4xxxx and commands through 40002. On the # TCP card, initialize Legacy Mode after changing modes by cycling control power # or writing zero to 40001 (TCP guide p. 10). # # ADDRESSING: 0-based protocol address = Benshaw 4xxxx reference - 40001. # Thus 40002 -> 1, 40604 -> 603, and 40619 -> 618. # # DRIVE-SIDE SETUP: parameter 1A Command Source = Network. A closed # reset/enable input is required. The transports have different # communication-loss settings: # * RTU: 12A-12D set address, baud, parity and timeout. 12D defaults Off; # set it to at least 10 s and power-cycle after changes. # * TCP: 6M Network Communications (user manual p. 124) controls the loss # response and defaults to Soft Trip and Log. Parameter 12D does not apply. # # Starter state is an enumeration, not a fixed running bit, so [running_check] # is omitted. A soft starter has no speed reference. The command register has # no reverse command, so run_rev is omitted. name = "Benshaw EMX4i / MX4PB / RX4E" vendor = "Benshaw" device_type = "soft_starter" verified = false probe_register = 603 [connection] summary = "EMX4e/EMX4i do not have embedded Modbus. Select and install either the vendor RTU card or the vendor TCP card." warnings = ["A closed reset/enable input is required; if no reset switch is used, follow the manual instruction for terminals 10 and 11."] [[connection.methods]] id = "modbus_rtu_card" title = "Optional Modbus RTU expansion card" transport = "serial" hardware = "option" port = "Five-way plug on the EMX4 Modbus RTU expansion card" connector = "Removable five-position plug" adapter = "Isolated USB-to-RS-485 adapter, 2-wire half-duplex" cable = "Shielded twisted-pair RS-485 cable, 120 ohm nominal impedance" parts = ["Isolated two-wire RS-485 adapter", "Shielded twisted-pair RS-485 cable, 120 ohm nominal impedance", "EMX4 Modbus RTU communications option card"] 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.", "Match the adapter's Data A conductor to card Data A and its Data B conductor to card Data B; use the adapter manual because A/B polarity naming is not standardized.", "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 starter from its keypad, then verify identity and read-only monitor data before enabling remote control."] setup = ["Set 1A Command Source=Network; for RTU set 12A address, 12B baud, 12C parity, and 12D timeout, then cycle control power. For TCP configure 12H-12U and the network-loss response."] warnings = ["Benshaw labels these conductors only Data A and Data B; the source does not assign + or - polarity. Match like-for-like labels using the adapter documentation.", "Do not use protective earth as the data return unless the vendor drawing explicitly calls for it.", "Pins 1/2 are internally duplicated Data A and pins 4/5 are internally duplicated Data B for daisy chaining; do not treat them as separate buses.", "Isolate the soft starter from mains voltage before removing the expansion-port cover."] source = "Benshaw 710-21970-00B Modbus RTU Card guide, printed pp. 1-3 (installation, five-way pinout, setup); 710-21971-00A Modbus TCP Card guide, printed pp. 1-4 (installation, Ethernet and IP setup)" [[connection.methods.wiring]] adapter = "Adapter Data B (per adapter manual)" device = "Card pins 4 and 5 (Data B)" signal = "RS-485 Data B; polarity is not assigned by Benshaw" required = true [[connection.methods.wiring]] adapter = "Adapter Data A (per adapter manual)" device = "Card pins 1 and 2 (Data A)" signal = "RS-485 Data A; polarity is not assigned by Benshaw" required = true [[connection.methods.wiring]] adapter = "Adapter signal ground / shield" device = "Card pin 3 (Common)" signal = "Signal reference or shield drain" required = false [[connection.methods]] id = "modbus_tcp_card" title = "Optional Modbus TCP expansion card" transport = "tcp" hardware = "option" port = "Either Ethernet port on the EMX4 Modbus TCP card" connector = "Two switched RJ45 Ethernet ports" adapter = "Computer Ethernet interface or Ethernet switch" cable = "Category 5, 5e, 6, or 6e Ethernet patch cable" parts = ["EMX4 Modbus TCP communications option card", "Category-rated Ethernet patch cable"] 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 = ["Set 1A Command Source=Network; for RTU set 12A address, 12B baud, 12C parity, and 12D timeout, then cycle control power. For TCP configure 12H-12U and the network-loss response.", "A new card defaults to 192.168.0.2/24; configure the computer on the same subnet, then store permanent addressing through starter parameters 12H-12U."] 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.", "Keep Ethernet cable at least 200 mm from motor and mains cables; cross them at 90 degrees when unavoidable.", "Isolate mains voltage before fitting or removing the card."] source = "Benshaw 710-21970-00B Modbus RTU Card guide, printed pp. 1-3 (installation, five-way pinout, setup); 710-21971-00A Modbus TCP Card guide, printed pp. 1-4 (installation, Ethernet and IP setup)" [serial] baudrate = 9600 parity = "N" stopbits = 2 [monitor] starter_state = { address = 603 } # 0064B and smaller report 10x actual current; larger models report whole A. # Keep raw counts because the profile schema cannot select scale by model ID. motor_current_raw = { address = 604 } motor_current_pct = { address = 605, unit = "% FLC" } motor_thermal = { address = 606, unit = "%" } power_raw = { address = 607 } power_factor = { address = 608, scale = 0.01 } line_voltage = { address = 609, unit = "V" } l1_current_raw = { address = 610 } l2_current_raw = { address = 611 } l3_current_raw = { address = 612 } l1_voltage = { address = 613, unit = "V" } l2_voltage = { address = 614, unit = "V" } l3_voltage = { address = 615, unit = "V" } input_status = { address = 617, bits = { 0 = "StartStop", 2 = "Reset", 3 = "InputA", 4 = "InputB" } } [control] command_register = 1 step_delay = 0.05 stop = [2] run_fwd = [1] # Finish on Stop because the core keepalive re-sends the last command. Leaving # 3 latched would issue Reset on every keepalive cycle. reset = [2, 3, 2] [control.watchdog] backstop_requires_setup = true interval_ms = 2500 fault = "RTU: 12D timeout defaults Off; TCP: 6M network loss defaults Soft Trip and Log" [faults] register = 618 [faults.codes] 0 = "No trip (Modbus TCP card)" 1 = "Excess start time" 2 = "Motor overload" 3 = "Motor thermistor" 4 = "Current imbalance" 5 = "Frequency" 6 = "Phase sequence" 7 = "Overcurrent (RTU) / Instantaneous overcurrent (TCP)" 8 = "Power loss" 9 = "Undercurrent" 10 = "Heatsink overtemperature" 11 = "Motor connection" 12 = "Input A trip" 13 = "FLC too high" 14 = "Unsupported option in inside-delta mode" 15 = "Communications card fault" 16 = "Network communication (RTU) / Forced network trip (TCP)" 17 = "Internal fault (Modbus TCP card)" 18 = "Overvoltage" 19 = "Undervoltage" 23 = "Parameter out of range" 24 = "Input B trip" 26 = "L1 phase loss" 27 = "L2 phase loss" 28 = "L3 phase loss" 29 = "L1-T1 shorted" 30 = "L2-T2 shorted" 31 = "L3-T3 shorted" 33 = "Time-overcurrent (bypass overload)" 34 = "SCR overtemperature" 35 = "Battery / clock" 36 = "Thermistor circuit" 47 = "Overpower" 48 = "Underpower" 56 = "Keypad disconnected" 57 = "Zero speed detect" 58 = "SCR Itsm" 59 = "Instantaneous overcurrent" 60 = "Rating capacity" 70 = "Current read error L1" 71 = "Current read error L2" 72 = "Current read error L3" 73 = "Remove mains volts (Modbus TCP card)" 74 = "Motor connection T1" 75 = "Motor connection T2" 76 = "Motor connection T3" 77 = "Firing fail P1" 78 = "Firing fail P2" 79 = "Firing fail P3" 80 = "VZC fail P1" 81 = "VZC fail P2" 82 = "VZC fail P3" 83 = "Low control volts" 84 = "Internal fault 84" 85 = "Internal fault 85" 86 = "Internal fault 86" 87 = "Internal fault 87" 88 = "Internal fault 88" 89 = "Internal fault 89" 90 = "Internal fault 90" 91 = "Internal fault 91" 92 = "Internal fault 92" 93 = "Internal fault 93" 94 = "Internal fault 94" 95 = "Internal fault 95" 96 = "Internal fault 96" 255 = "No trip (Modbus RTU card)" # No [parameters] and no [rating], for the same reasons documented in the # EMX4e profile: the published card guide provides neither a stable complete # parameter map nor a model-ID-to-frame-rating table safe for clone/restore.