F173_PulseOutput_PWM

Salida de pulsos con especificación de canal (salida PWM)

Esta instrucción proporciona una salida de pulsos modulados en anchura según la DUT especificada. Se envían pulsos desde el canal especificado si la bandera de control para ese canal es FALSE y la condición de ejecución es TRUE.

Parámetros

Entrada

s_dutDataTable (F173_PulseOutput_PWM_DUT)

Dirección de inicio del área que contiene la tabla de datos

n_iPulseOutputChannel* (constante decimal)

Canal de salida de pulsos:

FP-XH C30 T/P: 0–3

FP-XH C60 T/P: 0–5

FPS: 0,2

FP-X, FP-XH relé: 0,1

FP-X, FP-XH 16k transistor: 0–2

FP0R, FP0H, FP-X, FP-XH 32 transistor: 0–3

FP-XH 32k transistor: 0–5

Observaciones

Utilizar la siguiente DUT predefinida: F173_PulseOutput_PWM_DUT

Se pueden especificar los siguientes parámetros en la DUT:

  • Frecuencia

  • Ciclo de trabajo

    La relación entre la duración del pulso y el periodo de una señal rectangular. Para un tren de pulsos cuya duración del pulso es 1ms y el periodo es 4ms, el ciclo de trabajo es 0,25 o 25%.

Información de programación general

  • El ciclo de trabajo, particularmente cuando está cerca del valor mínimo o máximo, puede diferir del ciclo de trabajo especificado, dependiendo de la tensión y de la corriente de carga.

  • El ciclo de trabajo se puede modificar en cada ciclo de scan.

  • La frecuencia constante K no se puede modificar durante la ejecución de la instrucción. Si se modifica, este cambio no tendrá efecto en la frecuencia pero sí en la resolución del ciclo de trabajo.

  • Si se modifica el ciclo de trabajo fuera del rango permisible mientras que se está ejecutando la instrucción, el ciclo de trabajo se ajusta el valor máximo. Si comienza la ejecución de la instrucción, se muestra un error de operación.

  • Si se modifica la frecuencia con un valor fuera del rango permisible mientras que se está ejecutando la instrucción, la resolución se ajusta a 100.. Si comienza la ejecución de la instrucción, no se muestra un error de operación.

  • Si el ciclo de trabajo cambia al 100% o más, mientras se ejecuta la instrucción, la frecuencia se ajusta al valor máximo de la resolución especificada. Si comienza la ejecución de la instrucción, no se muestra un error de operación.

  • Si tanto el programa principal como el programa de interrupción contienen código para el mismo canal, asegurarse de que no se ejecutan simultáneamente.

  • FP-X, FP0R: Durante la salida de pulsos, la bandera de control (por ejemplo sys_bIsPulseChannel0Active) del canal correspondiente está a TRUE. No se puede ejecutar ninguna otra instrucción de salida de pulsos mientras esta bandera sea TRUE

  • FPS: La bandera de control del contador de alta velocidad (por ejemplo sys_bIsHscChannel0ControlActive) y la bandera de control de la salida de pulsos (por ejemplo sys_bIsPulseChannel0Active) están asignadas al mismo relé interno especial (R903A). Por lo tanto, cuando se ejecuta una instrucción del contador de alta velocidad o de salida de pulsos, tanto la bandera de control de contador de alta velocidad (por ejemplo sys_bIsHscChannel0ControlActive) como la bandera de control de la salida de pulsos (por ejemplo sys_bIsPulseChannel0Active) para el canal especificado, están a TRUE. No se puede ejecutar ninguna otra instrucción del contador de alta velocidad o de salida de pulsos mientras que está bandera esté a TRUE.

  • FPS: Al ejecutar la instrucción de interpolación circular F176_PulseOutput_Center la bandera de control de interpolación circular (sys_bIsCircularInterpolationActive) pasa a TRUE. Se mantiene el estado de la bandera hasta que se alcanza el valor de preselección (incluso si la condición de ejecución ya no es TRUE). En este intervalo, no se puede ejecutar otra función de salida de pulsos.

  • FPS: En los registros del sistema seleccionar como "No usado" cualquier contador de alta velocidad asignado a un canal de salida de pulsos.

  • FP-X, FP0R: Seleccionar en los registros del sistema, "Salida PWM" para el canal deseado.

  • Se recomienda encarecidamente proporcionar la posibilidad de una parada forzada en cualquier programa de posicionamiento.

  • El estado de la bandera de control del contador de alta velocidad o de la bandera de control de la salida de pulsos puede cambiar dentro del ciclo de scan.

Ejemplo

Variables Globales

En la Lista de Variables Globales, se definen las variables a las que pueden acceder todas las POUs del proyecto.

DUT

La DUT F173_PulseOutput_PWM_DUT está predefinida en la FP Library.

Cabecera de la POU

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU.Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.

	VAR_EXTERNAL
		X6_bEnablePWM: BOOL:=FALSE;
	END_VAR
	VAR 
		dutPWMControl: F173_PulseOutput_PWM_DUT:=iFrequencyValue := 1;
			(*iFrequencyValue := 1: f=2.0 Hz, T=502.5 ms; 
*)
		iPulseWidthModulationDuty: INT:=500;
			(*500 = 50% duty*)
		@'': @'';
	END_VAR

Cuerpo LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_CONTACT,,X6_bEnablePWM,5,2,7,4,);
B(B_F,E_MOVE!,Instance,16,1,22,5,,?DEN?D?AENO?C);
B(B_VARIN,,iPulseWidthModulationDuty,14,3,16,5,);
B(B_VAROUT,,dutPWMControl.iPulseWidthModulationDuty,22,3,24,5,);
L(7,3,16,3);
L(1,3,5,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_F,F173_PulseOutput_PWM!,Instance,16,0,29,5,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dutPWMControl,14,2,16,4,);
B(B_VARIN,,2,14,3,16,5,);
B(B_CONTACT,,X6_bEnablePWM,5,1,7,3,);
L(7,2,16,2);
L(1,2,5,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

IF (X6_bEnablePWM) then
    dutPWMControl.iPulseWidthModulationDuty:=iPulseWidthModulationDuty;
END_IF;
IF (X6_bEnablePWM) then
    F173_PulseOutput_PWM(s_dutDataTable := dutPWMControl, 
       n_iPulseOutputChannel := 2);
END_IF;

Modificado el: 2022-06-28Comentarios sobre esta páginaLínea directa de Panasonic