Glossary · Distributed automation and IEC 61499
Event function block
Also known as: Event FB, Standard event function block, E_ blocks
German: Ereignisfunktionsbaustein
In IEC 61499, an event function block is one of the standard function block types defined in Annex A of IEC 61499-1 that generate, split, merge, select, delay, count or otherwise process events, such as E_SPLIT, E_MERGE, E_PERMIT, E_DELAY, E_CYCLE and E_CTU.
- IEC 61499
- Standards
In one sentence
IEC 61499 event function blocks such as E_SPLIT, E_DELAY and E_CYCLE are the standard building blocks for routing and timing events.
Example
An E_CYCLE block with DT = T#100ms fires a sampling event ten times per second; an E_PERMIT block passes the event on only while the machine is in automatic mode.
How it applies
- Why they exist: In IEC 61499, nothing executes without an event. Event function blocks provide the common event logic as standard types, so that applications don't need a custom block for every split, merge or timer. Their names start with E_ and their behavior is defined in Annex A of IEC 61499-1; some are basic function blocks, others are composite function blocks built from the simpler ones (E_TRAIN, for example, combines E_CYCLE and E_CTU), and E_DELAY and E_RESTART depend on timer and start-up services of the resource.
- The standard set: Annex A defines the following types.
| Block | Purpose |
|---|---|
| E_SPLIT | Splits one input event into two output events, issued in order (EO1, then EO2) |
| E_MERGE | Merges two input events into one output event |
| E_REND | Rendezvous: issues an output event once both inputs EI1 and EI2 have occurred; R resets |
| E_PERMIT | Passes an event only while the Boolean input PERMIT is TRUE |
| E_SELECT | Passes EI0 or EI1 to the output, selected by the Boolean input G |
| E_SWITCH | Routes one input event to EO0 or EO1, depending on the Boolean input G |
| E_DELAY | Issues an output event a time DT after START; STOP cancels it |
| E_CYCLE | Issues output events periodically with period DT between START and STOP |
| E_TRAIN | Issues a finite train of N events spaced by DT, with the count CV |
| E_TABLE | Issues a finite train of events with individual delays from the array DT |
| E_N_TABLE | Like E_TABLE, but each event on its own output EO0, EO1 … |
| E_RESTART | Issues COLD, WARM or STOP events when the resource starts or stops |
| E_SR, E_RS | Event-driven bistables: set and reset events switch the Boolean output Q |
| E_D_FF | Event-driven D flip-flop: latches D on the clock event, issues an event only when Q changes |
| E_R_TRIG, E_F_TRIG | Pass the input event when the Boolean input has risen or fallen since the last event |
| E_CTU | Event-driven up counter: counts CU events, Q becomes TRUE when CV reaches PV; R resets |
- Engineering: E_RESTART typically starts the initialization chain of an application (its COLD and WARM events trigger the INIT events of other blocks). E_CYCLE turns the event-driven model into periodic execution where a control loop needs a fixed sampling time. Tools such as Eclipse 4diac ship these types in their standard library, often together with additional, tool-specific event blocks that are not part of the standard.
- Portability: Only the Annex A types can be expected in every compliant tool. Blocks with similar names from a vendor library (for example demultiplexers or extra counters) are extensions and need to be ported or replaced when an application moves to another tool.
- Documentation: In application descriptions, name the event block type and its parameters (for example E_CYCLE with DT = T#50ms) instead of describing the event flow in prose. Mark any event block that doesn't come from Annex A as a library extension.
Event function block vs. IEC 61131-3 timers and triggers
IEC 61131-3 blocks such as TON, R_TRIG or CTU are evaluated in every scan and work on Boolean signals. Their IEC 61499 counterparts E_DELAY, E_R_TRIG and E_CTU react only when an event arrives and produce events. An E_R_TRIG therefore detects the edge between two events, not between two scans: if no event arrives, no edge is seen.