Le maître Sercos peut utiliser le canal de service (SVC) pour lire et écrire des IDN et des commandes de procédure. La communication via le SVC utilise le canal temps réel, mais elle est non cyclique. La durée d’exécution type d'un paramètre de 4 octets est d’environ 10 cycles Sercos. Selon la disponibilité du SVC, cette durée peut s'allonger considérablement. Comme il est possible de mettre en attente jusqu’à 20 commandes de procédure et opérations de lecture et écriture d’IDN dans un tampon commun, l’exécution d'une commande de procédure ou d'une opération de lecture ou d'écriture d’IDN peut requérir un certain temps.
Consultez la section Communication Sercos non cyclique via le RTC pour en savoir plus sur le SVC, et la section Paramètres Sercos pour en savoir plus sur les IDN et les commandes de procédure.
Les commandes de procédure sont exécutées de manière asynchrone. Une commande de procédure ne bloque pas la tâche. Vous devez lire l’état de la commande de procédure pour savoir si elle est terminée.
Pour exécuter une commande de procédure, deux possibilités s’offrent à vous :
Via FC_ExecuteProcedureCommandAsync avec l'IDN et l’adresse topologique des paramètres d’entrée
Via FC_ExecuteProcedureCommandAsyncViaHandle avec l’IDN et le pointeur des paramètres d’entrée
Valeurs de retour possibles :
DINT |
Nom (ET_Result) |
Description |
---|---|---|
0 |
Ok |
Commande de procédure exécutée. |
8 |
Pending |
Commande de procédure en attente d’exécution. |
-1 |
DeviceManagerInvalidDeviceHandle |
Impossible d’exécuter la commande de procédure. Uniquement pour appel via le pointeur. |
-2 |
DeviceManagerNoPhysicalSlaveConnected |
Impossible d’exécuter la commande de procédure. |
-11 |
TopologicalAddressOutOfBounds |
Impossible d’exécuter la commande de procédure. Uniquement pour appel via l’adresse topologique. |
-15 |
ServiceChannelIdnInvalid |
Impossible d’exécuter la commande de procédure. |
-43 |
ServiceChannelBusy |
Impossible d’exécuter la commande de procédure. |
-99 |
UnexpectedFeedback |
Impossible d’exécuter la commande de procédure. |
Pour lire l'état d’une commande de procédure, deux possibilités s’offrent à vous :
Via FC_ReadProcedureCommandAsync avec l’adresse topologique des paramètres d’entrée
Via FC_ReadProcedureCommandAsyncViaHandle avec le pointeur des paramètres d’entrée
Les valeurs de retour sont identiques à celles concernant l’exécution d’une commande de procédure. L'appel renvoie l’état de la commande de procédure en cours de traitement. Si aucune commande de procédure n’est en cours de traitement, l'appel renvoie l’état de la commande de procédure suivante dans la file d'attente. Une commande de procédure est terminée si la valeur de retour est différente de 8.
La lecture ou l’écriture d'un paramètre est asynchrone. La tâche n’est pas bloquée.
Utilisez le bloc fonction FB_WriteIDN pour écrire un paramètre et le bloc fonction FB_ReadIDN pour lire les valeurs d’un paramètre.
Le timeout est l’un des paramètres d’entrée pour FB_WriteIDN et FB_ReadIDN. La valeur par défaut du timeout est 1000000 µs (1 s). Le timeout démarre au déclenchement de la commande de lecture ou d'écriture, pas à son démarrage dans la file d'attente. Selon le nombre d'éléments et le temps nécessaire pour traiter ces éléments, il se peut qu’une commande de lecture ou d'écriture atteigne son timeout avant même son lancement.