Adr_Of_VarOffs

Restituisce l'indirizzo di ingresso o di uscita con offset

Questa funzione restituisce l'indirizzo di una variabile con offset all'ingresso o all'uscita di una funzione base.

Parametri

Ingresso

Adr (ANY)

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

Restituisce l'indirizzo offset a 16 bit della variabile di I/O

Offs (INT)

Variabile di I/O per la quale è necessario l'indirizzo offset a 16 bit

Uscita

Var (ANY_IN_UNITS_OF_WORDS)

Variabile di uscita per la quale è necessario l'indirizzo finale a 16 bit

Note

  • Dalla variabile sull'I/O Var, l'indirizzo a 16 bit, incrementato del valore specificato nell'I/O Offs, viene restituito sull'I/O Adr. Questo ingresso o uscita deve essere collegato direttamente all'ingresso o uscita a 16 bit di una funzione base. Questa funzione può essere utilizzata solo per lavorare con i dati effettivi di una stringa, ossia con i caratteri senza l'intestazione di stringa.

  • 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

Variabili globali

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

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_EXTERNAL
		ReceiveBuffer: ARRAY [0..15] OF WORD:=[16(0)];
	END_VAR
	VAR 
		Receive: BOOL:=FALSE;
		ReceiveString: STRING[30]:='';
	END_VAR
	VAR CONSTANT 
		StringTotLenPos: INT:=0;
		StringActLenPos: INT:=1;
		StringHeaderSize: INT:=2;
	END_VAR
	VAR 
		@'': @'';
	END_VAR

Corpo LD

Quando Receive va a TRUE e il carattere di fine ricezione viene ricevuto, ossia R9038 va a TRUE, i caratteri nel buffer ReceiveBuffer ricevuti tramite l'interfaccia seriale vengono copiati nell'area dati effettivi della stringa ReceiveString. Il numero dei caratteri ricevuti viene memorizzato in ReceiveBuffer[0]; seguono quindi i caratteri della stringa ricevuti. Perciò, ReceiveBuffer può essere copiato direttamente in quest'area della stringa da questa posizione (vedere il tipo di dato STRING). La posizione del buffer ReceiveBuffer deve essere allocata nella lista variabili globali in base alle impostazioni nei registri di sistema 417 e 418 (per informazioni dettagliate, vedere Impostare il buffer di ricezione per la CPU).

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 10 ;
        NETWORK_BODY
B(B_COIL,,sys_bIsComPort1ReceptionDone,7,1,9,3,);
B(B_CONTACT,,Receive,16,1,18,3,);
B(B_F,F10_BKMV!,Instance,20,0,28,5,,?DEN?Ds1_Start?Ds2_End?AENO?Cd_Start);
B(B_VARIN,,ReceiveBuffer[0],18,2,20,4,);
B(B_VARIN,,ReceiveBuffer[15],18,3,20,5,);
B(B_F,Adr_Of_VarOffs_I!,Instance,20,6,29,10,,?D@'Var'?DOffs?CAdr);
B(B_VARIN,,StringActLenPos,18,8,20,10,);
B(B_VAROUT,,ReceiveString,29,7,31,9,);
L(1,2,7,2);
L(9,2,16,2);
L(18,2,20,2);
L(28,3,28,6);
L(20,6,28,6);
L(20,6,20,8);
L(1,0,1,10);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

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