EPICS Component Reference Manual


EPICS Reference: Data Fanout Record (dfanout) §

The Data Fanout or "dfanout" record is used to forward data to up to 16 other records. It's similar to the fanout record except that the capability to forward data has been added to it. It has no associated device support.

Since 7.0.10 the number of output links has been increased from 8 to 16 and IVOA and IVOV fields have been added.

Parameter Fields §

The record-specific fields are described below, grouped by functionality.

Scan Parameters §

The data fanout record has the standard fields for specifying under what circumstances it will be processed. These fields are listed in Scan Fields.

Desired Output Parameters §

The data fanout record must specify where the desired output value originates, i.e., the data which is to be forwarded to the records in its output links. The output mode select (OMSL) field determines whether the output originates from another record or from run-time database access. When set to closed_loop, the desired output is retrieved from the link specified in the Desired Output Link (DOL) field, which can specify either a database or a channel access link, and placed into the VAL field. When set to supervisory, the desired output can be written to the VAL field via dbPuts at run-time.

The DOL field can also be a constant in which case the VAL field is initialized to the constant value.

Note that there are no conversion parameters, so the desired output value undergoes no conversions before it is sent out to the output links.

FieldSummaryTypeDCT DefaultReadWriteCA PP
DOLDesired Output LinkINLINKYes YesYesNo
OMSLOutput Mode SelectMENU (menuOmsl)Yes YesYesNo
VALDesired OutputDOUBLEYes YesYesYes

Write Parameters §

The OUTA-OUTP fields specify where VAL is to be sent. Each field that is to forward data must specify an address to another record. See Address Specification for information on specifying links.

The SELL, SELM, and SELN fields specify which output links are to be used.

SELM is a menu, with three choices:

IndexIdentifierChoice String
0 dfanoutSELM_All All
1 dfanoutSELM_Specified Specified
2 dfanoutSELM_Mask Mask

If SELM is All, then all output links are used, and the values of SELL and SELN are ignored.

If SELM is Specified, then the value of SELN is used to specify a single link which will be used. If SELN==0, then no link will be used; if SELN==1, then OUTA will be used, and so on.

SELN can either have its value set directly, or have it retrieved from another EPICS PV. If SELL is a valid PV link, then SELN will be read from the linked PV.

If SELM is Mask, then SELN will be treated as a bit mask. If bit zero (the LSB) of SELN is set, then OUTA will be written to; if bit one is set, OUTB will be written to, and so on. Thus when SELN==5, both OUTC and OUTA will be written to.

FieldSummaryTypeDCT DefaultReadWriteCA PP
SELLLink Selection LocINLINKYes YesYesNo
SELMSelect MechanismMENU (dfanoutSELM)Yes YesYesNo
SELNLink SelectionUSHORTNo1YesYesNo
OUTAOutput Spec AOUTLINKYes YesYesNo
OUTPOutput Spec POUTLINKYes YesYesNo

Operator Display Parameters §

These parameters are used to present meaningful data to the operator. They do not affect the functioning of the record at all.

See Fields Common to All Record Types for more about the record name (NAME) and description (DESC) fields.

FieldSummaryTypeDCT DefaultReadWriteCA PP
NAMERecord NameSTRING [61]No YesNoNo
DESCDescriptorSTRING [41]Yes YesYesNo
EGUEngineering UnitsSTRING [16]Yes YesYesNo
HOPRHigh Operating RangeDOUBLEYes YesYesNo
LOPRLow Operating RangeDOUBLEYes YesYesNo
PRECDisplay PrecisionSHORTYes YesYesNo

Alarm Parameters §

The possible alarm conditions for data fanouts are the SCAN, READ, INVALID, and limit alarms. The SCAN and READ alarms are called by the record routines. The IVOA field specifies the action to take in this case.

For an explanation of the IVOA and IVOV fields, see Invalid Output Action Fields.

The limit alarms are configured by the user in the HIHI, LOLO, HIGH, and LOW fields using floating point values. The limit alarms apply only to the VAL field. The severity for each of these limits is specified in the corresponding field (HHSV, LLSV, HSV, LSV) and can be either NO_ALARM, MINOR, or MAJOR. In the hysteresis field (HYST) can be entered a number which serves as the deadband on the limit alarms.

See Alarm Specification for a complete explanation of record alarms and of the standard fields. Alarm Fields lists other fields related to alarms that are common to all record types.

FieldSummaryTypeDCT DefaultReadWriteCA PP
HIHIHihi Alarm LimitDOUBLEYes YesYesYes
HIGHHigh Alarm LimitDOUBLEYes YesYesYes
LOWLow Alarm LimitDOUBLEYes YesYesYes
LOLOLolo Alarm LimitDOUBLEYes YesYesYes
HHSVHihi SeverityMENU (menuAlarmSevr)Yes YesYesYes
HSVHigh SeverityMENU (menuAlarmSevr)Yes YesYesYes
LSVLow SeverityMENU (menuAlarmSevr)Yes YesYesYes
LLSVLolo SeverityMENU (menuAlarmSevr)Yes YesYesYes
HYSTAlarm DeadbandDOUBLEYes YesYesNo
IVOAINVALID output actionMENU (menuIvoa)Yes YesYesNo
IVOVINVALID output valueDOUBLEYes YesYesNo

Monitor Parameters §

These parameters are used to determine when to send monitors placed on the VAL field. These monitors are sent when the value field exceeds the last monitored fields by the specified deadband, ADEL for archivers monitors and MDEL for all other types of monitors. If these fields have a value of zero, every time the value changes, a monitor will be triggered; if they have a value of -1, every time the record is scanned, monitors are triggered. See "Monitor Specification" for a complete explanation of monitors.

FieldSummaryTypeDCT DefaultReadWriteCA PP
ADELArchive DeadbandDOUBLEYes YesYesNo
MDELMonitor DeadbandDOUBLEYes YesYesNo

Run-Time Parameters and Simulation Mode Parameters §

These parameters are used by the run-time code for processing the data fanout record. They are not configurable. They are used to implement the hysteresis factors for monitor callbacks.

FieldSummaryTypeDCT DefaultReadWriteCA PP
LALMLast Value AlarmedDOUBLENo YesNoNo
ALSTLast Value ArchivedDOUBLENo YesNoNo
MLSTLast Val MonitoredDOUBLENo YesNoNo

Record Support §

Record Support Routines §

init_record() §

This routine initializes all output links that are defined. Then it initializes DOL if DOL is a constant or a PV_LINK. When initializing the output links and the DOL link, a non-zero value is returned if an error occurs.

process() §

See next section.

get_units() §

The routine copies the string specified in the EGU field to the location specified by a pointer which is passed to the routine.

get_graphic_double() §

If the referenced field is VAL, HIHI, HIGH, LOW, or LOLO, this routine sets the upper_disp_limit member of the dbr_grDouble structure to the HOPR and the lower_disp_limit member to the LOPR. If the referenced field is not one of the above fields, then recGblGetControlDouble() routine is called.

get_control_double() §

Same as the get_graphic_double() routine except that it uses the dbr_ctrlDouble structure.

get_alarm_double() §

This sets the members of the dbr_alDouble structure to the specified alarm limits when the referenced field is VAL:

upper_alarm_limit = HIHI

upper_warning_limit = HIGH

lower_warning_limit = LOW

lower_alarm_limit = LOLO

If the referenced field is not VAL, the recGblGetAlarmDouble() routine is called.

Record Processing §

  1. If OMSL is "closed_loop" and DOL is not a constant link read the new value of VAL from DOL. If no errors occur, UDF is set to FALSE.

  2. PACT is set TRUE and the record's timestamp is set.

  3. A value is fetched from SELL and placed into SELN.

  4. Alarms ranges are checked against the contents of the VAL field.

  5. Check severity and then send the value through the OUTA-OUTP links, depending on the setting of SELM and the value in SELN.

    See Invalid Output Action Fields for information on how INVALID alarms affect output records.

  6. Value and archive monitors are posted on the VAL field if appropriate based on the settings of MDEL and ADEL respectively.

  7. Scan forward link if necessary, set PACT FALSE, and return.


EPICS Component Reference Manual