La fonction de surveillance des écarts de position entre axes permet de surveiller des écarts entre des axes indépendants (réel, imaginaire ou consigne externe) quelconques du module.
Cette fonction pourra être instanciée plusieurs fois avec des listes d'axes différentes.
La fonction sera assurée par 3 opcodes :
-
lancement de la surveillance,
-
relecture des paramètres de la fonction,
-
arrêt de la surveillance.
Lancement de la surveillance
Permet de démarrer la surveillance par l'appel d'une fonction TRF_RECIPE (opcode 26200) sur la voie 0.
A l'appel de la fonction le module fait une photographie des différentes positions des axes à surveiller puis :
-
si 2 axes ont un déplacement divergent de plus que le seuil d'alarme, le module déclenche un warning sur les deux axes fautifs,
-
si 2 axes ont un déplacement divergent de plus que le seuil défaut, le module déclenche un défaut sur les deux axes fautifs, arrête tous les axes de la liste et déclenche un warning sur les axes non fautifs.
Objet
|
Type
|
Explication
|
Commentaire
|
%MF r.m.0.15
|
Flottant
|
Numéro d'instance
|
Paramètre du TRF_RECIPE, transformé en entier par le module
|
%MF i
|
Flottant
|
Seuil d'alarme
|
En unité de position de l'axe de référence
|
%MF i+2
|
Flottant
|
Seuil de défaut
|
En unité de position de l'axe de référence
|
%MW i+4
|
Mot
|
Axe de référence
|
|
%MW i+5
|
Mot
|
Axe 1
|
|
%MF i+6
|
Flottant
|
Numérateur Axe 1
|
|
%MF i+8
|
Flottant
|
Dénominateur Axe 1
|
|
.. .. ..
|
..
|
..
|
|
%MW i+5+5(N-1)
|
Mot
|
Axe N
|
|
%MF i+5+5(N-1)+1
|
Flottant
|
Numérateur Axe N
|
|
%MF i+5+5(N-1)+3
|
Flottant
|
Dénominateur Axe N
|
|
Exemple :
Surveillance des axes 8, 12 et 7 :
-
l'axe 8 est configuré en mm,
-
l'axe 12 est configuré en °. Il fait 4° quand l'axe 8 fait 1 mm,
-
l'axe 7 est configuré en tours. Il fait 1 tour quand l'axe 8 fait 10 mm.
Le seuil d'alarme est de 4 mm.
Le seuil de défaut est de 10 mm.
IF %MW104.0.0: X3 = 0 THEN (* pas de TRF_RECIPE en cours *)
%MW104.0.10 := 26200; (* Action 26200 = GAP_CONTROL *)
%MF104.0.15 := 1.0; (* Numéro d'instance *
%MF150 :=4.0; (* Seuil d'alarme *)
%MF152 := 10.0; (* Seuil de défaut *)
%MW154 := 8; (* Axe de référence *)
%MW155 := 12; (* Deuxième axe à surveiller *)
%MF156 := 4.0.0; (* Numérateur du rapport entre le 2ème axe et l'axe de référence *)
%MF158 := 1.0; (* Dénominateur du rapport entre le 2ème axe et l'axe de référence *)
%MW160 :=7.0; (* Troisième axe à surveiller *)
%MF161 := 1.0; (* Numérateur du rapport entre le 3eme axe et l'axe de référence *)
%MF163 := 10.0; (* Dénominateur du rapport entre le 3eme axe et l'axe de référence *)
TRF_RECIPE %CH 104.0 (15,150);
END_IF;
Une alarme sera déclenchée si l'axe 8 se déplace de 5 mm alors que l'axe 12 n'a bougé que de 4°.
Un défaut sera déclenché si l'axe 8 se déplace de 20 mm alors que l'axe 12 n'a bougé que de 4°.
Cas de refus du TRF_RECIPE 26200 : erreur sur le mot %MWr.m.0.3
-
la taille des données (premier paramètre du TRF_RECIPE) est incorrecte => code d'erreur 23,
-
le numéro d'instance est incorrect => code d'erreur 10. Le numéro d'instance doit être compris entre 0 et 7 soit 8 instances simultanées au maximum,
-
l'instance est déjà active => code d'erreur 64,
-
le seuil d'alarme est supérieur au seuil de défaut => code d'erreur 65,
-
un des seuils est négatif => code d'erreur 66,
-
un des axes à surveiller correspond à un axe configuré ni en réel, ni en imaginaire et ni en consigne externe => code d'erreur 37,
-
un des dénominateur est nul => code d'erreur 67.
Relecture des paramètres de la fonction
Permet de relire les paramètres de surveillance d'une instance donnée, par l'appel d'une fonction TRF_RECIPE (opcode 16200) sur la voie 0.
Le résultat de la fonction sera lisible sur des %M banalisés.
Objet
|
Type
|
Explication
|
Commentaire
|
%MF i
|
Flottant
|
Seuil d'alarme
|
En unité de position de l'axe de référence
|
%MF i+2
|
Flottant
|
Seuil de défaut
|
En unité de position de l'axe de référence
|
%MW i+4
|
Mot
|
Axe de référence
|
|
%MW i+5
|
Mot
|
Axe 1
|
|
%MF i+6
|
Flottant
|
Numérateur Axe 1
|
|
%MF i+8
|
Flottant
|
Dénominateur Axe 1
|
|
.. .. ..
|
..
|
..
|
|
%MW i+5+5(N-1)
|
Mot
|
Axe N
|
|
%MF i+5+5(N-1)+1
|
Flottant
|
Numérateur Axe N
|
|
%MF i+5+5(N-1)+3
|
Flottant
|
Dénominateur Axe N
|
|
Exemple :
IF %MW104.0.0: X3 = 0 THEN (* Pas de TRF_RECIPE en cours*)
%MW104.0.10 := 16200; (* Action 26200 = GAP_CONTROL*)
%MF104.0.15 := 1.0 (* Instance à relire*)
TRF_RECIPE %CH 104.0 (15,150);
END_IF;
Cas de refus du TRF_RECIPE 16200 : erreur sur le mot %MWr.m.0.3 ;
-
la taille des données (premier paramètre du TRF_RECIPE) est incorrecte => code d'erreur 23,
-
le numéro d'instance est incorrect => code d'erreur 10. Le numéro d'instance doit être compris entre 0 et 7 soit 8 instances simultanées au maximum,
-
l'instance n'est pas active => code d'erreur 68.
Permet de supprimer la surveillance d'une instance donnée, par l'appel d'une fonction TRF_RECIPE (opcode 14200) sur la voie 0.
Exemple:
IF %MW104.0.0: X3 = 0 THEN (* Pas de TRF_RECIPE en cours *)
%MW104.0.10 := 14200; (* Action 14200 = GAP_CONTROL *)
%MF104.0.15 := 1.0 (* Instance à supprimer*)
TRF_RECIPE %CH 104.0 (0,0);
END_IF;
Cas de refus du TRF_RECIPE 14200 : erreur sur le mot %MWr.m.0.3 ;
-
le numéro d'instance est incorrect => code d'erreur 10. Le numéro d'instance doit être compris entre 0 et 7 soit 8 instances simultanées au maximum,
-
l'instance n'est pas active => code d'erreur 68.
Contrôle de l'activité de la fonction de surveillance
Permet de contrôler si une instance est active ou inactive, par l'appel d'une fonction TRF_RECIPE (opcode 16201) sur la voie 0.
Le résultat de la fonction est lisible sur un %MW banalisé :
TRF_RECIPE %CH4.0(1,150)
avec 1= longueur et 150 = offset retour.
Chaque bit du premier octet est l'image de l'activité de l'instance correspondante (exemple : Bit 0 => Instance 0 etc.)
-
1=> instance active,
-
0 => instance inactive.
Exemple : l'instance est t'elle active?
IF %M9 AND NOT %MW4.0:X3 THEN
%MW4.0.10:=16201;
TRF_RECIPE %CH4.0(1,150);
RESET %M9;
END_IF;
Le résultat est accessible sur le mot %MW150 .
Si %MW150 = 3, les instances 0 et 1 sont actives.
Refus :erreur sur le mot %MWr.m,i,3 :
-
si la longueur à lire est différente de 1==> Code d'erreur 22,
-
si la longueur est supérieure au nombre de mots (%MW ) configuré ==> Code d'erreur 19.