# DRY 4.1 FW 4.0.0 Modbus TCP Communication Interface
# Introduction
Refer to the Reference section for details of the Modbus protocol.
This document describes public Modbus TCP implementation for Enapter Dryer 4.1 and assume understanding of TCP/IP and Modbus protocols.
# Physical Interface Connection
Connect Ethernet cable to the Ethernet Port of Enapter Dryer 4.1.
# TCP/IP Connection Settings
By default DHCP client is enabled therefore IP address will be assigned automatically by DHCP server available in the connected network.
It is recommended to set DHCP reservation based on MAC address of the Dryer.
Configuration of the Static IP is possible using Enapter Cloud and Enapter Mobile Application for iOS and Android.
# Modbus TCP/IP Connection Settings
| Option | Value | Comment |
|---|---|---|
| Modbus Port | 502 | |
| Modbus Slave Address | x | Any Modbus address can be set, does not affect communication |
# References
http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf (opens new window)
# Data Formats Used
| Primary tables | Object Type | Permission | Comment |
|---|---|---|---|
| Input Registers | 16 bit word | Read Only | |
| Holding Registers | 16 bit word | Read / Write |
# Data Bits/Registers Dimension
| Data Type | Size in Bits | Registers Used | Comment |
|---|---|---|---|
| Boolean | 16 bits | 1 register | 0 value means 'false', all other cases - 'true' |
| Uint16 | 16 bits | 1 register | |
| Uint32 | 32 bits | 2 registers | |
| Uint64 | 64 bits | 4 registers | |
| Uint128 | 128 bits | 8 registers | |
| Float32 | 32 bits | 2 registers | IEEE 754 Single-precision floating-point |
| Int32 | 32 bits | 2 registers |
# Data Encoding
Big-endian, high word first data encoding used.
This means that when more than single byte (8 bits) is transmitted, network byte order is used - the most significant byte placed at lower address (sent first).
# Implemented Modbus Functions
| Function | Code | Comment |
|---|---|---|
| Read Holding Registers | 03 | |
| Read Input Registers | 04 | |
| Write Single Holding Register | 06 | |
| Write Multiple Holding Registers | 16 |
# Set/Read Modbus IP
To set Modbus IP:
- Open the
Cloudand navigate to your site - Select DRY 4.1 you want to set Modbus IP
- Click the
Configurationmenu item - Click
Set Ethernet IP/Mask/Gateway - Enter the IP address and then click
Run. (Setting the IP address to 0.0.0.0 (or 0) enables DHCP mode) - Wait until command will be accepted
To read Modbus IP:
- Open the
Cloudand navigate to your site - Select DRY 4.1 you want to read Modbus IP
- Click the
Configurationmenu item - Click
Read Ethernet IP/Mask/Gateway - You can see Modbus IP in
Execution Payloadsection
# Modbus Table
# Input Registers (Read Only)
| Register | Data Type | Name | Comment |
|---|---|---|---|
| 2 | UInt16 | Device Version Upper | Firmware version major |
| 3 | UInt16 | Device Version Patch | Firmware version patch |
| 4 | UInt32 | Device Version Build | Firmware build ID |
| 1000 | UInt16 | State | Current dryer state |
| 1001 | UInt16 | Saved State | Saved dryer state |
| 1002 | UInt16 | State Flags | State flags |
| 1003 | UInt32 | Drying Start | Drying cycle start time |
| 1005 | UInt32 | Drying Saved | Saved drying time |
| 1007 | UInt32 | Drying Passed | Time passed in current drying cycle |
| 1009 | UInt32 | Drying Interval | Drying cycle interval |
| 1011 | UInt16 | Error | Error flags |
| 1012 | UInt16 | Warning | Warning flags |
| 1013 | UInt16 | Error Extra | Extended error flags |
| 1014 | UInt16 | Warning Extra | Extended warning flags |
| 1015 | UInt32 | Current Heap Size | Current heap memory size in bytes |
| 1017 | UInt32 | Minimum Heap Size | Minimum heap memory size in bytes |
| 1019 | UInt64 | State Save Count | Number of state saves |
| 1023 | UInt64 | Reboot Count | System reboot count |
| 1027 | UInt64 | Lifetime | System lifetime in seconds |
| 1031 | UInt64 | Button Start Time | Last start button press timestamp |
| 1035 | UInt64 | Button Stop Time | Last stop button press timestamp |
| 1039 | UInt64 | Start By Mesh Time | Last mesh start command timestamp |
| 1043 | UInt64 | Stop By Mesh Time | Last mesh stop command timestamp |
| 1047 | UInt64 | Start By Rule Engine Time | Last rule engine start timestamp |
| 1051 | UInt64 | Stop By Rule Engine Time | Last rule engine stop timestamp |
| 1055 | UInt16 | Digital Inputs | Digital inputs as bit field |
| 1056 | UInt16 | Digital Outputs | Digital outputs as bit field |
| 1057 | UInt16 | Fan 0 RPM | Fan F100 speed in RPM |
| 1058 | UInt16 | Fan 1 RPM | Fan F101 speed in RPM |
| 1059 | UInt16 | Fan 2 RPM | Fan F102 speed in RPM |
| 1060 | IEEE-754 Float32 | Temperature 0 | Temperature sensor TT00 in °C |
| 1062 | IEEE-754 Float32 | Temperature 1 | Temperature sensor TT01 in °C |
| 1064 | IEEE-754 Float32 | Pressure 0 | Input pressure PT00 in bar |
| 1066 | IEEE-754 Float32 | Pressure 1 | Output pressure PT01 in bar |
# Holding Registers (Read / Write)
| Register | Data Type | Name | Comment |
|---|---|---|---|
| 0 | UInt64 | System Time | Unix timestamp in seconds |
| 1000 | Boolean | Start Command | Start dryer operation |
| 1001 | Boolean | Stop Command | Stop dryer operation |
| 1002 | Boolean | Save Data Command | Save current data to persistent storage |
| 1003 | Boolean | Reboot Command | Reboot the dryer system |
| 1004 | Boolean | Locate Device On Command | Enable locate mode (LEDs blinking) |
| 1005 | Boolean | Locate Device Off Command | Disable locate mode |
| 1006 | Boolean | Reboot UCM Command | Reboot the UCM module |
| 4000 | Boolean | Config Begin | Start configuration transaction |
| 4001 | Boolean | Config Commit | Commit configuration changes |
| 4002 | UInt16 | Config Result | Configuration operation result (0=idle, 1=success, 2=failed) |
| 4003 | UInt32 | Ethernet IP Address | Ethernet IPv4 address |
| 4005 | UInt32 | Ethernet IP Netmask | Ethernet netmask |
| 4007 | UInt32 | Ethernet IP Gateway | Ethernet gateway address |
| 4009 | IEEE-754 Float32 | Pressure Output Min Threshold | Minimum output pressure threshold in bar |
| 4011 | IEEE-754 Float32 | Pressure Output Max Threshold | Maximum output pressure threshold in bar |
Was this page useful?