WRITE_CMD Exemples
(Traduction du document original anglais)
Exemple 1 : Initialisation des défauts
Pour initialiser les défauts du bus en anneau du module 4 du rack 1 : déclarez l'IODDT Ring comme type T_CSY_RING et associez-le à la voie 0 du module TSX CSY 84 ou TSX CSY 164 du rack 1, emplacement 4 :
!
(*Si pas de WRITE_CMD en cours, alors initialisation des défauts*)
IF NOT Ring.CMD_IN_PROGR THEN Ring.ACTION_CMD := 409;
WRITE_CMD(Ring);
END_IF;
Exemple 2 : Ecriture de la puissance optique
Définir (écrire) la puissance optique. Nous utilisons le même IODDT :
!
(*Si pas de WRITE_CMD en cours, alors écriture (set) de la puissance optique*)
IF NOT Ring.CMD_IN_PROGR THEN Ring.ACTION_CMD := 2545;
Ring.PARAM_CMD_3 := 51.5;
//Paramètre 3 : puissance optique = 51.5
WRITE_CMD(Ring);
END_IF;
Exemple 3 : Lecture du rapport de transmission
Lire le rapport de transmission (BAUD_RATE) :
!
(*Si pas de WRITE_CMD en cours, alors lecture (get) du rapport de transmission*)
IF NOT Ring.CMD_IN_PROGR THEN Ring.ACTION_CMD := 1551;
WRITE_CMD(Ring);
END_IF;
!
(*Si WRITE_CMD terminé et si pas de défaut, alors la valeur du rapport de transmission est accessible dans retour 1*)
IF NOT Ring.CMD_IN_PROGR AND NOT Ring.CMD_ERR
THEN BAUD_RATE: = Ring.RETURN_CMD_1;
//rapport de transmission dans retour 1
END_IF;
Exemple 4 : Déplacer un axe réel
Déplacer l'axe réel 3 du module 4 positionné dans le rack 1, à la position 105.2, à la vitesse 5 avec une commande "MOVE absolu immédiat". Nous déclarons l'IODDT Axis_3 de type T_CSY_IND et l'associons à la voie 3 du module 4 du rack 1 :
!
(*Si pas de WRITE_CMD en cours, alors déplacer l'axe réel 3*)
IF NOT Axis_3.CMD_IN_PROGR THEN Axis_3.ACTION_CMD := 513;
Axis_3.PARAM_CMD_1 := 0;
//Paramètre 1 : type de mouvement = absolu
Axis_3.PARAM_CMD_3 := 105.2;
//Paramètre 3 : position = 105.2
Axis_3.PARAM_CMD_4 := 5.0;
//Paramètre 4 : vitesse = 5
WRITE_CMD(Axis_3);
END_IF;
Exemple 5 : Lire la position d'un esclave
Lire la position relative d'un esclave suiveur lorsque le maître est en 102.5. Nous déclarons l'IODDT Follow de type T_CSY_FOLLOW et l'associons à la voie correspondant à l'esclave suiveur :
!
(*Si pas de WRITE_CMD en cours, alors lire la position de l'esclave suiveur*)
IF NOT Follow.CMD_IN_PROGR THEN Follow.ACTION_CMD := 537;
Follow.PARAM_CMD_3 := 102.5;
//Paramètre 3 : position du maître = 102.5
WRITE_CMD(Follow);
END_IF;
!
(*Si WRITE_CMD terminé et si pas de défaut, alors la position de l'esclave est accessible dans retour 2*)
IF NOT Follow.CMD_IN_PROGR AND NOT Follow.CMD_ERR
THEN SLAVE_POSITION :=Follow.RETURN_CMD_2;
//position dans retour 2
END_IF;