Spécial cahiers de vacances
- itasoft
- Mi homme - Mi automate
- Messages : 7035
- Inscription : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Spécial cahiers de vacances
@skip
sur front top incrémental, je décrémente les distances dans la tableau.
Si c’est un codeur incrémental sur une carte de comptage rapide, tu n’as pas l’information des tops pour décrémenter les distances dans tout le tableau.
quand une distance est <=0
Tu veux dire que de scruter toute le table de taille 100 avec une boucle FOR ?
sur front top incrémental, je décrémente les distances dans la tableau.
Si c’est un codeur incrémental sur une carte de comptage rapide, tu n’as pas l’information des tops pour décrémenter les distances dans tout le tableau.
quand une distance est <=0
Tu veux dire que de scruter toute le table de taille 100 avec une boucle FOR ?
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Spécial cahiers de vacances
Il aurait fallu préciser également sur quel matériel coder, même si on peut s'en douter.itasoft a écrit :Spécial cahiers de vacances.
Je voulais proposer des petits problèmes d’automatismes dont l’intérêt réside dans le fait que il ni as qu’une solution qui est la bonne
et que les milliers d’autres solutions risquent d’être du type usine à gaz.
Mais bon, c'est un autre sujet.....
La pile la plus utilisée: la pile GIGO. Bien plus souvent que les FIFO ou LIFO.
Garbage in, garbage out!
Garbage in, garbage out!
Re: Spécial cahiers de vacances
bonjour
Je ferais 4 tables de bits, la longeur de table est le nombres maxi de pas
a chaque pas on vérifie et si un fut est en entrée de tapis,et on active le bit corespondant au nombres de pas
si un fut type 1 = on set bit_table_1[25]
si un fut type 2 = on set bit_table_2[50]
si un fut type 3 = on set bit_table_3[75]
si un fut type 4 = on set bit_table_4[100]
Et on décale toutes les tables d'un pas
on controle si le fut devant l'éjecteur est a éjecter
Si bit_table_1[0] est a "1" on actionne l'éjecteur 1
Si bit_table_2[0] est a "1" on actionne l'éjecteur 2
Si bit_table_3[0] est a "1" on actionne l'éjecteur 3
Si bit_table_4[0] est a "1" on actionne l'éjecteur 4
on peut augmenter la précision en augmentant la table de mot et se dire que 10cm = 1 pas
Le rajout d'un éjecteur est simple car il sufit de rajouter une table
Faire simple c'est compliquer
Je ferais 4 tables de bits, la longeur de table est le nombres maxi de pas
a chaque pas on vérifie et si un fut est en entrée de tapis,et on active le bit corespondant au nombres de pas
si un fut type 1 = on set bit_table_1[25]
si un fut type 2 = on set bit_table_2[50]
si un fut type 3 = on set bit_table_3[75]
si un fut type 4 = on set bit_table_4[100]
Et on décale toutes les tables d'un pas
on controle si le fut devant l'éjecteur est a éjecter
Si bit_table_1[0] est a "1" on actionne l'éjecteur 1
Si bit_table_2[0] est a "1" on actionne l'éjecteur 2
Si bit_table_3[0] est a "1" on actionne l'éjecteur 3
Si bit_table_4[0] est a "1" on actionne l'éjecteur 4
on peut augmenter la précision en augmentant la table de mot et se dire que 10cm = 1 pas
Le rajout d'un éjecteur est simple car il sufit de rajouter une table
Faire simple c'est compliquer
Créateur de pannes ...
- itasoft
- Mi homme - Mi automate
- Messages : 7035
- Inscription : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Spécial cahiers de vacances
@josé
Un "pas" c'est le passage d'un nouveau fût devant la cellule ou la distance entre chaque fût ????
(Les fûts arrivent n'importe quand. Sur la ligne la distance entre chaque fût n'est jamais la même ),
Un "pas" c'est le passage d'un nouveau fût devant la cellule ou la distance entre chaque fût ????
(Les fûts arrivent n'importe quand. Sur la ligne la distance entre chaque fût n'est jamais la même ),
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Spécial cahiers de vacances
je pensais a un cadencement en avant le passage sur le convoyeur
Mais une table de bit peut avoir une longeur de 4096, pour 10cm de précision cela fait un tapis de ~400M, donc pas besoin de cadencement pour un fut de 60cm de diamètre
Faire simple c'est compliquer.
Mais une table de bit peut avoir une longeur de 4096, pour 10cm de précision cela fait un tapis de ~400M, donc pas besoin de cadencement pour un fut de 60cm de diamètre
Faire simple c'est compliquer.
Créateur de pannes ...
-
- Mi homme - Mi automate
- Messages : 2076
- Inscription : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Spécial cahiers de vacances
Salut !
La solution de josé est tentante mais la remarque d'itasoft est pertinente.
j'opterais je crois pour une pile fifo pour chaque éjecteur (cela ne fait pas des centaines d'éléments) !
le passage d'un fut devant la cellule rempli la pile avec la position du tapis pour le fût à éjecter..
les distances sont forcément classées par ordre croissant dans chaque pile.
on compare la position du tapis avec chaque premier élément (on peut aussi faire une fenêtre avec + ou - x mm ) de la pile de chaque éjecteur
si position dans fenêtre alors éjection et diminution de la pile de l'éjecteur concerné d'un élément.
une comparaison par poste d'éjection et un dépilage par éjection, cela devrait être rapide non ?
souple aussi, en cas d'ajout d'éjecteurs..
cas particulier , le passage du codeur par 0 en cas de débordement du comptage..
là j'ai pas la solution, ou alors il faudra en tenir compte dans l'intégration de la position d'éjection lors de la détection du fût par la cellule.
autre cas : le reset du convoyeur (vidage des piles), la coupure secteur en marche.. si c'est un codeur incrémental , il faudra sauvegarder et restituer la position codeur !
La solution de josé est tentante mais la remarque d'itasoft est pertinente.
j'opterais je crois pour une pile fifo pour chaque éjecteur (cela ne fait pas des centaines d'éléments) !
le passage d'un fut devant la cellule rempli la pile avec la position du tapis pour le fût à éjecter..
les distances sont forcément classées par ordre croissant dans chaque pile.
on compare la position du tapis avec chaque premier élément (on peut aussi faire une fenêtre avec + ou - x mm ) de la pile de chaque éjecteur
si position dans fenêtre alors éjection et diminution de la pile de l'éjecteur concerné d'un élément.
une comparaison par poste d'éjection et un dépilage par éjection, cela devrait être rapide non ?
souple aussi, en cas d'ajout d'éjecteurs..
cas particulier , le passage du codeur par 0 en cas de débordement du comptage..
là j'ai pas la solution, ou alors il faudra en tenir compte dans l'intégration de la position d'éjection lors de la détection du fût par la cellule.
autre cas : le reset du convoyeur (vidage des piles), la coupure secteur en marche.. si c'est un codeur incrémental , il faudra sauvegarder et restituer la position codeur !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part !
- itasoft
- Mi homme - Mi automate
- Messages : 7035
- Inscription : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Spécial cahiers de vacances
@phil,
oui c'est juste, voir la solution exemple que j'ai publié quelques posts au dessus
pour le débordement codeur on le remet à zéro à chaque fois que la ligne est vide: SUM(TAB_Destinations)= 0
oui c'est juste, voir la solution exemple que j'ai publié quelques posts au dessus
pour le débordement codeur on le remet à zéro à chaque fois que la ligne est vide: SUM(TAB_Destinations)= 0
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Spécial cahiers de vacances
Pour ça il dans l'ideal il faut si carte codeur la configurer en mode modulo et on fait:philou77 a écrit : cas particulier , le passage du codeur par 0 en cas de débordement du comptage..
là j'ai pas la solution, ou alors il faudra en tenir compte dans l'intégration de la position d'éjection lors de la détection du fût par la cellule.
autre cas : le reset du convoyeur (vidage des piles), la coupure secteur en marche.. si c'est un codeur incrémental , il faudra sauvegarder et restituer la position codeur !
if Impuls THEN
MyRegister[0]:=(ConstanteDistanceX + ValeurCouranteCodeur) MOD ValeurModuloConfiguree;
sur les cartes IFM ou CTY le mode incremental memorise la mesure valeur courante mais elles mettent un defaut à la remise sous tension pour avertir qu'il faut referencer (vu qu'on ne sait pas si hors tension l'entrainement a bougé par ex inertie apres perte de courant)
Re: Spécial cahiers de vacances
c'est ce que j'avais proposéj'opterais je crois pour une pile fifo pour chaque éjecteur (cela ne fait pas des centaines d'éléments) !
le passage d'un fut devant la cellule rempli la pile avec la position du tapis pour le fût à éjecter..
les distances sont forcément classées par ordre croissant dans chaque pile.
on compare la position du tapis avec chaque premier élément (on peut aussi faire une fenêtre avec + ou - x mm ) de la pile de chaque éjecteur
si position dans fenêtre alors éjection et diminution de la pile de l'éjecteur concerné d'un élément.
sauf que j'utilise des pointeurs au lieu de déplacer les données de la pile FIFO mais c'est le principe
un pointeur sur la tête (éjecteur) -> pour dépiler
un pointeur sur la queue (détecteur) -> pour empiler
chaque éjecteur à son propre pointeur de tête (piles confondues mais plus ou moins courtes suivant l'éloignement de l'éjecteur)
il n'y a pas de débordement codeur dans cette application ...cas particulier , le passage du codeur par 0 en cas de débordement du comptage..
on travaille en relatif (delta entre 2 références absolues), le modulo est celui de la capacité de la variable, qui est identique à celui de la soustraction.
exemple (en 16 bits pour la simplification) :
Ref 1 : 16#0100
Ref 2 : 16#0200
Delta (Ref 2 - Ref 1) : 16#0100 (pas de retenue)
Ref 1 : 16#FFF0
Ref 2 : 16#00F0
Delta (Ref 2 - Ref 1) : 16#0100 (avec une retenue qui n'est jamais utilisée)
Le modulo (ici 2^16) n'est jamais un problème sur ce type d'application
@+
- itasoft
- Mi homme - Mi automate
- Messages : 7035
- Inscription : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Spécial cahiers de vacances
@steph,
j'allais répondre la même chose.
ceci dit, le sujet met en évidence que pour un problème identique chacun à une solution différente,
c'est pas demain la veille que tous les automaticiens feront la même chose.
c'est aussi le charme du métier,
LOL
j'allais répondre la même chose.
ceci dit, le sujet met en évidence que pour un problème identique chacun à une solution différente,
c'est pas demain la veille que tous les automaticiens feront la même chose.
c'est aussi le charme du métier,
LOL
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr