Simulation d un programme automate sur Excel
Bonsoir,
Je ne vois pas toujours ce que tu cherches à faire... La position d'une bouteille n'a strictement aucune importance à mon sens, ce qui en a c'est la configuration de l'ensemble des bouteilles sur 6 positions, prise globalement... et pour gérer chaque situation élémentaire, il manque tous les paramètres :
- temps de rotation élémentaire (soit avance d'une position à la suivante, 36° ainsi que tu l'as mentionné)
- temps de remplissage
- temps de bouchage
- temps de vissage
- temps de reconnaissance (par la sonde puisqu'il n'y en a qu'une)
Si le cycle global est fixe, il n'y a rien à calculer, tout est donné par les paramètres de la machine ! Puisque dans ce cas tout avancera de la même façon qu'il y ait des bouteilles ou pas.
Par contre si ces temps (et éventuellement d'autres auxquels je ne pense pas) sont différents et peuvent être gérés pour optimiser la marche de la machine, on a matière à calculer pour chaque configuration...
Cordialement.
salut aucun temps n ai fixe, seule la vitesse, l angle et la pause de rotation de la table sont figés, mais les modules de travail ont leur propre cadence
donc je reexplique
une table qui tourne de 36°, une pause de 1 seconde, tout ça non stop
non stop, tant qu aucune bouteille ne rentre ne soit presente devant un module de trvail, les bouteilles arrivent automatiquement et de façon aleatoire
j'ai 3 modules de travail different autour de la table, et calé pile devant une encoche à a chaque arret de la table
la table ne tourne que dans un seul et unique sens
la machine doit donc passer par le premier module (remplissage), puis par le 2eme, puis par le 3eme, obligatoirement
mais ces 3 modules ne sont pas a suivre au niveau des encoches, il y a des trou entre eux
je n ai que 1 seule sonde de detection pour savoir si il y a une bouteille, cette sonde est au niveau du premier module
je dois donc etre capable de memoriser ou sont placé les bouteilles a chaque rotation, afin de declencher le ou les modules qui ont une bouteilles a leur niveau
la macro faite plus haut etait presque abouti niveau simlulation, il restait juste quelques trucs a pauffiner, pour etre coherent avec la realité
confere cette video:
https://www.youtube.com/watch?v=wMbMayCRYu0&feature=youtu.be
la je met la bouteille a la main
la doseuse se met en route, car je l ai detecté, ça c est facile
mais au moment ou la bouteille passe sous l autre module, il doit se mettre en route, et pareil pour le 3eme module
et là je n ai mis que une seule bouteille, mais je peux en avoir plein a suivre, avec des trous, donc facon aleatoire
Savoir combien et où sont les bouteilles dans le système est quelque peu trivial... ! Si on n'a aucun paramètre, je ne vois pas bien ce qu'on calcule !
On peut simuler de façon aléatoire les entrées dans le système : on peut faire varier la densité de présentation des bouteilles à l'entrée en fixant le taux de probabilité globale d'avoir une bouteille...
[Un petit code à cet égard, de H2so4
On peut suivre la configuration des bouteilles dans le système à chaque position, pour décider... mais décider quoi !!?
Que la machine a un arrêt et qu'elle repart ! C'est sans intérêt si pour chaque cas on n'est pas en mesure d'évaluer l'arrêt à partir des durées de chaque opération élémentaire gérée par la machine.
Durées qui devraient être connues à un niveau un peu plus fin que la seconde !
On peut compter les entrées et sorties. On peut aussi voir les possibilités d'incidents qui n'ont pas été abordées...
Mais au départ si on ne prend pas appui sur les paramètres fonctionnels de la machine, soit les durées de chaque opération élémentaire à gérer et temporisations éventuelles selon cas... On perd son temps.
Entendons-nous, on le perd peut-être dans tous les cas... mais si on construit un modèle de simulation réaliste, on aura au moins procédé à une analyse fine du système qui pourra être comparée aux observations en fonctionnement réel pour détecter d'éventuelles anomalies sur lesquelles on n'aurait pas encore mis le doigt, sorte d'outil d'audit en quelque sorte [vieille déformation professionnelle ! Je fus auditeur quelques années durant !
On aura toujours le plaisir d'avoir construit un module et d'avoir affiné quelques techniques réutilisables...
Mais pour l'instant la connaissance de la machine est bien trop embryonnaire !
Cordialement.
alors ne t embete pas pour tout ce qui est autour
la code de la table est fait
la doseuse est faite
chaque code est autonome
là ma problematique est de faire un tableau dynamique , une memoire
en abscisse les modules de 0 à 9
module 0 est la doseuse (rempli la bouteille), sonde de detection
module 3 est la boucheuse (met une pompe dans la bouteille)
module 5 est la visseur (visse la pompe)
a partir du module 6 les bouteilles quitte toute seule la table
lorsqu un module rentre en action, car le tableau de memoire en a décidé, la table se met en "veille", jusqu a ce que tout les modules ai fini leur travail
, comme je l ai dit tout se code est fait et marche deja
je pourrais tres simplement, mettre une cellule devant chaque module, des que la cellule detecte une bouteille, ça actionne le module, la table se met en veille, jusqu a ce que tout les modules soit a nouveau libre
mais j ai un probleme de nombre d'entrée sur mon automate donc j essaye d economisé, en passant un peu de temps sur le code pour faire ce tableau de memorisation
donc quel action on veut,
ba deja une action unique pour chaque module
1= dosage
2= bouchage
3= vissage
ensuite moi je transformerais ce 1/2/3 en action sur mes modules
le programme de d3d9x, est vraiment pas loin du compte
suffit juste de partir de 0 pour aller a 9, au lieu de 1 a 10
dire que l entrée n est pas 10 mais 0
et definir une action unique, au lieu de repeter plusieur fois bouteilles rempli-bouteille rempli-bouteille vissée-bouteille vissée
on ecrit plustot 1-0-2-0-0-3-0-0-------, par exemple
-singnifie que le module devant laquel une encoche passe sans bouteille
mais là je suis dessus je vais te faire une belle video
Hé bé ! Bonne continuation et amuse-toi bien !
quelqu'un peu me donner son avis sur ce que je viens de faire?
ça ne marche pas car je ne sais pas dimensionner les variables
mais sinon, sur le principe ca devrait etre simple et efficace je pense
Bonjour à tous,
Je me suis perdu sur le web et suis tombé sur cette discussion... petit déterrage
Je n'apporterai pas d'aide sur excel mais plutôt coté automate. Comme d'autre participants, je ne comprends pas l'utilité du simulateur excel : Ne suffirait-t-il pas d'utiliser un mot, chaque bit correspondant à un "poste", 1 = présence bouteille, 0 = vide. Ensuite sur fais un ROL ou un ROR afin de suivre le produit.
Cordialement.
C est quoi un rol ou ror?
C'est une fonction de rotation a gauche (ROL) ou à droite (ROR) qui doit être présente dans tous les automates (d’ailleurs, tu bosse avec quoi?).
https://en.wikipedia.org/wiki/Circular_shift
Et en réfléchissant, pour ton exemple, je me suis planté, il faut utiliser un SHL ou SHR (cette instruction ne fait pas une rotation mais un décalage)
Exemple sur API Schneider (page 4-5, recherche "Décalage circulaire ou non circulaire logique" : http://solar.energy.free.fr/logiciel_automatisme/Ladder.pdf
Dans ton cas :
Admettons que la machine est vide :
Mot (16 bits) "SuiviProduit", où chaque bit correspond à un poste (si tu n'en as que 10, tu ne t'occupera pas des 6 derniers, si tu en a plus, tu prends un double mot)
MSB..................................................................................LSB
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Chargement d'un produit poste 1: SuiviProduit.X0 := 1
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Rotation: Décalage à gauche (SHL)
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
Chargement d'un produit poste 1: SuiviProduit.X0 := 1
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
Rotation: Décalage à gauche (SHL)
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
Pas de Chargement d'un produit poste 1: SuiviProduit.X0 := 0
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
Rotation: Décalage à gauche (SHL)
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
Chargement d'un produit poste 1: SuiviProduit.X0 := 1
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
Rotation: Décalage à gauche (SHL)
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
Etc...
J utilise des automates soprolec en vb script
Aie, quelle idée
Je ne connais pas mais il n'y a pas de raison que ces instructions n'existent pas, elles datent de l'assembleur
Pourquoi aie?
Ils sont abordables et simple à programmer
Je n'en doute pas, c'est juste que ça sort des "standards" industriels comme siemens, Schneider, Omron, Allen Bradley...
On va peut être continuer cette discussion en MP si tu veux, je ne connais pas les habitudes de ce forum, je ne voudrais pas le "polluer", on a un peu dévié du sujet excel là...