# Property of PMA Electrical Solutions, LLC. # # Yaskawa GA800 (catalog GA80Uxxxxxxx), EMBEDDED MEMOBUS/Modbus RTU on the # built-in RS-485 port, terminal block TB4 (D+, D-, AC shield). No option card # is assumed or required. Termination is DIP switch S2 on the terminal block. # # Source: Yaskawa SIEPC71061737G "GA800 Drive AC Drive for Industrial # Applications Technical Reference" (1132 pp). # pp. 348-352 comm specs, drive-side setup, function codes # pp. 359-363 Table 6.15 command data (control registers) # pp. 364-378 Table 6.16 monitor data # pp. 378-381 Table 6.18 fault trace / fault history codes # pp. 693-698 U monitor register numbers and units # pp. 996-999 H5-xx communication parameters and defaults # Claimed for the GA800 ONLY. The 200 V / 400 V classes share this document; # the 600 V class is a SEPARATE manual (SIEPC7106170V) and is NOT claimed here. # Nothing here was carried over from yaskawa_ga500.toml. # # Drive-side setup (the drive ACKs writes and ignores them otherwise) — p. 350 # Table 6.3, pp. 996-997: # b1-01 Frequency Reference Selection 1 = 2 [Memobus/Modbus Communications] # b1-02 Run Command Selection 1 = 2 [Memobus/Modbus Communications] # H5-01 node address (default 1Fh = 31), H5-02 baud, H5-03 parity. # H5-xx take effect on power cycle, or immediately with H5-20 = 1. # H5-12 Run Command Method Selection MUST be 0 [FWD/Stop, REV/Stop] for the # run_fwd / run_rev words below. H5-12 = 1 redefines bit 1 as a direction # bit, which would make "reverse" mean "stop-and-face-backwards". # # ADDRESSING: the manual prints MEMOBUS register numbers in hex and they ARE # the 0-based Modbus protocol address — no offset, no 4xxxx conversion. # Table 6.15 "0001 (Hex.)" -> protocol address 0x0001, written as 0x0001. # Parameters have their own printed MEMOBUS address (b1-01 is 0x0180, H5-01 is # 0x0425); it is not computable from the parameter number. # # FUNCTION CODES (p. 352, Table 6.5): the drive supports ONLY 03, 08, 10, 5A # and 67. THERE IS NO FC06. A single-register write must go out as FC16 # (0x10, write multiple, quantity 1) or the drive answers error code 01 # [Function Code Error]. Reads are capped at 16 registers per FC03 request. # # SCALING IS NOT PANEL DECIMALS and several points are CONFIG- or # MODEL-dependent; each one is called out at its line below. name = "Yaskawa GA800" vendor = "Yaskawa" device_type = "vfd" verified = false probe_register = 0x0020 # Drive Status 1, readable whenever the port is alive [connection] summary = "The GA800 has embedded two-wire MEMOBUS/Modbus RTU on terminal block TB4 and supports optional Modbus TCP/IP through a Yaskawa SI-EM3 card." warnings = ["The GA800 technical reference also lists the JOHB-SMP3 multifunction network option as Modbus TCP/IP-capable, but that option's manual explicitly applies PLC/base-1 address translation: a request for drive register 0020H must be sent as 001FH. This application's profiles use 0-based protocol addresses directly, so JOHB-SMP3 is deliberately not offered as a selectable method until transport-level address translation is supported."] [[connection.methods]] id = "tb4_memobus" title = "Built-in TB4 MEMOBUS/Modbus" transport = "serial" hardware = "built_in" port = "Terminal block TB4" connector = "TB4 screw terminals D+, D-, and AC" 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"] 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 b1-01=2 and b1-02=2, H5-01 node, H5-02 baud, H5-03 parity, and H5-12=0; cycle power or use H5-20=1 after H5 changes."] 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.", "Connect the cable shield to AC as shown; AC is the serial shield ground, not an extra data conductor.", "Set DIP switch S2 ON only for the last drive on the RS-485 trunk."] source = "Yaskawa SIEPC71061737G GA800 Technical Reference, printed pp. 128 and 348-350 (TB4 D+/D-/AC, two-wire RS-485, termination and setup), pp. 996-999 (H5 defaults)" [[connection.methods.wiring]] adapter = "Adapter D+ / +" device = "TB4 D+" signal = "RS-485 data positive" required = true [[connection.methods.wiring]] adapter = "Adapter D- / -" device = "TB4 D-" signal = "RS-485 data negative" required = true [[connection.methods.wiring]] adapter = "Adapter signal ground / shield" device = "TB4 AC (shield ground)" signal = "Signal reference or shield drain" required = false [[connection.methods]] id = "si_em3_modbus_tcp" title = "SI-EM3 Modbus TCP/IP option" transport = "tcp" hardware = "option" port = "SI-EM3 communication connector CN1, RJ45 port 1 or port 2" connector = "Dual RJ45 female Ethernet connectors" adapter = "10/100BASE-T Ethernet interface or industrial Ethernet switch" cable = "Shielded Cat5e Ethernet patch cable" parts = ["Yaskawa SI-EM3 Modbus TCP/IP option, option firmware PRG 8104 or later", "Shielded Cat5e Ethernet cable"] steps = ["Confirm the drive nameplate software is PRG 9010 or later and the SI-EM3 option software is PRG 8104 or later.", "Lock out line and control power, wait the drive's specified discharge time, verify the DC bus is de-energized, and follow Yaskawa's ESD precautions.", "Install the SI-EM3 only in drive control-board connector CN5-A and secure it as Yaskawa specifies. The GA800 installation does not use the SI-EM3 package ground wire.", "Connect the shielded Cat5e cable to SI-EM3 CN1 port 1 or port 2 and to the control network.", "Restore control power with the motor area clear, configure a unique network address, and verify the MS/NS and Link/Act LEDs before read-only polling.", "Verify identity and monitor registers before setting b1-01/b1-02 for remote control."] setup = ["Set F7-13=0 and F7-01 through F7-12 for a static IP address, subnet mask, and gateway, or select F7-13=1 for BOOTP or 2 for DHCP. Power-cycle after address changes, or set F6-15=1 to reload option parameters.", "For remote frequency and run control through the option, set b1-01=3 and b1-02=3. Review F6-01 and F7-16 so loss of the Ethernet control connection has the intended machine-safe result."] warnings = ["Install a communication option only in CN5-A; CN5-B and CN5-C are not valid SI-EM3 locations.", "Use either RJ45 jack on SI-EM3 connector CN1, not the drive keypad connector.", "Remote control through SI-EM3 requires b1-01=3 and b1-02=3 (Option PCB), not the built-in-serial value 2.", "F7-16 defaults to 0.0 seconds, which disables connection-timeout detection. Configure and validate the loss-of-communications behavior before operating a motor over Ethernet."] source = "Yaskawa SIEPC71061737G GA800 Technical Reference, printed p. 347 (SI-EM3 and JOHB-SMP3 support); Yaskawa TOEP C730600 91B SI-EM3 Installation Manual, printed pp. 8-14 and 29-34 (GA800 compatibility, CN5-A and dual CN1 RJ45), pp. 42-52 (Cat5e, b1/F6/F7 settings and register access)" # p. 348 Table 6.2: RTU only, 8 data bits fixed, 1 stop bit fixed, parity # even/odd/none. Defaults are H5-02 = 3 (9600 bps) and H5-03 = 0 (no parity). [serial] baudrate = 9600 parity = "N" stopbits = 1 # Table 6.16, pp. 364-378. [monitor] status_word = { address = 0x0020, bits = { 0 = "RUNNING", 1 = "REVERSE", 2 = "READY", 3 = "FAULT", 4 = "DATA_SETTING_ERROR", 5 = "MFDO_M1_M2", 6 = "MFDO_M3_M4", 7 = "MFDO_M5_M6", 12 = "STO_HW_MISMATCH", 13 = "SAFE_TORQUE_OFF", 14 = "COMREF_ACTIVE", 15 = "COMCTRL_ACTIVE" } } fault_description_1 = { address = 0x0021, bits = { 0 = "oC/GF", 1 = "ov", 2 = "oL2", 3 = "oH1/oH2", 4 = "rH/rr", 6 = "FbL/FbH", 7 = "EF0/EF1-EF8", 8 = "CPFxx", 9 = "oL1/oL3/oL4/UL3/UL4", 10 = "PGo/PGoH/oS/dEv", 11 = "Uv_DETECTING", 12 = "Uv1/Uv2/Uv3", 13 = "LF/PF", 14 = "CE/bUS", 15 = "oPr" } } data_link_status = { address = 0x0022, bits = { 0 = "WRITING", 3 = "LIMIT_FAULT", 4 = "DATA_INTEGRITY_FAULT", 5 = "EEPROM_WRITING", 6 = "RAM_ONLY" } } # 0x0023 / 0x0024 units follow o1-03 [Frequency Display Unit Selection], whose # DEFAULT DEPENDS ON A1-02 [Control Method Selection] (pp. 713, 716, 1086): # o1-03 = 0 (0.01 Hz) for A1-02 = 0-4 (V/f, CL-V/f, OLV, CLV, AOLV) — assumed # here — but 2 (r/min) for A1-02 = 5-7 (PM vector). CONFIRM o1-03 ON THE UNIT. frequency_reference = { address = 0x0023, scale = 0.01, unit = "Hz" } output_frequency = { address = 0x0024, scale = 0.01, unit = "Hz" } # 0.1 V, unless H5-10 = 1 which makes this register 1 V units (p. 997). output_voltage = { address = 0x0025, scale = 0.1, unit = "V" } # OUTPUT CURRENT: the manual gives three registers and they DISAGREE. Table # 6.16 (p. 365) states 0x0026 is U1-03 in fixed 0.1 A units, which is what is # used here. But the U1-03 entry itself (p. 693) says that read over MEMOBUS # the value is "8192 = drive rated current (A)" — that is register 0x0042 — # and 0x00FB (p. 378) is in the drive's own model-dependent units. Read all # three on the bench before trusting any of them; do not size anything from # this number until that is done. motor_current = { address = 0x0026, scale = 0.1, unit = "A" } output_current_normalized = { address = 0x0042 } # U1-03, 8192 = drive rated current (p. 693) # 0x00FB raw counts: 0.01 A on 2004-2042 / 4002-4023, 0.1 A on 2415-4031 / # 4675-4720 / T720, 1 A on 4810-4H12 (p. 378). MODEL-DEPENDENT, left unscaled. output_current_native = { address = 0x00FB } # U1-08. MODEL-DEPENDENT: 0.1 kW on 2056-2415 / 4031-4H12 / T103-T720 (used # here), but 0.01 kW on 2004-2042 / 4002-4023 (p. 693). output_power = { address = 0x0027, signed = true, scale = 0.1, unit = "kW" } # U1-09 at 0.1% (p. 693). 0x0032 is the same monitor at 1% resolution. motor_torque = { address = 0x0028, signed = true, scale = 0.1, unit = "%" } minor_fault_description = { address = 0x002A, bits = { 2 = "EF", 3 = "bb", 4 = "oL3", 5 = "oH", 6 = "ov", 7 = "Uv", 8 = "FAn", 9 = "CE", 10 = "bUS", 11 = "UL3/UL4", 12 = "oH3", 13 = "FbL/FbH", 15 = "CALL" } } status_word_2 = { address = 0x002C, bits = { 0 = "RUNNING", 1 = "ZERO_SPEED", 2 = "SPEED_AGREE", 3 = "USER_SPEED_AGREE", 4 = "FREQ_DETECT_1", 5 = "FREQ_DETECT_2", 6 = "READY", 7 = "UNDERVOLTAGE", 8 = "BASEBLOCK", 9 = "FREF_NOT_OPTION", 10 = "RUNCMD_NOT_OPTION", 11 = "TORQUE_DETECT", 12 = "FREF_LOSS", 13 = "AUTO_RESTART", 14 = "FAULT", 15 = "MODBUS_TIMEOUT" } } dc_voltage = { address = 0x0031, unit = "V" } # U1-07, 1 V per count comm_error_flags = { address = 0x003D, bits = { 0 = "CRC", 1 = "DATA_LENGTH", 3 = "PARITY", 4 = "OVERRUN", 5 = "FRAMING", 6 = "TIMEOUT" } } minor_fault_code = { address = 0x007F } # Table 6.19 codes operation_error_number = { address = 0x00BF } # xx of oPExx # Table 6.15 command data, pp. 360-361. H5-12 = 0 (default) assumed. # bit 0 forward run/stop, bit 1 reverse run/stop, bit 2 EXTERNAL FAULT (EF0) # — never set it — bit 3 fault reset, bits 4-B multi-function inputs. # Minimum wait between operation-command messages is 5 ms (p. 351 Table 6.4). [control] command_register = 0x0001 speed_register = 0x0002 # Register 0x0002 is explicitly UNSIGNED (p. 360) and takes o1-03 units, so # reverse is a control-word bit and NOT the sign of the reference. speed_scale = 0.01 speed_signed = false speed_unit = "Hz" # only while o1-03 = 0; see the monitor note above max_ref = 590.0 # d1-xx reference range ceiling (p. 606); the real limit # on a given unit is E1-04 [Maximum Output Frequency] step_delay = 0.05 stop = [0x0000] run_fwd = [0x0001] run_rev = [0x0002] # bit 3 alone. 0x0008 leaves bits 0 and 1 clear, so this reset value is NOT a # run command; it is a stop-and-reset. Second word drops the edge. reset = [0x0008, 0x0000] # CE [Modbus Communication Error] fires after H5-09 [CE Detection Time], # default 2.0 s, when H5-05 = 1 (default). WARNING: H5-04 [Communication Error # Stop Method] DEFAULTS TO 3 [Alarm Only] — on a factory-default GA800 the # motor KEEPS RUNNING through a comm loss and only raises an alarm. Set # H5-04 = 0/1/2 if the application needs the drive to stop itself. (pp. 996-997) [control.watchdog] interval_ms = 500 fault = "CE Modbus Communication Error (H5-09, default 2.0 s)" [running_check] register = 0x0020 bit = 0 # U2-01 [Current Fault] at 0x0080; U3-01 to U3-04 [1st-4th Most Recent Fault] # at 0x0090-0x0093 (pp. 695, 698). U3-05 onward moves to 0x0804+ and is not # contiguous, so the history stops at four. [faults] register = 0x0080 history = [0x0090, 0x0091, 0x0092, 0x0093] # Table 6.18, pp. 378-380. Codes are hex there; keys here are the decimal # equivalents. This is the common subset, not the whole table — the oFA/oFb/oFC # option-card blocks (0x0101-0x0356) and most CPFxx entries are omitted. [faults.codes] 2 = "0x0002 Uv1 DC bus undervoltage" 3 = "0x0003 Uv2 control power undervoltage" 4 = "0x0004 Uv3 soft charge answerback fault" 5 = "0x0005 SC short circuit / IGBT failure" 6 = "0x0006 GF ground fault" 7 = "0x0007 oC overcurrent" 8 = "0x0008 ov overvoltage" 9 = "0x0009 oH heatsink overheat" 10 = "0x000A oH1 heatsink overheat" 11 = "0x000B oL1 motor overload" 12 = "0x000C oL2 drive overload" 13 = "0x000D oL3 overtorque detection 1" 14 = "0x000E oL4 overtorque detection 2" 15 = "0x000F rr dynamic braking transistor fault" 16 = "0x0010 rH braking resistor overheat" 17 = "0x0011 EF3 external fault (terminal S3)" 18 = "0x0012 EF4 external fault (terminal S4)" 19 = "0x0013 EF5 external fault (terminal S5)" 20 = "0x0014 EF6 external fault (terminal S6)" 21 = "0x0015 EF7 external fault (terminal S7)" 22 = "0x0016 EF8 external fault (terminal S8)" 23 = "0x0017 FAn internal fan fault" 24 = "0x0018 oS overspeed" 25 = "0x0019 dEv speed deviation" 26 = "0x001A PGo encoder (PG) feedback loss" 27 = "0x001B PF input phase loss" 28 = "0x001C LF output phase loss" 29 = "0x001D oH3 motor overheat (PTC input)" 30 = "0x001E oPr keypad connection fault" 31 = "0x001F Err EEPROM write error" 32 = "0x0020 oH4 motor overheat fault (PTC input)" 33 = "0x0021 CE Modbus communication error" 34 = "0x0022 bUS option communication error" 37 = "0x0025 CF control fault" 38 = "0x0026 SvE zero servo fault" 39 = "0x0027 EF0 option card external fault" 40 = "0x0028 FbL PID feedback loss" 41 = "0x0029 UL3 undertorque detection 1" 42 = "0x002A UL4 undertorque detection 2" 43 = "0x002B oL7 high slip braking overload" 48 = "0x0030 oFx hardware fault" 54 = "0x0036 LF2 output current imbalance" 55 = "0x0037 STPo motor step-out detected" 56 = "0x0038 PGoH encoder (PG) hardware fault" 59 = "0x003B SEr speed search retries exceeded" 65 = "0x0041 FbH excessive PID feedback" 66 = "0x0042 EF1 external fault (terminal S1)" 67 = "0x0043 EF2 external fault (terminal S2)" 68 = "0x0044 oL5 mechanical weakening detection 1" 69 = "0x0045 UL5 mechanical weakening detection 2" 70 = "0x0046 CoF current offset fault" 72 = "0x0048 oH5 motor overheat (NTC input)" 77 = "0x004D Tho thermistor disconnect" 78 = "0x004E rF braking resistor fault" 79 = "0x004F boL braking transistor overload fault" 81 = "0x0051 LSo low speed motor step-out" 82 = "0x0052 nSE node setup error" 131 = "0x0083 CPF02 control circuit error" 1039 = "0x040F SCF safety circuit fault" 1043 = "0x0413 FAn1 drive cooling fan failure" 1046 = "0x0416 bCE Bluetooth communication fault" # 0x00AB Drive rated current (p. 369). Frame identity for a clone/restore # precondition. Left as RAW COUNTS on purpose: the manual states the unit # changes with the model (0.01 A on 2004-2042 / 4002-4023, 0.1 A on # 2056-2415 / 4031-4H12 / T103-T720), so a fixed scale here would be a lie. # Two drives of the same model still compare correctly raw. [rating] register = 0x00AB scale = 1.0 label = "Drive rated current (raw, model-dependent unit)" # No [parameters] section. Parameter registers on the GA800 are sparse and # scattered across 0x0100-0x15xx with read-only and Uv-write-protected entries # interleaved (error codes 22 and 23, p. 382), and writes need the Enter # command unless H5-11 = 1. Cloning needs a verified writable-parameter list # from the parameter table, not a swept range.