Configurazione dei dispositivi tramite il canale di servizio
Il master Sercos può utilizzare il Canale di servizio (SVC) per leggere e scrivere IDN e comandi di procedura. La comunicazione tramite l’SVC utilizza il canale in tempo reale, ma è non ciclica. Il tempo di esecuzione tipico di un parametro da 4 byte è circa 10 cicli Sercos. In base alla disponibilità dell’SVC, il tempo di esecuzione può protrarsi in modo considerevole. Siccome in un qualsiasi buffer è possibile mettere in coda fino a 20 comandi di procedura e funzionamenti di lettura e scrittura IDN, il completamento di un dato comando di procedura o funzionamento di lettura e scrittura IDN può richiedere un tempo notevole.
Vedere Comunicazione non ciclica Sercos tramite RTC per informazioni dettagliate su SVC e la sezione Parametri Sercos per informazioni dettagliate sui comandi di procedura.
Lettura e scrittura dei comandi di procedura
I comandi di procedura sono eseguiti in modo asincrono. Ciò significa che richiamare un comando di procedura non blocca il task. È necessario leggere lo stato del comando di procedura per sapere se è terminato.
Sono due le modalità per eseguire un comando di procedura:
oTramite FC_ExecuteProcedureCommandAsync con indirizzo topologia parametri di ingresso e IDN
oTramite FC_ExecuteProcedureCommandAsyncViaHandle con handle parametri di ingresso e IDN
Valori restituiti possibili:
DINT |
Nome (ET_Result) |
Descrizione |
---|---|---|
0 |
Ok |
Comando di procedura eseguito. |
8 |
Pending |
Comando di procedura in attesa di esecuzione. |
-1 |
DeviceManagerInvalidDeviceHandle |
Il comando di procedura non può essere eseguito. Solo per chiamata tramite handle. |
-2 |
DeviceManagerNoPhysicalSlaveConnected |
Il comando di procedura non può essere eseguito. |
-11 |
TopologicalAddressOutOfBounds |
Il comando di procedura non può essere eseguito. Solo per chiamata tramite indirizzo topologia. |
-15 |
ServiceChannelIdnInvalid |
Il comando di procedura non può essere eseguito. |
-43 |
ServiceChannelBusy |
Il comando di procedura non può essere eseguito. |
-99 |
UnexpectedFeedback |
Il comando di procedura non può essere eseguito. |
Sono due le modalità per la lettura dello stato di un comando di procedura:
oTramite FC_ReadProcedureCommandAsync con indirizzo topologia parametro di ingresso
oTramite FC_ReadProcedureCommandAsyncViaHandle con handle parametro di ingresso
I valori restituiti sono gli stessi dell'esecuzione del comando di procedura. La chiamata restituisce lo stato del comando di procedura in elaborazione. Se nessun comando di procedura è in elaborazione, la chiamata restituisce lo stato del comando di procedura successivo nella coda. Un comando di procedura è finito quando il valore restituito non è 8.
La lettura e la scrittura di un parametro vengono eseguite in modo asincrono. Ciò significa che il task non è bloccato.
Utilizzare il blocco funzione FB_WriteIDN per scrivere un parametro e il blocco funzione FB_ReadIDN per leggere i valori di un parametro.
Timeout è uno dei parametri di ingresso per FB_WriteIDN e FB_ReadIDN. Il valore di timeout predefinito è 1000000 µs (1 s). Il timeout inizia quando viene attivato il comando lettura o scrittura, non quando viene iniziato nella coda. In base al numero di elementi in coda e al tempo necessario per elaborarli, un comando lettura o scrittura potrebbe raggiungere il timeout anche prima di essere elaborato.