Enron Modbus Protocol
What is Enron Modbus?
Enron Modbus is a modification to the standard Modicon modbus communication protocol. It was developed by Enron Corporation. The main differences between the two protocols is the numbering of the register addresses, the support of 32 bit registers as well as 16 bit, and the ability to transmit Event logs and Historical data.
Enron Data Tables
In Enron Modbus, there is a different table for each of the different data types.
Information is stored in the Slave device in four different tables.
One tables stores on/off discrete values (boolean variables)
and three tables store numerical values.
Each value in a table has a data address and a corresponding register number.
| Register Numbers (decimal) |
Data Addresses (hexadecimal) |
Table Name | Data size | Function code to Read |
Function code to Set Single |
|---|---|---|---|---|---|
| 1001-1999 | 03E9 to 07CF | Boolean variables | 1 bit | FC01 | FC05 |
| 3001-3999 | 0BB9 to 0F9F | Short integer variables | 16 bit | FC03 | FC06 |
| 5001-5999 | 1389 to 176F | Long integer variables | 32 bit | FC03 | FC06 |
| 7001-7999 | 1B59 to 1F3F | Floating point variables | 32 bit | FC03 | FC06 |
Unlike Standard Modbus, in Enron Modbus the Register Numbers (in decimal)
are equal to the Data Addresses (in hexadecimal).
For example, Register Number 7001 has Data Address
1B59
(7001 in hexadecimal).
The offset is 0 for all Enron Modbus Registers.
Enron Message Examples
Follow the links in the above table and below (for events and history)
to see examples of the requests and responses.
Events
There are two kinds of events, Operator events and Alarm events.
Operator events are changes to mapped items.
Therefore, if you want to record an event when a certain value changes,
that value must be included in the map.
Inversely, you cannot define which mapped items create events
because all mapped items create events when they are changed.
Alarm events occur when mapped items exceed limits.
The limits are defined in the Enron Modbus slave device.
The Slave device will store at least 100 of the most current events, including both operator and alarm events.. A numeric variable called the Event Index is typically mapped to a 7000 series numerical variable so it can be read. The Event Index is the number of events that have occurred since the event buffer was last read.
The response from the slave will contain all the events that have occurred since the last collection. If more than 255 events have occurred, only the earliest 255 will be transmitted. If no events have occurred, the slave sends a response containing no data values.
After an event transmission, the master can send an acknowledgement message to the slave to reset the Event Index and clear the event log.
Event Messages
There is only one command for both types of events. The type of event is shown in the response.
History
The Daily and Hourly Archives are lists of historical item values
with specific time stamps.
The items included in the lists are defined in the modbus map.
There are two types of history tables, Daily History and Hourly History.
The tables sizes are also defined in the slave device.
A Daily Archive table records are the values for the historical items
at the end of each day.
A Hourly Archive table records are the values at the end of each hour.
Therefore an hourly table would contain 24 times more records than a
daily table for the same time period.
Each record is given a specific record number. This number wraps back to zero when the table fills up and the device starts writing over old data. The most current record numbers are recoded in variables called the Hourly Index and Daily Index. These index variables are typically included in the map as 7000 series numerical variables so they can be read.
What else?
If you read this far, We would love to hear your comments. Please send an email to info@simplymodbus.ca and let us know what you found helpful and what topics we could add, expand or clarify.