函数生成器 (FGEN)

此信息适用于
CompactLogix
5370、
ControlLogix
5570、
Compact GuardLogix
5370、
GuardLogix
5570、
Compact GuardLogix
5380、
CompactLogix
5380、
ControlLogix
5580、
GuardLogix
5580 和 ControlLogix 5590 控制器。
函数生成器 (FGEN) 指令用于基于分段线性函数对输入进行转换。
可用语言
梯形图
FGEN LD instruction linear function
功能块
结构化文本
FGEN(FGEN_tag,X1,Y1,X2,Y2);
操作数
梯形图
操作数
类型
格式
说明
FGEN tag
FUNCTION_
GENERATOR
结构
FGEN 结构
In
REAL
标签/立即数
指令的模拟信号输入。
有效值 = 任意浮点值
X1
REAL
数组
X 轴数组,表 1。同 Y 轴数组结合使用,表 1 定义第一条分段线性曲线的点。
有效值 = 任意浮点值
Y1
REAL
数组
Y 轴数组,表 1。同 X 轴数组结合使用,表 1 定义第一条分段线性曲线的点。
有效值 = 任意浮点值
X2
REAL
数组
(可选)
X 轴数组,表 2。同 Y 轴数组结合使用,表 2 定义第二条分段线性曲线的点。
有效值 = 任意浮点值
Y2
REAL
数组
(可选)
Y 轴数组,表 2。同 X 轴数组结合使用,表 2 定义第二条分段线性曲线的点。
有效值 = 任意浮点值
功能块
操作数
类型
格式
说明
FGEN tag
FUNCTION_
GENERATOR
结构
FGEN 结构
X1
REAL
数组
X 轴数组,表 1。同 Y 轴数组结合使用,表 1 定义第一条分段线性曲线的点。
有效值 = 任意浮点值
Y1
REAL
数组
Y 轴数组,表 1。同 X 轴数组结合使用,表 1 定义第一条分段线性曲线的点。
有效值 = 任意浮点值
X2
REAL
数组
(可选)
X 轴数组,表 2。同 Y 轴数组结合使用,表 2 定义第二条分段线性曲线的点。
有效值 = 任意浮点值
Y2
REAL
数组
(可选)
Y 轴数组,表 2。同 X 轴数组结合使用,表 2 定义第二条分段线性曲线的点。
有效值 = 任意浮点值
结构化文本
操作数
类型
格式
说明
FGEN tag
FUNCTION_
GENERATOR
结构
FGEN 结构
X1
REAL
数组
X 轴数组,表 1。同 Y 轴数组结合使用,表 1 定义第一条分段线性曲线的点。
有效值 = 任意浮点值
Y1
REAL
数组
Y 轴数组,表 1。同 X 轴数组结合使用,表 1 定义第一条分段线性曲线的点。
有效值 = 任意浮点值
X2
REAL
数组
(可选)
X 轴数组,表 2。同 Y 轴数组结合使用,表 2 定义第二条分段线性曲线的点。
有效值 = 任意浮点值
Y2
REAL
数组
(可选)
Y 轴数组,表 2。同 X 轴数组结合使用,表 2 定义第二条分段线性曲线的点。
有效值 = 任意浮点值
有关结构化文本中表达式语法的详细信息,请参见
结构化文本语法
部分。
FUNCTION_GENERATOR 结构
输入参数
数据类型
说明
EnableIn
BOOL
启用输入。如果为假,指令不会执行,也不会更新输出。
默认值为真。
In
REAL
指令的模拟信号输入。
有效值 = 任意浮点值
默认值 = 0.0
XY1Size
DINT
要从表 1 中使用的分段线性曲线上的点的数量。如果该值小于 1 且 Select 已清零,此指令会将 Status 中的相应位置位且输出不发生更改。
有效值 = 1 到(X1 和 Y1 数组大小中的最小值)
默认值 = 1
XY2Size
DINT
要从表 2 中使用的分段线性曲线上的点的数量。如果该值小于 1 且 Select 已置位,此指令会将 Status 中的相应位置位且输出不发生更改。
有效值 = 0 到(X2 和 Y2 数组大小中的最小值)
默认值 = 0
Select
BOOL
此输入确定使用哪个表。清零时,指令会使用表 1;置位时,指令会使用表 2。
默认清零。
输出参数
数据类型
说明
EnableOut
BOOL
指示指令是否处于启用状态。溢出时设置为假
Out
REAL
指令的输出。
Status
DINT
功能块的状态。
InstructFault (Status.0)
BOOL
指令生成了故障。
XY1SizeInv (Status.1)
BOOL
表 1 的大小无效或与数组大小不兼容。
XY2SizeInv (Status.2)
BOOL
表 2 的大小无效或与数组大小不兼容。
XisOutofOrder (Status.3)
BOOL
X 参数未进行排序。
说明
下图说明 FGEN 指令转换一条十二段曲线的方式。
FGEN Graph
X 轴参数必须遵循以下关系:
X[1] < X[2] < X[3] < ...< X[XY<n>Size],
其中 XY<n>Size > 1,表示分段线性曲线上的点数,其中 n 为 1 或 2,具体取决于所选的表。必须在 X 数组中创建经过排序的 X 轴元素。
Select 输入确定指令使用哪个表。当指令基于其中一个表执行时,可对另一个表中的值进行修改。更改 Select 的状态后,可基于另一个表执行指令。
计算 Out 之前,将扫描 X 轴参数。如果这些参数未按升序排序,会将 Status 中的相应位置位,Out 保持不变。同样,如果 XY1Size 或 XY2Size 无效,此指令也会将 Status 中的相应位置位且 Out 保持不变。
该指令会使用以下算法根据 In 来计算 Out:
  • 当 In Less than or equal to X[1] 时,设置 Out = Y[1]
  • 当 In > X[XY<n>Size] 时,设置 Out = Y[XY<n>Size]
  • 当 X[n] < In Less than or equal to X[n+1] 时,计算 Out = ((Y[n+1]-Yn)/ (X[n+1]-Xn))*(In-Xn)+Yn
影响数学状态标志
严重/轻微故障
没有特定于此指令的故障。有关操作数相关的故障,请参阅 通用属性
执行
梯形图
条件
功能块操作
预扫描
梯级输出条件设置为假。
梯级输入条件为假
将梯级输出条件设置为梯级输入条件。
梯级输入条件为真
将梯级输出条件设置为梯级输入条件。
执行 FGEN 算法。
后扫描
梯级输出条件设置为假。
功能块图
条件
功能块操作
预扫描
EnableIn 和 EnableOut 位设置为假。
EnableIn 为假
EnableIn 和 EnableOut 位设置为假。
EnableIn 为真
EnableIn 和 EnableOut 位设置为真。执行 FGEN 算法。
指令首次运行
不适用
指令首次扫描
将内部 Out 设置为 0.0
执行 FGEN 算法。
后扫描
EnableIn 和 EnableOut 位设置为假。
结构化文本
条件/状态
执行的操作
预扫描
EnableIn 和 EnableOut 位设置为假。
正常执行
EnableIn 和 EnableOut 位设置为真。
执行 FGEN 算法。
后扫描
EnableIn 和 EnableOut 位设置为假。
示例
示例 1
在本例中,FGEN 指令采用流量信号形式,然后通过 TOT 指令累加流量信号。FGEN_01X1 和 FGEN_01Y1 数组均为具有 10 个元素的 REAL 数组,每个数组最多可支持 9 段曲线。可以使用任意大小的数组来支持需要任意段数的曲线。
功能块
梯形图
示例 2
此示例将可选参数传递给 FGEN 指令。
功能块
梯形图
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal