Liste chaînée pour vérifier tous les esclaves

Pour surveiller un esclave individuel, l'instance est appelée dans le programme et l'état est déterminé via wState. Pour simplifier les choses, tous les maîtres et esclaves peuvent être déterminés à l'aide de listes chaînées et tous les esclaves peuvent être vérifiés à l'aide d'une simple boucle WHILE. Le maître et l'esclave ont tous deux les propriétés NextInstance et LastInstance. Ces propriétés renvoient un pointeur vers l'esclave suivant ou précédent. Pour le maître, il existe également la propriété FirstSlave, qui fournit un pointeur vers le premier esclave. Vous pouvez vérifier tous les esclaves selon l'exemple suivant :

Exemple

Déclaration :

pSlave: POINTER TO ETCSlave;

Programme:

pSlave := EtherCAT_Master.FirstSlave;
WHILE pSlave <> 0 DO
pSlave^();
IF pSlave^.wState = ETC_SLAVE_STATE.ETC_SLAVE_OPERATIONAL
THEN
;
END_IF
pSlave := pSlave^.NextInstance;
END_WHILE

Tout d'abord, le premier esclave du maître est récupéré via « EtherCAT_Master.FirstSlave ». L'instance respective est appelée dans la boucle WHILE et ainsi wState est déterminé. Ensuite, l'état peut être vérifié. Avec « pSlave^.NextInstance », le pointeur est récupéré vers l'esclave suivant. Lorsque la liste est terminée, le pointeur est NULL et la boucle est terminée.