It is recommended to place the 1756-IB16-SOE in FIFO mode. The module in FIFO mode will return the UCT time stamp. Also, an additional conversion from CST to UCT is not necessary.
The 1756-IB16-SOE manual shows how new SOE data is received in the 1756-IB16-SOE card:
Allows NewData bits in the Input word to function as intended. NewData bits are set when a transition occurs and clear only after they are acknowledged via the NewDataAck bit. Typically, the following events occur:
A) An event occurs on an input.
B) The Sequence of Events module sets the NewData bit for the input where the event occurred.
C) The controller records the new data.
D) The controller acknowledges the new data by causing a 0 to 1 transition on the corresponding NewDataAck bit.
E) The NewData bit clears.
F) When another event occurs on the input, this sequence starts over.
The controller must cause a 0-to-1 transition in this bit to acknowledge new data for an input. In other words, if the NewDataAck bit is 0 when new data is received, the controller must change this bit to 1 to acknowledge the data. If NewDataAck bit is 1 when new data is received, the controller must change this bit to 0 and then to 1 to acknowledge the new data. "
With this in mind, programming an event in the MVI56-DNP would entail:
1) The SOE module will have a new event occur (Bullet A above)
2) The SOE module sets the NewData bit for the input where the event occurred (Bullet B above)
3) The Controller records the new data (Bullet C above). This is where the module will build a 9962 block.
4) The Time Stamped value (UCT time) will be copied to the tag DNP.SOE_BI_Events.EventData.Time_64BIT
NOTE: If not using FIFO mode, the value returned from the 1756-IB16-SOE may need to be converted to UCT time using the CLX_ADD_64 Add-on Instruction. If in FIFO mode, the 1756-IB16-SOE card can be configured to return the time stamp in UCT time to pass to the MVI56-DNP module.
5) The "EventPoint" from the Local:3:I.EventPoint will need to be copied to "DNP.SOE_BI_Events.EventData.DataPoint" tag... This tag represents the point on the DNP network.
6) The value of the point will need to be transferred... This may come from the Local:y:I.EventData tag, or from the Local:y:I.Data.x tag. In either case, the value of the point to represent on the DNP network will need to be placed in the tag "DNP.SOE_BI_Events.EventData.Value" tag.
At this point, one event has been built to send to the DNP module. One can now confirm the event to the 1756-IB16-SOE module by copying the "Local:y:I.EventNumber" to the tag "Local:y:O.EventAck" or by setting the "Local:y:O.NewDataAck" bit that corresponds to the bit from the SOE card.
7) If the "Local:y:I.EventsQueuedCount" still has a value, repeat steps 1-6 above, placing information into "DNP.SOE_BI_Events.EventData- for each event.
8) Set the "DNP.SOE_BI_Events.EventCount" value to equal to the number of events built in this block. If tags "DNP.SOE_BI_Events.EventData-" have been used, set an "EventCount" of 12.
9) Trigger the flag "DNP.Enable_64bit_Event_70timebase" to build the 9962 block to send to the MVI56-DNP module.
10) When the module confirms the 9962 block in the DNP.LastRead field, one can unlatch the flag set in step 9, and begin to build a new block of data to send to the module.
This how the module must receive the block for the 9962 event data. How this corresponds to the 1756-IB16-SOE module is up to the setting of the SOE card. FIFO mode is typically used because of the returning of a UCT time stamp. However, with the CST_ADD_64 Add on instruction, one may be able to use the standard mode and place events in the queue.
The management of pulling the queue from the 1756-IB16-SOE card and placing this in the MVI56-DNP module will need to be done in the ladder logic.