Proporcional de posición (Position Proportional, POSP)
Esta información corresponde a los controladores
CompactLogix
5370, ControlLogix
5570, Compact GuardLogix
5370, GuardLogix
5570, Compact GuardLogix
5380, CompactLogix
5380, ControlLogix
5580, GuardLogix
5580 y ControlLogix 5590.La instrucción Proporcional de posición (Position Proportional, POSP) abre o cierra un dispositivo pulsando los contactos de abrir o cerrar en un tiempo de ciclo definido por el usuario con un ancho de pulso proporcional a la diferencia entre las posiciones deseadas y actuales.
Idiomas disponibles
Diagrama de lógica de escalera
Esta instrucción no está disponible en la lógica de diagrama de escalera.
Bloque de funciones

Texto estructurado
POSP(POSP_tag)
Operandos
Bloque de funciones
Operando | Tipo | Formato | Descripción |
Etiqueta POSP | POSITION_PROP | Estructura | Estructura POSP |
Texto estructurado
Operando | Tipo | Formato | Descripción |
block tag | POSITION_PROP | Estructura | Estructura POSP |
Consulte
Sintaxis de texto estructurado
para obtener más información sobre la sintaxis de las expresiones dentro de texto estructurado.Estructura de POSITION_PROP
Parámetro de entrada | Tipo de datos | Descripción |
|---|---|---|
EnableIn | BOOL | Habilita la entrada. Si no está en falso, la instrucción no se ejecuta y las salidas no se actualizan. El valor predeterminado es verdadero. |
SP | REAL | Punto de ajuste. Este es el valor deseado para la posición. Este valor debe usar las mismas unidades de ingeniería que Posición. Válido = cualquier punto flotante Valor predeterminado = 0,0 |
Position | REAL | Retroalimentación de posición. Esta entrada analógica procede de la retroalimentación de posición del dispositivo. Válido = cualquier punto flotante Valor predeterminado = 0,0 |
OpenedFB | BOOL | Retroalimentación de apertura. Esta entrada señaliza cuando el dispositivo está totalmente abierto. Cuando su valor es verdadero, no se permite la activación de la salida abierta. El valor predeterminado es falso. |
ClosedFB | BOOL | Retroalimentación de cierre. Esta entrada señaliza cuando el dispositivo está totalmente cerrado. Cuando su valor es verdadero, no se permite la activación de la salida cerrada. El valor predeterminado es falso. |
PositionEUMax | REAL | Valor escalado máximo de Posición y SP. Válido = cualquier punto flotante Valor predeterminado = 100,0 |
PositionEUMin | REAL | Valor escalado mínimo de Posición y SP. Válido = cualquier punto flotante Valor predeterminado = 0,0 |
CycleTime | REAL | Período del impulso de salida en segundos. Un valor cero borra ambos OpenOut y CloseOut. Si este valor no es válido, la instrucción supone un valor cero y establece el bit correspondiente en Status. Válido = cualquier flotante positivo Valor predeterminado = 0,0 |
OpenRate | REAL | Índice de apertura del dispositivo en %/segundo. Un valor cero borra OpenOut. Si este valor no es válido, la instrucción supone un valor cero y establece el bit correspondiente en Status. Válido = cualquier flotante positivo Valor predeterminado = 0,0 |
CloseRate | REAL | Ritmo de cierre del dispositivo en %/segundo. Un valor cero borra el valor de CloseOut. Si este valor no es válido, la instrucción supone un valor cero y establece el bit correspondiente en Status. Válido = cualquier flotante positivo Valor predeterminado = 0,0 |
MaxOnTime | REAL | Tiempo máximo en segundos que un impulso de apertura o cierre puede estar activado. Si se calcula OpenTime o CloseTime de modo que sea superior a este valor, se limitan a este valor. Si este valor no es válido, la instrucción supone un valor de CycleTime y establece el bit correspondiente en Status. Válido = de 0,0 a CycleTime Valor predeterminado = CycleTime |
MinOnTime | REAL | Tiempo mínimo en segundos en el que puede estar activado un impulso de apertura o cierre. Si se calcula OpenTime o CloseTime que es inferior a este valor, se establece en cero. Si este valor no es válido, la instrucción supone un valor cero y establece el bit correspondiente en Status. Válido = de 0,0 a MaxOnTime Valor predeterminado = 0,0 |
Deadtime | REAL | Tiempo de pulso adicional en segundos para superar la fricción en el dispositivo. El valor de Deadtime se añade a OpenTime o CloseTime cuando el dispositivo cambia de dirección o está detenido. Si este valor no es válido, la instrucción establece el bit correspondiente en Status y usa un valor de Deadtime = 0,0. Válido = de 0,0 a MaxOnTime Valor predeterminado = 0,0 |
Parámetro de salida | Tipo de datos | Descripción |
|---|---|---|
EnableOut | BOOL | Indica si la instrucción está habilitada. Se establece en falso si PositionPercent produce un desbordamiento. |
OpenOut | BOOL | Se emite un impulso de esta salida para abrir el dispositivo. |
CloseOut | BOOL | Se emite un impulso de esta salida para cerrar el dispositivo. |
PositionPercent | REAL | La retroalimentación de posición se expresa como un porcentaje de la extensión de Posición. |
SPPercent | REAL | El punto de ajuste se expresa como un porcentaje de la extensión de Posición. |
OpenTime | REAL | Tiempo de impulso en segundos de OpenOutput para el ciclo actual. |
CloseTime | REAL | Tiempo de impulsos en segundos de CloseOutput para el ciclo actual. |
Status | DINT | Estado del bloque de funciones. |
InstructFault (Status.0) | BOOL | La instrucción detectó uno de los siguientes errores de ejecución. No se trata de un error mayor o menor del controlador. Se comprueban los bits de estado restantes para determinar lo que ha ocurrido. |
CycleTimeInv (Status.1) | BOOL | Valor de CycleTime no válido. La instrucción usa cero. |
OpenRateInv (Status.2) | BOOL | Valor de OpenRate no válido. La instrucción usa cero. |
CloseRateInv (Status.3) | BOOL | Valor de CloseRate no válido. La instrucción usa cero. |
MaxOnTimeInv (Status.4) | BOOL | Valor de MaxOnTime no válido. La instrucción usa el valor de CycleTime. |
MinOnTimeInv (Status.5) | BOOL | Valor de MinOnTime no válido. La instrucción usa cero. |
DeadtimeInv (Status.6) | BOOL | Valor de Deadtime no válido. La instrucción usa cero. |
PositionPctInv (Status.7) | BOOL | El valor calculado de PositionPercent está fuera de rango. |
SPPercentInv (Status.8) | BOOL | El valor calculado de SPPercent está fuera de rango. |
PositionSpanInv (Status.9) | BOOL | PositionEUMax = PositionEUMin. |
Descripción
La instrucción POSP recibe por lo general el punto de ajuste de la posición deseada desde una salida de la instrucción PID.
Escalado de los valores de Position y Setpoint
Las salidas PositionPercent y SPPercent se actualizan cada vez que se ejecuta la instrucción. Si alguno de estos valores está fuera de rango (menos del 0% o superior al 100%), se establece el bit correspondiente en Status, pero los valores no se limitan. La instrucción utiliza estas fórmulas para calcular si los valores están dentro de rango:

Cómo utiliza la instrucción POSP el Temporizador de ciclo interno
La instrucción usa CycleTime para determinar con qué frecuencia recalcular la duración de los impulsos de salida de Apertura y Cierre. DeltaT mantiene y actualiza un temporizador interno. DeltaT es el tiempo transcurrido desde que se ejecutó la instrucción por última vez. Siempre que el temporizador interno iguale o supere CycleTime programado (se agota el tiempo del ciclo), se vuelven a calcular las salidas Apertura y Cierre.
Puede cambiar CycleTime en cualquier momento.
Si CycleTime = 0, se borra el temporizador interno a cero y tanto OpenOut como CloseOut se borran a falsos.
Producción de impulsos de salida
En el siguiente diagrama se muestran los tres estados primarios de la instrucción POSP.

Cálculo de los tiempos de impulsos de Apertura y Cierre
Se emite un impulso de OpenOut siempre que SP > retroalimentación de posición. Cuando esto sucede, la instrucción establece CloseTime en 0 y el tiempo que debe activarse OpenOut se calcula de la siguiente manera:

Si OpenTimen-1 < CycleTime, añada Deadtime a OpenTime.
Si OpenTime > MaxOnTime, se limita el tiempo a MaxOnTime.
Si OpenTime < MinOnTime, se establece OpenTime en 0.
Si se da cualquiera de las siguientes condiciones, no se emite un impulso de OpenOut y se establece OpenTime en 0.
OpenFB es verdadero o PositionPercent
100
100CycleTime = 0
OpenRate = 0
SPPercent no es válido
Se emite un impulso de CloseOut siempre que SP < retroalimentación de posición. Cuando esto sucede, la instrucción establece OpenTime en 0 y el tiempo que debe activarse CloseOut se calcula de la siguiente manera:

Si CloseTimen-1 < CycleTime, añada Deadtime a CloseTime.
Si CloseTime > MaxOnTime, se limita el tiempo a MaxOnTime.
Si CloseTime < MinOnTime, se establece CloseTime en 0.
Si se da cualquiera de las siguientes condiciones, no se emitirá un impulso de CloseOut y CloseTime se establecerá en 0,0.
ClosedFB es verdadero o PositionPercent
0
0CycleTime = 0
CloseRate = 0
SPPercent no es válido
No se emitirá un impulso de OpenOut y CloseOut si SPPercent es igual a PositionPercent. Tanto OpenTime como CloseTime se borrarán a falsos.
Afecta a las marcas de estado matemáticas
No
Fallos mayores/menores
No es específico para esta instrucción. Consulte Atributos comunes para ver los fallos relacionados con el operando.
Ejecución
Bloque de funciones
Condición/estado | Acción realizada |
|---|---|
Pre-escaneado | Los bits EnableIn y EnableOut se establecen en falsos. |
Tag.EnableIn es falso | Los bits EnableIn y EnableOut se establecen en falsos. |
Tag.EnableIn es verdadero | Los bits EnableIn y EnableOut se establecen en verdaderos. La instrucción se ejecuta. |
Primera ejecución de instrucción | N/A |
Primer escaneado de instrucción | OpenTime y CloseTime se establecen en 0,0. |
Post-escaneado | Los bits EnableIn y EnableOut se establecen en falsos. |
Texto estructurado
Condición/estado | Acción realizada |
|---|---|
Pre-escaneado | Consulte Pre-escaneado en la tabla Bloque de funciones. |
Ejecución normal | Consultar Tag.EnableIn es verdadero en la tabla Bloque de funciones. |
Post-escaneado | Consulte Post-escaneado en la tabla Bloque de funciones. |
Ejemplos
Ejemplo 1
En este ejemplo, la instrucción POSP abre o cierra una válvula accionada por motor basándose en la salida CVEU de la instrucción PIDE. La posición real de la válvula se conecta a la entrada Position y se conectan interruptores de límite opcionales, que muestran si la válvula está totalmente abierta o cerrada, a las entradas OpenedFB y ClosedFB. Las salidas OpenOut y CloseOut se conectan a los contactos de apertura y cierre de la válvula accionada por motor.
Bloque de funciones

Texto estructurado
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;
Entregue su opinión