Function Generator (FGEN)
This information applies to the
CompactLogix
5370, ControlLogix
5570, Compact GuardLogix
5370, GuardLogix
5570, Compact GuardLogix
5380, CompactLogix
5380, CompactLogix
5480, ControlLogix
5580, and GuardLogix
5580 controllers.The Function Generator (FGEN) instruction converts an input based on a piece-wise linear function.
Available Languages
Ladder Diagram
This instruction is not available in ladder diagram.
Function Block
Structured Text
FGEN(FGEN_tag,X1,Y1,X2,Y2);
Operands
Function Block
Operand | Type | Format | Description |
---|---|---|---|
FGEN tag | FUNCTION_
GENERATOR | structure | FGEN structure |
X1 | REAL | array | X-axis array, table one. Combine with the Y-axis array, table one to define the points of the first piece-wise linear curve.
Valid = any float |
Y1 | REAL | array | Y-axis array, table one. Combine with the X-axis array, table one to define the points of the first piece-wise linear curve.
Valid = any float |
X2 | REAL | array | (optional)
X-axis array, table two. Combine with the Y-axis array, table two to define the points of the second piece-wise linear curve.
Valid = any float |
Y2 | REAL | array | (optional)
Y-axis array, table two. Combine with the X-axis array, table two to define the points of the second piece-wise linear curve.
Valid = any float |
Structured Text
Operand | Type | Format | Description |
---|---|---|---|
FGEN tag | FUNCTION_
GENERATOR | structure | FGEN structure |
X1 | REAL | array | X-axis array, table one. Combine with the Y-axis array, table one to define the points of the first piece-wise linear curve.
Valid = any float |
Y1 | REAL | array | Y-axis array, table one. Combine with the X-axis array, table one to define the points of the first piece-wise linear curve.
Valid = any float |
X2 | REAL | array | (optional)
X-axis array, table two. Combine with the Y-axis array, table two to define the points of the second piece-wise linear curve.
Valid = any float |
Y2 | REAL | array | (optional)
Y-axis array, table two. Combine with the X-axis array, table two to define the points of the second piece-wise linear curve.
Valid = any float |
See
Structured Text Syntax
for more information on the syntax of expressions within structured text.FUNCTION_GENERATOR Structure
Input Parameter | Data Type | Description |
---|---|---|
EnableIn | BOOL | Enable input. If false, the instruction does not execute and outputs are not updated.
Default is true. |
In | REAL | The analog signal input to the instruction.
Valid = any float
Default = 0.0 |
XY1Size | DINT | Number of points in the piece-wise linear curve to use from table one. If the value is less than one and Select is cleared, the instruction sets the appropriate bit in Status and the output is not changed.
Valid = 1 to (smallest of X1 and Y1 array sizes)
Default = 1 |
XY2Size | DINT | Number of points in the piece-wise linear curve to use from table two. If the value is less than one and Select is set, the instruction sets the appropriate bit in Status and the output is not changed.
Valid = 0 to (smallest of X2 and Y2 array sizes)
Default = 0 |
Select | BOOL | This input determines which table to use. When cleared, the instruction uses table one; when set, the instruction uses table two.
Default is cleared. |
Output Parameter | Data Type | Description |
---|---|---|
EnableOut | BOOL | Indicates if instruction is enabled. Cleared to false on overflow |
Out | REAL | Output of the instruction. |
Status | DINT | Status of the function block. |
InstructFault (Status.0) | BOOL | Instruction generated a fault. |
XY1SizeInv (Status.1) | BOOL | Size of table 1 is invalid or not compatible with the array size. |
XY2SizeInv (Status.2) | BOOL | Size of table 2 is invalid or not compatible with the array size. |
XisOutofOrder (Status.3) | BOOL | The X parameters are not sorted. |
Description
The following illustration shows how the FGEN instruction converts a twelve-segment curve.
The X-axis parameters must follow the relationship:
X[1] < X[2] < X[3] < ... < X[XY<n>Size],
where XY<n>Size > 1 and is a number of points in the piece-wise linear curve and where n is 1 or 2 for the table selected. You must create sorted X-axis elements in the X arrays.
The Select input determines which table to use for the instruction. When the instruction is executing on one table, you can modify the values in the other table. Change the state of Select to execute with the other table.
Before calculating Out, the X axis parameters are scanned. If they are not sorted in ascending order, the appropriate bit in Status is set and Out remains unchanged. Also, if XY1Size or XY2Size is invalid, the instruction sets the appropriate bit in Status and leaves Out unchanged.
The instruction uses this algorithm to calculate Out based on In:
- When In X[1], set Out = Y[1]
- When In > X[XY<n>Size], set Out = Y[XY<n>Size]
- When X[n] < In X[n+1], calculate Out = ((Y[n+1]-Yn)/ (X[n+1]-Xn))*(In-Xn)+Yn
Affects Math Status Flags
No
Major/Minor Fault
None specific to this instruction. See
Common Attributes
for operand-related faults.Execution
Function Block
Condition | Function Block Action |
---|---|
Prescan | EnableIn and EnableOut bits are cleared to false. |
Tag.EnableIn is false | EnableIn and EnableOut bits are cleared to false. |
Tag.EnableIn is true | EnableIn and EnableOut bits are set to true. The instruction executes. |
Instruction first run | N/A |
Instruction first scan | N/A |
Postscan | EnableIn and EnableOut bits are set to true. The instruction executes. |
Structured Text
Condition/State | Action Taken |
---|---|
Prescan | See Prescan in the Function Block table. |
Normal Execution | See Tag.EnableIn is true in the Function Block table. |
Postscan | See Postscan in the Function Block table. |
Examples
Example 1
In this example, the FGEN instruction characterizes a flow signal which is then totalized using a TOT instruction. The FGEN_01X1 and FGEN_01Y1 arrays are REAL arrays of 10 elements each to support up to a 9 segment curve. You can use arrays of any size to support a curve of any desired number of segments.
Example 2
This example passes optional parameters to FGEN instruction.
Provide Feedback