FP_END_SCAN

Fine condizionale

Termina la scansione corrente del codice del programma nella posizione corrente del programma.

Parametri

Ingresso

EN (BOOL)

se TRUE, l'istruzione viene eseguita.

Uscita

ENO (BOOL)

impostata su TRUE, se l'istruzione è stata elaborata correttamente

Note

  • Quando la condizione di esecuzione passa a TRUE, il programma termina la scansione corrente e inizia l'elaborazione I/O. Il programma ritorna poi al primo indirizzo.

  • Questa istruzione non può essere eseguita in sottoprogrammi come programmi di subroutine o programmi di interrupt. L'istruzione FP_END_SCAN deve essere utilizzata esclusivamente nell'area del programma principale.

  • All'interno del programma principale possono essere utilizzate due o più istruzioni FP_END_SCAN.

  • È necessario prestare attenzione durante l'utilizzo di una delle istruzioni elencate di seguito, le quali vengono eseguite rilevando il fronte di salita di una condizione di esecuzione (trigger).

    • DF (differenziale fronte di salita)

    • Conteggio ingresso per CT (contatore)

    • Conteggio ingresso per F118_UDC (contatore su/giù)

    • Spostamento ingresso per SR (registro spostamento)

    • Spostamento ingresso per F119_LRSR (registro spostamento sinistra/destra)

    • Esecuzione differenziale di istruzioni P (specificata da P e un numero, p.es. P20_ADD)

Esempio

Lista dei Task

Intestazione del POUCopy code to clipboard

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
		bEndCurrentScan: BOOL:=FALSE;
		iCounterExecuted: INT:=0;
		iCounterNotExecuted: INT:=0;
	END_VAR

Corpo LDCopy code to clipboard

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_F,FP_INC!,,20,0,26,4,,?DEN?Dd?Ad?AENO);
B(B_VARIN,,iCounterExecuted,18,2,20,4,);
L(1,2,20,2);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 3 ;
        NETWORK_BODY
B(B_F,FP_END_SCAN!,,19,0,27,3,,?DEN?AENO);
B(B_CONTACT,,bEndCurrentScan,6,1,8,3,);
L(1,2,6,2);
L(8,2,19,2);
L(1,0,1,3);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_F,FP_INC!,,20,0,26,4,,?DEN?Dd?Ad?AENO);
B(B_VARIN,,iCounterNotExecuted,18,2,20,4,);
L(1,2,20,2);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Esempio Program_2

Corpo STCopy code to clipboard

FP_INC(d := iCounterExecuted);
If (bEndCurrentScan) then
    FP_END_SCAN();
End_if;
FP_INC(d := iCounterNotExecuted);

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