Pages: [1]   Go Down
Author Topic: Tempo, gestion de train, programme parallèle.  (Read 355 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 111
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Voila un long moment sans venir poser des questions sur l'Arduino. Je dois dépanner un réseau de train. Ben oui, les modifications qui ont eu lieu à eu raison de l'ancien système de contrôle.

Avant de me lancer dans le type de pilotage à scénario, j'aurais aimer poser une question technique et éventuellement voir sa réponse coder pour m'en inspirer dans le projet de restructuration de l'automatisme.

Je dois gérer des captures, elles passeront par des capteurs optiques, des PCF8574 de chez NXP et attérirons sur le bus I2C. Ca je gère pas trop mal. Disons que j'ai l'état de l'occupation des voies, ou plus précisément des top synchros. Ces tops, permette de faire avancer l'automatisme d'un pas. Oué, c'est pas encore ça la question et ça va venir.

Là ou je n'en sait rien. Est-il possible de déclencher une temporisation qui déclenchera une sortie sur l'i2c au bout d'un certain temps, tout en ayant le reste qui fonctionne ?

Au départ je pensait attendre que. Tant que la cellule X n'est pas actionné, on attends. Sauf que 6 j'ai mes 5 trains qui circules, là, je risque de ne plus être capable de compter en attendant que. Du coup, ma tempo ne se ferais pas ! Il reste la solution de l'interruption. J'ai remarque combien elle était hasardeuse sous Arduino dans certains cas (i2c entre autre). Du coup, est-ce qu'il existe une vraie solution compatible ?

Voila, j'attends de voir les réponses et quelques exemples que je pourrait faire sur table avec quelques boutons et diodes. Une dernière chose, il faut que ça soit mis en place demain et... heu, on viens de me prévenir ! Donc faut un truc simple, vite fais et qui tienne la charge pendant 8h sur 2jours. Voyez le chantier !

Remarque c'est toujours quand c'est la cata... que l'on demande à l'électricien de refaire tout neuf !

Merci pour les infos.
++
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 111
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Alors, il semblerais qu'une solution viable puisse se faire directement avec les registres. Sauf que sur ce point, en Arduino, je ne suis pas calé. Comme je veux pouvoir disposer de plusieurs sorties, je vais donc reconcidérer le système différemment.

Alors, nous avons les entrées (capteurs optiques), ils passeront par des PCF 8574, le bus via la carte méga de gestion.
Nous avons des sorties qui peuvent se temporiser au lancement et qui passeront par le bus, le PCF 8574, transistor et enfin relais puissance + feux.

Rien ne nous empêche de partir avec un bus série sur une autre carte uno ou méga par exemple avec la sortie série 1 ou 2, et de charger de tempo particulière la carte 2 qui elle enverra aussi sur i2c ses propres sorties temporisés. Ainsi, les tempos qui doivent être indépendante sont bien piloté par la carte de gestion mais peut sans problème laisser le fonctionnement des autres capteur sans blocage.

En retour la carte tempo peut donner d'autres infos tel que (j'ai fini, tu peux lancer une autre commande...)

On se retrouverais avec le principe suivant.

Capteurs -> PCF -> I2C -> Méga 1 (Si tel capteur est en marche.... lancer la tempo) -> série -> Uno (J'ai ordre de temporiser 5s le relais X, je renvoie un ACK) Début de tempo.
Capteurs -> PCF -> I2C -> Méga 1 (Si tel capteur est en marche.... Démarrer le relais Y, Eteindre le relais Z) -> I2C -> PCF -> Relais -> voies
Capteurs -> PCF -> I2C -> Méga 1 (Si tel capteur est en marche.... Démarrer le relais Z, Eteindre le relais Y) -> I2C -> PCF -> Relais -> voies
Uno (5s le relais X est collé, je renvoie une information) -> série -> Méga 1 (la tempo est fini, eteindre Z et Y) -> I2C -> PCF -> Relais -> voies

Voila, en fait, je partage le travail. D'une c'est plus simple, De deux , si  on a pas besoin d'étendre plus que ça le comportement des cartes, on peut retirer la Uno.

Maintenant, il faut que je parle structure de programme. Je prévoie de travailler sur plusieurs scénarios. Et en cette matière, il faudra gérer une matrice des zones vides et pleine. Les sections d'arrêt. Bien, qu'avec l'âge, j'aurais tendance aussi à couler les pleines voies par sécurité. Ainsi on limiterais les collisions. J'en veux pour preuve que je cours encore derrière les trains en cas de panne automatisme et même arrêt de celui-ci ! La logique choisit ai départ voulais qu'un train seul finisse toujours par avancer de base. C'est une grave erreur après coup.

Il faut donc, je pense crée un tableau de bool. Chaque section ayant un numéro de 0 à X, il devient évident que nous pouvons écrire:
canton
  • =1
canton[1]=0
canton[2]=0
...
canton[X]=1

On voie très nettement que si canton 1 précède le canton 0, le train situé sur le canton 0 peut aller sur le canton 1. Alors le relais qui pilote le canton 0 peut se fermer et le train part sur le canton 0. Quelques ms plus tard, les feux basculerons du vert au rouge. Sauf que du coup, je me retrouve avec un jeu de tempo... encore ! Pire, j'ai tellement de voies à gérer et de boutons à prendre en ligne de compte que mes PCF vont vite être limité.

Il convient alors de passer à autre chose. Mais quoi ? I2C entre Méga et plusieurs UNO ?

Merci pour vos remarqes.
Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 11
Posts: 1299
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

La méga n'a-t-elle pas assez de I/O pour gérer ça en direct?
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 111
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui, mais à ce moment là tu n'exploite pas la possibilité d'étendre celle-ci.

La méga s'impose pour deux choses. Ses nombreux ports TX/RX + I2C. C'est pas le cas de la Uno.

Ensuite, ma volonté est de garder le moins de fils possible tout en disposant de block cantons.

Un canton peut aussi être une uno avec ses relais ou voir de la PWM pour les démarrages progressifs ainsi que ses capteurs et la signalisations.

Ainsi un bus I2C peut circuler sous le réseau et piloter le tout depuis une UC simplifié. Tout dépends de ce que le club qui possède le réseau voudra faire. Je m'adapte aux deux cas !

Mais en gros il faut pas résonner en une carte pour ce projet. Il faut aller au delà.
Logged

Pages: [1]   Go Up
Jump to: