Spécial cahiers de vacances

Trucs-Astuces-Micro cours sur les automatismes industriels
Avatar de l’utilisateur
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7037
Inscription : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Spécial cahiers de vacances

Message par itasoft »

@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 ?
Automaticien privé (de tout)
itasoft@free.fr
Francisco
Codeur fou
Codeur fou
Messages : 214
Inscription : 21 oct. 2015, 09:13
Localisation : LE MANS

Re: Spécial cahiers de vacances

Message par Francisco »

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.
Il aurait fallu préciser également sur quel matériel coder, même si on peut s'en douter.


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!
Avatar de l’utilisateur
josé
Codeur fou
Codeur fou
Messages : 263
Inscription : 20 oct. 2015, 17:02

Re: Spécial cahiers de vacances

Message par josé »

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
Créateur de pannes ...
Avatar de l’utilisateur
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7037
Inscription : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Spécial cahiers de vacances

Message par itasoft »

@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 ),
Automaticien privé (de tout)
itasoft@free.fr
Avatar de l’utilisateur
josé
Codeur fou
Codeur fou
Messages : 263
Inscription : 20 oct. 2015, 17:02

Re: Spécial cahiers de vacances

Message par josé »

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.
Créateur de pannes ...
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Spécial cahiers de vacances

Message par philou77 »

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 !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar de l’utilisateur
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7037
Inscription : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Spécial cahiers de vacances

Message par itasoft »

@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
Automaticien privé (de tout)
itasoft@free.fr
kosbor
Aguerri de l'automation
Aguerri de l'automation
Messages : 83
Inscription : 23 oct. 2015, 18:29

Re: Spécial cahiers de vacances

Message par kosbor »

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 !
Pour ça il dans l'ideal il faut si carte codeur la configurer en mode modulo et on fait:
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)
steph68
Codeur fou
Codeur fou
Messages : 268
Inscription : 21 oct. 2015, 08:23

Re: Spécial cahiers de vacances

Message par steph68 »

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.
c'est ce que j'avais proposé
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)
cas particulier , le passage du codeur par 0 en cas de débordement du comptage..
il n'y a pas de débordement codeur dans cette application ...

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

@+
Avatar de l’utilisateur
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7037
Inscription : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Spécial cahiers de vacances

Message par itasoft »

@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
Automaticien privé (de tout)
itasoft@free.fr
Répondre