位置比例 (POSP)
此信息适用于
CompactLogix
5370、ControlLogix
5570、Compact GuardLogix
5370、GuardLogix
5570、Compact GuardLogix
5380、CompactLogix
5380、ControlLogix
5580、GuardLogix
5580 和 ControlLogix 5590 控制器。位置比例 (POSP) 指令根据用户自定义的循环时间产生宽度与预期位置和实际位置之差成比例的脉冲,来开启或关断触点,从而打开或关闭设备。
可用语言
梯形图
此指令不可用于梯形图逻辑中。
功能块

结构化文本
POSP(POSP_tag)
操作数
功能块
操作数 | 类型 | 格式 | 说明 |
POSP 标签 | POSITION_PROP | 结构 | POSP 结构 |
结构化文本
操作数 | 类型 | 格式 | 说明 |
block tag | POSITION_PROP | 结构 | POSP 结构 |
有关结构化文本中表达式语法的详细信息,请参见
结构化文本语法
部分。POSITION_PROP 结构
输入参数 | 数据类型 | 说明 |
|---|---|---|
EnableIn | BOOL | 启用输入。如果为假,指令不会执行,也不会更新输出。 默认值为真。 |
SP | REAL | 设置点。即期望的位置值。此值必须使用与“位置”相同的工程单位。 有效值 = 任意浮点值 默认值 = 0.0 |
Position | REAL | 位置反馈。此模拟输入来自设备的位置反馈。 有效值 = 任意浮点值 默认值 = 0.0 |
OpenedFB | BOOL | 已打开反馈。设备完全打开时,该输入将进行指示。输入值为真时,不允许接通打开输出。 默认值为假。 |
ClosedFB | BOOL | 关闭反馈。设备完全关闭时,该输入将进行指示。输入值为真时,不允许接通关闭输出。 默认值为假。 |
PositionEUMax | REAL | 位置和 SP 的最大标定值。 有效值 = 任意浮点值 默认值 = 100.0 |
PositionEUMin | REAL | 位置和 SP 的最小标定值。 有效值 = 任意浮点值 默认值 = 0.0 |
CycleTime | REAL | 输出脉冲的周期(秒)。该值为零时,OpenOut 和 CloseOut 清零。如果该值无效,该指令会假定该值等于零并置位 Status 中的相应位。 有效值 = 任意正浮点值。 默认值 = 0.0 |
OpenRate | REAL | 设备打开速率(%/秒)。该值为零时,OpenOut 清零。如果该值无效,该指令会假定该值等于零并置位 Status 中的相应位。 有效值 = 任意正浮点值。 默认值 = 0.0 |
CloseRate | REAL | 设备关闭速率(%/秒)。该值为零时,CloseOut 清零。如果该值无效,该指令会假定该值等于零并置位 Status 中的相应位。 有效值 = 任意正浮点值。 默认值 = 0.0 |
MaxOnTime | REAL | 打开或关闭脉冲可持续的最长时间(秒)。如果计算出的 OpenTime 或 CloseTime 大于该值,将被限定为该值。如果该值无效,该指令会假定该值等于 CycleTime 并将“状态”中的相应位置位。 有效值 = 0.0 至 CycleTime 默认值 = CycleTime |
MinOnTime | REAL | 打开或关闭脉冲可持续的最短时间(秒)。如果计算出的 OpenTime 或 CloseTime 小于该值,将设置为零。如果该值无效,该指令会假定该值等于零并置位 Status 中的相应位。 有效值 = 0.0 至 MaxOnTime 默认值 = 0.0 |
Deadtime | REAL | 用来克服设备摩擦力的附加脉冲时间(秒)。当设备改变方向或停止时,死区时间将与 OpenTime 或 CloseTime 值相加。如果该值无效,指令会置位 Status 中的相应位,并设置 Deadtime = 0.0 有效值 = 0.0 至 MaxOnTime 默认值 = 0.0 |
输出参数 | 数据类型 | 说明 |
|---|---|---|
EnableOut | BOOL | 指示指令是否处于启用状态。如果 PositionPercent 溢出,该输出将清零。 |
OpenOut | BOOL | 该输出产生用于打开设备的脉冲。 |
CloseOut | BOOL | 该输出产生用于关闭设备的脉冲。 |
PositionPercent | REAL | 位置反馈以 Position 范围的百分比形式表示。 |
SPPercent | REAL | 设置点以 Position 范围的百分比形式表示。 |
OpenTime | REAL | 当前循环中 OpenOutput 的脉冲时间(秒)。 |
CloseTime | REAL | 当前周期的 CloseOutput 脉冲时间,单位为秒。 |
Status | DINT | 功能块的状态。 |
InstructFault (Status.0) | BOOL | 该指令检测到以下执行错误之一。这不是轻微或严重的控制器错误。检查其他状态位以确定发生的情况。 |
CycleTimeInv (Status.1) | BOOL | CycleTime 值无效。指令将使用零值。 |
OpenRateInv (Status.2) | BOOL | OpenRate 值无效。指令将使用零值。 |
CloseRateInv (Status.3) | BOOL | CloseRate 值无效。指令将使用零值。 |
MaxOnTimeInv (Status.4) | BOOL | MaxOnTime 值无效。指令将使用 CycleTime 值。 |
MinOnTimeInv (Status.5) | BOOL | MinOnTime 值无效。指令将使用零值。 |
DeadtimeInv (Status.6) | BOOL | Deadtime 值无效。指令将使用零值。 |
PositionPctInv (Status.7) | BOOL | 计算得出的 PositionPercent 值超出范围。 |
SPPercentInv (Status.8) | BOOL | 计算得出的 SPPercent 值超出范围。 |
PositionSpanInv (Status.9) | BOOL | PositionEUMax = PositionEUMin。 |
说明
POSP 指令通常从 PID 指令输出接收所需的位置设置点。
标定位置和设置点的值。
每次执行指令时,PositionPercent 和 SPPercent 输出都会更新。如果其中任何一个值超出范围(小于 0% 或大于 100%),则将 Status 中的相应位置位,但不会限制这些值。该指令使用以下公式计算这些值是否处于范围内:

POSP 指令如何使用内部周期计时器
该指令使用 CycleTime 确定重新计算打开和关闭输出脉冲持续时间的频率。内部计时器通过 DeltaT 保持并更新。DeltaT 是自该指令上次执行后所经过的时间。只要内部计时器等于或超过设定的 CycleTime(周期时间到期),便会重新计算打开和关闭输出。
用户可随时更改 CycleTime。
如果 CycleTime = 0,内部计时器清零,OpenOut 和 CloseOut 设置为假。
生成输出脉冲
下图显示了 POSP 指令的三个主要状态。

计算打开和关闭脉冲时间
只要 SP > 位置反馈,就会生成 OpenOut 脉冲。此时,该指令将设置 CloseTime = 0,OpenOut 接通的持续时间计算如下:

如果 OpenTimen-1 < CycleTime,则向 OpenTime 加上 Deadtime。
如果 OpenTime > MaxOnTime,则其值限制为 MaxOnTime。
如果 OpenTime < MinOnTime,则设置 OpenTime = 0。
如果满足以下任一条件,将不生成 OpenOut 脉冲且 OpenTime = 0。
OpenFB 为真或 PositionPercent
100
100CycleTime = 0
OpenRate = 0
SPPercent 无效
只要 SP < 位置反馈,就会生成 CloseOut 脉冲。此时,该指令会设置 OpenTime = 0,CloseOut 接通的持续时间计算如下:

如果 CloseTimen-1 < CycleTime,则向 CloseTime 加上 Deadtime。
如果 CloseTime > MaxOnTime,则其值限制为 MaxOnTime。
如果 CloseTime < MinOnTime,则将 CloseTime 设置为 0。
如果满足以下任一条件,将不会生成 CloseOut 脉冲,CloseTime 将清零 (0.0)。
ClosedFB 为真或 PositionPercent
0
0CycleTime = 0
CloseRate = 0
SPPercent 无效
如果 SPPercent 等于 PositionPercent,将不生成 OpenOut 和 CloseOut 脉冲。OpenTime 和 CloseTime 都会设置为假。
影响数学状态标志
否
严重/轻微故障
没有特定于此指令的故障。有关操作数相关的故障,请参阅 通用属性。
执行
功能块
条件/状态 | 执行的操作 |
|---|---|
预扫描 | EnableIn 和 EnableOut 位设置为假。 |
Tag.EnableIn 为假 | EnableIn 和 EnableOut 位设置为假。 |
Tag.EnableIn 为真 | EnableIn 和 EnableOut 位设置为真。 指令执行。 |
指令首次运行 | 不适用 |
指令首次扫描 | OpenTime 和 CloseTime 清零 (0.0)。 |
后扫描 | EnableIn 和 EnableOut 位设置为假。 |
结构化文本
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参见“功能块”表中的“预扫描”行。 |
正常执行 | 请参见“功能块”表中的“Tag.EnableIn 为真”行。 |
后扫描 | 请参见“功能块”表中的“后扫描”行。 |
示例
示例 1
本示例中,POSP 指令可根据 PIDE 指令的 CVEU 输出打开或关闭电动阀。阀门实际位置与 Position 输入相连,用于指示阀门是否完全打开或关闭的可选限位开关与 OpenedFB 和 ClosedFB 输入相连。OpenOut 和 CloseOut 输出连接到电动阀的打开触点和关闭触点。
功能块

结构化文本
FlowController.PV := WaterFlowRate;
PIDE(FlowController);
FlowValve.SP := FlowController.CVEU;
FlowValve.Position := FlowValvePosition;
FlowValve.OpenedFB := FlowValveOpened;
FlowValve.ClosedFB := FlowValveClosed;
POSP(FlowValve);
OpenFlowValveContact := FlowValve.OpenOut;
CloseFlowValveContact := FlowValve.CloseOut;
提供反馈