AdrFL_Of_Offs I/O, Restituisce l'indirizzo FL dell'ingresso o uscita con offset
Partendo dal valore sull'I/O Offs, la funzione genera un indirizzo a 16 bit nell'area FL sull'I/O AdrFL. Questo I/O 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 FL. Tramite GetPointer può essere trasferito insieme a un valore per l'area di memoria in una funzione o un Function Block definiti dall'utente.
Ingresso
Restituisce l'indirizzo offset FL 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
Offset per l'indirizzo FL0
Ricordate: l'esecuzione della funzione base che utilizza l'indirizzo creato nell'area FL si determina allocando alla funzione Is_AreaFL 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. Se l'area FL non è disponibile per un dato PLC, l'indirizzo DT0 viene automaticamente generato al posto dell'indirizzo FL.
La funzione Is_AreaFL restituisce sempre FALSE, impedendo l'esecuzione di un comando con un indirizzo privo di significato. Le funzioni e i Function Block definiti dall'utente scritti con questa funzione possono quindi essere eseguiti sui PLC che non supportano l'area FL.
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.
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.
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 e che, se necessario, i valori ad iniziare dall'indirizzo ActualPosition devono essere presenti sulla IC memory card.
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