AdrDT_Of_Offs

Restituisce l'indirizzo DT dell'ingresso o uscita con offset

Partendo dal valore sull'I/O Offs, la funzione genera un indirizzo a 16 bit nell'area DT sull'I/O AdrDT. Questo ingresso deve essere collegato direttamente a un I/O a 16 bit di una funzione base. Il valore sull'I/O Offs rappresenta l'offset indirizzo all'interno dell'area dati DT. Tramite GetPointer può essere trasferito insieme a un valore per l'area di memoria in una funzione o un Function Block definiti dall'utente.

Parametri

Ingresso

AdrDT (INT)

Restituisce l'indirizzo offset DT a 16 bit

Questo pin deve essere collegato all'I/O di una funzione base per cui sia ammesso il tipo di dato INT, WORD

Uscita

Offs (WORD, INT, UINT)

Offset per l'indirizzo DT0

Note

  • Ricordate: l'esecuzione della funzione base che utilizza l'indirizzo creato nell'area DT si determina allocando alla funzione Is_AreaDT il valore per l'area di memoria della variabile all'ingresso EN.

  • Questa funzione accede internamente ad uno dei registri indice utilizzato anche per i calcoli degli array.

  • Solo per LD e FBD editor: Utilizzate “Istruzione ingresso” o “Istruzione uscita” nella finestra ancorabile “Istruzioni” per inserire l'istruzione richiesta nella finestra di programmazione.

Esempio

DUT

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
		start: BOOL:=FALSE;
			(*activation of the function*)
		DutNonBoolean: @'Dut_NonBoolean';
			(*structured data type*)
		ActualPosition: DINT:=0;
			(*beginning position from which the data should be read to the IC card*)
	END_VAR

Qui è dichiarata la variabile DutNonBoolean del tipo di dato allocato nella DUT menzionata sopra. L'allocazione di valori agli elementi della variabile DutNonBoolean non è stata eseguita nell'intestazione del POU o nel corpo in quanto i valori della variabile DutNonBoolean vengono sovrascritti dopo che la funzione ReadFromIcCard viene eseguita.

Corpo del POU

Quando la variabile start passa da FALSE a TRUE, la funzione ReadFromIcCard viene eseguita. La funzione legge i valori sulla IC memory card a partire dall'indirizzo ActualPosition e scrive le informazioni nella variabile DutNonBoolean. Non dimenticate che la IC memory card deve essere formattata in modo appropriato tramite il menu “Online” > “Gestore IC memory card...” e che, se necessario, i valori ad iniziare dall'indirizzo ActualPosition devono essere presenti sulla IC memory card.

Corpo LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 8 ;
        NETWORK_BODY
B(B_CONTACT,,start,6,1,8,3,);
B(B_F,ReadFromIcCard!,Instance,18,1,27,8,,?DEN?DArea?DOffset?DSize?DPosition?AENO?C);
B(B_VARIN,,2,16,4,18,6,);
B(B_VARIN,,ActualPosition,16,6,18,8,);
B(B_VAROUT,,ActualPosition,27,3,29,5,);
B(B_F,GetPointer!,Instance,11,3,18,5,,?D?C);
B(B_VARIN,,Dut_NonBoolean,7,3,9,5,);
B(B_F,Size_Of_Var!,Instance,9,5,16,7,,?D?C);
L(18,2,18,3);
L(8,2,18,2);
L(1,2,6,2);
L(9,4,11,4);
L(9,4,9,6);
L(16,6,18,6);
L(1,0,1,8);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Esempio: programmazione della funzione definita dall'utente ReadFromIcCard:

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_INPUT
		p32Pointer: POINTER32;
			(*area, offset and size of data values*)
		diPosition: DINT:=0;
			(*beginning position from which the data should be read from the IC card*)
	END_VAR
	VAR_OUTPUT
		p32ActualPosition: POINTER32;
			(*shows the area, offset and size where the data of the IC card is stored*)
	END_VAR
	VAR
	END_VAR

Corpo del POU

Se la variabile i cui valori di Area e Offset sono forniti tramite il programma richiamato si trova nell'area DT o FL (perché l'indirizzo della variabile p32Pointer è allocato all'area DT o FL dal compilatore), il dato viene letto dalla IC memory card a partire da p32ActualPosition. La posizione viene incrementata della dimensione di questa variabile e restituita.

Corpo LD

	BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 9 ;
        NETWORK_BODY
B(B_VARIN,,2,20,3,22,5,);
B(B_VARIN,,1000,20,4,22,6,);
B(B_VARIN,,awProcessDataToGet[0],10,5,12,7,);
B(B_CONTACT,,bGetData,5,2,7,4,R);
B(B_F,Size_Of_Var!,Instance,12,5,19,7,,?D?C);
B(B_F,E_ReadFromIcCard!,Instance,22,1,37,7,,?DEN?DBankNumber?DBankOffset?DDataNumberOfWords?AENO?CDataStartAddress);
B(B_F,Adr_Of_Var_O!,Instance,37,3,45,5,,?D?C);
B(B_VAROUT,,awProcessDataToGet,45,3,47,5,);
L(1,3,5,3);
L(19,6,22,6);
L(1,0,1,9);
L(7,3,22,3);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY
Argomenti correlati

Altri progetti d'esempio (directory "Esempi" dell'installazione di FPWIN Pro):

Read, write IC card (REAL, DUT, FP10SH, FP2SH)

Read, write shared memory (REAL, DUT, FP10SH, FP2SH, FP2)

L'ultima revisione: 2021-11-09Feedback su questa paginaPanasonic hotline