# Property of PMA Electrical Solutions, LLC. # # AutomationDirect GS1 (GS1-10Px 120 V 1ph, GS1-20Px / GS1-21P0 230 V 1ph/3ph, # GS1-22P0 230 V 3ph, 0.25-2 hp), basic V/Hz drive. It DOES have built-in # Modbus RTU on its RJ-12 RS-485 comm port — the port is RS-485 only, with no # RS-232 mode (an external converter is required for an RS-232 master). # Discontinued but common in installed plant. # # Source: "GS1 Series AC Drives User Manual", 3rd Ed., Rev. B, published as # per-chapter PDFs under https://cdn.automationdirect.com/static/manuals/gs1m/ # ch5.pdf (72 pp) — GS1 Modbus Communications # pp. 5-2 communications parameters P9.00-P9.42 and defaults # pp. 5-3 to 5-6 parameter memory addresses (hex / Modbus decimal / octal) # pp. 5-7 to 5-8 status addresses h2100-h2110, error codes, status bits # p. 5-9 RS-485 comm port pinout, PLC connection table # p. 5-17 keypad-STOP override warning (see below) # ch4.pdf (40 pp) — AC Drive Parameters # p. 4-16 P3.00 source of operation command # p. 4-22 P4.00 source of frequency command # p. 4-36 P6.31-P6.36 fault-record code list # # ADDRESSING (proved on p. 5-3: P0.00 -> hex 0000, "Modbus Decimal" 40001). # 0-based protocol address = (parameter group << 8) | parameter index # P9.27 Serial Comm RUN Command -> 0x091B = 2331 # The manual's "Modbus Decimal" column is 40001 + that value (1-based 4xxxx) # and its "Octal" column is the DirectLOGIC V-memory form. Neither is a # protocol address. Everything below is the hex/0-based form. # # Drive-side setup: P3.00 = 3 (RS-485 interface, keypad STOP enabled) or 4 # (keypad STOP disabled) points the RUN command at the serial port; P4.00 = 5 # points the frequency command at it. Without both the drive ACKs the writes # and ignores them. P9.00 node address, P9.01 baud (0/1/2 = 4800/9600/19200 — # this drive has no 38400 setting), P9.02 protocol. # # P9.02 FACTORY DEFAULT IS 0 = MODBUS **ASCII** 7N2, which this tool does not # speak. Set P9.02 = 3 (RTU 8N2, matched below), 4 (RTU 8E1) or 5 (RTU 8O1). # # NO CONTROL-WORD REGISTER ON THIS GENERATION. The GS1 has no packed command # word: run, direction, external fault, reset and jog are five separate # parameters, P9.27-P9.31. # # NO [control.watchdog] AND NO KEEPALIVE, DELIBERATELY. The manual names no # comm-loss fault code, and at factory defaults P9.04 Time Out Detection = 0 # (disabled) with P9.03 Transmission Fault Treatment = 0 (display fault and # CONTINUE OPERATING): SILENCE LEAVES THE MOTOR RUNNING. A drive-side backstop # needs P9.04 = 1, a P9.05 duration, and P9.03 = 1 (ramp) or 2 (coast) set on # the unit. A keepalive is also actively unsafe here — p. 5-17 warns in terms: # with P3.00 = 3 a re-written RUN command overrides an operator's keypad STOP, # which is exactly what a periodic refresh of the run register would do. name = "AutomationDirect GS1" vendor = "AutomationDirect" device_type = "vfd" verified = false probe_register = 0x2100 # Status Monitor 1, readable whenever the port is alive [connection] summary = "The GS1 has built-in two-wire Modbus RTU and can also be reached over Modbus TCP through the supported external GS-EDRV gateway." warnings = [] [[connection.methods]] id = "rj12_rs485" title = "Built-in RJ12 Modbus RTU" transport = "serial" hardware = "built_in" port = "GS1 RJ12 Serial Comm Port" connector = "RJ12 6P4C wired as RS-485" adapter = "Isolated USB-to-RS-485 adapter, 2-wire half-duplex" cable = "Belden 9842 or equivalent shielded twisted-pair, terminated to RJ12 6P4C" parts = ["Isolated two-wire RS-485 adapter", "Belden 9842 or equivalent shielded twisted-pair, terminated to RJ12 6P4C", "Field-terminated modular plug or documented breakout adapter"] 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 P3.00=3 or 4, P4.00=5, P9.00=node, P9.01=baud, and P9.02=3 for RTU 8N2; configure P9.03-P9.05 for a safe communication-loss action."] warnings = ["A modular communications jack is not automatically Ethernet. Never connect it to a LAN switch unless this guide explicitly identifies a Modbus TCP method.", "RS-485 A/B naming is not consistent between manufacturers. Follow the + and - mapping shown here.", "Fit termination resistors at both physical ends on long runs.", "The factory protocol is ASCII 7N2, not RTU."] source = "AutomationDirect GS1 User Manual, 3rd Ed. Rev B, chapter 5 pp. 5-9 to 5-10 (RJ12 pinout and RS-485 wiring), pp. 5-2 and 5-17 (setup/safety), GS-EDRV section pp. 5-18 onward" [[connection.methods.wiring]] adapter = "Adapter D+ / +" device = "RJ12 pin 4 (SG+)" signal = "RS-485 data positive" required = true [[connection.methods.wiring]] adapter = "Adapter D- / -" device = "RJ12 pin 3 (SG-)" signal = "RS-485 data negative" required = true [[connection.methods.wiring]] adapter = "Adapter signal ground / shield" device = "RJ12 pin 2 (GND)" signal = "Signal reference or shield drain" required = false [[connection.methods]] id = "gs_edrv_gateway" title = "GS-EDRV / GS-EDRV100 Modbus TCP gateway" transport = "tcp" hardware = "gateway" port = "Ethernet port on DIN-rail GS-EDRV gateway; serial side connects to the drive communications jack" connector = "RJ45 Ethernet on network side; RJ12 serial connection on drive side" adapter = "Computer Ethernet interface or Ethernet switch" cable = "Ethernet patch cable plus the AutomationDirect drive-interface cable for the selected GS model" parts = ["GS-EDRV or GS-EDRV100 DIN-rail gateway", "External 24 VDC power supply", "Model-correct drive-interface cable", "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 = ["Configure the GS1 for the same serial settings and source parameters as the direct RTU method.", "Power the GS-EDRV from a separate 10-33 VDC supply (GS-EDRV100: 10-36 VDC) and configure its IP address and serial settings to match the drive."] 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.", "The gateway serial cable is model-specific. Do not plug a normal Ethernet patch cable from a LAN directly into the drive modular jack."] source = "AutomationDirect GS1 User Manual, 3rd Ed. Rev B, chapter 5 pp. 5-9 to 5-10 (RJ12 pinout and RS-485 wiring), pp. 5-2 and 5-17 (setup/safety), GS-EDRV section pp. 5-18 onward" # P9.01 default 1 = 9600 baud; 8N2 corresponds to P9.02 = 3. [serial] baudrate = 9600 parity = "N" stopbits = 2 # Status addresses, manual pp. 5-7 to 5-8. Read-only. [monitor] # Bits 1-0 are a two-bit state field, not flags: 00 stopped, 01 run-to-stop # transition, 10 standby, 11 running. Bits 4-3 are likewise a two-bit direction # field: 00 FWD, 01 REV->FWD, 10 FWD->REV, 11 REV. The source/lock bits sit at # 5-8 on the GS1 — the GS3 puts the same information at 8-11, so these two # status words are NOT interchangeable. status_word = { address = 0x2101, bits = { 0 = "STATE_LSB", 1 = "STATE_MSB", 2 = "JOG", 3 = "DIR_LSB", 4 = "DIR_MSB", 5 = "FREQ_SRC_SERIAL", 6 = "FREQ_SRC_ANALOG", 7 = "CMD_SRC_SERIAL", 8 = "PARAMS_LOCKED" } } frequency_command = { address = 0x2102, scale = 0.1, unit = "Hz" } # (xxx.x) output_frequency = { address = 0x2103, scale = 0.1, unit = "Hz" } # (xxx.x) motor_current = { address = 0x2104, scale = 0.1, unit = "A" } # (xxx.x) dc_bus_voltage = { address = 0x2105, scale = 0.1, unit = "V" } # (xxx.x) output_voltage = { address = 0x2106, scale = 0.1, unit = "V" } # (xxx.x), phase-phase RMS motor_speed = { address = 0x2107, unit = "RPM" } motor_load = { address = 0x210B, unit = "%" } # output current / drive rated current firmware_version = { address = 0x2110 } # The GS1 status space has no power-factor-angle and no PID words; the GS2 and # GS3 do. Do not copy those addresses in. # Manual pp. 5-2 and 5-6. Five discrete command parameters, no packed word. [control] command_register = 0x091B # P9.27 Serial Comm RUN Command: 0 Stop, 1 Run stop = [0] run_fwd = [1] # run_rev is deliberately absent. Direction is NOT a bit of the run register # and NOT the sign of the reference: it is its own parameter, P9.28 Serial Comm # Direction Command at 0x091C (0 forward, 1 reverse). This profile commands # forward only rather than pretend a reverse sequence exists on 0x091B. # # Reset is P9.30 at 0x091E, a DIFFERENT register from run, so the reset value # cannot be a run command. Written 1 (Fault Reset) then back to 0 (No action) # so the parameter does not stay latched. reset_register = 0x091E reset = [1, 0] speed_register = 0x091A # P9.26 Serial Comm Speed Reference speed_scale = 0.1 # 0.0-400.0 Hz in 0.1 Hz counts; 60.0 Hz -> 600 speed_unit = "Hz" max_ref = 400.0 step_delay = 0.05 [running_check] register = 0x2101 # Bit 0 is set for 01 (run-to-stop transition, motor still turning) and 11 # (running). Bit 1 alone would also match standby, where the drive is not # running. bit = 0 # Active fault code in Status Monitor 1; stored history in P6.31-P6.36. [faults] register = 0x2100 history = [0x061F, 0x0620, 0x0621, 0x0622, 0x0623, 0x0624] # Manual p. 5-7 (Status Monitor 1). 15 and 17 are absent from the GS1 list — # this drive has no ground-fault/fuse (GFF) or 3-phase input loss (PHL) code, # unlike the GS2 and GS3. The P6.31-P6.36 record list on p. 4-36 additionally # omits 16. Codes are NOT shared across the GS family; do not extend this table # from another drive's manual. [faults.codes] 0 = "No fault occurred" 1 = "Over-current (oc)" 2 = "Over-voltage (ov)" 3 = "Overheat (oH)" 4 = "Overload (oL)" 5 = "Overload 1 (oL1)" 6 = "Overload 2 (oL2)" 7 = "External Fault (EF)" 8 = "CPU Failure 1 (cF1)" 9 = "CPU Failure 2 (cF2)" 10 = "CPU Failure 3 (cF3)" 11 = "Hardware Protection Failure (HPF)" 12 = "Over-current during accel (ocA)" 13 = "Over-current during decel (ocd)" 14 = "Over-current during steady state (ocn)" 16 = "Low Voltage (Lv)" 18 = "External Base-Block (bb)" 19 = "Auto Adjust accel/decel Failure (cFA)" 20 = "Software Protection Code (codE)" [rating] register = 0x092A # P9.42 Manufacturer Model Information, 0-5 = voltage/phase/hp label = "GS1 model code (P9.42)" # Cloneable configuration, manual pp. 5-3 to 5-6. Group 9 is EXCLUDED on # purpose: it holds the node address, baud rate and protocol, and restoring it # onto a replacement drive takes that drive off the bus. P6.31-P6.36 (fault # history) and the h2xxx status space are excluded as read-only. There is no # group 7 — the GS1 has no PID. Sparse gaps inside these ranges are expected # and are reported as unreadable by the dump. [parameters] ranges = [ [0x0000, 0x0004], # P0.00-P0.04 motor [0x0100, 0x0116], # P1.00-P1.22 ramp [0x0200, 0x0208], # P2.00-P2.08 volts/hertz [0x0300, 0x0311], # P3.00-P3.17 digital [0x0400, 0x0405], # P4.00-P4.05 analog [0x0500, 0x0503], # P5.00-P5.03 presets [0x0600, 0x061E], # P6.00-P6.30 protection (stops before the fault records) [0x0800, 0x0801], # P8.00-P8.01 display ]