Bloque que genera una señal PWM con un determinado número pulsos en la salida digital seleccionada, respetando una rampa de subida y de bajada en la frecuencia.
Representación Ladder

Estructura del Bloque
Tipo de Variable |
Nombre |
Tipo de Dato |
Descripción |
VAR_INPUT |
EN |
BOOL |
Habilitación del bloque |
Pulses |
DWORD UDINT |
Número de pulsos total de la ejecución del bloque |
|
Frequency |
DWORD UDINT |
Frecuencia máxima que se desea alcanzar |
|
RampTime |
DWORD UDINT |
Tiempo de rampa [ms] |
|
Steps |
BYTE USINT |
Pasos de incremento de frecuencia |
|
OutputNumber |
CONST BYTE |
Salida a ser generada la señal |
|
VAR_OUTPUT |
DONE |
BOOL |
Habilitación de salida |
VAR |
P_RAMP_INST_0 |
P_RAMP |
Instancia de acceso a la estructura del bloque |
Funcionamiento
Cuando la entrada EN sea TRUE, el bloque generará una señal PWM en la salida seleccionada. Inicialmente genera una rampa de subida, partiendo de la frecuencia nula hasta el valor de Frequency (entre 0 y 200 KHz), basado en las configuraciones de Time y Steps. En momento apropiado, el bloque genera una rampa de bajada, con el mismo perfil de la rampa de subida, hasta que la frecuencia sea nula y el valor de Pulses sea alcanzado.
Cuando el valor de Pulses sea alcanzado, la salida DONE pasará a TRUE.

En caso de que la entrada EN pase a FALSE antes de alcanzar el número de Pulses, la generación del PWM será interrumpida inmediatamente.

El duty cycle de la señal se mantiene constante en 0.5 durante toda la ejecución del bloque.
Para que la rampa de frecuencia sea generada, es necesario que cada Step tenga por el menos 2 pulsos.
En caso de que esta limitación no sea respetada, la rampa de frecuencia no será generada, o sea, en la habilitación del bloque, la señal PWM partirá directamente al valor de Frequency.
El mínimo de pulsos que pueden ser generados es 2. Sin embargo, en caso de que el número de pulsos a ser generados sea 0, el bloque retornará éxito.
|
¡NOTA! Habiendo otros bloques PWM en ejecución, tendrá prioridad el que sea llamado primero. |
|
¡NOTA! Este bloque tiene prioridad sobre cualquier bobina que esté escribiendo datos en la salida seleccionada. |
Ejemplo en Ladder

El ejemplo de arriba habilita una señal PWM en la salida DO1 con frecuencia inicial de 0 Hz y duty cycle de 50%. El tiempo de la rampa de subida de frecuencia es de 500 ms, y la rampa tiene 5 pasos de frecuencia (0, 50, 100, 150 y 200 Hz). En el total de la ejecución del bloque, serán enviados a la salida 1000 pulsos. Finalizado el bloque con éxito, será activada la salida DONE.

Ejemplo en ST
El ejemplo de abajo exhibe las instrucciones para aplicación del ejemplo de arriba en lenguaje ST.
VAR pulses : DWORD := 1000; freq : DWORD := 200; rampTime : DWORD := 500; steps : BYTE := 5; start : BOOL := 0; coil : BOOL; P_RAMP_INST_0 : FB_P_RAMP; END_VAR
P_RAMP_INST_0.EN := start; P_RAMP_INST_0( OutputNumber:=1, Pulses:=pulses, Frequency:=freq, RampTime:=rampTime, Steps:=steps); coil := P_RAMP_INST_0.DONE;
|
|---|