Requête de démarrage d’une communication cyclique
Cette instruction FP démarre le nœud sur lequel la requête de démarrage est faite et écrit le résultat dans la variable de sortie d_Result. La table des numéros de nœuds est spécifiée par FP_ETHERNETIP_STATE_TABLE_DUT.
Entrée
Table des numéros de nœuds pour les requêtes de démarrage
Adresse de départ de la mémoire de sauvegarde du numéro de nœuds maximum (1-256) ou constante.
Sortie
Destination vers laquelle les données lues sont écrites.
0 : Le démarrage du nœud spécifié est terminé.
1 : Démarrage du nœud spécifié en cours.
2 : Échec du démarrage du nœud spécifié.
3 : Démarrage multiple de FP_ETHERNETIP_START
Si la zone lue est en dehors de l’intervalle autorisé.
Si l’instruction est exécutée dans un programme d’interruption.
Si la zone lue est en dehors de l’intervalle autorisé.
Si l’instruction est exécutée dans un programme d’interruption.
Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.
VAR
bEnable: BOOL:=FALSE;
wResult: WORD:=0;
dutNodes_NodeTableStart: FP_ETHERNETIP_STATE_TABLE_DUT;
END_VAR
Lorsque les variables sys_bIsEtherNetIPStartStopControllable et bEnable sont définies sur TRUE, la fonction est exécutée.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,dutNodes_NodeTableStart,13,5,15,7,);
B(B_VAROUT,,wResult,27,5,29,7,);
B(B_CONTACT,,bEnable,12,3,14,5,);
B(B_CONTACT,,sys_bIsEtherNetIPStartStopControllable,8,1,10,3,);
B(B_F,FP_ETHERNETIP_START!,,15,3,27,7,,?DEN?Dd_dutStateTable?AENO?Cd_Result);
L(1,2,8,2);
L(14,4,14,5);
L(14,5,15,5);
L(10,2,10,4);
L(10,4,12,4);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF (sys_bIsEtherNetIPStartStopControllable) AND (bEnable) then
FP_ETHERNETIP_START(d_dutStateTable := dutNodes_NodeTableStart,
d_Result => wResult);
End_if;
END_IF;