SIGNUX HEC20
Soil moisture, conductivity and temperature probe
Direct-insertion probe that measures volumetric moisture, electrical conductivity and soil temperature. Plastic body sealed in epoxy resin with stainless steel rods, made to stay buried.
The sensor can be calibrated for different soil types, whether in research, irrigation, greenhouses, smart agriculture, among other fields.
- Measures
- Moisture · Conductivity · Temperature
- Output
- 4-20 mAVoltage
- Protection
- IP68
- Operating
- -40 to +85 °C

What sets it apart
Three parameters at a single point
Moisture, conductivity, and temperature measured in the same soil volume—without the need for three separate installations or boreholes.
Waterproof, IP68
Sealed in epoxy resin with stainless steel rods. Bury it and forget it: it needs no manhole or watertight box.
Low sensitivity to salinity
The moisture reading holds up in saline soils, where ordinary capacitive probes drift.
Multiple integration options
RS485 with Modbus RTU, or analogue output as 0-2 V voltage or 4-20 mA current. No intermediate platform.
Protected against installation mistakes
Reverse-polarity protection and built-in TVS/ESD suppressors, which is what fails in the field.
Calibratable for your soil
Supports soil-specific calibration when the texture strays from the factory default.
Configurations
| Cable length | Connector / output | Part number |
|---|---|---|
| 2 m | Pigtail | SX-HEC20-2M-PT |
| 2 m | M10 connector | SX-HEC20-2M-M10 |
| 4 m | Pigtail | SX-HEC20-4M-PT |
| 4 m | M10 connector | SX-HEC20-4M-M10 |
Specifications
General
- Measured quantities
- Moisture · Conductivity · Temperature
- Family
- Direct-insertion probe
- Output
- RS485 · 4-20 mA · Voltage
- Rods
- 3 pcs
Temperature
- Range
- -40 to +80 °C
- Resolution
- 0.1 °C
- Accuracy
- ±0.5 °C
Soil moisture
- Measuring principle
- FDRFrequency-domain reflectometry
- Range L
- 0-50 / 0-100 %Depending on the ordered configuration
- Resolution
- 0.03 %In the 0-50 % section
- Range H
- 0-100 %Depending on the ordered configuration
- Resolution
- 1 %In the 50-100 % section
- Accuracy
- ±2 %In the 0-50 % section±3 %In the 50-100 % section
Electrical conductivity EC
- Measuring principle
- AC excitation
- Range
- 0-5000 / 0-10000 / 0-20000 µS/cmDepending on the ordered configuration
- Resolution
- 10 µS/cmUp to 10,000 µS/cm50 µS/cmFrom 10,000 to 20,000 µS/cm
- Accuracy
- ±3 %Up to 10,000 µS/cm±5 %From 10,000 to 20,000 µS/cm
- Temperature compensation
- 0-50 °C
Output and power
- Output interface
- RS485 Modbus RTU / 0-2 V / 4-20 mADepending on the ordered configuration
- Power supply
- 3.9-30 VDCRS485 or voltage output12-30 VDCRequired with 4-20 mA output
- Consumption
- 6 mAAt 12 V DC, RS485 or voltage output10 mAAt 12 V DC, 4-20 mA output
- Protocol
- Modbus RTUFunctions 3, 4, 6 and 16
- Factory defaults
- 9600 8N1, address 1Recoverable via the SET wire if lost
Construction
- Protection rating
- IP68
- Operating temperature
- -40 to +85 °C
- Rods
- Stainless steel
- Sealing
- Epoxy resin
- Installation
- Surface or buried
- Cable length
- 2 mOther lengths on request
- Dimensions
- 88 × 26 × 71 mm18 mm tall body and 53 mm rods, per the dimensioned drawing
Manual
1Introduction
The SX-HEC20 measures soil moisture content, electrical conductivity (EC) and temperature. It has a resin-sealed plastic body and sensing rods that can be inserted directly into the soil, offering long-term stability. The soil moisture output signal can be RS485, analogue voltage or analogue current. It can also be calibrated for specific soil types.
The sensor is suitable for scientific research, irrigation, greenhouses, smart agriculture, among other applications.
- •Integrated soil moisture, electrical conductivity (EC) and temperature measurements
- •Output interface: RS485, voltage and current
- •Low sensitivity to salinity
- •Minimal soil disturbance
- •IP68 protection rating (waterproof); suitable for direct burial in soil
- •High accuracy and excellent stability
- •Reverse-polarity protection and built-in TVS/ESD protection
Specifications
| Output Interface | Analog Voltage | Analog Current 4-20mA | RS485 Modbus |
| Power Supply | 3.9-30 VDC | 12-30 VDC | 3.9-30 VDC |
| Consumption | 6mA@12 VDC | 10mA@12 VDC | 6mA@12 VDC |
| Soil Moisture Measurement | Range:0-50%,0-100% Resolution:0-50%:0.03%,50-100%:1% Accuracy:0-50%:2%,50-100%:3% | ||
| EC Measurement | Range: 0-5000µS/cm, 10000µS/cm, 20000µS/cm Resolution: 0-10000µS/cm, 10µS/cm; 10000-20000µS/cm, 50µS/cm Accuracy: 0-10000µS/cm, ±3%; 10000-20000µS/cm, ±5% EC temperature compensation: 0-50°C | ||
| Temperature Measurement | Range: -40~80°C Resolution:0.1°C Accuracy:±0.5°C | ||
| Measurement Technique | Moisture by FDR and EC by AC excitation | ||
| IP Rating | IP68 | ||
| Operating Temperature | -40~85°C | ||
| Sensor Rod | Stainless steel | ||
| Sensor Sealing | Epoxy resin | ||
| Installation | Surface or buried installation | ||
| Cable Length | 2 metres or custom | ||
| Dimensions | 88*26*71mm | ||

2Wiring diagram
| Type | Wiring diagram |
| Analog Voltage Output | Red (V+): Power Supply + Black (G): Power Supply - Blue (O1): Analog Output (set at the factory to VWC, EC or Temperature) Brown (O2): Analog Output (set at the factory to VWC, EC or Temperature) |

| Analog Current Output | Red (V+): Power Supply + Black (G): Power Supply - Blue (O1): Analog Output (set at the factory to VWC, EC or Temperature) Brown (O2): Analog Output (set at the factory to VWC, EC or Temperature) | ||

| RS485 Modbus | Red (V+): Power Supply + Black (G): Power Supply - Yellow (T+): RS485+/A/T+ White (T-): RS485-/B/T- Green (SET): |
| SETTING mode. If the sensor is powered up with the SET wire connected to Power Supply +, it uses the setting-mode communication parameters for RS485. If it is powered up with the SET wire connected to Power Supply − or left unconnected, it uses the communication parameters stored in its registers. See the usage below. |

| All RS485 communication parameters (Modbus slave address, baudrate, parity, databits, stopbits) are set in internal registers and kept when the power is off. Factory settings: ADDRESS=1, BAUDRATE=9600bps, PARITY=NONE, DATABITS=8bits, STOPBITS=1bit. If you forget the communication settings, connect the GREEN and RED wires together to Power Supply +, the black wire to Power Supply −, and power the sensor off and on again. It then starts with fixed communication settings (setting mode): ADDRESS=0, BAUDRATE=9600bps, PARITY=NONE, DATABITS=8bits, STOPBITS=1bit. Communicate with the sensor using these parameters and set the ones you want, then disconnect the green wire from Power Supply + and power the sensor off and on again: it will communicate with your settings. | |||
3Dimensions and ordering information
3.1Dimensions

3.2Ordering Information
| Parameters | Code | Comments | |
|---|---|---|---|
| Code 1: Product Series | SX-HEC20 | Soil Moisture, EC, Temperature Sensor | |
| Code 2: Measuring parameters | A B C | Soil Moisture, EC, Temperature (Supported Output Interface: RS485) Soil Moisture, EC (Supported Output Interface: RS485 and Analog Voltage, Analog Current) EC, Temperature (Supported Output Interface: RS485 and Analog Voltage, Analog Current) | |
| Code 3: Moisture Range | A B | 0-50% 0-100% | |
| Code 4: EC Range | A B C | 0-5000µS/cm 0-10000µS/cm 0-20000µS/cm | |
| Code 5: Power Supply | A B D | 3.9-30 VDC (not applicable for 4-20mA output) 12-30 VDC (applicable for 4-20mA output) Custom | |
| Code 6: Output Interface | A B C D E | Analog Voltage 0-2V Analog Current 4-20mA (Power Supply >12 VDC) RS485,Modbus-RTU RS485,Modbus-RTU & Analog Voltage 0-2V RS485,Modbus-RTU & Analog Current 4-20mA (Power Supply >12 VDC) | |
| Code 7: Cable Length | 002 XXX | 2 metres XXX is the required cable length, in metres | |
| Ordering Code Example: SX-HEC20 - A B C A C 002 |
| Product Series: SX-HEC20 Soil Moisture, EC, Temperature Sensor; |
| Measuring Parameters: Soil Moisture, EC, Temperature; |
| Moisture Range: 0-100%; |
| EC Range: 0-20000µS/cm; |
| Power Supply: 3.9-30 VDC; |
| Output Interface: RS485, Modbus-RTU; |
| Cable Length: 2 metres; |
4Safety, care and installation
4.1Safety and care
- •The sensor rods are sharp to make insertion easier. Care must be taken and handling precautions followed.
- •Avoid touching the rods or exposing them to other sources of static damage, particularly when powered up.
- •Do not pull the sensor out of the soil by its cable.
- •If you feel any resistance when inserting the sensor into soil, it is likely you have encountered a stone. Stop pushing and re-insert at a new location.
4.2Installation
- •Surface installation Clear away any stones. Pre-form holes in very hard soils before insertion.
- •Push the sensor into the soil until the rods are fully inserted. Ensure good soil contact.
- •If you feel strong resistance when inserting the sensor, you have probably hit a stone. Stop, and re-insert at a new location.
- Note: The sensor is suitable for soil surface temperature measurements.
- Installing at depth
- •Make a 45 mm diameter hole with an auger, preferably at about 10° to the vertical.
- •Push the sensor into the soil until rods are fully inserted. Ensure good soil contact.
- •Fill and repack the hole with soil.
- Alternatively
- •Dig a trench, and install horizontally.
5Output signal conversion
| Output Interface | Parameters Range | Conversion Formula |
|---|---|---|
| Analog Voltage Output 0-2V | Temperature: -40-80°C | TEMP=60.0* VOLTAGE-40. When VOLTAGE=1.0V,then TEMP=60.0* 1.0-40=20.00°C |
| VWC: 0-50% | VWC=25*VOLTAGE. When VOLTAGE=0.3V,then VWC=25*0.3=7.5% | |
| VWC: 0-100% | VWC =50* VOLTAGE. When VOLTAGE=0.3V,then VWC =50*0.3=15% | |
| EC: 0-5000µS/cm | EC=2500*VOLTAGE. When VOLTAGE=0.3V,then EC=2500*0.3=750µS/cm. | |
| EC: 0-10000µS/cm | EC =5000* VOLTAGE. When VOLTAGE=0.3V,then EC=5000*0.3=1500µS/cm | |
| EC: 0-20000µS/cm | EC =10000* VOLTAGE. When VOLTAGE=0.3V,then EC=10000*0.3=3000µS/cm. | |
| Analog Current Output 4-20mA | Temperature: -40-80°C | TEMP=7.5*CURRENT-70. When CURRENT=10mA, then TEMP=7.5*10-70=5.00°C. |
| VWC: 0-50% | VWC= 3.125 *( CURRENT -4). When CURRENT=6.4mA, then VWC= 3.125*(6.4-4)=7.50% | |
| VWC: 0-100% | VWC = 6.25 *( CURRENT -4). When CURRENT=6.4mA, then VWC=6.25*(6.4-4)=15% | |
| EC: 0-5000µS/cm | EC = 312.50 *( CURRENT -4). When CURRENT=6.4mA, then EC= 312.50*(6.4-4)=750µS/cm | |
| EC: 0-10000µS/cm | EC = 625 *( CURRENT -4). When CURRENT=6.4mA, then EC=625*(6.4-4)=1500µS/cm | |
| EC: 0-20000µS/cm | EC = 1250 *( CURRENT -4). When CURRENT=6.4mA, then EC=1250*(6.4-4)=3000µS/cm | |
| RS485 Modbus-RTU | Temperature: -40-80°C | TEMP=(REGISTER VALUE)/100. When REGISTERVALUE=2013, then TEMP= 2013/100=20.13°C. |
| VWC for all ranges | VWC=(REGISTER VALUE)/100. When REGISTERVALUE=2013, then VWC= 2013/100=20.13%. | |
| EC for all ranges | EC=(REGISTER VALUE). When REGISTERVALUE=1568, then EC= 1568µS/cm. | |
| Custom | Contact support for customized sensor interface |
NOTE: The unit of VOLTAGE is (V), The unit of CURRENT is (mA).
NOTE: VWC is Volumetric Water Content, EC is Electrical Conductivity.
6RS485 Modbus protocol
6.1Modbus protocol
- Modbus Protocol is widely used to establish master-slave communication between intelligent devices or sensors. A MODBUS message sent from a master to a slave contains the address of the slave, the function code (e.g. 'read register’ or 'write register’), the data, and a check sum (LRC or CRC).
- The sensor has an RS485 interface with Modbus protocol. The default serial settings are slave address 1, Modbus RTU, 9600 bps, 8 data bits and 1 stop bit. All communication settings can be changed with Modbus commands and take effect after the sensor is powered off and on again.
- The sensor supports the following Modbus function codes.
- •Modbus function code 0x03: reading holding registers.
- •Modbus function code 0x04: reading input registers.
- •Modbus function code 0x06: writing a single holding register.
- •Modbus function code 0x10: writing multiple holding registers.
6.2Modbus registers
| Parameters | Register Addr. (HEX/DEC) | Data Type | Modbus Function Code(DEC) | Range and Comments | Default Value |
|---|---|---|---|---|---|
| TEMPERATURE | 0x0000/0 | INT16 RO | 3/4 | -4000-8000 for -40.00~80.00°C | N/A |
| VWC-Volumetric Water Content | 0x0001/1 | UINT16 RO | 3/4 | 0-10000 for 0-100% | N/A |
| EC-Electrical Conductivity | 0x0002/2 | UINT16 RO | 3/4 | 0-20000 for 0-20000µS/cm | N/A |
| SALINITY | 0x0003/3 | UINT16 RO | 3/4 | 0-20000 for 0-20000mg/L | N/A |
| TDS | 0x0004/4 | UINT16 RO | 3/4 | 0-20000 for 0-20000mg/L | N/A |
| EPSILON | 0x0005/5 | UINT16 RO | 3/4 | 0-30000 for 0.00-300.00 | N/A |
| RESERVED | 0x0006/6 | UINT16 RO | 3/4 | N/A | 0 |
| VWC_RAWAD | 0x0007/7 | UINT16 RO | 3/4 | 0-4096 for 0-4096 | N/A |
| RESERVED | 0x0008/8 | UINT16 RO | 3/4 | N/A | 0 |
| POREEC | 0x0009/9 | UINT16 RO | 3/4 | 0-32000 for 0-32000µS/cm | N/A |
| SOILTYPE | 0x0020/32 | UINT16 R/W | 3/6/16 | 0-5 0:Mineral 1:Sand 2:Clay 3:Organic 4:User Defined Curve 5:Soilless(Rockwool, etc) | 0:Mineral |
| TEMPUNIT | 0x0021/33 | UINT16 R/W | 3/6/16 | 0:°C 1:°F | 0 |
| ECTEMPCOFF | 0x0022/34 | UINT16 R/W | 3/6/16 | 0-100 for 0.0%-10.0% | 20(2%) |
| SALINITYCOFF | 0x0023/35 | UINT16 R/W | 3/6/16 | 0-100 for 0.00-1.00 | 55(0.55) |
| TDSCOFF | 0x0024/36 | UINT16 R/W | 3/6/16 | 0-100 for 0.00-1.00 | 50(0.5) |
| MEASURE METHOD | 0x0025/37 | UINT16 R/W | 3/6/16 | 0: Continuous Meas. 1: Request Meas. | 1 |
| EPSILON OFFSET | 0x0026/38 | UINT16 R/W | 3/6/16 | Epsilon Value when Substrate VWC is 0% 0-200 for 0-20.00 | 58(5.8) |
| SLAVEADDRESS | 0x0200/512 | UINT16 R/W | 3/6/16 | 0-255 | 1 |
| BAUDRATE | 0x0201/513 | UINT16 R/W | 3/6/16 | 0-6 0:1200bps 1:2400bps 2:4800bps 3:9600bps 4:19200bps 5:38400bps | 3:9600bps |
| PROTOCOL | 0x0202/514 | UINT16 R/W | 3/6/16 | 0-1 0:Modbus RTU 1: Modbus ASCII | 0:Modbus RTU |
| PARITY | 0x0203/515 | UINT16 R/W | 3/6/16 | 0-2 0:None 1:Even 2:Odd | 0:None Parity |
| DATABITS | 0x0204/516 | UINT16 R/W | 3/6/16 | 1 1:8 databits | 1:8 databits |
| STOPBITS | 0x0205/517 | UINT16 R/W | 3/6/16 | 0-1 0:1 stopbit 1:2 stopbits | 0:1 stopbit |
| RESPONSE DELAY | 0x0206/518 | UINT16 R/W | 3/6/16 | 0-255 for 0-2550 milliseconds | 0 |
| ACTIVEOUTPUT INTERVAL | 0x0207/519 | UINT16 R/W | 3/6/16 | 0-255 for 0-255 seconds | 0 |
4-byte floating point WITH THE LOW WORD FIRST (CDAB order). Despite the «FLOAT» name, they are NOT standard IEEE 754: for that, use the 0x1100 block below.
| Parameters | Register Addr. (HEX/DEC) | Data Type | Modbus Function Code(DEC) | Range and Comments | Default Value |
|---|---|---|---|---|---|
| TEMPERATURE FLOAT | 0x1000/4096 | FLOAT RO | 3/4 | -40.00-80.00 (°C) | N/A |
| VWC_FLOAT | 0x1002/4098 | FLOAT RO | 3/4 | 0.00-100.00 (%) | N/A |
| EC_FLOAT | 0x1004/4100 | FLOAT RO | 3/4 | 0-20000 (µS/cm) | N/A |
| SALINITY FLOAT | 0x1006/4102 | FLOAT RO | 3/4 | 0-20000(mg/L) | N/A |
| TDS_FLOAT | 0x1008/4104 | FLOAT RO | 3/4 | 0-20000(mg/L) | N/A |
| EPSILON FLOAT | 0x100A/4106 | FLOAT RO | 3/4 | 0.00-300.00 | N/A |
| RESERVED FLOAT | 0x100C/4108 | FLOAT RO | 3/4 | RESERVED | 0 |
| VWC_RAWAD FLOAT | 0x100E/4110 | FLOAT RO | 3/4 | 0.00-4096.00 | N/A |
| RESERVED FLOAT | 0x1010/4112 | FLOAT RO | 3/4 | RESERVED | 0 |
| POREEC FLOAT | 0x1012/4114 | FLOAT RO | 3/4 | 0-32000 (µS/cm) | N/A |
| RESERVED FLOAT | 0x1014/4116 | FLOAT RO | 3/4 | RESERVED | 0 |
| RESERVED FLOAT | 0x1016/4118 | FLOAT RO | 3/4 | RESERVED | 0 |
| RESERVED FLOAT | 0x1018/4120 | FLOAT RO | 3/4 | RESERVED | 0 |
| RESERVED FLOAT | 0x101A/4122 | FLOAT RO | 3/4 | RESERVED | 0 |
| RESERVED FLOAT | 0x101C/4124 | FLOAT RO | 3/4 | RESERVED | 0 |
| RESERVED FLOAT | 0x101E/4126 | FLOAT RO | 3/4 | RESERVED | 0 |
4-byte floating point in STANDARD IEEE 754 (ABCD order). Despite the «FLOAT INVERSE» name, these are the ones a PLC or a gateway expects.
| Parameters | Register Addr. (HEX/DEC) | Data Type | Modbus Function Code(DEC) | Range and Comments | Default Value |
|---|---|---|---|---|---|
| TEMPERATURE FLOAT_INVERSE | 0x1100/4352 | FLOAT_INVERSE RO | 3/4 | -40.00-80.00 (°C) | N/A |
| VWC_FLOAT_INVERSE | 0x1102/4354 | FLOAT_INVERSE RO | 3/4 | 0.00-100.00 (%) | N/A |
| EC_FLOAT_INVERSE | 0x1104/4356 | FLOAT_INVERSE RO | 3/4 | 0-20000 (µS/cm) | N/A |
| SALINITY FLOAT_INVERSE | 0x1106/4358 | FLOAT_INVERSE RO | 3/4 | 0-20000(mg/L) | N/A |
| TDS_FLOAT_INVERSE | 0x1108/4360 | FLOAT_INVERSE RO | 3/4 | 0-20000(mg/L) | N/A |
| EPSILON FLOAT_INVERSE | 0x110A/4362 | FLOAT_INVERSE RO | 3/4 | 0.00-300.00 | N/A |
| RESERVED FLOAT_INVERSE | 0x110C/4364 | FLOAT_INVERSE RO | 3/4 | RESERVED | 0 |
| VWC_RAWAD FLOAT_INVERSE | 0x110E/4366 | FLOAT_INVERSE RO | 3/4 | 0.00-4096.00 | N/A |
| RESERVED FLOAT_INVERSE | 0x1110/4368 | FLOAT_INVERSE RO | 3/4 | RESERVED | 0 |
| POREEC FLOAT_INVERSE | 0x1112/4370 | FLOAT_INVERSE RO | 3/4 | 0-32000 (µS/cm) | N/A |
| RESERVED FLOAT_INVERSE | 0x1114/4372 | FLOAT_INVERSE RO | 3/4 | RESERVED | 0 |
| RESERVED FLOAT_INVERSE | 0x1116/4374 | FLOAT_INVERSE RO | 3/4 | RESERVED | 0 |
| RESERVED FLOAT_INVERSE | 0x1118/4376 | FLOAT_INVERSE RO | 3/4 | RESERVED | 0 |
| RESERVED FLOAT_INVERSE | 0x111A/4378 | FLOAT_INVERSE RO | 3/4 | RESERVED | 0 |
| RESERVED FLOAT_INVERSE | 0x111C/4380 | FLOAT_INVERSE RO | 3/4 | RESERVED | 0 |
| RESERVED FLOAT_INVERSE | 0x111E/4382 | FLOAT_INVERSE RO | 3/4 | RESERVED | 0 |
The following registers hold the same values as registers 0x0000-0x0009, only in a different order.
| Parameters | Register Addr. (HEX/DEC) | Data Type | Modbus Function Code(DEC) | Range and Comments | Default Value |
|---|---|---|---|---|---|
| TEMPERATURE | 0x1200/4608 | INT16 RO | 3/4 | -4000-8000 for -40.00~80.00°C | N/A |
| VWC | 0x1201/4609 | UINT16 RO | 3/4 | 0-10000 for 0-100% | N/A |
| EC | 0x1202/4610 | UINT16 RO | 3/4 | 0-20000 for 0-20000µS/cm | N/A |
| POREEC | 0x1203/4611 | UINT16 RO | 3/4 | 0-32000 for 0-32000µS/cm | N/A |
| EPSILON | 0x1204/4612 | UINT16 RO | 3/4 | 0-30000 for 0.00~300.00 | N/A |
| SALINITY | 0x1205/4613 | UINT16 RO | 3/4 | 0-20000 for 0-20000mg/L | N/A |
| TDS | 0x1206/4614 | UINT16 RO | 3/4 | 0-20000 for 0-20000mg/L | N/A |
| RESERVED | 0x1207/4615 | UINT16 RO | 3/4 | N/A | 0 |
| VWC_RAWAD | 0x1208/4616 | UINT16 RO | 3/4 | 0-4096 for 0-4096 | N/A |
| RESERVED | 0x1209/4617 | UINT16 RO | 3/4 | N/A | 0 |
- UINT16:16 bit unsigned integer
- INT16:16bit signed integer
- RO: Register is Read Only
- R/W: Register is Read/Write
- HEX: Hexadecimal (data with 0x/0X prefix)
- DEC: Decimal
- FLOAT: If IEEE754 little-endian byte order is [A,B,C,D], the FLOAT format is [B,A,D,C]
- FLOAT_INVERSE: If IEEE754 little-endian byte order is [A,B,C,D], the FLOAT_INVERSE format is [D,C,B,A]
6.3Detailed description of Modbus registers
| TEMPERATURE — Temperature Value | ||
|---|---|---|
| Data Range | -4000-8000 For -40.00~80.00(°C) | Default: N/A |
| Parameter Storage | N/A | |
- Note: Temperature value (Binary complement).
- Example: When REGISTER = 0x0702 (HEX format), then
- VALUE=(0x07*256+0x02)/100=17.94°C. When REGISTER=FF05H (HEX format), then
- VALUE=((0xFF*256+0x05)-0xFFFF-0x01)/100 =(0xFF05-0xFFFF-0x01)/100=-2.51°C.
| TEMPERATURE_FLOAT — Temperature Value, FLOAT Format TEMPERATURE_FLOAT_INVERSE — Temperature Value, FLOAT_INVERSE Format | ||
|---|---|---|
| Data Range | -40.00-80.00 | Default: N/A |
| Parameter Storage | N/A | |
| VWC — Volumetric Water Content | ||
|---|---|---|
| Data Range | 0-10000 For 0-100% | Default: N/A |
| Parameter Storage | N/A | |
- Note: Volumetric Water Content value.
- Example: When REGISTER = 0x0702 (HEX format), then VALUE=(0x07*256+0x02)/100=17.94%
| VWC_FLOAT — Volumetric Water Content, FLOAT Format VWC_FLOAT_INVERSE — Volumetric Water Content, FLOAT_INVERSE Format | ||
|---|---|---|
| Data Range | 0.00-100.00 (%) | Default: N/A |
| Parameter Storage | N/A | |
- Note: Volumetric Water Content value.
| EC — Electrical Conductivity | ||
|---|---|---|
| Data Range | 0-20000 For 0-20000 (µS/cm) | Default: N/A |
| Parameter Storage | N/A | |
- Note: Electrical Conductivity.
- Example: When REGISTER = 0x0702 (HEX format), then VALUE=(0x07*256+0x02)=1794µS/cm
| EC_FLOAT — Electrical Conductivity, FLOAT Format EC_FLOAT_INVERSE — Electrical Conductivity, FLOAT_INVERSE Format | ||
|---|---|---|
| Data Range | 0-20000 (µS/cm) | Default: N/A |
| Parameter Storage | N/A | |
- Note: Electrical Conductivity.
| SALINITY — Salinity | ||
|---|---|---|
| Data Range | 0-20000 For 0-20000 (mg/L) | Default: N/A |
| Parameter Storage | N/A | |
- Note: Salinity
- Example: When REGISTER = 0x0702 (HEX format), then VALUE=(0x07*256+0x02)=1794mg/L.
- Salinity is derived from EC: SALINITY=EC*SALINITYCOFF, where SALINITYCOFF is a coefficient (see SALINITYCOFF).
| SALINITY_FLOAT — Salinity, FLOAT Format SALINITY_FLOAT_INVERSE — Salinity, FLOAT_INVERSE Format | ||
|---|---|---|
| Data Range | 0-20000 (mg/L) | Default: N/A |
| Parameter Storage | N/A | |
- Note: Salinity
| TDS — Total Dissolved Solids | ||
|---|---|---|
| Data Range | 0-20000 For 0-20000 (mg/L) | Default: N/A |
| Parameter Storage | N/A | |
- Note: Total Dissolved Solids
- Example: When REGISTER = 0x0702 (HEX format), then VALUE=(0x07*256+0x02)=1794mg/L.
- TDS is derived from EC: TDS=EC*TDSCOFF, where TDSCOFF is a coefficient (see TDSCOFF).
| TDS_FLOAT — Total Dissolved Solids, FLOAT Format TDS_FLOAT_INVERSE — Total Dissolved Solids, FLOAT_INVERSE Format | ||
|---|---|---|
| Data Range | 0-20000 (mg/L) | Default: N/A |
| Parameter Storage | N/A | |
- Note: Total Dissolved Solids
| EPSILON — Epsilon | ||
|---|---|---|
| Data Range | 0-30000 for 0.00-300.00 | Default: N/A |
| Parameter Storage | N/A | |
- Note: Epsilon
- Example: When REGISTER = 0x0702 (HEX format), then VALUE=(0x07*256+0x02)/100=17.94.
- VWC is derived from EPSILON (VWC is a function of EPSILON). This value is used for self-calibration.
| EPSILON_FLOAT — Epsilon, FLOAT Format EPSILON_FLOAT_INVERSE — Epsilon, FLOAT_INVERSE Format | ||
|---|---|---|
| Data Range | 0.00-300.00 | Default: N/A |
| Parameter Storage | N/A | |
- Note: Epsilon
| VWC_RAWAD — VWC Raw AD | ||
|---|---|---|
| Data Range | 0-4096 for 0-4096 | Default: N/A |
| Parameter Storage | N/A | |
- Note: Water Content Raw AD value
| VWC_RAWAD_FLOAT — VWC Raw AD, FLOAT Format VWC_RAWAD_FLOAT_INVERSE — VWC Raw AD, FLOAT_INVERSE Format | ||
|---|---|---|
| Data Range | 0-4096.00 | Default: N/A |
| Parameter Storage | N/A | |
- Note: Water Content Raw AD value
| POREEC — Pore EC | ||
|---|---|---|
| Data Range | 0-32000 (µS/cm) | Default: N/A |
| Parameter Storage | N/A | |
- Note: Pore EC
| POREEC_FLOAT — Pore EC, FLOAT Format POREEC_FLOAT_INVERSE — Pore EC, FLOAT_INVERSE Format | ||
|---|---|---|
| Data Range | 0-32000 (µS/cm) | Default: N/A |
| Parameter Storage | N/A | |
- Note: Pore EC
| SOILTYPE — Soil Type | ||
|---|---|---|
| Data Range | 0-5 0:Mineral 1:Sand 2:Clay 3:Organic 4:User Defined Curve 5:Soilless(Rockwool, etc) | Default: 0:Mineral |
| Parameter Storage | YES | |
- Note: Soil Type.
| TEMPUNIT — Temperature Unit | ||
|---|---|---|
| Data Range | 0:°C 1:°F | Default: 0 |
| Parameter Storage | YES | |
- Note: Temperature Unit.
| ECTEMPCOFF — EC Temperature Compensation Coefficient | ||
|---|---|---|
| Data Range | 0-100 for 0.0%-10.0% | Default: 20(2%) |
| Parameter Storage | YES | |
- Note: EC Temperature Compensation Coefficient
| SALINITYCOFF — Salinity Coefficient | ||
|---|---|---|
| Data Range | 0-100 for 0.00-1.00 | Default: 55(0.55) |
| Parameter Storage | YES | |
- Note: Salinity Coefficient.
| TDSCOFF — TDS Coefficient | ||
|---|---|---|
| Data Range | 0-100 for 0.00-1.00 | Default: 50(0.50) |
| Parameter Storage | YES | |
- Note: TDS Coefficient.
| MEASUREMETHOD — Measure Method | ||
|---|---|---|
| Data Range | 0: Continuous 1: Request | Default: 1 |
| Parameter Storage | YES | |
- Note: In Continuous mode, the sensor keeps converting VWC, EC and temperature and updating its internal data, so it is always ready to be read. In Request mode, it converts the VWC, EC and temperature data when it receives the data request command from the master.
| EPSILON_OFFSET — Epsilon Offset | ||
|---|---|---|
| Data Range | 0-200 for 0-20.00 | Default: 58(5.8) |
| Parameter Storage | YES | |
- Note: Epsilon Value when Substrate VWC is 0%
| SLAVEADDRESS — Serial Comm Slave Address | ||
|---|---|---|
| Data Range | 0-255 | Default: 1 |
| Parameter Storage | YES | |
- Note: power the sensor off and on again for the new setting to take effect.
| BAUDRATE — Serial Comm Baudrate | ||
|---|---|---|
| Data Range | 0-5 0:1200bps 1:2400bps 2:4800bps 3:9600bps 4:19200bps 5:38400bps | Default: 3 |
| Parameter Storage | YES | |
- Note: power the sensor off and on again for the new setting to take effect.
| PROTOCOL — Serial Comm Protocol | ||
|---|---|---|
| Data Range | 0-1 0:Modbus RTU 1: Modbus ASCII | Default: 0 |
| Parameter Storage | YES | |
- Note: power the sensor off and on again for the new setting to take effect.
| PARITY — Serial Comm Parity | ||
|---|---|---|
| Data Range | 0-2 0:NONE 1:EVEN 2:ODD | Default: 0 |
| Parameter Storage | YES | |
- Note: power the sensor off and on again for the new setting to take effect.
| DATABITS — Serial Comm Databits | ||
|---|---|---|
| Data Range | 1:8 databits | Default: 1 |
| Parameter Storage | YES | |
- Note: power the sensor off and on again for the new setting to take effect.
| STOPBITS — Serial Comm Stopbits | ||
|---|---|---|
| Data Range | 0-1 0:1 stopbit 1:2 stopbits | Default: 0 |
| Parameter Storage | YES | |
- Note: power the sensor off and on again for the new setting to take effect.
| RESPONSEDELAY — Serial Comm Response Delay | ||
|---|---|---|
| Data Range | 0-255 for 0-2550 milliseconds, 0 for disabled | Default: 0 |
| Parameter Storage | YES | |
- Note: power the sensor off and on again for the new setting to take effect.
- Note: The sensor waits this delay before answering a request from the master.
- Example: when set to 5, the sensor waits 5*10ms=50ms before answering.
| ACTIVEOUTPUTINTERVAL — Serial Comm Active Output Interval time | ||
|---|---|---|
| Data Range | 0-255 for 0-255 seconds, 0 for disabled | |
| Parameter Storage | YES | |
- Note: power the sensor off and on again for the new setting to take effect.
- Note: The sensor sends its data on its own, without any request from the master.
- Note: Only ONE sensor may be on the RS485 bus in this mode, otherwise the data will collide and be corrupted.
- Note: Refer to SETTING mode to exit the Active Output Mode.
- Example: when set to 5, the sensor sends its data every 5 seconds without any request from the master.
6.4Modbus function codes
In the descriptions below, values starting with 0X/0x are hexadecimal.
6.4.1Function Code 3 Protocol Example
Master Request:AA 03 RRRR NNNN CCCC
| AA | 1 byte | Slave Address, 0-255 |
| 0x03 | 1 byte | Function Code 3 |
| RRRR | 2 byte | Starting Register Addr |
| NNNN | 2 byte | Quantity of Register to read |
| CCCC | 2 byte | CRC CHECKSUM |
Slave Response:AA 03 MM VV0 VV1 VV2 VV3... CCCC
| AA | 1 byte | Slave Address, 0-255 |
| 0x03 | 1 byte | Function Code 3 |
| MM | 1 byte | Register Data Byte Count |
| VV0,VV1 | 2 byte | Register Value (High8bits first) |
| VV2,VV3 | 2 byte | Register Value (High8bits first) |
| ... | ... | ... |
| CCCC | 2 byte | CRC CHECKSUM |
| Example: read registers 0x0200-0x0201, i.e. the slave address and baudrate. |
|---|
Master Request:01 03 0200 0002 C5B3
| Slave Addr. | 1 byte | 0x01 |
| Function Code | 1 byte | 0x03 |
| Starting Register Addr. | 2 byte | 0x0200 |
| Quantity of Register to read | 2 byte | 0x0002 |
| Checksum | 2 byte | 0xC5B3 |
Slave Response:01 03 04 00 01 00 03 EB F2
| Slave Addr. | 1 byte | 0x01 |
| Function Code | 1 byte | 0x03 |
| Register Data Byte Count | 1 byte | 0x04 |
| Register Value: Address | 2 byte | 0x00 (HIGH 8 Bits) 0x01 (LOW 8 Bits) |
| Register Value: Baudrate | 2 byte | 0x00 (HIGH 8 Bits) 0x03 (LOW 8 Bits) |
| Checksum | 2 byte | 0xEB F2 |
6.4.2Function code 4 – protocol example
Master Request:AA 04 RRRR NNNN CCCC
| AA | 1 byte | Slave Address, 0-255 |
| 0x04 | 1 byte | Function Code 4 |
| RRRR | 2 byte | Starting Register Addr |
| NNNN | 2 byte | Quantity of Register to read |
| CCCC | 2 byte | CRC CHECKSUM |
Slave Response:AA 04 MM VV0 VV1 VV2 VV3... CCCC
| AA | 1 byte | Slave Address, 0-255 |
| 0x04 | 1 byte | Function Code 4 |
| MM | 1 byte | Register Data Byte Count |
| VV0,VV1 | 2 byte | Register Value (High8bits first) |
| VV2,VV3 | 2 byte | Register Value (High8bits first) |
| ... | ... | ... |
| CCCC | 2 byte | CRC CHECKSUM |
| Example: read registers 0x0000-0x0002, i.e. temperature, soil moisture and EC. |
|---|
Master Request:01 04 0000 0003 B00B
| Slave Addr. | 1 byte | 0x01 |
| Function Code | 1 byte | 0x04 |
| Starting Register Addr. | 2 byte | 0x0000 |
| Quantity of Register to read | 2 byte | 0x0003 |
| Checksum | 2 byte | 0xB00B |
Slave Response:01 04 06 08 90 0E 93 02 4E D2 57
| Slave Addr. | 1 byte | 0x01 |
| Function Code | 1 byte | 0x04 |
| Register Data Byte Count | 1 byte | 0x06 |
| Register Value: Temperature | 2 byte | 0x08 90 |
| Register Value: Soil Moisture | 2 byte | 0x0E 93 |
| Register Value: EC | 2 byte | 0x02 4E |
| Checksum | 2 byte | 0xD2 57 |
Temperature = (0x08*256+0x90)/100 = 2192/100 = 21.92 °C Soil Moisture = (0x0E*256+0x93)/100 = 3731/100 = 37.31% EC = 0x02*256+0x4E = 2*256+78 = 590 µS/cm
6.4.3Function code 6 – protocol example
Master Request:AA 06 RRRR VVVV CCCC
| AA | 1 byte | Slave Address, 0-255 |
| 0x06 | 1 byte | Function Code 6 |
| RRRR | 2 byte | Register Addr (High8bits first) |
| VVVV | 2 byte | Register Value (High8bits first) |
| CCCC | 2 byte | CRC CHECKSUM |
Slave Response:AA 06 RRRR VVVV CCCC
| AA | 1 byte | Slave Address, 0-255 |
| 0x06 | 1 byte | Function Code 6 |
| RRRR | 2 byte | Register Addr (High8bits first) |
| VVVV | 2 byte | Register Value (High8bits first) |
| CCCC | 2 byte | CRC CHECKSUM |
| Example: write register 0x0021 to set the temperature unit to °F. |
|---|
Master Request:01 06 0021 0001 1800
| Slave Addr. | 1 byte | 0x01 |
| Function Code | 1 byte | 0x06 |
| Register Addr. | 2 byte | 0x0021 (High8bits first) |
| Register Value | 2 byte | 0x0001 (High8bits first) |
| Checksum | 2 byte | 0x1800 |
Response:01 06 0021 0001 1800
| Slave Addr. | 1 byte | 0x01 |
| Function Code | 1 byte | 0x06 |
| Register Addr. | 2 byte | 0x0021 (High8bits first) |
| Register Value | 2 byte | 0x0001 (High8bits first) |
| Checksum | 2 byte | 0x1800 |
6.4.4Function code 16 – protocol example
Master Request:AA 10 RRRR NNNN MM VVVV1 VVVV2 ...CCCC
| AA | 1 byte | Slave Address, 0-255 |
| 0x10 | 1 byte | Function Code 0x10 |
| RRRR | 2 byte | Starting Register Addr |
| NNNN | 2 byte | Quantity of Register to write |
| MM | 1 byte | Register Data Byte Count |
| VVVV1 | 2 byte | Register Value (High8bits first) |
| VVVV2 | 2 byte | Register Value (High8bits first) |
| ... | ... | ... |
| CCCC | 2 byte | CRC CHECKSUM |
Slave Response:AA 10 RRRR NNNN CCCC
| AA | 1 byte | Slave Address, 0-255 |
| 0x10 | 1 byte | Function Code 0x10 |
| RRRR | 2 byte | Starting Register Addr |
| NNNN | 2 byte | Quantity of Register to write |
| CCCC | 2 byte | CRC CHECKSUM |
| Example: write registers 0x0200-0x0201 to set the slave address to 1 and the baudrate to 19200bps. |
|---|
Master Request:01 10 0200 0002 04 0001 0004 BACC
| Slave Addr. | 1 byte | 0x01 |
| Function Code 0x10 | 1 byte | 0x10 (HEX) |
| Starting Register Addr | 2 byte | 0x0200 (High8bits first) |
| Quantity of Register to write | 2 byte | 0x0002 (High8bits first) |
| Register Data Byte Count | 1 byte | 0x04 |
| Register Value: Slave Address | 2 byte | 0x0001 |
| Register Value: Baudrate | 2 byte | 0x0004 |
| Checksum | 2 byte | 0xBACC |
Slave Response:01 10 0200 0002 4070
| Slave Addr. | 1 byte | 0x01 |
| Function Code 0x10 | 1 byte | 0x10 |
| Starting Register Addr | 2 byte | 0x0200 (High8bits first) |
| Quantity of Register to write | 2 byte | 0x0002 (High8bits first) |
| Checksum | 2 byte | 0x4070 |
Gallery
Documentation
Does it fit your case?
Tell us where the SX-HEC20 is going and what you need to integrate it with. We’ll tell you whether it’s the right device — and if not, which one is.