Introduction
Sequence of events (SOE) software applications help you understand a chain of occurrences that can lead to potentially unsafe process conditions and possible shutdowns.
Many process events can be generated quickly when a system does not behave according to design or expectations. In this case, the X80 BMXERT1604 time stamping module records all events with a time stamp accuracy of 1ms. Data is stored in the module until it is transmitted by the application. The BMENOR2200H module can call this event data and transfer it to an external supervisor system (SCADA, DCS, etc.) through the RTU protocol.
This topic describes SOE in the transfer of the time stamping function from a BMXERT1604 module to the RTU protocol in a Control Expert project that includes a BMENOR2200H module.
Process Overview
This is a broad overview of the time stamping SOE process.
Stage |
Description |
---|---|
1 |
Use a DFB to read and send a time stamping event from a BMXERT1604 module to a BMENOR2200H module. In a single PLC cycle, a DFB instance processes a maximum of one time stamping event. |
2 |
Based on the structure of the raw buffer read from the time stamping module, you can extract and convert the data. |
3 |
Use a T850_TO_T870 EFB to convert the time stamping format into IEC60870 time format. |
GET_TS_EVT_M Function Block
Use a GET_TS_EVT_M
function
block to read a time stamping event from a specific BMXERT1604 module:

DONE
parameter turns to TRUE
, the event
has been read and stored in the buffer. You can move to the next step.Refer to the EcoStruxure Control
Expert System Block Library for detailed
descriptions of the GET_TS_EVT_M
function
block parameters.
Event Format in Response Buffer
This table describes the format of the time stamping event in the response buffer:
Data Structure |
Element |
Type |
Definition |
---|---|---|---|
Raw buffer format |
Reserved |
BYTE |
Reserved |
Value |
BYTE |
Input value |
|
Event ID |
WORD |
Event ID defined by user or channel number |
|
SecondSinceEpoch |
DWORD |
The interval in seconds continuously counted from the epoch 1970-01-01 00:00:00 UTC |
|
FracOfSec_L |
WORD |
The fraction of the current second when the value of the TimeStamp has been determined. The fraction of the second is calculated as (SUM from i=0 to 23 of bi*2**—(i+1) s). |
|
FracOfSec_H |
BYTE |
||
TimeQuality |
BYTE |
Time Quality:
|
Extract the Time Stamp Event
Based on the raw buffer structure read from the time stamping
module, you can extract and convert the data. First, extract the value
of the binary point as shown in this example, which assumes that the
first event starts from Buffer[0]
:

Extract the T850 Data
To extract the T850 data, as shown in this typical application example, put the binary point value in the right position of the DDT based on the BMXERT1604 module’s address and channel in the raw buffer:

Convert the Time Stamp Format
To convert the time stamp format from IEC61850 to IEC60870, use the T850_TO_T870 EFB as follows, where the input parameter is the 850 time format and the output parameter is the 870 time format:

This table describes the structure of the 850 and 870 time format:
Data Structure |
Element |
Type |
Definition |
---|---|---|---|
TIME_870_FORMAT |
ms |
WORD |
Milliseconds: 0-59999 ms |
min |
BYTE |
Minutes: 0-59 min, the highest bit is invalid bit, 1: invalid time, 0: valid time |
|
hour |
BYTE |
Hour: 0-23 h, SU is not supported |
|
day |
BYTE |
Day: 1-31, day of week is not supported |
|
mon |
BYTE |
Month: 1-12 Year: 0-99 |
|
year |
BYTE |
||
reserved |
BYTE |
Reserved |
|
TIME_850_FORMAT |
Seconds |
DWORD |
Seconds since 1970, confirm the time stamp is later than 2000. |
Ms_Quality |
DWORD |
|
NOTE: The T870_TO_T850 function block does not consider time zone or summer when converting time. Set the T870 value to the DNP point’s timestamp as follows:

Typical SOE Application Example
This screenshot shows the use of the Send_V
command to transfer output of GET_TS_EVT_M
(Buffer raw) to the RTU points in a typical
SOE application, in which read buffer and translation Time Stamp format
in Send_V
are equal to the function
blocks in previous examples:
