Funzione che permette di leggere un parametro SoE (lettura del parametro stru.idn sul dispositivo identificato da stru.rid e informazioni ricevute memorizzate in destination).
La lettura può avvenire in modo passante o in modo bloccante (utilizzabile solo nei task 1-:-8).
Per modo passante si intende che la funzione deve essere continuamente chiamata e questa rende lo stato attuale dell'operazione.
Per modo bloccante si intende che la funzione viene invocata e ritorna solo quando ha completato l'operazione di lettura.
La funzione rende un esito sullo stato dell'esecuzione.
Sintassi |
i32 soe_ridn (stru_soe_idn stru, destination) |
---|---|
stru |
Struttura di tipo stru_soe_idn contenente le informazione per la lettura di un parametro SoE. |
destination |
Contiene le informazioni ricevute. destination deve essere un oggetto compatibile con i dati che si stanno leggendo (se si legge una VISIBLE STRING, destination sarà di tipo string, se si legge un OCTET_STRING sarà un array di byte o una struttura). In caso di lettura di array verranno gestite solo informazioni la cui lunghezza è <= a 256 byte. Dovendo leggere informazioni di maggior dimensione utilizzare come tipo dati OCTET_STRING e fornire un buffer di destinazione sufficientemente grande (ovviamente l'interpretazione dei dati è a carico dell'applicativo). |
Risultato |
Variabile contenente il risultato. Vedi gestione passante e/o bloccante. |
Validità |
Rule, Task. |
Requisiti di sistema |
RTE 34.18.3 |
Note |
•Imporre stru.phase = 1 per inizializzare la lettura. •Se non specificato il tipo di dato (stru.dataType=0), viene eseguita la lettura del tipo di dato su dispositivo remoto. La variabile stru.phase viene cambiata. •Il comando di lettura viene inviato al dispositivo remoto e si attende risposta. La variabile stru.phase viene cambiata. •Attesa della risposta. •Ricezione risposta con esito positivo. Il valore letto viene scritto in destination. RTE cambia stru.phase = 4. •Ricezione risposta con esito negativo. RTE cambia stru.phase = 0. o-2, gestore comunicazione occupato o-3, crash gestore comunicazione (riavvio) o-5, comando a un dispositivo non presente (stru.rid) o-6, nessuna operazione in esecuzione. stru.phase non inizializzata o-12, valore illegale di idn (allarme 9900 arg 12) o-13, valore illegale di element/cmd (allarme 9900 arg 13) o-14, valore illegale di datatype (allarme 9900 arg 4/arg 14) o-15, valore illegale di datalen (allarme 9900 arg 5/arg 15) o-16, valore illegale di phase (allarme 9900 arg 6) o-21, destinazione non specificata (allarme 9900 arg 16) o-22, destinazione cambiata (allarme 9900 arg 32) o-23, errore software o2, comando di cui si è già ricevuto risposta positiva, valore disponibile in destination o>2, codice di errore SDO, vedi tabella sotto |
•Imporre stru.phase = -1 per eseguire la lettura. •Se non specificato il tipo di dato (stru.dataType=0), viene eseguita la lettura del tipo di dato su dispositivo remoto. La variabile stru.phase viene cambiata. •Il comando di lettura viene inviato al dispositivo remoto e si attende risposta. La variabile stru.phase viene cambiata. •Attesa della risposta. Se la risposta non arriva entro un massimo di 3 secondi la funzione esce con un errore (timeout, rende -2). •Ricezione risposta con esito positivo. Il valore letto viene scritto in destination. RTE cambia stru.phase = 4. •Ricezione risposta con esito negativo. RTE cambia stru.phase = 0. o-2, gestore comunicazione occupato o-3, crash gestore comunicazione (riavvio) o-4, gestione bloccante non permessa nel task corrente (stru.phase = 1) (rule, ladder). Comando non accettato o-5, comando a un dispositivo non presente (stru.rid) o-6, nessuna operazione in esecuzione. stru.phase non inizializzata o-12, valore illegale di idn (allarme 9900 arg 12) o-13, valore illegale di element/cmd (allarme 9900 arg 13) o-14, valore illegale di datatype (allarme 9900 arg 4/arg 14) o-15, valore illegale di datalen (allarme 9900 arg 5/arg 15) o-16, valore illegale di phase (allarme 9900 arg 6) o-21, destinazione non specificata (allarme 9900 arg 16) o-22, destinazione cambiata (allarme 9900 arg 32) o-23, errore software o2, comando di cui si è già ricevuto risposta positiva, valore disponibile in destination o>2, codice di errore SDO, vedi tabella sotto |
Esempio di utilizzo:
|