ATTENZIONE: Questa funzione non può essere usata in un task se nello stesso sono presenti anche le funzioni co_send_sdo()/co_asw_sdo().
Questa funzione serve per eseguire la lettura di oggetti fieldbus. 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 contemporaneamente testato 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 co_robj (stru_co_obj stru) |
---|---|
stru |
Nome della struttura di tipo stru_co_obj. |
Risultato |
Variabile di tipo i32 contenente il risultato. Vedi gestione passante e/o gestione bloccante. |
Validità |
Task, Rule (solo passante). |
Note |
•Imporre stru.phase = 1 per inizializzare la lettura. •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 stru.data. RTE cambia stru.phase = 4. •Ricezione risposta con esito negativo. RTE cambia stru.phase = 0. o-1, parametri illegali (allarme 9900) 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 o2, comando di cui si è già ricevuto risposta positiva, valore disponibile in data o>2, codice di errore SDO, vedi tabella sotto |
•Imporre stru.phase = -1 per inizializzare la lettura. •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). •Ricezione risposta con esito positivo. Il valore letto viene scritto in stru.data. RTE cambia stru.phase = 4. •Ricezione risposta con esito negativo. RTE cambia stru.phase = 0. o-1, parametri illegali (allarme 9900) 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 o2, comando di cui si è già ricevuto risposta positiva, valore disponibile in stru.data o>2, codice di errore SDO, vedi tabella sotto |
Esempio di utilizzo:
|