PulseOutput_Linear_FB

Interpolación lineal

Se envían pulsos desde dos canales según los parámetros especificados en el bloque de función y en la DUT, de forma que el recorrido a la posición destino es una línea recta. 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

bExecute (BOOL)

La condición de ejecución puede ser:

  • en el flanco del trigger

  • permanente, si es necesario cambiar la velocidad

bAbsolute (BOOL)

Control de posicionamiento absoluto = TRUE, Control de posición incremental = FALSE

diInitialAndFinalSpeed (DINT)

Velocidad inicial y final: Velocidad Compuesta = 1–50000 (1Hz–50kHz)

diTargetSpeed (DINT)

Velocidad máxima: Velocidad Compuesta = 1–50000 (1Hz–50kHz)

diAccelerationTime (DINT)

Tiempo de aceleración/deceleración (FPS, FP-X): 0ms–32767ms

Tiempo de aceleración (F171_PulseOutput_Trapezoidal): 0ms–32767ms

diDecelerationTime (DINT)

Tiempo de deceleración (F171_PulseOutput_Trapezoidal): 0ms–32767ms

diTargetValue_X (DINT)

valor de preselección eje X[pulsos]-8388608–8388607

diTargetValue_Y (DINT)

Valor de preselección eje Y[pulsos]-8388608–8388607

dutChannelConfiguration_X_YDUT predefinida del sistema para la configuración del canal: PulseOutput_Channel_Configuration_DUTPara la interpolación, utilizar el canal 0 y el canal 1 o el canal 2 y 3 emparejados. Solo se debe especificar 0 o 2 (para el C14T: solo 0).

Salida

bError (BOOL)

TRUE si un valor aplicado no es válido. Se detiene la ejecución del bloque de función.

Se activa solo si la constante global MC_PulseOutput_Library_Basic_bCheckInputs está a TRUE.

riInitialAndFinalSpeed_X (REAL)

Velocidad inicial y final eje X[Hz]

riTargetSpeed_X (REAL)

Velocidad de preselección eje X[Hz]

riInitialAndFinalSpeed_Y (REAL)

Velocidad inicial y final eje Y[Hz]

riTargetSpeed_Y (REAL)

Velocidad de preselección eje Y[Hz]

dutAdditionalOutputsFPS, FP-X: PulseOutput_Linear_AdditionalOutputs_DUT

Observaciones

Esta instrucción forma parte de las instrucciones Tool de salida de pulsos. Para obtener información más detallada sobre las instrucciones que utiliza internamente, consultar la:F175_PulseOutput_Linear

Utilizar PulseInfo_IsActive para comprobar si la bandera de control del canal seleccionado está a FALSE.

Ejemplo

DUT

Con un Tipo de Datos Estructurados (DUT) se puede definir un tipo de dato compuesto por otros tipos de datos. Una DUT se define primero en el repositorio de DUTs y, seguidamente, se procesa como los tipos de datos estándar (BOOL, INT, etc.) en la lista de variables globales o la cabecera de la POU.

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
		PulseOutput_Linear: PulseOutput_Linear_FB;
		bExecute: BOOL:=FALSE;
		bAbsolute: BOOL:=FALSE;
		ChannelConfiguration_XY_DUT: PulseOutput_Channel_Configuration_DUT;
		bError: BOOL:=FALSE;
		rInitialAndFinalSpeed_X: REAL:=0;
		rTargetSpeed_X: REAL:=0;
		rInitialAndFinalSpeed_Y: REAL:=0;
		rTargetSpeed_Y: REAL:=0;
		AdditionalOutputs_DUT: PulseOutput_Linear_AdditionalOutputs_DUT;
		bConfigureDUT: BOOL:=FALSE;
		@'': @'';
	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 := 31 ;
        NETWORK_BODY
B(B_CONTACT,,bConfigureDUT,6,1,8,3,);
B(B_F,E_MOVE!,,17,0,23,4,,?DEN?D?AENO?C);
B(B_VARIN,,1,15,2,17,4,);
B(B_F,E_MOVE!,,17,8,23,12,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,15,10,17,12,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bOutput_Pulse_ForwardFalse,23,10,25,12,);
B(B_F,E_MOVE!,,17,12,23,16,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,,17,4,23,8,,?DEN?D?AENO?C);
B(B_VARIN,,TRUE,15,6,17,8,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bOutput_Pulse_ForwardTrue,23,6,25,8,);
B(B_VARIN,,TRUE,15,14,17,16,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.iChannel,23,2,25,4,);
B(B_F,E_MOVE!,,17,16,23,20,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,15,18,17,20,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bDutyRatio25,23,18,25,20,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bAccelerationSteps60,23,14,25,16,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bFrequencyRange_191Hz_100kHz,23,22,25,24,);
B(B_VARIN,,TRUE,15,22,17,24,);
B(B_F,E_MOVE!,,17,20,23,24,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,,17,24,23,28,,?DEN?D?AENO?C);
B(B_VARIN,,TRUE,15,26,17,28,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bExecuteInInterrupt,23,26,25,28,);
L(8,2,17,2);
L(12,18,17,18);
L(12,14,17,14);
L(12,10,17,10);
L(12,6,17,6);
L(12,2,12,18);
L(12,18,12,22);
L(12,22,17,22);
L(12,22,12,26);
L(12,26,17,26);
L(1,2,6,2);
L(1,0,1,31);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 12 ;
        NETWORK_BODY
B(B_FB,PulseOutput_Linear_FB!,PulseOutput_Linear,15,1,33,12,,?BbExecute?BbAbsolute?BdiInitialAndFinalSpeed?BdiTargetSpeed?BdiAccelerationTime?BdiDecelerationTime?BdiTargetValue_X?BdiTargetValue_Y?BdutChannelConfiguration_X_Y?AbError?ArInitialAndFinalSpeed_X?ArTargetSpeed_X?ArInitialAndFinalSpeed_Y?ArTargetSpeed_Y?AdutAdditionalOutputs);
B(B_VARIN,,bExecute,13,2,15,4,);
B(B_VARIN,,bAbsolute,13,3,15,5,);
B(B_VARIN,,600,13,4,15,6,);
B(B_VARIN,,12000,13,5,15,7,);
B(B_VARIN,,300,13,6,15,8,);
B(B_VARIN,,600,13,7,15,9,);
B(B_VARIN,,1000,13,8,15,10,);
B(B_VARIN,,2000,13,9,15,11,);
B(B_VARIN,,ChannelConfiguration_XY_DUT,13,10,15,12,);
B(B_VAROUT,,bError,33,2,35,4,);
B(B_VAROUT,,rInitialAndFinalSpeed_X,33,3,35,5,);
B(B_VAROUT,,rTargetSpeed_X,33,4,35,6,);
B(B_VAROUT,,rInitialAndFinalSpeed_Y,33,5,35,7,);
B(B_VAROUT,,rTargetSpeed_Y,33,6,35,8,);
B(B_VAROUT,,AdditionalOutputs_DUT,33,7,35,9,);
L(1,0,1,12);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

(* Used DUT parameters *)
ChannelConfiguration_XY_DUT.iChannel := 1;
ChannelConfiguration_XY_DUT.bOutput_Pulse_ForwardTrue := TRUE;
ChannelConfiguration_XY_DUT.bOutput_Pulse_ForwardFalse := FALSE;
ChannelConfiguration_XY_DUT.bAccelerationSteps60 := FALSE;
ChannelConfiguration_XY_DUT.bDutyRatio25 := TRUE;
ChannelConfiguration_XY_DUT.bFrequencyRange_191Hz_100kHz := TRUE;
ChannelConfiguration_XY_DUT.bExecuteInInterrupt := FALSE;
(* FB *)
PulseOutput_Linear(bExecute := bExecute,
           bAbsolute := bAbsolute,
           diInitialAndFinalSpeed := 600,
           diTargetSpeed := 12000,
           diAccelerationTime := 300,
           diDecelerationTime := 600,
           diTargetValue_X := 150000,
           diTargetValue_Y := 10000,
           dutChannelConfiguration_X_Y := ChannelConfiguration_XY_DUT,
           bError => bError,
           diInitialAndFinalSpeed_X => diInitialAndFinalSpeed_X,
           diTargetSpeed_X => diTargetSpeed_X,
           diInitialAndFinalSpeed_Y => diInitialAndFinalSpeed_Y,
           diTargetSpeed_Y => diTargetSpeed_Y,
           dutAdditionalOutputs => AdditionalOutputs_DUT);

Modificado el: 2021-07-15Comentarios sobre esta páginaLínea directa de Panasonic