FP_POS_UNIT_SET_TABLE

Imposta la tabella dati di posizionamento

Questa istruzione FP avvia il posizionamento per l'unità di posizionamento nello slot specificato in s1_Slot e per l'asse specificato in s2_Axis in base alla tabella di posizionamento impostata in s3_Table se il trigger EN è TRUE. Configurare la tabella dati di posizionamento nel Configurator PM7.

Parametri

Ingresso

s1_Slot (WORD, INT, UINT)

Numero slot

s2_Axis (WORD, INT, UINT)

Numero asse

Valori: 1–4, 8 (asse virtuale)

s3_Table (WORD, INT, UINT)

Numero di tabella di posizionamento

Valori: 1–600, 10001–10025

Flag di errore

sys_bIsOperationErrorHold (passa a TRUE e resta TRUE)
  • se l'area specificata utilizzando il registro indice eccede il limite.

  • se il numero slot e/o asse è fuori intervallo

sys_bIsOperationErrorNonHold (passa a TRUE per una scansione)
  • se l'area specificata utilizzando il registro indice eccede il limite.

  • se il numero slot e/o asse è fuori intervallo

Esempio

Variabili globali

Nella lista variabili globali si definiscono variabili alle quali possono accedere tutti i POU del progetto.

DUT

  • Ingresso

  • Uscita

    Copiate la DUT negli appunti e incollatela direttamente nel pool DUT del navigatore per utilizzare questa DUT nel programma.

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.

Corpo del POU

Quando la variabile bStart passa da FALSE a TRUE, la funzione viene eseguita.

	VAR_EXTERNAL
		g_dutPositioningInputs: FP_POS_UNIT_INPUT_DUT;
		g_dutPositioningOutputs: FP_POS_UNIT_OUTPUT_DUT;
	END_VAR
	VAR_EXTERNAL CONSTANT
		g_iPositioningUnitSlotNumber: INT:=1;
		g_iPositioningUnitAxisNumber: INT:=1;
	END_VAR
	VAR
		bAxisReady: BOOL:=FALSE;
		bStartPositioning: BOOL:=FALSE;
		iTableNumber: INT:=1;
		@'': @'';
	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 := 5 ;
        NETWORK_BODY
B(B_VARIN,,g_dutPositioningInputs.b00_ReadyPositioning,21,1,23,3,);
B(B_VARIN,,g_dutPositioningInputs.b04_ToolOperation,21,2,23,4,);
B(B_F,@AND-3!,,28,1,33,5,,?D?D?D?C);
B(B_VARIN,,g_dutPositioningInputs.b60_ErrorAxis1,21,3,23,5,);
B(B_F,NOT!,,23,2,28,4,,?D?C);
B(B_F,NOT!,,23,3,28,5,,?D?C);
B(B_COIL,,bAxisReady,43,1,45,3,);
L(23,2,28,2);
L(33,2,43,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_CONTACT,,bStartPositioning,5,1,7,3,R);
B(B_F,FP_POS_UNIT_SET_TABLE!,,25,0,38,6,,?DEN?Ds1_Slot?Ds2_Axis?Ds3_Table?AENO);
B(B_VARIN,,g_iPositioningUnitSlotNumber,23,2,25,4,);
B(B_VARIN,,g_iPositioningUnitAxisNumber,23,3,25,5,);
B(B_VARIN,,iTableNumber,23,4,25,6,);
L(1,2,5,2);
L(7,2,25,2);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_VARIN,,bStartPositioning,21,1,23,3,);
B(B_VARIN,,bAxisReady,21,2,23,4,);
B(B_F,@AND-3!,,28,1,33,5,,?D?D?D?C);
B(B_VARIN,,g_dutPositioningInputs.b18_BusyAxis1,21,3,23,5,);
B(B_F,NOT!,,23,3,28,5,,?D?C);
B(B_COIL,,g_dutPositioningOutputs.b10_PositioningStartAxis1,43,1,45,3,);
B(B_F,DF!,,23,0,28,3,,?Di?Co);
L(23,3,28,3);
L(33,2,43,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corpo ST

If (g_dutPositioningInputs.b00_ReadyPositioning AND NOT g_dutPositioningInputs.b04_ToolOperation
    AND NOT g_dutPositioningInputs.b60_ErrorAxis1) then
    bAxisReady:=TRUE;
End_if;
If (bStart) then
    FP_POS_UNIT_SET_TABLE(s1_Slot := g_iPositioningUnitSlotNumber,
                          s2_Axis := g_iPositioningUnitAxisNumber,
                          s3_Table := iTableNumber);
End_if;
If DF((bStart) AND bAxisReady Then AND NOT g_dutPositioningInputs.b18_BusyAxis1) then
    g_dutPositioningOutputs.b10_PositioningStartAxis1:=TRUE;
End_if;

L'ultima revisione: 2023-03-17Feedback su questa paginaPanasonic hotline