PulseOutput_Center_FB

Interpolazione circolare (centro)

Gli impulsi vengono emessi su due canali contemporaneamente sulla base dei parametri impostati nel Function Block e nella DUT associata, in modo che il percorso per il raggiungimento della posizione target formi un arco. Il raggio del cerchio viene calcolato specificando il centro e la posizione finale. Gli impulsi vengono emessi dal canale specificato quando il flag di controllo per tale canale è FALSE e la condizione di esecuzione è TRUE.

Parametri

Ingresso

bExecute (BOOL)

Attiva il Function Block (con trigger permanente)

bAbsolute (BOOL)

Modalità di controllo assoluto = TRUE, Modalità di controllo relativo = FALSE

bReverse (BOOL)
  • TRUE=Direzione rotazione: inversa

    Dal canale 0 (asse X) al canale 2 (asse Y) (per un movimento in direzione positiva su entrambi i canali)
  • FALSE=Direzione rotazione: avanti

    Dal canale 2 (asse Y) al canale 0 (asse X) (per un movimento in direzione positiva su entrambi i canali)
diTargetSpeed (DINT)

Velocità target: Velocità composta di entrambi gli assi = 100–20000 (100Hz–20kHz)

diTargetValue_X (DINT)

Valore target asse X [impulsi]: -8388608–8388607

diTargetValue_Y (DINT)

Valore target asse Y [impulsi]: -8388608–8388607

diCenterValue_X (DINT)

valore centro asse X [impulsi]: -8388608–8388607

diCenterValue_Y (DINT)

Valore centro asse Y [impulsi]: -8388608–8388607

dutChannelConfiguration_X_Y

DUT di sistema predefinita per la configurazione del canale: PulseOutput_Channel_Configuration_DUT

Canale: 0, 2

Uscita

bError (BOOL)

TRUE se un valore di ingresso applicato non è valido. L'esecuzione del Function Block si arresta.

diRadius (DINT)

Raggio [impulsi]

Note

Questa istruzione non in linea è parte delle istruzioni TOOL per uscita ad impulsi. Per una descrizione dettagliata delle istruzioni utilizzate internamente, vedere: F176_PulseOutput_Center

Utilizzate PulseInfo_IsActive per controllare che il flag di controllo per il canale selezionato sia FALSE.

Esempio

DUT

Con un tipo unità dati (DUT) è possibile definire un tipo unità dati composto da altri tipi di dati. Una DUT è definita prima di tutto nel gruppo DUT e poi elaborata come i tipi di dati standard (BOOL, INT, ecc.) nella lista delle variabili globali o nell'intestazione del POU.

Intestazione del POU

Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU.La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.

	VAR
		PulseOutput_Center: PulseOutput_Center_FB;
		bExecute: BOOL:=FALSE;
		bAbsolute: BOOL:=FALSE;
		bContinueAfterDone: BOOL:=FALSE;
		bCounterclockwise: BOOL:=FALSE;
		ChannelConfiguration_X_DUT: PulseOutput_Channel_Configuration_DUT;
		bError: BOOL:=FALSE;
		diRadius: DINT:=0;
		bConfigure: BOOL:=FALSE;
	END_VAR

Corpo LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 25 ;
        NETWORK_BODY
B(B_CONTACT,,bConfigure,7,1,9,3,);
B(B_F,E_MOVE!,,19,0,25,4,,?DEN?D?AENO?C);
B(B_VARIN,,1,17,2,19,4,);
B(B_F,E_MOVE!,,19,8,25,12,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,17,10,19,12,);
B(B_VAROUT,,ChannelConfiguration_X_DUT.bOutput_Pulse_SignReverse,25,10,27,12,);
B(B_F,E_MOVE!,,19,12,25,16,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,,19,4,25,8,,?DEN?D?AENO?C);
B(B_VARIN,,TRUE,17,6,19,8,);
B(B_VAROUT,,ChannelConfiguration_X_DUT.bOutput_Pulse_SignForward,25,6,27,8,);
B(B_VARIN,,TRUE,17,14,19,16,);
B(B_VAROUT,,ChannelConfiguration_X_DUT.iChannel,25,2,27,4,);
B(B_F,E_MOVE!,,19,16,25,20,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,17,18,19,20,);
B(B_VAROUT,,ChannelConfiguration_X_DUT.bDutyRatio25,25,18,27,20,);
B(B_F,E_MOVE!,,19,20,25,24,,?DEN?D?AENO?C);
B(B_VAROUT,,ChannelConfiguration_X_DUT.bAccelerationSteps60,25,14,27,16,);
B(B_VAROUT,,ChannelConfiguration_X_DUT.bFrequencyRange_191Hz_100kHz,25,22,27,24,);
B(B_VARIN,,TRUE,17,22,19,24,);
L(1,2,7,2);
L(10,2,10,6);
L(10,6,19,6);
L(9,2,10,2);
L(10,2,19,2);
L(10,10,19,10);
L(10,10,10,14);
L(10,6,10,10);
L(10,14,19,14);
L(10,14,10,18);
L(10,18,19,18);
L(10,18,10,22);
L(10,22,19,22);
L(1,0,1,25);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 13 ;
        NETWORK_BODY
B(B_FB,PulseOutput_Center_FB!,PulseOutput_Center,14,1,28,13,,?BbExecute?BbAbsolute?BbContinueAfterDone?BbCounterclockwise?BdiTargetSpeed?BdiTargetValue_X?BdiTargetValue_Y?BdiCenterValue_X?BdiCenterValue_Y?BdutChannelConfiguration_X?AbError?AdiRadius);
B(B_VARIN,,bExecute,12,2,14,4,);
B(B_VARIN,,bAbsolute,12,3,14,5,);
B(B_VARIN,,bContinueAfterDone,12,4,14,6,);
B(B_VARIN,,bCounterclockwise,12,5,14,7,);
B(B_VARIN,,15000,12,6,14,8,);
B(B_VARIN,,7000,12,7,14,9,);
B(B_VARIN,,12000,12,8,14,10,);
B(B_VARIN,,500,12,9,14,11,);
B(B_VARIN,,900,12,10,14,12,);
B(B_VARIN,,ChannelConfiguration_X_DUT,12,11,14,13,);
B(B_VAROUT,,bError,28,2,30,4,);
B(B_VAROUT,,diRadius,28,3,30,5,);
L(1,0,1,13);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corpo 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.bExecuteInInterruptProgram := FALSE;
(* FB *)
PulseOutput_Center(bExecute := bExecute,
           bAbsolute := bAbsolute,
           bContinueAfterDone := bContinueAfterDone,
           bCounterclockwise := bCounterclockwise,
           diTargetSpeed := 15000,
           diTargetValue_X := 7000,
           diTargetValue_Y := 12000,
           diCenterValue_X := 500,
           diCenterValue_Y := 900,
           dutChannelConfiguration_X_Y := ChannelConfiguration_XY_DUT,
           bError => bError,
           diRadius => diRadius);

L'ultima revisione: 2022-11-14Feedback su questa paginaPanasonic hotline