# Property of PMA Electrical Solutions, LLC. # # Benshaw S / SW Series low-voltage VFD. Primary source: Benshaw publication # 890049-07-00, "S/SW Series VFD Instruction Manual" (393 PDF pp.; page # footers identify revision 890049-06-00): RS-485 setup printed pp. 227-240, # common area pp. 241-243, and S/SW expansion area pp. 244-251. # # The worked example sends manual address 0h1103 as PDU address 0x1102, so: # protocol address = manual hexadecimal communication address - 1. The manual # independently documents both S and SW here; this profile claims no SS drive. # Set DRV06=3 Int485 and the frequency source=6 Int485. Pr12 is printed with # 1 Free-Run as its setting in this edition and Pr13 is 1.0 s; verify both on # the actual drive before relying on the watchdog. name = "Benshaw S / SW" vendor = "Benshaw" device_type = "vfd" verified = false probe_register = 0x02FF # manual 0h0300, model code 0x0006 [connection] summary = "Use the built-in Modbus RTU control terminals; no option card is required." warnings = [] [[connection.methods]] id = "built_in_rs485" title = "Built-in RS-485 terminals" transport = "serial" hardware = "built_in" port = "Control terminals S+, S-, and SG" connector = "Three control-terminal positions" adapter = "Isolated USB-to-RS-485 adapter, 2-wire half-duplex" cable = "18 AWG shielded twisted-pair RS-485 cable" parts = ["Isolated two-wire RS-485 adapter", "18 AWG shielded twisted-pair RS-485 cable"] 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.", "Land the positive and negative data conductors exactly as shown; connect the cable shield or signal common only where the method identifies it.", "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 drive from its keypad, then verify identity and read-only monitor data before enabling remote control."] setup = ["Set drv/DRV06=3 Int485, Frq/DRV07=6 Int485, and verify Pr12/Pr13 communication-loss settings."] warnings = ["RS-485 A/B naming is not consistent between manufacturers. Follow the + and - signal mapping in this guide, not the letter printed on an unfamiliar adapter.", "Do not use protective earth as the data return unless the vendor drawing explicitly calls for it.", "Keep the shielded communication line separate from power wiring."] source = "Benshaw 890049-07-00 S/SW Instruction Manual, printed pp. 227-240 (S+/S-/SG connection and setup)" [[connection.methods.wiring]] adapter = "Adapter D+ / +" device = "S+" signal = "RS-485 data positive" required = true [[connection.methods.wiring]] adapter = "Adapter D- / -" device = "S-" signal = "RS-485 data negative" required = true [[connection.methods.wiring]] adapter = "Adapter signal ground / shield" device = "SG" signal = "Signal reference or shield drain" required = false [serial] baudrate = 9600 parity = "N" stopbits = 1 [monitor] status_word = { address = 0x000D, bits = { 0 = "STOPPED", 1 = "RUNNING_FWD", 2 = "RUNNING_REV", 3 = "FAULT_TRIP", 4 = "ACCELERATING", 5 = "DECELERATING", 6 = "SPEED_REACHED", 7 = "DC_BRAKING", 8 = "STOPPING", 9 = "JOG_MODE", 10 = "BRAKE_RELEASE", 11 = "FWD_CMD", 12 = "REV_CMD", 13 = "CMD_SOURCE_IS_COMMS", 14 = "FREQ_SOURCE_IS_COMMS" } } motor_current = { address = 0x030F, scale = 0.1, unit = "A" } output_frequency = { address = 0x0310, scale = 0.01, unit = "Hz" } output_rpm = { address = 0x0311, unit = "rpm" } motor_speed_feedback = { address = 0x0312, signed = true, unit = "rpm" } output_voltage = { address = 0x0313, unit = "V" } dc_voltage = { address = 0x0314, unit = "V" } output_power = { address = 0x0315, scale = 0.1, unit = "kW" } output_torque = { address = 0x0316, scale = 0.1, unit = "%" } module_temperature = { address = 0x032C, unit = "degC" } latch_trip_2 = { address = 0x0330, bits = { 2 = "PTC_TRIP", 3 = "FAN_TRIP", 5 = "PARAMETER_WRITE_ERROR", 6 = "PRE_PID_FAIL", 7 = "BAD_CONTACT_IO_BOARD", 8 = "EXTERNAL_BRAKE_TRIP", 9 = "NO_MOTOR", 10 = "BAD_OPTION_CARD", 12 = "SAFETY_A", 13 = "SAFETY_B" } } level_trip = { address = 0x0331, bits = { 0 = "BX", 1 = "LOW_VOLTAGE", 2 = "LOST_COMMAND", 3 = "LOST_KEYPAD" } } hardware_trip = { address = 0x0332, bits = { 0 = "ADC_ERROR", 1 = "EEPROM_ERROR", 2 = "WATCHDOG_1_ERROR", 3 = "WATCHDOG_2_ERROR", 5 = "QUEUE_FULL" } } warnings = { address = 0x0333, bits = { 0 = "OVERLOAD", 1 = "UNDERLOAD", 2 = "DRIVE_OVERLOAD", 3 = "LOST_COMMAND", 4 = "FAN_RUNNING", 5 = "DB", 6 = "ENCODER_INSTALL", 7 = "ENCODER_DISCONNECT", 8 = "KEYPAD_LOST", 9 = "AUTO_TUNING_FAILED" } } [control] command_register = 0x0381 speed_register = 0x037F speed_scale = 0.01 speed_unit = "Hz" max_ref = 400.0 step_delay = 0.05 stop = [0x0000] run_fwd = [0x0003] run_rev = [0x0001] reset = [0x0004, 0x0000] [control.watchdog] backstop_requires_setup = true interval_ms = 500 fault = "Lost Command Trip (Pr12 Lost Cmd Mode / Pr13 Lost Cmd Time)" [faults] register = 0x032F bitfield = true bits = { 0 = "OVERLOAD_TRIP", 1 = "UNDERLOAD_TRIP", 2 = "DRIVE_OVERLOAD_TRIP", 3 = "E_THERMAL_TRIP", 4 = "GROUND_FAULT_TRIP", 5 = "OUTPUT_OPEN_PHASE", 6 = "INPUT_OPEN_PHASE", 9 = "NTC_TRIP", 10 = "OVERCURRENT_TRIP", 11 = "OVERVOLTAGE_TRIP", 12 = "EXTERNAL_TRIP", 13 = "ARM_SHORT", 14 = "OVERHEAT_TRIP", 15 = "FUSE_OPEN_TRIP" } [rating] register = 0x0300 label = "drive capacity code" # No [running_check]: forward and reverse are distinct status bits.