# Property of PMA Electrical Solutions, LLC. # # Yaskawa iQpump1000 Intelligent Pump Controller (CIMR-PW), embedded # MEMOBUS/Modbus RTU on terminal block TB5 (R+ R- S+ S- IG). No option card # is required or assumed — TB5 is on the drive. # # Sourced ONLY from Yaskawa TOEP YAIP1W01G, "iQpump1000 AC Drive Intelligent # Pump Controller User Manual", rev <7>, Oct 2022, drive software PRG: 8554. # Appendix C MEMOBUS/Modbus Communications ............ pp. 449-485 # C.2 comms specification (serial defaults) ......... p. 451 # C.4 H5-xx setup parameters ........................ pp. 455-458 # C.5 command/reference source parameters ........... p. 459 # C.9 Command Data (0000H-001FH) .................... pp. 465-466 # C.9 Monitor Data (0020H-00FFH) .................... pp. 467-478 # C.9 Table C.5 Fault Trace / History contents ...... pp. 479-481 # C.9 Table C.6 Alarm register 007FH contents ....... pp. 481-482 # C.10 Enter command ................................. p. 483 # Appendix B U: Monitors (parameter addresses) ........ pp. 437-448 # U1/U2/U3 unit footnotes <1>-<7> .................... p. 440 # Appendix B o1-03 display-unit selection ............. p. 398 # E1-04 Maximum Output Frequency range ................. p. 160 # # The document number in the original research lead (TOEPC71060638) does not # resolve on yaskawa.com; TOEPYAIP1W01(G) is the iQpump1000 manual. # # NOTHING here is carried over from the GA500 or GA800 profiles. The # 0020H-0027H monitor block happens to look the same, but the fault/alarm # tables are re-read from this manual because iQpump firmware adds pump codes # (LOP, LOWFL, HIFLO, AJF, LOSUC, WLL, SPL, VLTS ...) that no general-purpose # 1000-series map contains, and it RENAMES the EF1-EF8 external faults to # "Pump Fault n". Claim covers iQpump1000 only. # # ADDRESSING: Yaskawa prints MEMOBUS registers in hex with a trailing "H" # ("0020H"). Those are already the 0-based protocol addresses that go into the # FC03/FC10 PDU — there is NO 4xxxx offset and no group*100+index formula. # 0020H -> 0x0020 -> read holding register 32. # Parameter registers (Appendix B, "Addr. Hex" column) are likewise 0-based # and are printed per parameter; they cannot be computed (o1-03 is 0502H). # # DRIVE-SIDE SETUP — without these the drive ACKs the writes and ignores them: # b1-01 = 2 Frequency Reference Selection 1 = MEMOBUS/Modbus (p. 459) # b1-02 = 2 Run Command Selection 1 = MEMOBUS/Modbus (p. 459) # (b1-15 / b1-16 = 2 if External Reference 2 is the active reference) # H5-01 node address, H5-02 baud, H5-03 parity — CYCLE POWER after changing. # H5-07 = 1 for RS-485. DIP switch S2 ON only on the last drive on the line. # H5-01 DEFAULTS TO 1F HEX = NODE 31, not 1 (p. 455). A scan that only walks # 1..10 will miss a factory-default iQpump1000. # # ENTER COMMAND (p. 483): writes to 0000H-001FH take effect immediately, so # run/stop/reference need no Enter. PARAMETER writes do, unless H5-11 = 1 — # write 0 to 0900H (EEPROM, 100k-cycle limit) or 0910H (RAM only). Both # registers are write-only; reading them returns exception 02H. This is why # no [parameters] clone ranges are declared here. # # SCALING IS CONFIG-DEPENDENT IN THREE PLACES, none of them panel decimals: # * 0002H / 0023H / 0024H frequency units follow o1-03 (p. 478 note <1>). # o1-03 defaults to 0 = 0.01 Hz, which is what this profile assumes. # o1-03 = 1 makes them 0.01% of E1-04, 2 makes them r/min, 3 user units. # * 0025H output voltage is 0.1 V or 1 V per H5-10 (default 0 = 0.1 V). # * 0027H output power is listed in the data table (p. 467) with NO unit at # all. The only sourced statement about output-power resolution is note # <4> on p. 440, and it describes the KEYPAD monitor U1-08 (0047H): two # decimals (0.01 kW) at a maximum applicable motor capacity up to and # including 11 kW, one decimal (0.1 kW) above. 0027H is therefore left # unscaled — see the comment on it below. name = "Yaskawa iQpump1000" vendor = "Yaskawa" verified = false device_type = "vfd" probe_register = 0x0020 # Drive Status 1, readable whenever the port is alive [connection] summary = "The iQpump1000 has embedded MEMOBUS/Modbus on TB5 and supports optional Modbus TCP/IP through a Yaskawa SI-EM3 card installed in CN5-A. The serial terminals also support RS-422, but this application uses the documented two-wire RS-485 topology." warnings = [] [[connection.methods]] id = "tb5_memobus_rs485" title = "Built-in TB5 two-wire MEMOBUS/Modbus" transport = "serial" hardware = "built_in" port = "Terminal block TB5" connector = "Five terminals R+, R-, S+, S-, IG" adapter = "Isolated USB-to-RS-485 adapter, 2-wire half-duplex" cable = "Shielded twisted-pair RS-485 cable" parts = ["Isolated two-wire RS-485 adapter", "Shielded twisted-pair cable", "Two short terminal jumpers"] 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 H5-07=1 for RS-485, b1-01=2, b1-02=2, H5-01 node, H5-02 baud, and H5-03 parity; cycle power after changes."] warnings = ["For two-wire RS-485, the manual explicitly requires S+ jumpered to R+ and S- jumpered to R-. Do not omit the jumpers.", "Set DIP switch S2 ON only at the last drive on the trunk.", "The factory node is hexadecimal 1F (31), not node 1."] source = "Yaskawa TOEPYAIP1W01G iQpump1000 User Manual, printed pp. 121-122 and 451-454 (TB5 R+/R-/S+/S-/IG wiring, RS-485 jumpers and termination), pp. 455-459 (setup)" [[connection.methods.wiring]] adapter = "Adapter D+ / +" device = "TB5 R+ and S+ jumpered together" signal = "RS-485 data positive" required = true [[connection.methods.wiring]] adapter = "Adapter D- / -" device = "TB5 R- and S- jumpered together" signal = "RS-485 data negative" required = true [[connection.methods.wiring]] adapter = "Adapter shield / signal ground" device = "TB5 IG" signal = "Isolated shield ground" 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", "Shielded Cat5e Ethernet cable"] steps = ["Confirm the drive model is not 4A0930 or 4A1200; the iQpump1000 manual excludes SI-EM3 from those two models.", "Lock out line and control power, wait at least the drive's marked discharge time after all indicators turn off, 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, attach its included ground wire between the option and the drive grounding terminal, and secure the card as Yaskawa specifies.", "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.", "Put the drive in AUTO mode and verify identity and monitor registers before selecting the option for remote setpoint and run 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. Cycle drive power after F7 address-setting changes.", "For remote setpoint and run control through the option, set b1-01=3 and b1-02=3 and put the drive in AUTO mode. Review F6-01 and F7-16 so loss of the Ethernet control connection has the intended machine-safe result."] warnings = ["The iQpump1000 manual explicitly excludes SI-EM3 from drive models 4A0930 and 4A1200.", "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, which disables connection-timeout detection. Configure and validate the loss-of-communications behavior before operating a pump over Ethernet."] source = "Yaskawa TOEPYAIP1W01G iQpump1000 User Manual, printed pp. 216-217 (Option PCB sources), pp. 310-312 (SI-EM3 compatibility, CN5-A installation and model exclusions), pp. 371-372 (F7 network settings); Yaskawa TOEP C730600 91B SI-EM3 Installation Manual, printed pp. 13-14 and 42-52 (CN1 dual RJ45, Cat5e, option settings and direct register access)" # H5-02 default 3 = 9600 bps, H5-03 default 0 = no parity. Data length 8 and # stop bits 1 are fixed by the drive (p. 451). [serial] baudrate = 9600 parity = "N" stopbits = 1 [monitor] drive_status = { address = 0x0020, bits = { 0 = "Running", 1 = "Reverse", 2 = "DriveReady", 3 = "Fault", 4 = "DataSettingError", 5 = "MFO_M1_M2", 6 = "MFO_M3_M4", 7 = "MFO_MD_ME_MF", 14 = "ComRef", 15 = "ComCtrl" } } # 0021H is a bit-mapped SUMMARY (several bits can be set at once), not a code. fault_contents_1 = { address = 0x0021, bits = { 0 = "oC/GF", 1 = "ov", 2 = "oL2", 3 = "oH1/oH2", 4 = "rr/rH", 6 = "FbL/FbH", 7 = "EF..EF8", 8 = "CPFxx", 9 = "oL1/oL3/oL4/UL3/UL4", 11 = "Uv", 12 = "Uv1/Uv2/Uv3", 13 = "LF/PF", 14 = "CE/bUS", 15 = "oPr" } } data_link_status = { address = 0x0022, bits = { 0 = "Writing", 3 = "LimitError", 4 = "ConformityError", 5 = "WritingEEPROM" } } frequency_reference = { address = 0x0023, scale = 0.01, unit = "Hz" } # units per o1-03 output_frequency = { address = 0x0024, scale = 0.01, unit = "Hz" } # units per o1-03 output_voltage_ref = { address = 0x0025, scale = 0.1, unit = "V" } # 1 V if H5-10 = 1 # The data table states "Output Current, 0.1 A units" for 0026H flatly (p. 467) # — that is sourced, so it is scaled. The KEYPAD monitor U1-03 at 0042H is a # different animal: 0.01/0.1/1 A depending on frame, and read over MEMOBUS a # value of 8192 there means 100% of drive rated current (U1-03 on p. 437, its # notes <1>/<2> on p. 440). Confirm against U1-03 on the actual unit before # trusting amps to the tenth. output_current = { address = 0x0026, scale = 0.1, unit = "A" } # 0027H is printed as bare "Output Power" with NO unit (p. 467). The nearest # sourced resolution is note <4> p. 440, which governs U1-08 (0047H) and is # capacity-dependent: 0.01 kW at <=11 kW max applicable motor, 0.1 kW above. # Left unscaled DELIBERATELY. A fixed 0.1 would read 10x high on exactly the # small frames that dominate pump service, and the manual does not license it. output_power = { address = 0x0027 } # raw count; 0.01 or 0.1 kW per frame alarm_contents_1 = { 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" } } input_terminal_status = { address = 0x002B, bits = { 0 = "S1", 1 = "S2", 2 = "S3", 3 = "S4", 4 = "S5", 5 = "S6", 6 = "S7", 7 = "S8" } } drive_status_2 = { address = 0x002C, bits = { 0 = "Running", 1 = "ZeroSpeed", 2 = "SpeedAgree", 3 = "UserSpeedAgree", 4 = "FreqDetect1", 5 = "FreqDetect2", 6 = "DriveReady", 7 = "Undervoltage", 8 = "Baseblock", 9 = "FreqRefFromKeypad", 10 = "RunFromKeypad", 11 = "Over_UnderTorque", 12 = "FreqRefLoss", 13 = "FaultRestarting", 14 = "Fault", 15 = "CommTimeout" } } output_terminal_status = { address = 0x002D, bits = { 0 = "MD_ME_MF", 1 = "M1_M2", 2 = "M3_M4", 7 = "FaultRelay_MA_MB_MC" } } dc_bus_voltage = { address = 0x0031, unit = "V" } # 1 Vdc per count pid_feedback = { address = 0x0038, scale = 0.1, unit = "%" } pid_input = { address = 0x0039, scale = 0.1, signed = true, unit = "%" } pid_output = { address = 0x003A, scale = 0.1, signed = true, unit = "%" } comm_error_contents = { address = 0x003D, bits = { 0 = "CRC", 1 = "DataLength", 3 = "Parity", 4 = "Overrun", 5 = "Framing", 6 = "Timeout" } } # 007FH is the ALARM enum (Table C.6), a different code space from the fault # codes below. 0 = no alarm. alarm_code = { address = 0x007F } # Pump-side monitors — the whole reason this is not the GA500 map. Addresses # are the "Addr. Hex" column of Appendix B (pp. 439-440). pump_setpoint = { address = 0x0BA5 } # U1-90, decimals/units set by P1-02 pump_feedback = { address = 0x0BA6 } # U1-91, decimals/units set by P1-02 pump_status = { address = 0x0BA7, bits = { 0 = "Drive", 1 = "Pump2", 2 = "Pump3", 3 = "Pump4", 4 = "Pump5", 5 = "Pump6" } } motor_speed_rpm = { address = 0x0BA9, unit = "rpm" } # U1-94, 1 rpm per count flow_rate = { address = 0x0B9E } # U1-83, units per P6-04, resolution per P6-22 water_level = { address = 0x0BAC, scale = 0.1, unit = "ft" } # U1-97 suction_pressure = { address = 0x0BAD, scale = 0.1, unit = "PSI" } # U1-98, or "Hg per Q5-xx # Command data, 0001H/0002H (pp. 465-466). No Enter command needed here. [control] command_register = 0x0001 speed_register = 0x0002 speed_scale = 0.01 speed_unit = "Hz" # only while o1-03 = 0 (default); see header max_ref = 400.0 # E1-04 ceiling (p. 160); the drive ships at 60 Hz step_delay = 0.05 stop = [0x0000] run_fwd = [0x0001] # run_rev assumes the DEFAULT H5-12 = 0 (FWD/Stop, REV/Stop), where bit 0 is # forward and bit 1 is reverse. At H5-12 = 1 bit 0 is run and bit 1 is # direction, so reverse becomes 0x0003 there and 0x0002 means "stopped, # direction reverse". Never write 0x0003 at H5-12 = 0: that asserts FWD and # REV together, which the drive reports as the EF "Run commands input error" # alarm (alarm code 0007H, p. 481), not as reverse. run_rev = [0x0002] # Bit 3 is Fault Reset. 0x0008 leaves bits 0 and 1 clear, so the reset value # is NOT also a run command and reset can share the command register. reset = [0x0008, 0x0000] # H5-05 defaults to 1 (CE detection enabled) with H5-09 = 2.0 s, so the drive # raises CE two seconds after the master goes quiet. What it DOES about it is # H5-04, which DEFAULTS TO 3 = "Alarm only, continue operation" (p. 455) — an # unattended iQpump1000 keeps pumping at the last reference when the bus dies. # 500 ms keeps the CE timer reset with margin under the 2.0 s default. [control.watchdog] interval_ms = 500 fault = "CE MEMOBUS/Modbus Communication Error" [running_check] register = 0x0020 bit = 0 # U2-01 Current Fault (0080H) holds the numeric code; U3-01..U3-04 # (0800H-0803H) are the four most recent faults, newest first (pp. 440-442). # 0021H above is the concurrent bitfield, not this enum. [faults] register = 0x0080 history = [0x0800, 0x0801, 0x0802, 0x0803] # Table C.5, pp. 479-481. Yaskawa prints these in hex; TOML keys must be # numeric, so they are the decimal equivalents. The CPFxx (0083H-00AEH) and # option-card oFA/oFb/oFC (0101H-033EH) blocks are DELIBERATELY OMITTED — they # are ~150 internal/option codes and none of them describes a pump. [faults.codes] 2 = "Uv1 Undervoltage" 3 = "Uv2 Control power supply undervoltage" 4 = "Uv3 Soft charge circuit fault" 5 = "SC IGBT short circuit" 6 = "GF Ground fault" 7 = "oC Overcurrent" 8 = "ov Overvoltage" 9 = "oH Heatsink overheat" 10 = "oH1 Heatsink overheat" 11 = "oL1 Motor overload" 12 = "oL2 Drive overload" 13 = "oL3 Overtorque detection 1" 14 = "oL4 Overtorque detection 2" 15 = "rr Dynamic braking transistor" 16 = "rH Braking resistor overheat" 17 = "EF3 Pump fault at input terminal S3" 18 = "EF4 Pump fault at input terminal S4" 19 = "EF5 Pump fault at input terminal S5" 20 = "EF6 Pump fault at input terminal S6" 21 = "EF7 Pump fault at input terminal S7" 22 = "EF8 Pump fault at input terminal S8" 27 = "PF Input phase loss" 28 = "LF Output phase loss" 29 = "oH3 Motor overheat (PTC input)" 30 = "oPr Digital operator connection" 31 = "Err EEPROM write error" 32 = "oH4 Motor overheat (PTC input)" 33 = "CE MEMOBUS/Modbus communication error" 34 = "bUS Option communication error" 39 = "EF0 Option external fault" 40 = "FbL PID feedback loss" 41 = "UL3 Undertorque detection 1" 42 = "UL4 Undertorque detection 2" 43 = "oL7 High slip braking overload" 48 = "Hardware fault (including oFx)" 54 = "LF2 Output current imbalance" 55 = "Sto Pullout detection" 59 = "SEr Too many speed search restarts" 65 = "FbH PID feedback loss" 66 = "EF1 Pump fault 1, input terminal S1" 67 = "EF2 Pump fault 2, input terminal S2" 70 = "CoF Current offset fault" 71 = "PE1 PLC detection error 1" 72 = "PE2 PLC detection error 2" 77 = "voF Output voltage detection fault" 78 = "rF Braking resistor transistor fault" 79 = "boL Braking transistor overload fault" 80 = "oH5 Motor overheat (NTC input)" 82 = "nSE Node setup fault" 83 = "THo Thermistor disconnect" 90 = "UL6 Underload detection 6" 93 = "TIM HOA time not set" 94 = "bAT HOA battery low" 95 = "TdE HOA time deviation error" 96 = "TIE HOA time interval error" 97 = "LOP Loss of prime" 98 = "LOWFL Low flow" 99 = "ACCUM Accum level" 100 = "LFB Low feedback" 101 = "HFB High feedback" 102 = "NMS Setpoint not met" 103 = "POC Pump over cycle" 105 = "MSL Net master lost" 106 = "HIFLO High flow" 107 = "AJF Anti-jam fault" 108 = "LOWWL Low water level" 109 = "FDBKL Wire break" 110 = "LOSUC Low suction" 111 = "TLGI Geothermal input" 112 = "LWL Low water level" 113 = "HWL High water level" 114 = "HISUC High suction" 115 = "WLL Water level loss" 116 = "SPL Suction pressure loss" 117 = "VLTS Volute-thermostat fault" # 00ABH Drive Rated Current (p. 470). Its units are FRAME-DEPENDENT — 0.01 A # on 2A0004-2A0040 / 4A0002-4A0023 / 5A0007-5A0017, 0.1 A on 2A0056-2A0415 / # 4A0031-4A0675 / 5A0022-5A0242, 1 A on 4A0930 and 4A1200 (p. 478 note <2>). # Left unscaled deliberately: a raw count still compares frame-to-frame before # a restore, whereas a fixed scale would display a 10x-wrong ampere figure on # two thirds of the range. [rating] register = 0x00AB scale = 1.0 label = "Drive rated current, raw (0.01/0.1/1 A per frame — see 00ABH note 2)"