Bonjour a tous.
Je voudrais émuler une boite a cames.
J'envisage deux façons de la faire :
Methode 1 : je fait une table de 360 valeurs.
C'est facile, mais ça fait me parait un peu couteux en mémoire et ça va faire beaucoup de clics sur l'IHM pour dessiner chaque came (j'en ai une pelletée au total sur mon projet)
Methode 2 : Je stocke juste les positions des passages 0 a 1 et de 1 a zéro.
Mais du coup comment je fait pour exploiter ma "recette". Si au démarrage je suis a une position qui n'est aucun des points de basculement comment je devine l’état que je suis supposé avoir ? Je force a faire un tour pour initialiser le bouzin ?
Si mon codeur passe directement de 9 a 11 entre 2 scrutations du programme et que ma valeur de basculement était a 10, comment je fait pour ne pas "rater" le coche ?
Je suis a peu près certain qu'il existe des algos éprouvés pour faire le taff. J'ai rien trouvé de pertinent, mais je pense que c'est parce que je cherche mal. Je n'ai pas la moindre idée du vocabulaire a utiliser dans gogole pour les retrouver.
Emuler une boite a cames.
-
Guigui744
- Asservi son premier moteur

- Messages : 22
- Enregistré le : 08 avr. 2024, 17:03
- Localisation : Annecy
Re: Emuler une boite a cames.
Bonjour,
Au lieu de basculer d'état a une valeur (Basculement a 1 si codeur = 10, Basculement a 0 si codeur = 120),
Je vérifierai si notre valeur est superieur ou inferieur au codeur (Basculement a 1 si codeur > 10 et codeur < 120)
Au lieu de basculer d'état a une valeur (Basculement a 1 si codeur = 10, Basculement a 0 si codeur = 120),
Je vérifierai si notre valeur est superieur ou inferieur au codeur (Basculement a 1 si codeur > 10 et codeur < 120)
Re: Emuler une boite a cames.
C'est sur quel automate?
-
MiGaNuTs
- Mi homme - Mi automate

- Messages : 1572
- Enregistré le : 12 nov. 2015, 21:02
- Localisation : 45 - Loiret
- Contact :
Re: Emuler une boite a cames.
Ça ne fonctionne que s'il y'a qu'un seul passage a 1 par tour, et que l'angle de demarrage est inférieur a celui d’arrêt.
Par exemple si je démarre a 320° et que j’arrête a 25°, bah il faut écrire un 2eme bout de code juste pour ce cas particulier.
Si j'ai plusieurs passages a 1 (puis retour a zéro), il me faut autant de bouts de code différents.
Ou alors il faut obliger a avoir un seul basculement par came et par tour, et faire des "OU" entre plusieurs cames
Peu importe, je m'interroge juste sur l'existance (ou non) d'un meilleur algo.
La façon dont on converti la logique du fonctionnement en programme en fonction de l'automate ne change rien au principe du truc.
Pour moi la principe de la table indexée me semble le plus fiable et le plus simple, mais c'est pas du tout économe en mémoire et c'est long a renseigner.
Et si on bosse en 1/10eme de degrés ça peut vite devenir pachydermique.
-
Guigui744
- Asservi son premier moteur

- Messages : 22
- Enregistré le : 08 avr. 2024, 17:03
- Localisation : Annecy
Re: Emuler une boite a cames.
J'avais récuperé un programme italien sur une machine à came. (Schneider M340)
Ils avaient un bloc fonction qui permet de savoir si on est dans notre position donnée :
Dans le programme:
G100_Came(
PosizioneEncoder:=PosizioneEncoder,
StartCam:=3550,
EndCam:=100);
Dans le bloc fonction:
IF (StartCam <= EndCam) THEN
IF (PosizioneEncoder >= StartCam) AND (PosizioneEncoder <= EndCam) THEN
CamOut:=TRUE;
ELSE
CamOut:=FALSE;
END_IF;
ELSE
IF (PosizioneEncoder >= StartCam) OR (PosizioneEncoder <= EndCam) THEN
CamOut:=TRUE;
ELSE
CamOut:=FALSE;
END_IF;
END_IF;
Apres on verifiait G100_Came.CamOut = TRUE ou FALSE
Cela reste un programme italien que je ne connais pas. Il faut vérifier si cela marche, mais pour moi oui.
Ils avaient un bloc fonction qui permet de savoir si on est dans notre position donnée :
Dans le programme:
G100_Came(
PosizioneEncoder:=PosizioneEncoder,
StartCam:=3550,
EndCam:=100);
Dans le bloc fonction:
IF (StartCam <= EndCam) THEN
IF (PosizioneEncoder >= StartCam) AND (PosizioneEncoder <= EndCam) THEN
CamOut:=TRUE;
ELSE
CamOut:=FALSE;
END_IF;
ELSE
IF (PosizioneEncoder >= StartCam) OR (PosizioneEncoder <= EndCam) THEN
CamOut:=TRUE;
ELSE
CamOut:=FALSE;
END_IF;
END_IF;
Apres on verifiait G100_Came.CamOut = TRUE ou FALSE
Cela reste un programme italien que je ne connais pas. Il faut vérifier si cela marche, mais pour moi oui.
- JC87
- Mi homme - Mi automate

- Messages : 2230
- Enregistré le : 20 oct. 2015, 13:00
- Localisation : Nouvelle Aquitaine
Re: Emuler une boite a cames.
Bonjour,
Ça revient à faire du SET/RESET sur comparaison de valeur codeur, comme ça on à la came à 1 dans la plage donnée . Alors oui il y a le passage au zéro à gérer mais c'est pas si compliquée car sauf cas très particulier on a rarement des centaines de cames à programmer.
Les anciennes boites à cames électroniques ou mécaniques dépassaient rarement les 16 cames possibles. Une carte came Siemens sur S7-300 c'était 32 cames max par exemple et ça marchait sur le principe d'un paramétrage des valeurs de début et valeurs de fin pour chaque came.
JC
Ça revient à faire du SET/RESET sur comparaison de valeur codeur, comme ça on à la came à 1 dans la plage donnée . Alors oui il y a le passage au zéro à gérer mais c'est pas si compliquée car sauf cas très particulier on a rarement des centaines de cames à programmer.
Les anciennes boites à cames électroniques ou mécaniques dépassaient rarement les 16 cames possibles. Une carte came Siemens sur S7-300 c'était 32 cames max par exemple et ça marchait sur le principe d'un paramétrage des valeurs de début et valeurs de fin pour chaque came.
JC
"On veut faire du zéro défaut mais on a zéro bonhomme et zéro budget, et bien à la fin on a zéro résultat..."
