Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
23 octobre 2010 6 23 /10 /octobre /2010 10:30

Je reprend mon schéma de principe . Pour la pleine voie on aura ce branchement .

 

Sur la régulation deux entrées : l'auto-détection et l'info. de présence d'un train du canton suivant .

Le chaînage entre plusieurs cantons "pleine voie" ne nécessite que l'info. C+ , donc pour la programmation ces deux ordres suffisent .

L'info. C - ( en pointillés ) n'est utile que si le canton suivant est un canton en gare .

 

   Régulation PIC Pleine voieJe vous propose de détailler une version ( assez ) simplifiée de l'organigramme de mon programme " pleine voie " ( je ne parlerai pas des divers paramètres techniques laissés de côté ici qui rendent cet organigramme plus dense en programmation réelle ) .

 

Les rectangles sont des actions , soit reçues , soit données .

Les ronds orange sont les questions , avec les réponses qui sont "oui" ( en vert ) ou "non" ( en rouge ) .

J'ai mis une petite légende de rappel sur le côté pour les abréviations .

 

Précisions pour la vitesse :

 

C'est la largeur des impulsions de 14 Volts qui sera donnée sur le canton concerné . Disons que l'on a une échelle de grandeur allant de 0 à 255 : A 0 c'est l'arrêt total ; A 255 c'est la pleine vitesse ( PV ).

 

Je n'ai jamais 0 en valeur de vitesse ( hormis quand l'alimentation des transfo. est coupée  ... ) mais j'ai une " vitesse de présence " ( VP ) qui correspond à 2 sur mon échelle de grandeur . Pourquoi ??...

 

En gardant une valeur minimum d'impulsions de 14 V , cela suffit à mon circuit de détection qui se déclenche et signale qu'un train est présent sur le canton ( AD , C+, C- ) .

J'ai déterminé cette faible valeur limite pour ne pas amorcé l'entraînement du moteur qui fait un petit bruit ( "tac...tac..." ) lors des impulsions mais qui n'a pas suffisamment de temps de courant pour faire rouler la motrice ; Par contre , les lumières ( leds ) demandant très peu de courant et d'intensité , restent-elles allumées en battant doucement au gré des impulsions véhiculé sur la voie .

Pour des raisons techniques , il me fallait à un moment différencier la vitesse maximum . Donc il existe aussi un seuil de vitesse PV-1 qui est la valeur de la vitesse maximum -1 unité de grandeur ( soit valeur = 254 ) . Cela ne se ressent absolument pas sur le matériel roulant ( 1 unité d'impulsions sur le transistor de puissance est vraiment minime ) mais par contre le programme reconnait exactement la différence entre le 255 et le 254 !!

 

Le mode accélération ( ACCL ) débute de la valeur 2 ( VP ) et monte à PV-1 soit 254 puis retourne ensuite dans la boucle . Après , si on revient sur le même chemin en étant déjà avec la vitesse à 254 , on ne re-déclenche pas la phase d'accélération .  

 

Le mode ralentissement ( RALT ) fait décroître la vitesse de 255 ( PV ) à 2 ( VP ) puis retourne ensuite dans la boucle .

 

Attaquons la partie haute avant la boucle !

 

Lorsque l'on met le courant il faut initialiser le programme car selon le cas , soit un train est présent sur le canton , soit le canton est libre et il faut bien déterminé , pour le savoir , quel est l'état de la chose !?

 

On met sous tension : MST ( pas de maladie honteuse ... quoique ... ) .

Le programme démarre et "il" commande d'office la vitesse de présence ( soit 2 ) : dans la pratique des impulsions de commande sont envoyées vers la patte GP2 qui va au transistor de puissance pour donner ce courant minimum .

 

Ensuite "il" pose des questions simples qui ne peuvent avoir que deux réponses : oui ou non ( c'est du binaire ...1 ou 0 ! )

 

La première question est : AD ? ( Ai-je une auto-détection ? Est-ce qu'il y a un train sur mon canton ? ) . Là aussi le binaire est en marche : soit j'ai une présence et du + 12 Volts sur la patte d'entrée AD , soit pas de train et du 0 Volt sur l'entrée .

 

Si "NON" , je met en pleine vitesse ( je passe directement les impulsions à 255 ) : cela n'est pas grave , aucun train n'est sur le canton !...

Si "OUI" , je pose une autre question : C+ ? ( Y-a t'il un train sur le canton suivant ?  J'ai un train sur mon canton , je regarde si un train est sur le canton devant le mien ? )

Si NON , je peux démarrer et je déclenche l'accélération ( j'ai un train sur mon canton mais la voie devant est libre : je démarre , j'augmente progressivement la largeur de mes impulsions , le train se met en route ) .

Si OUI , je ne fait rien , je reste en VP ( j'ai un train sur mon canton mais la voie devant est occupée : je reste en attente ) ; En pratique la liaison est directe ( pas d'action car on est déjà en VP ) : j'ai mis le rectangle pour tout de même visualiser l'explication .

 

Après la mise sous tension et l'analyse d'état on est donc , selon le cas , soit en PV ( pas de train sur le canton ) , soit en ACCL ( un train sur le canton mais aucun devant ) , soit en VP ( un train sur le canton et un train devant ) . Ce travail , tout compris , se déroule uniquement en quelques Us ( micro-secondes ) . 

 

On a terminé l'initialisation et on entre alors dans la boucle .

Une fois dans la boucle on tourne à " l'infini " ( jusqu'à la coupure des transfo. ) en revenant à chaque fois à " Boucle " mais en changant le cheminement des actions et des questions selon les réponses aux questions posées . Le tour de boucle ne prend également que quelques Us ...

Organigramme Pleine voie

Dans la boucle les questions reviennent ; Dans la constitution du programme , un " état " d'action peut devenir une question : c'est une une variable interne . Et je peux demander à savoir si ma variable est dans tel ou tel autre état , ou si ma variable a telle ou telle autre valeur . On peut aussi poser une même question à plusieurs endroits du programme selon les besoins .  

Je suis en pleine vitesse ( 255 ) , je peux regarder et demander si je suis en pleine vitesse : PV ? ( Suis-je avec une valeur de vitesse égale à 255 ? ) et je répond comme à une autre question par OUI ou par NON en sortie de question .

D'autres variables internes sont créées pour donner de l'inertie à l'accélération et au ralentissement afin d'aller plus ou moins vite pour faire les choses ( non représenté ici ) .

 

Accélérons .

 

1 ) On entre dans la boucle sans présence , on est déjà en pleine vitesse :

AD ? --> AD = 0 --> PV --> Boucle ( auto-détection ? , NON , je met pleine vitesse , je boucle )

 

2 ) On entre avec un train sur le canton mais aucun autre train n'est sur le canton de devant ; on est en accélération ou , au maximum , en PV-1 :

AD? --> AD = 1 --> C+ ? --> C+ = 0 --> PV ? --> PV = 0 --> ACCL --> Boucle .

Un train est-il sur le canton ? : OUI ; un train est-il sur le canton devant ? : NON ; La vitesse est-elle à 255 ? : NON  ; Je passe en mode accélération pour arriver à 254 ( avec les paramètres précis internes on poursuit l'accélération suivant le seuil atteint lors de l'entrée dans la boucle )

 

3 ) On est avec un train sur le canton et un train sur le canton de devant , on est en vitesse de présence :

AD? --> AD = 1 --> C+ ? --> C+ = 1 --> PV ? --> PV = 0 --> Boucle . 

Un train est-il sur le canton ? : OUI ; un train est-il sur le canton devant ? : OUI ; La vitesse est-elle à 255 ? : NON  ; Je retourne poser les questions , je suis ( en entrant dans la boucle ) et je reste en VP .

 

Je reprend le cas 1 ) ; On tourne en pleine vitesse et on boucle ; un train entre sur le canton , aucun train n'est devant , la boucle change de chemin : 

AD? --> AD = 1 --> C+ ? --> C+ = 0 --> PV ? --> PV = 1 --> PV-1 --> Boucle .

Le train qui arrive sera alimenté maintenant par ce canton mais je baisse la vitesse à 254 .

De cette manière lorsqu'il aura avancé et qu'il sera à cheval entre ce canton et le suivant ( donc le même train détecté par les deux cantons , soit AD et C+ actifs par le même train ! ) il ne déclenchera pas le ralentissement ... C'est pour ce cas de figure que je devais baisser un peu la consigne de vitesse afin de faire le distinguo avec l'exemple qui suit

 

Je reprend le cas 1 ) ; On tourne en pleine vitesse et on boucle ; un train entre sur le canton , mais un autre train est devant , la boucle change de chemin : 

AD? --> AD = 1 --> C+ ? --> C+ = 1 --> PV ? --> PV = 1 --> Tempo --> RALT --> Boucle .

Le train qui arrive va déclencher son ralentissement ; Une temporisation de plusieurs"Us" pourra être mise en place pour être certain de l'entrée complète du train sur le canton .

 

Si on comprend cela , on comprend le reste : il suffit de suivre l'organigramme ...

Les états , les questions , changeront suivant l'occupation réelle de AD et C+ sur chaque canton donc suivant la position du ou des trains sur le réseau par le truchement du chaînage  ....

Partager cet article
Repost0

commentaires