Emuler une boite a cames.

Trucs-Astuces-Micro cours sur les automatismes industriels
Répondre
MiGaNuTs
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1572
Enregistré le : 12 nov. 2015, 21:02
Localisation : 45 - Loiret
Contact :

Emuler une boite a cames.

Message par MiGaNuTs »

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.
Guigui744
Asservi son premier moteur
Asservi son premier moteur
Messages : 22
Enregistré le : 08 avr. 2024, 17:03
Localisation : Annecy

Re: Emuler une boite a cames.

Message par Guigui744 »

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)
Avatar du membre
ProfnovA
Créateur de langage
Créateur de langage
Messages : 572
Enregistré le : 21 oct. 2015, 08:21

Re: Emuler une boite a cames.

Message par ProfnovA »

C'est sur quel automate?
MiGaNuTs
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1572
Enregistré le : 12 nov. 2015, 21:02
Localisation : 45 - Loiret
Contact :

Re: Emuler une boite a cames.

Message par MiGaNuTs »

Guigui744 a écrit : 10 sept. 2024, 10:59 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)
Ç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
ProfnovA a écrit : 16 sept. 2024, 09:21 C'est sur quel automate?
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
Asservi son premier moteur
Messages : 22
Enregistré le : 08 avr. 2024, 17:03
Localisation : Annecy

Re: Emuler une boite a cames.

Message par Guigui744 »

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.
Avatar du membre
JC87
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2230
Enregistré le : 20 oct. 2015, 13:00
Localisation : Nouvelle Aquitaine

Re: Emuler une boite a cames.

Message par JC87 »

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
"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..."
Répondre