Using the OPC AE Collector with FIX32 SCADA Collectors

At the moment no OPC Alarm & Event Server exists for use with FIX32 SCADA systems. To accommodate Alarm Collection from these systems, alarms can be proxied through an iFIX node with an OPC AE Server that the Proficy Historian OPC Alarm Collector can then receive them from.

There are two different configurations that can occur in this instance.

The first would be a simple proxy in which only one FIX32 system forwards its alarms through a particular iFIX node. In this situation (see Figure 1), the OPC AE Collector can be linked to the FIX32 Data collector (see Configuration of OPC Alarm and Event Collector-Specific Fields). With the link created, any Queries created with the Excel Add-In which compare Tag & Alarm data will function correctly.

Figure: OPC Collector Linked to FIX32 Data Collector

The second configuration (see Figure 2) consists of more than one FIX32 system proxying alarms through a single iFIX node. In this situation, the 'Link To Data Collector' property cannot be set to both FIX32 data collectors. As a result the area of the Alarm Archive responsible for creating the relationship between the alarm and tag data will not be populated and in turn the Excel Add-In will be unable to link the data.

Figure: FIX32 SCADA Proxying Through iFIX

To link alarm and tag data in this situation, an OLE DB query can be performed with a join between the "ItemID" column of the ihAlarms database and the "TagName" column of the ihRawData database. This join can only be performed if No Prefix has been added to the tagname. Below is an example of a parametrized query that uses the AlarmID property to find all values read from the corresponding tag for that alarm during the duration of the alarm.

SELECT   ihRawData.'Value', ihRawData.Tagname, ihRawData.'TimeStamp' 
FROM     ihRawData, ihAlarms
WHERE    ihRawData.Tagname = ihAlarms.ItemID
AND    ( ihRawData.'TimeStamp' >= ihAlarms.Starttime ) 
AND    ( ihRawData.'TimeStamp' <= ihAlarms.'Timestamp' ) 
AND    ( ihAlarms.AlarmID = 13240 )
AND    ( ihRawData.SamplingMode = 'RawByTime' )