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.
I comandi di procedura sono eseguiti in modo asincrono. Richiamando un comando di procedura non si 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:
Tramite FC_ExecuteProcedureCommandAsync con indirizzo topologia parametri di ingresso e IDN
Tramite 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:
Tramite FC_ReadProcedureCommandAsync con indirizzo topologia parametro di ingresso
Tramite 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. 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 si avvia quando viene emesso il comando di lettura o scrittura, non quando viene avviato nella coda. In base al numero di elementi nella coda e al tempo richiesto per elaborare tali elementi, è possibile che un comando di lettura o scrittura raggiunga il proprio timeout anche prima che ne venga avviata l'elaborazione.