Forums LR PRESSE

Où il est question de trains, petits et grands

  • Advertisement

Arduino et incompatibilité de manoeuvre (enclenchement)

Toutes les discussions sur l'Arduino !

Modérateur: MOD

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Sam 15 Fév 2014, 20:10 
ffayolle a écrit:Une question pour les experts :

Puis-je écrire cela

  pinMode( e0, INPUT );
  digitalWrite( e0, HIGH );
  pinMode( s0, OUTPUT );
  digitalWrite( s1, LOW );
  pinMode( e1, INPUT );
  digitalWrite( e1, HIGH );
  pinMode( s1, OUTPUT );
  digitalWrite( s2, LOW );
  pinMode( e2, INPUT );
  digitalWrite( e2, HIGH );
  pinMode( s2, OUTPUT );
  digitalWrite( s2, LOW );



sous la forme d'une boucle de type for ?

D'avance merci


Tu peux tout à fait utiliser une boucle for dans la fonction setup qui est une fonction comme les autres (même si on initialise dans cette fonction alors qu'on exécute dans la fonction loop).

Tu trouveras dans le forum Arduino et le traitement de l'information des mini-cours qui pourront peut-être te servir. Je les ai faits en complément de mes articles de Loco-Revue où la place est comptée. :)
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1690
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Sam 15 Fév 2014, 20:38 
Arduino a écrit:Ah ! Là, j'adore ! :coeur1:

Parce que c'est expliqué très clairement ! :applause:

Tu dis que le plus difficile est de transformer un système quel qu'il soit en programme. D'après moi, pas tout à fait :gne: . Le plus difficile est le travail d'analyse qui consiste à décortiquer ce que doit réaliser le système (sans rien oublier), déterminer quelles sont les variables d'entrée et quelles sont celles de sorties, valider ces variables pour ne pas tomber dans des cas aberrants, analyser les ressources nécessaires (taille du système donc choix du module), etc.

Ce travail ne se fait pas devant l'ordinateur. Or l'erreur de beaucoup de débutants est de se mettre à produire des lignes de code sans trop avoir approfondi le travail d'analyse ... et comme cela ne marche pas du premier coup, on met des patches par ci par là ! :lol:

Si le travail d'analyse est bien réalisé, le programme coule de lui-même. C'est comme une rédaction, si tu as un bon plan, le récit vient de lui-même .


Tout à fait!!!
Fabrice Fayolle
Avatar de l’utilisateur
FFayolle
Éloquent
 
Messages: 346
Inscrit le: Mar 09 Mai 2006, 19:55
Localisation: Amiens, Somme, Picardie
Âge: 51

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Dim 16 Fév 2014, 10:50 
ffayolle a écrit:Image

Quelles sont les règles que le dispositif doit respecter?
Si le signal 1 est ouvert, alors le signal 2 est fermé et le signal 3 est fermé
Si le signal 1 est ouvert, alors il n'est pas possible de manœuvrer l'aiguille 4
Si le signal 2 est ouvert, alors il n'est pas possible de manœuvrer l'aiguille 4
Si le signal 3 est ouvert, alors il n'est pas possible de manœuvrer l'aiguille 4
Si l'aiguille 4 est fermé (la position par défaut, c'est à dire normal), alors le signal 3 est fermé
Si l'aiguille 4 est ouverte (c'est à dire dévié), alors le signal 2 est fermé

Pour simplifier, je ne vais pas lister les règles symétriques du type "Si le signal 2 est ouvert, alors le signal 1 est fermé et le signal3 est fermé".

Si l'on retranscrit le tout dans une matrice, on obtient le résultat suivant :

Image

Règles d'écriture : L pour bloque (Lock); R pour permet la manœuvre du levier, le débloque (Release)

Pourquoi R et non L dans la case 4:3 (ligne 4 : colonne 3) ?

Comme vu ci-dessus, le signal 3 ne pourra être ouvert que si l'aiguille 4 est fermée. On dit alors que la fermeture de l'aiguillage 4 permet la manœuvre du signal 3.

A suivre...


Erreur ? Non mais omission par soucis de simplification
Je m'explique.

Si le signal 1 est ouvert, alors il n'est pas possible de manœuvrer l'aiguille 4

C'est exact mais quelque soit la position de l'aiguille 4.

Si le signal 1 est ouvert, alors il n'est pas possible de manœuvrer l'aiguille 4 qu'elle soit en position normal (Normal) ou en position dévié (Reverse).

On dit alors que le signal 1 bloque l'aiguille 4 dans les 2 sens.

Si l'on retranscrit le tout dans une matrice, on obtient le résultat suivant :

Image

Règles d'écriture : L pour bloque (Lock); R pour permet la manœuvre du levier, le débloque (Release); BW pour bloque dans les 2 sens (Both Ways).

Mais pourquoi LR et non R dans la case 3:4 (ligne 3 : colonne 4) ?

Comme vous avez pu le constater, il y a une quasi symétrie dans la matrice. Par convention, si vous notez R dans la case x,y, vous devrez noter LR dans la case y,x.

Suite à venir à votre discrétion... Alors, n'hésitez pas à faire des commentaires.
Dernière édition par FFayolle le Dim 16 Fév 2014, 11:58, édité 1 fois au total.
Fabrice Fayolle
Avatar de l’utilisateur
FFayolle
Éloquent
 
Messages: 346
Inscrit le: Mar 09 Mai 2006, 19:55
Localisation: Amiens, Somme, Picardie
Âge: 51

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Dim 16 Fév 2014, 11:45 
Le premier plan de la gare que tu as publié (page 1) correspond-il à ta gare ?
Si oui, as-tu déjà un montage et un programme fonctionnels ?
Si oui (encore), pourrais-tu nous publier une petite vidéo pour montrer le fonctionnement de ce montage ?

En effet, les vidéos sont particulièrement appréciées (peu importe la qualité, nous ne sommes pas tous des cinéastes) :coeur1: car cela parle mieux et permet de donner envie de réaliser la même chose (ou de s'en inspirer).

Si le montage est en cours de mise au point, une vidéo peut aussi montrer la progression et expliquer les choix retenus ; c'est de cette façon que PICO avait fait connaitre son montage de butte de triage (voir son forum).

Désolé de te rajouter un peu de boulot, mais je crois que cela a un intérêt indéniable. :siffle:

PS : La vidéo peut être réalisée avec un simple smartphone ou APN (juste quelques minutes, plus c'est court, mieux c'est).
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1690
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Dim 16 Fév 2014, 12:03 
Arduino a écrit:Le premier plan de la gare que tu as publié (page 1) correspond-il à ta gare ?
Si oui, as-tu déjà un montage et un programme fonctionnels ?
Si oui (encore), pourrais-tu nous publier une petite vidéo pour montrer le fonctionnement de ce montage ?

En effet, les vidéos sont particulièrement appréciées (peu importe la qualité, nous ne sommes pas tous des cinéastes) :coeur1: car cela parle mieux et permet de donner envie de réaliser la même chose (ou de s'en inspirer).

Si le montage est en cours de mise au point, une vidéo peut aussi montrer la progression et expliquer les choix retenus ; c'est de cette façon que PICO avait fait connaitre son montage de butte de triage (voir son forum).

Désolé de te rajouter un peu de boulot, mais je crois que cela a un intérêt indéniable. :siffle:

PS : La vidéo peut être réalisée avec un simple smartphone ou APN (juste quelques minutes, plus c'est court, mieux c'est).


Le 1er plan n'était qu'un exemple. Et aujourd'hui, il n'y a pas de montage car il n'y a pas de réseau.
Donc, pas de vidéo!!!

Je suis dans une démarche de faisabilité. Donc dans une démarche d'analyse.
Fabrice Fayolle
Avatar de l’utilisateur
FFayolle
Éloquent
 
Messages: 346
Inscrit le: Mar 09 Mai 2006, 19:55
Localisation: Amiens, Somme, Picardie
Âge: 51

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Dim 16 Fév 2014, 12:19 
Image

Un train peut aller de A vers C ou D.
Un train peut aller de D vers B ou A.

Quelles sont les règles que le dispositif doit respecter ?
Si le signal 1 est ouvert, alors il n'est pas possible de manœuvrer l'aiguille 3 (dans les 2 sens).
Si le signal 2 est ouvert, alors il n'est pas possible de manœuvrer l'aiguille 3 (dans les 2 sens).
Si l'aiguille 3 est ouverte (c'est à dire dévié), alors le signal 2 ne pourra pas être ouvert si le signal 1 est ouvert.
Si l'aiguille 3 est ouverte (c'est à dire dévié), alors le signal 1 ne pourra pas être ouvert si le signal 2 est ouvert.
Les 2 dernières règles introduisent à un autre principe, celui du conditionnement.

Si l'on retranscrit le tout dans une matrice, on obtient le résultat suivant :

Image

Règles d'écriture : L pour bloque (Lock); R pour permet la manœuvre du levier, le débloque (Release); BW pour bloque dans les 2 sens (Both Ways); LWxy pour bloque quand l'aiguille(le signal,...) x est en position y (Lock When).

Des questions ?
Fabrice Fayolle
Avatar de l’utilisateur
FFayolle
Éloquent
 
Messages: 346
Inscrit le: Mar 09 Mai 2006, 19:55
Localisation: Amiens, Somme, Picardie
Âge: 51

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Dim 16 Fév 2014, 12:45 
ffayolle a écrit:Le 1er plan n'était qu'un exemple. Et aujourd'hui, il n'y a pas de montage car il n'y a pas de réseau.
Donc, pas de vidéo!!!

Je suis dans une démarche de faisabilité. Donc dans une démarche d'analyse.


OK. La démarche de faisabilité (et donc d'analyse) est comme on l'a dit extrêmement importante. Néanmoins, à un moment où un autre, il faut se confronter à la réalité et fabriquer ne serait-ce qu'une maquette (quelques appareils de voie et sémaphores) pour tester le résultat. Ce sera sans doute pour plus tard.

En attendant, les différents exemples que tu donnes sont intéressants car ils montrent que créer des itinéraires n'est pas une chose simple et qu'il y a de nombreux cas de figures à évoquer. A partir de quelques cas simples, on peut entrevoir des règles pour passer ensuite à plus compliqué (grill d'une gare). Mais chaque gare est un cas particulier, d'où la complexité d'un tel projet.

Comment comptes-tu finalement expérimenter ta solution finale ? Maquette ou TCO ou liaison avec ordinateur qui dessinera la gare ?
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1690
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Dim 16 Fév 2014, 13:02 
On reprend depuis le début!!!

Voilà donc ce que je cherche à reproduire

Image

le fonctionnement d'un poste d'aiguillage en y intégrant la partie cachée de l'iceberg, les enclenchements.

Différentes règles ont été décrites dans les posts suivants :

viewtopic.php?f=63&t=75470#p1572075
viewtopic.php?f=63&t=75470&start=15#p1572339
viewtopic.php?f=63&t=75470&start=15#p1572403

Il va falloir maintenant décrire les entrées et les sorties.

Les entrées : Le levier d'aiguillage

Il existe dans le commerce des kits permettant de reproduire fidèlement un levier d'aiguillage (Cf. http://www.modelrailway-online.com/poste-daiguillage/).
Dans ce cas et dans la réalité lorsqu'on est face à un système entièrement mécanique, les enclenchements sont réalisés avec des jeux de barre (Cf. Wikipédia)

Je décide d'utiliser un bouton poussoir et de matérialiser la position du levier d'aiguillage (fermé par défaut ou ouvert) par 2 voyants.

Le changement de position du levier sera donc conditionné aux respects des enclenchements définis. En un mot, si un changement est incompatible, il ne sera pas possible.

Les sorties : un câble ou une barre permettant de manœuvrer le signal, l'aiguille,...

Je décide de mettre à un état HIGH le port correspond. Peu importe ce qu'il y aura après à commander (je décide de ne pas utiliser de servo-moteur), je spécifierai ce point par la suite car il ne remettra pas en cause toute la logique liée aux enclenchements.

A suivre...
Dernière édition par FFayolle le Dim 16 Fév 2014, 13:17, édité 1 fois au total.
Fabrice Fayolle
Avatar de l’utilisateur
FFayolle
Éloquent
 
Messages: 346
Inscrit le: Mar 09 Mai 2006, 19:55
Localisation: Amiens, Somme, Picardie
Âge: 51

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Dim 16 Fév 2014, 13:10 
c'est bien ce que je disais au début, c'est du lourd. :applause:
Le train de la vie file.
Avatar de l’utilisateur
HDE5962
Disert
 
Messages: 445
Inscrit le: Mar 20 Août 2013, 10:03
Localisation: Malakoff par obligation et Schti par naissance
Âge: 56
Echelle pratiquée: HO et de cordes
Prénom: Hubert

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Dim 16 Fév 2014, 13:11 
Arduino a écrit:
ffayolle a écrit:Le 1er plan n'était qu'un exemple. Et aujourd'hui, il n'y a pas de montage car il n'y a pas de réseau.
Donc, pas de vidéo!!!

Je suis dans une démarche de faisabilité. Donc dans une démarche d'analyse.


OK. La démarche de faisabilité (et donc d'analyse) est comme on l'a dit extrêmement importante. Néanmoins, à un moment où un autre, il faut se confronter à la réalité et fabriquer ne serait-ce qu'une maquette (quelques appareils de voie et sémaphores) pour tester le résultat. Ce sera sans doute pour plus tard.

En attendant, les différents exemples que tu donnes sont intéressants car ils montrent que créer des itinéraires n'est pas une chose simple et qu'il y a de nombreux cas de figures à évoquer. A partir de quelques cas simples, on peut entrevoir des règles pour passer ensuite à plus compliqué (grill d'une gare). Mais chaque gare est un cas particulier, d'où la complexité d'un tel projet.

Comment comptes-tu finalement expérimenter ta solution finale ? Maquette ou TCO ou liaison avec ordinateur qui dessinera la gare ?


L'expérimentation pourra être faite très simplement en provoquant l'allumage ou non d'une LED (LED allumée = aiguille ouverte ou signal ouvert ou ...). Car si j'allume une LED en respectant les différentes règles définies, je pourrais alors commander tout autre chose au travers d'un étage de puissance.

Ma démarche actuelle est d'essayer (et cela ne doit n'être pas impossible) d'écrire un programme qui permettra de gérer les enclenchements quelqu'ils soient.
La solution universelle en 1 mot même si c'est un vœu pieux!!!
:siffle: :siffle: :siffle:
Fabrice Fayolle
Avatar de l’utilisateur
FFayolle
Éloquent
 
Messages: 346
Inscrit le: Mar 09 Mai 2006, 19:55
Localisation: Amiens, Somme, Picardie
Âge: 51

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Dim 16 Fév 2014, 13:26 
Attention : si tu mets un torchon sur Arduino (comme on le voit sur ta photo), il risque de chauffer :mdr2:

Bon, soyons sérieux. Pour avoir lu les livres sur la signalisation édités par La vie du rail (hélas, un peu chers), je sais qu'enclenchements et itinéraires ne sont pas des choses simples. Alors une solution universelle ... :?:

Mais tout le travail de réflexion intellectuelle que tu vas faire permettra déjà d'avancer ! :wink:

Et on suivra ton fil avec beaucoup d'intérêt. :mrgreen:
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1690
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Dim 16 Fév 2014, 13:31 
Comme tu le dis et comme Christian et moi même le soulignons à chaque fois à nos lecteurs, la première étape est l'analyse et l"écriture des règles du principe énoncé sans tenir compte de la suite du projet (plateforme de programmation, matériels,etc).

Tu dis que tu es dans la phase d'analyse ou plutôt de la définition de l''expression du besoin, et je te suis à 200% sur ton raisonnement.

tu fais des tables de vérités, des règles de conduite, c'est formidable.

Cependant et Christian le rappelle, ne met pas la charrue avant les bœufs.
Commence avec une définition exacte de ton besoin, ne cherche pas le GRAAL mais fais le à ton échelle réseau.

Commence avec une gestion simple comme tu le présentes toi même.
Ne fais pas une usine à gaz ou tu risques tout simplement d'abandonner ton projet comme d'autre l'on déjà fait ici.

Prends ton temps dans cette première phase. Par la suite, nous verrons les moyens techniques adaptés à ton projet et si Arduino est réalisable, nous te conseillerons avec toute notre connaissance actuelle.

Si de temps en temps, tu vois que tu n'arrives pas, nous pourrons tous ensemble trouver une solution.

Ton projet est plus qu'intéressant pour les lecteurs, alors vas y fonce mais ne saute pas les étapes.

En informatique, nous faisons une maquette pour commencer avec la définition de faisabilité. Sommes nous actuellement capable de faire ce que nous voudrions, avons nous les moyens d'y parvenir. les définitions en entrée et en sortie , les données que l'on veut, les interfaces écrans et autres. les paramètres que nous aurons besoins, les règles informatique de gestion du projet. tout cela bien en amont de la moindre définition du support matériel et de toute programmation.

En créant des classes pour instancier les objets et des fonctions,nous aurons la possibilité d'étendre ton projet en ajoutant des enclenchements par simple ajout d'une instance (pour l'instant, nous sommes encore loin de cela).

Cousin Hub
Le train de la vie file.
Avatar de l’utilisateur
HDE5962
Disert
 
Messages: 445
Inscrit le: Mar 20 Août 2013, 10:03
Localisation: Malakoff par obligation et Schti par naissance
Âge: 56
Echelle pratiquée: HO et de cordes
Prénom: Hubert

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Dim 16 Fév 2014, 15:57 
Merci pour vos retours!!!

Bien évidemment, ce n'est qu'un vœu pieux d'être à la recherche d'une solution universelle mais je voudrais essayer de prendre en compte toutes les possibilités même si comme le dit Christian, les enclenchements peuvent devenir vite complexe. Je ferais donc un schéma représentant une installation ferroviaire dans un prochain post et ce schéma sera la base de cette étude.

Je reviens donc sur ce point :

Les sorties : un câble ou une barre permettant de manœuvrer le signal, l'aiguille,...

Je décide de mettre à un état HIGH le port correspond. Peu importe ce qu'il y aura après à commander (je décide de ne pas utiliser de servo-moteur), je spécifierai ce point par la suite car il ne remettra pas en cause toute la logique liée aux enclenchements.


Si je peux manœuvrer le levier (il n'existe pas d'incompatiblité), j'exécute une action (devrais-je dire une fonction).

Mais l'action sera différente suivant la position du levier.
Le levier passe-t-il de fermé à ouvert ?
Le levier passe-t-il d'ouvert à fermé ?

En un mot, il faut donc que je connaisse la position du levier et que je change cette position une fois l'action réalisée.

Si l'on retranscrit le tout dans une matrice, on obtient le résultat suivant :

Image

Je décide par convention de mettre 0 si le levier est fermé (par défaut) et 1 si le levier est ouvert (qui correspond à un signal ouvert (donc voie libre), à une aiguille en position déviée,...).

Dernier élément manquant mais nécessaire, mon levier est-il actuellement bloqué empêchant ainsi toute manœuvre du levier et donc du signal, de l'aiguille,...Et si il est bloqué, l'est-il une seule fois ou plusieurs fois ?

Image

Je décide par convention de mettre 0 si le levier n'est pas bloqué (L) et 1 si le levier est bloqué 1 fois, 2 si le levier est bloqué 2 fois,...

A suivre...
Fabrice Fayolle
Avatar de l’utilisateur
FFayolle
Éloquent
 
Messages: 346
Inscrit le: Mar 09 Mai 2006, 19:55
Localisation: Amiens, Somme, Picardie
Âge: 51

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Dim 16 Fév 2014, 19:10 
Bonsoir,

Afin de pouvoir dimensionner le projet, et comme demandé, voici donc le plan de la gare sur laquelle je vous propose de travailler.

Image

Un terminus comme on pourrait en retrouver sur pas mal de lignes de chemins de fer à travers le monde.
1 voie à quai, un évitement permettant une remise en tête, des voies de débord,...
5 aiguilles, 2 signaux principaux et 3 de manœuvre

En fait, de quoi bien s'amuser quelque soit le lieu, l'époque et l'échelle

Et pourquoi pas à l'échelle Zéro comme mon projet en cours?

Image

Ici, pour information, pas de tableau de commande, car il n'y a qu'une seule aiguille et elle est manœuvrée par un Blue Point. Mais cela est une autre histoire!!!

Des questions ?
Fabrice Fayolle
Avatar de l’utilisateur
FFayolle
Éloquent
 
Messages: 346
Inscrit le: Mar 09 Mai 2006, 19:55
Localisation: Amiens, Somme, Picardie
Âge: 51

Re: Arduino et incompatibilité de manoeuvre (enclenchement)

Publié: Dim 16 Fév 2014, 19:38 
Le zéro est une bien belle échelle ! :coeur1:

Les sémaphores en 1 et 4 indiquent passage possible, alors que ceux en 5, 6 et 8 n'autorisent pas le passage ; exact ? :roll:

Et que ce soit un signal ou bien un appareil de manœuvre, tu le commandes avec un signal (simulé pour l'instant pas une LED), d'où le fait que tu ne fasses pas de distinction d'écriture (tous sont numérotés de 1 à 8 ) ; exact ? :roll:

Pourquoi pas de sémaphore au niveau de l'aiguille 7b ? (Imaginons un train allant de la voie du dessus à la voie du milieu, en se déplaçant vers la droite du schéma ... passant donc par 7b et 7a). :?:
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1690
Inscrit le: Mer 25 Sep 2013, 17:14

PrécédentSuivant

Retour vers Arduino

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité