KROHNE IFC 300 Modbus register map
IFC 300 signal converter for electromagnetic flowmeters, sold with OPTIFLUX and WATERFLUX flow sensors, fitted with the RS485 Modbus interface card. Registers cover flow speed, volume and mass flow, conductivity, three counters, converter and calibration commands, process input filter and diagnosis settings, and the Modbus communication parameters.
- Protocol
- Modbus RTU (RS485)
- Defaults
- Menus C5.8.1 to C5.8.6: slave address 1 (range 1 to 247), 19200 baud, even parity, data format Big Endian, transmission delay 0 ms (range 0 to 40 ms), 1 stop bit. Baud rates 1200 to 115200 are selectable. Terminals D- (signal A, D0), D (signal B, D1) and C- (common). Termination and polarization are off by default and enabled with jumpers X5 and X6. Function codes supported: 01, 03, 04, 05, 08 and 16.
- Addresses in the manual
- 0-based protocol addresses, as sent on the wire
- 32 and 64-bit values
- High word first (AB CD)
- Registers listed
- 81
- Checked against
- Document 4000410703, AD Modbus IFC 300 R03 en, dated 07/2010, for Electronic Revision ER 3.3.xx (SW.REV. 3.3x) and Modbus version 1.2.x; vendor-hosted on KROHNE's own document server
Address base. Section 6.2 (p. 8) says the converter uses protocol addresses, so the register address listed is the actual number required in the Modbus command, and gives the example that input register 30006 is start address 30006 decimal = 7536 hex. This file records the listed numbers as printed (coils 1000 to 3005, input registers 30000 to 30036 and 20000, holding registers 40000 to 50004). Section 6.3 (p. 9) adds that register numbers, where a system asks for them, equal the protocol address plus 1 with a prefix of 1 for coils, 3 for input registers and 4 for holding registers, and that systems limited to addresses up to 9999 can drop the leading 3 or 4 (and replace a leading 20 of 20xxx with 9xxx for input registers). Coils are read with function 01 and written with 05, input registers read with 04, holding registers read with 03 and written with 16. Floats occupy 2 registers, double floats 4 registers; the manual's byte, word and ulong types occupy 1, 1 and 2 registers. Address 1000 in the manual is address 1000 on the wire.
Word order. Section 6.2 (p. 8) says the converter can use big endian format (MSB first) or little endian format (LSB first), selected by menu C5.8.4 or holding register 50004 (1 Big Endian, 2 Little Endian), with Big Endian the default. The manual gives no worked telegram showing how the two registers of a float are ordered, so check one known value against the device if the host reads nonsense.
Modbus Poll and the Modbus protocol itself count from 0. The "Wire address" column is the number to type into Modbus Poll.
Downloads
The register table has every column on this page. The blocks file imports into Modbus Poll. The template JSON holds the same blocks plus unit, scale and access for scripts.
Registers
| Manual | Wire | Register | Type | Regs | Unit | Scale | Access | Area |
|---|---|---|---|---|---|---|---|---|
| 1000 | 1000 | Cold start commandCold_Start · Write 1 to generate a cold start; writing 0 is ignored. |
bool | 1 | 1 | W | Coil (FC01) | |
| 1001 | 1001 | Warm start commandWarm_Start · Write 1 to generate a warm start; writing 0 is ignored. The calibration procedures (6.10) use this coil to activate new values and say the warm start takes at most 5 s. |
bool | 1 | 1 | W | Coil (FC01) | |
| 1002 | 1002 | Error reset commandError_Reset · Write 1 to generate an error reset; writing 0 is ignored. |
bool | 1 | 1 | W | Coil (FC01) | |
| 3000 | 3000 | Start or stop counter 1Counter_1_Run · Write 1 starts the counter, write 0 stops it. Read 1 means the counter is running, 0 means stopped. Converter function C3.1.8 / C3.1.9. |
bool | 1 | 1 | RW | Coil (FC01) | |
| 3001 | 3001 | Start or stop counter 2Counter_2_Run · Write 1 starts the counter, write 0 stops it. Read 1 means the counter is running, 0 means stopped. Converter function C3.2.8 / C3.2.9. |
bool | 1 | 1 | RW | Coil (FC01) | |
| 3002 | 3002 | Start or stop counter 3Counter_3_Run · Write 1 starts the counter, write 0 stops it. Read 1 means the counter is running, 0 means stopped. Converter function C3.3.8 / C3.3.9. Only available in converters with IO2; a write to a non-existing counter causes an error response. |
bool | 1 | 1 | RW | Coil (FC01) | |
| 3003 | 3003 | Reset counter 1Counter_1_Reset · Write 1 resets the counter; write 0 has no effect and a read returns 0. Converter function C3.1.6. |
bool | 1 | 1 | W | Coil (FC01) | |
| 3004 | 3004 | Reset counter 2Counter_2_Reset · Write 1 resets the counter; write 0 has no effect and a read returns 0. Converter function C3.2.6. |
bool | 1 | 1 | W | Coil (FC01) | |
| 3005 | 3005 | Reset counter 3Counter_3_Reset · Write 1 resets the counter; write 0 has no effect and a read returns 0. Converter function C3.3.6. Only available in converters with IO2; a write to a non-existing counter causes an error response. |
bool | 1 | 1 | W | Coil (FC01) | |
| 2000 | 2000 | Start zero calibrationZero_Calibration_Start · Write 1 starts the function (converter function C1.1.1). Read 1 means running, 0 means complete (procedure in 6.10.1, p. 18). The result is read from input register 20000. |
bool | 1 | 1 | RW | Coil (FC01) | |
| 2001 | 2001 | Start coil temperature calibrationCoil_Temperature_Calibration_Start · Write 1 starts the function (converter function C1.1.8). Read 1 means running, 0 means complete (procedure in 6.10.2, p. 19). |
bool | 1 | 1 | RW | Coil (FC01) | |
| 2002 | 2002 | Start electrode factor calibrationElectrode_Factor_Calibration_Start · Write 1 starts the function (converter function C1.1.11). Read 1 means running, 0 means complete (procedure in 6.10.3, p. 20). |
bool | 1 | 1 | RW | Coil (FC01) | |
| 30000 | 30000 | Flow speedFlow_Speed |
float32 | 2 | m/s | 1 | R | Input (FC04) |
| 30002 | 30002 | Volume flowVolume_Flow |
float32 | 2 | m3/s | 1 | R | Input (FC04) |
| 30004 | 30004 | Mass flowMass_Flow · Footnote 1: not available for sensor option PF (partly filled). For sensor option PF the manual lists the level in % at this same address (footnote 3: only available for sensor option PF). |
float32 | 2 | kg/s | 1 | R | Input (FC04) |
| 30006 | 30006 | Coil temperatureCoil_Temperature |
float32 | 2 | K | 1 | R | Input (FC04) |
| 30008 | 30008 | ConductivityConductivity · This value may not be measured, depending on holding register 42003: 0 off (not measured), 1 conductivity, 2 conductivity plus empty pipe (S), 3 conductivity plus empty pipe (F), 4 conductivity plus empty pipe (I). For sensor options PF and CAP this value is only used for empty pipe detection. |
float32 | 2 | S/m | 1 | R | Input (FC04) |
| 30010 | 30010 | Diagnosis valueDiagnosis_Value · This value may not be measured, depending on holding register 42011: 25 off, 31 electrode noise (m/s), 28 flow profile (no unit), 21 linearity (no unit), 8 terminal 2 DC (V), 9 terminal 3 DC (V). Flow profile and linearity are not available for sensor option PF; terminal 2 and 3 DC are not available for sensor option CAP. |
float32 | 2 | 1 | R | Input (FC04) | |
| 30012 | 30012 | Display channel 1Display_Channel_1 · Represents the value on the first line of the first measurement screen, in SI units. |
float32 | 2 | 1 | R | Input (FC04) | |
| 30014 | 30014 | Display channel 2Display_Channel_2 · Represents the value on the first line of the second measurement screen, in SI units. |
float32 | 2 | 1 | R | Input (FC04) | |
| 30016 | 30016 | Operating timeOperating_Time |
float32 | 2 | s | 1 | R | Input (FC04) |
| 30020 | 30020 | Counter 1 valueCounter_1_Value · Double float, 4 registers. The unit follows the counter 1 measurement selection in holding register 40001 (volume in m3, mass in kg). |
float64 | 4 | m3 or kg | 1 | R | Input (FC04) |
| 30024 | 30024 | Counter 2 valueCounter_2_Value · Double float, 4 registers. The unit follows the counter 2 measurement selection in holding register 40003. |
float64 | 4 | m3 or kg | 1 | R | Input (FC04) |
| 30028 | 30028 | Counter 3 valueCounter_3_Value · Double float, 4 registers. Only available for converters with IO 2. The unit follows the counter 3 measurement selection in holding register 40005. |
float64 | 4 | m3 or kg | 1 | R | Input (FC04) |
| 30032 | 30032 | Long status sensorSensor_Status_Long · The manual lists the type as byte [4] (2 registers) and does not describe the bit assignments. |
uint32 | 2 | 1 | R | Input (FC04) | |
| 30034 | 30034 | Long status deviceDevice_Status_Long · The manual lists the type as byte [4] (2 registers) and does not describe the bit assignments. |
uint32 | 2 | 1 | R | Input (FC04) | |
| 30036 | 30036 | Long status sensor option PFSensor_Option_PF_Status_Long · Footnote 3: only available for sensor option PF (partly filled). The manual lists the type as byte [4] (2 registers) and does not describe the bit assignments. |
uint32 | 2 | 1 | R | Input (FC04) | |
| 20000 | 20000 | Result of the last calibration procedureCalibration_Result · The manual says the result of a calibration procedure is read from input register at protocol address 20000 (or 9000 for systems limited to 4 digits) and that it is one or more float values. Read it with function 04 after the calibration coil reads 0. |
float32 | 2 | 1 | R | Input (FC04) | |
| 40000 | 40000 | Counter 1 functionCounter_1_Function · 0 off, 1 sum counter, 2 plus counter, 3 minus counter. Converter function C3.1.1. Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 40001 | 40001 | Counter 1 measurementCounter_1_Measurement · 21 volume flow, 22 mass flow (not available for sensor option PF); for sensor option PF the value is 27 volume flow. Converter function C3.1.2. Manual type word, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 40002 | 40002 | Counter 2 functionCounter_2_Function · 0 off, 1 sum counter, 2 plus counter, 3 minus counter. Converter function C3.2.1. Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 40003 | 40003 | Counter 2 measurementCounter_2_Measurement · 21 volume flow, 22 mass flow (not available for sensor option PF); for sensor option PF the value is 27 volume flow. Converter function C3.2.2. Manual type word, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 40004 | 40004 | Counter 3 functionCounter_3_Function · 0 off, 1 sum counter, 2 plus counter, 3 minus counter. Converter function C3.3.1. Manual type byte, 1 register. Counter 3 parameters are only available for converters with IO 2. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 40005 | 40005 | Counter 3 measurementCounter_3_Measurement · 21 volume flow, 22 mass flow (not available for sensor option PF); for sensor option PF the value is 27 volume flow. Converter function C3.3.2. Manual type word, 1 register. Counter 3 parameters are only available for converters with IO 2. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 41000 | 41000 | Counter 1 low flow cutoff valueCounter_1_Low_Flow_Cutoff · Converter function C3.1.3. |
float32 | 2 | m3/s or kg/s | 1 | RW | Holding (FC03) |
| 41002 | 41002 | Counter 1 time constantCounter_1_Time_Constant · Converter function C3.1.4. |
float32 | 2 | s | 1 | RW | Holding (FC03) |
| 41004 | 41004 | Set counter 1 or read counter 1Counter_1_Set_Or_Read · Converter function C3.1.7. |
float32 | 2 | m3 or kg | 1 | RW | Holding (FC03) |
| 41006 | 41006 | Counter 2 low flow cutoff valueCounter_2_Low_Flow_Cutoff · Converter function C3.2.3. |
float32 | 2 | m3/s or kg/s | 1 | RW | Holding (FC03) |
| 41008 | 41008 | Counter 2 time constantCounter_2_Time_Constant · Converter function C3.2.4. |
float32 | 2 | s | 1 | RW | Holding (FC03) |
| 41010 | 41010 | Set counter 2 or read counter 2Counter_2_Set_Or_Read · Converter function C3.2.7. |
float32 | 2 | m3 or kg | 1 | RW | Holding (FC03) |
| 41012 | 41012 | Counter 3 low flow cutoff valueCounter_3_Low_Flow_Cutoff · Converter function C3.3.3. Counter 3 parameters are only available for converters with IO 2. |
float32 | 2 | m3/s or kg/s | 1 | RW | Holding (FC03) |
| 41014 | 41014 | Counter 3 time constantCounter_3_Time_Constant · Converter function C3.3.4. Counter 3 parameters are only available for converters with IO 2. |
float32 | 2 | s | 1 | RW | Holding (FC03) |
| 41016 | 41016 | Set counter 3 or read counter 3Counter_3_Set_Or_Read · Converter function C3.3.7. Counter 3 parameters are only available for converters with IO 2. |
float32 | 2 | m3 or kg | 1 | RW | Holding (FC03) |
| 41018 | 41018 | Preset counter 1Counter_1_Preset · Converter function C3.1.5. |
float32 | 2 | m3 or kg | 1 | RW | Holding (FC03) |
| 41020 | 41020 | Preset counter 2Counter_2_Preset · Converter function C3.2.5. |
float32 | 2 | m3 or kg | 1 | RW | Holding (FC03) |
| 41022 | 41022 | Preset counter 3Counter_3_Preset · Converter function C3.3.5. Counter 3 parameters are only available for converters with IO 2. |
float32 | 2 | m3 or kg | 1 | RW | Holding (FC03) |
| 42000 | 42000 | Flow directionFlow_Direction · 0 normal direction, 1 reverse direction. Converter function C1.2.2. Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 42001 | 42001 | Pulse filterPulse_Filter · 0 off, 1 on, 2 automatic. Converter function C1.2.4. Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 42002 | 42002 | Noise filterNoise_Filter · 0 off, 1 on. Converter function C1.2.7. Manual type byte, 1 register. The second address column is blank for this row in the manual; the first column prints 42002. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 42003 | 42003 | Empty pipe detection modeEmpty_Pipe_Mode · For sensor options without PF or CAP: 0 off, 1 conductivity, 2 conductivity plus empty pipe (S), 3 conductivity plus empty pipe (F), 4 conductivity plus empty pipe (I). For sensor options PF or CAP: 0 off, 1 conductivity, 2 empty pipe (S), 3 empty pipe (F), 4 empty pipe (I). Converter function C1.3.1. Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 42004 | 42004 | Full pipe diagnosisFull_Pipe_Diagnosis · 0 off, 1 on. Converter function C1.3.4. Not available for sensor options PF or CAP (footnotes 1 and 2). Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 42005 | 42005 | Linearity diagnosisLinearity_Diagnosis · 0 off, 1 on. Converter function C1.3.6. Not available for sensor options PF or CAP. Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 42006 | 42006 | Gain diagnosisGain_Diagnosis · 0 off, 1 on. Converter function C1.3.8. Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 42007 | 42007 | Coil current diagnosisCoil_Current_Diagnosis · 0 off, 1 on. Converter function C1.3.9. Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 42008 | 42008 | Flow profile diagnosisFlow_Profile_Diagnosis · 0 off, 1 on. Converter function C1.3.10. Not available for sensor options PF or CAP. Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 42009 | 42009 | Electrode noise diagnosisElectrode_Noise_Diagnosis · 0 off, 1 on. Converter function C1.3.13. Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 42010 | 42010 | Settling of field diagnosisSettling_Of_Field_Diagnosis · 0 off, 1 on. Converter function C1.3.16. Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 42011 | 42011 | Diagnosis value selectionDiagnosis_Value_Select · 25 off, 31 electrode noise, 28 flow profile, 21 linearity, 8 terminal 2 DC, 9 terminal 3 DC. Flow profile and linearity are not available for sensor option PF; terminal 2 and 3 DC are not available for sensor option CAP. Converter function C1.3.17. Selects what input register 30010 reports. Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 43000 | 43000 | Limitation lowLimitation_Low · Converter function C1.2.1. |
float32 | 2 | m/s | 1 | RW | Holding (FC03) |
| 43002 | 43002 | Limitation highLimitation_High · Converter function C1.2.1. |
float32 | 2 | m/s | 1 | RW | Holding (FC03) |
| 43004 | 43004 | Time constantTime_Constant · Converter function C1.2.3. |
float32 | 2 | s | 1 | RW | Holding (FC03) |
| 43006 | 43006 | Pulse widthPulse_Width · Converter function C1.2.5. |
float32 | 2 | s | 1 | RW | Holding (FC03) |
| 43008 | 43008 | Pulse limitationPulse_Limitation · Converter function C1.2.6. |
float32 | 2 | m/s | 1 | RW | Holding (FC03) |
| 43010 | 43010 | Noise levelNoise_Level · Converter function C1.2.8. |
float32 | 2 | m/s | 1 | RW | Holding (FC03) |
| 43012 | 43012 | Noise suppressionNoise_Suppression · Converter function C1.2.9. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 43014 | 43014 | Low flow cutoff valueLow_Flow_Cutoff · Converter function C1.2.10. |
float32 | 2 | m/s | 1 | RW | Holding (FC03) |
| 43016 | 43016 | Limit empty pipeEmpty_Pipe_Limit · Converter function C1.3.3. |
float32 | 2 | S/m | 1 | RW | Holding (FC03) |
| 43018 | 43018 | Limit full pipeFull_Pipe_Limit · Converter function C1.3.5. Not available for sensor options PF or CAP. |
float32 | 2 | S/m | 1 | RW | Holding (FC03) |
| 43020 | 43020 | Limit flow profileFlow_Profile_Limit · Converter function C1.3.11. Not available for sensor options PF or CAP. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 43022 | 43022 | Limit electrode noiseElectrode_Noise_Limit · Converter function C1.3.14. |
float32 | 2 | m/s | 1 | RW | Holding (FC03) |
| 43024 | 43024 | Zero pointZero_Point · Converter function C1.1.1. Written with the result of the zero flow calibration, then activated with a warm start (coil 1001); see 6.10.1. |
float32 | 2 | m/s | 1 | RW | Holding (FC03) |
| 43026 | 43026 | Coil resistance Rsp,20Coil_Resistance_Rsp20 · Converter function C1.1.7. Compare with the value on the device type plate; see 6.10.2. |
float32 | 2 | Ω | 1 | RW | Holding (FC03) |
| 43028 | 43028 | Coil temperature calibration pointCoil_Temperature_Calpoint · Converter function C1.1.8. Actual coil temperature entered as the calibration target; see 6.10.2. |
float32 | 2 | K | 1 | RW | Holding (FC03) |
| 43030 | 43030 | Coil resistance calibration pointCoil_Resistance_Calpoint · Converter function C1.1.8. Written with the coil temperature calibration result; see 6.10.2. |
float32 | 2 | Ω | 1 | RW | Holding (FC03) |
| 43032 | 43032 | Electrode factor EFElectrode_Factor · Converter function C1.1.11. Written with the conductivity calibration result; see 6.10.3. |
float32 | 2 | m | 1 | RW | Holding (FC03) |
| 43034 | 43034 | Conductivity calibration point (first register pair)Conductivity_Calpoint_A · Converter function C1.1.11. The manual lists this row and 43036 with the same description and says the target value has to be written to both registers (6.10.3). |
float32 | 2 | S/m | 1 | RW | Holding (FC03) |
| 43036 | 43036 | Conductivity calibration point (second register pair)Conductivity_Calpoint_B · Converter function C1.1.11. The manual lists this row and 43034 with the same description and says the target value has to be written to both registers (6.10.3). |
float32 | 2 | S/m | 1 | RW | Holding (FC03) |
| 50000 | 50000 | Baud rateModbus_Baud_Rate · Options 1200, 2400, 3600, 4800, 9600, 19200 (default), 38400, 57600, 115200. Converter function C5.8.2. Manual type ulong, 2 registers. Section 2.1 (p. 4) omits 3600 from its baud rate list. |
uint32 | 2 | baud | 1 | RW | Holding (FC03) |
| 50002 | 50002 | Slave addressModbus_Slave_Address · Range 1 to 247 (default 1 per p. 6). Converter function C5.8.1. Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 50003 | 50003 | ParityModbus_Parity · 0 even parity (default), 1 odd parity, 3 no parity. Converter function C5.8.3. Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 50004 | 50004 | Data formatModbus_Data_Format · 1 Big Endian (default), 2 Little Endian. Converter function C5.8.4. Manual type byte, 1 register. |
uint16 | 1 | 1 | RW | Holding (FC03) |
Scale is the number to multiply the raw value by to get the unit. Types with more than one register (32 and 64-bit) follow the word order above.
Open in Modbus Poll
- Download the Modbus Poll blocks file.
- Open Modbus Poll, connect to the device and set its unit ID. In Modbus Poll set Word order to AB CD.
- In the blocks panel on the right, click Import CSV and pick the file. CSV import is a Pro feature. Without Pro, Modbus Poll polls the first 20 values of your blocks.
- The wire addresses are already in the file, so there is no 0-based or 1-based conversion to do.
Once the values look right, export the tag list to Ignition, Kepware, Node-RED, Home Assistant or Voltrus SCADA.
Source and accuracy
Manufacturer document: IFC 300 Supplementary instructions, Signal converter for electromagnetic flowmeters, Description of Modbus interface (cdn.krohne.com)
Document 4000410703, AD Modbus IFC 300 R03 en, dated 07/2010, for Electronic Revision ER 3.3.xx (SW.REV. 3.3x) and Modbus version 1.2.x; vendor-hosted on KROHNE's own document server, pp. 4-20. Read on 2026-10-24.
Also used: KROHNE IFC 300 product page (converter for combination with OPTIFLUX and WATERFLUX flow sensors) (krohne.com)
Addresses, types, units and scale are taken from the document above. Names and descriptions are written by Voltrus. Firmware versions can differ, so confirm a value on your own device before you rely on it.
Found a mistake? Report it by email with the register address and the manual page.