Programmation d'une barrière de passage à niveau automatique sous Flowcode
14/12/2024

Problématique du passage à niveau

Trois capteurs A, B et C disposés sur la voie sont enfoncés successivement lors du passage d’un train. Le capteur B est situé au niveau de la barrière et les deux autres, A et C, à peu près symétriquement de part et d’autre.

Toutes les longueurs de trains sont possibles, sauf la coïncidence rigoureuse entre la longueur d’un train et la distance séparant deux quelconques des capteurs : deux capteurs ne changeront jamais d’état simultanément.

Un train court enfonce successivement et séparément chacun des trois capteurs (A, B, puis C), un train de longueur moyenne pourra actionner simultanément jusqu’à deux capteurs (A, AB, B, BC, puis C) et un train long pourra actionner simultanément les trois capteurs (A, AB, ABC, BC, puis C).

Les trains peuvent circuler dans les deux sens sur la voie, mais il est exclu :

Illustration de la circulation d'un train court dans le sens A B C :

Un train court a une longueur inférieure à la distance AB (par exemple une simple locomotive) : il couvrira donc 1 seul capteur à la fois lors de son passage dans la zone contrôlée.

position du train état des capteurs A B et C état des barrières
à l'extérieur de
la zone contrôlée
OUVERTES
sur le capteur A :

les barrières se ferment
à l'instant où le
capteur A se ferme
FERMÉES
entre les capteurs A et B
FERMÉES
sur le capteur B, donc sur le passage à niveau
FERMÉES
entre les capteurs B et C :

les barrières s'ouvrent
à l'instant où le
capteur B s'ouvre
OUVERTES
sur le capteur C
OUVERTES
à l'extérieur de
la zone contrôlée
OUVERTES

 

 

Illustration de la circulation d'un train moyen dans le sens A B C :

Un train moyen a une longueur inférieure à la distance AC mais supérieure à la distance AB (par exemple un petit train de voyageur) : il couvrira donc jusqu'à 2 capteurs à la fois lors de son passage dans la zone contrôlée.

position du train état des capteurs A B et C état des barrières
à l'extérieur de
la zone contrôlée
OUVERTES
sur le capteur A seulement :

les barrières se ferment
à l'instant où le
capteur A se ferme
FERMÉES
sur les capteurs A et B
en même temps,
donc sur le passage à niveau
FERMÉES
sur le capteur B seulement,
donc toujours sur le passage à niveau
FERMÉES
sur les capteurs B et C
en même temps,
donc toujours sur le passage à niveau
FERMÉES
sur le capteur C seulement :

les barrières s'ouvrent
à l'instant où le
capteur B s'ouvre
OUVERTES
à l'extérieur de
la zone contrôlée
OUVERTES

 

 

Illustration de la circulation d'un train long dans le sens A B C :

Un train long a une longueur supérieure à la distance AC (par exemple un grand train de marchandise) : il couvrira donc jusqu'à 3 capteurs à la fois lors de son passage dans la zone contrôlée.

position du train état des capteurs A B et C état des barrières
à l'extérieur de
la zone contrôlée
OUVERTES
sur le capteur A seulement :

les barrières se ferment
à l'instant où le
capteur A se ferme
FERMÉES
sur les capteurs A et B
en même temps,
donc sur le passage à niveau
FERMÉES
sur les 3 capteurs A B et C
en même temps,
donc toujours sur le passage à niveau
FERMÉES
sur les capteurs B et C
en même temps,
donc toujours sur le passage à niveau
FERMÉES
sur le capteur C seulement :

les barrières s'ouvrent
à l'instant où le
capteur B s'ouvre
OUVERTES
à l'extérieur de
la zone contrôlée
OUVERTES

 

 

Câblage du système dans Flowcode

Les capteurs A B et C seront câblés sur le port B, respectivement sur les bits B0, B1 et B2 :

Bit du port B
Capteur du passage à niveau
B0
A
B1
B
B2
C

L'état de la barrière du passage à niveau sera représenté par une LED branchée sur le bit A0 du port A :

État du bit A0
État de la LED
État des barrières
du passage à niveau
0
éteinte
barrières LEVÉES
1
allumée
barrières BAISSÉES

Voici la modélisation du passage à niveau dans Flowcode lorsqu'il y a une seule voie ferrée :

Vous configurerez les interrupteurs en mode bistable (Type "Bascule") en affichant seulement 3 interrupteurs :

Vous avez remarqué que le nom des capteurs du passage à niveau a été inscrit à droite des interrupteurs dans Flowcode. Pour ajouter une étiquette aux interrupteurs il faut renseigner les champs "Étiquettes des interrupteurs" dans les propriétés des interrupteurs :

Vous commenterez désormais systématiquement les interrupteurs et les LED en y ajoutant une étiquette afin de rappeler leur rôle dans le contexte de la problématique à résoudre.

A retenir et à noter dans votre fiche mémo Flowcode :

  • Question : Comment ajouter une étiquette sur les interrupteurs ou sur les LED ?
  • Réponse : En renseignant les champs "Étiquettes des interrupteurs" dans les propriétés des interrupteurs (idem pour les LED)

 

Travail demandé

I - Activité 1 :

Dans cette première activité on considère que le passage à niveau protège la traversée d’une seule voie ferrée. Les trains peuvent circuler dans les deux sens sur la voie, mais il est exclu :

L'état des barrières du passage à niveau sera donné dans Flowcode par une LED rouge que vous connecterez au bit A0 : LED allumée = barrières BAISSÉES


Modélisation de l'activité 1 dans Flowcode V3

 


Modélisation de l'activité 1 dans Flowcode V4

I – 1 – Proposez dans Flowcode un algorigramme répondant à la problématique de l’activité 1. Testez-le en simulant la circulation des trains en actionnant les 3 capteurs A, B et C (connectés sur le port B respectivement aux entrées B0, B1 et B2). Vous veillerez particulièrement à bien tester les 3 longueurs de trains (train court, train moyen et train long) et ce dans les deux sens de circulation (Sens 1 de A vers C et Sens 2 de C vers A). En cas de disfonctionnement, corrigez votre algorigramme puis testez-le à nouveau jusqu’à obtenir la solution exacte de l’activité 1.

Indices et étapes intermédiaires à réaliser :

Avant de vouloir obtenir un programme complet qui prend en compte les 3 longueurs de train et dans les 2 sens, il faut réfléchir séparément aux 6 cas particuliers en un premier temps, et trouver un petit algorigramme correspondant à chacun des cas :

1 - recherchez un algorigramme qui commande les barrières du passage à niveau seulement pour des trains longs circulant dans le sens 1 (A B puis C)

2 - modifiez votre programme pour qu'il fonctionne seulement pour des trains longs circulant dans le sens 2 (C B puis A)

3 - les 2 programmes précédents fonctionnent-ils pour un train moyen ou un train court ?

4 - recherchez un algorigramme qui commande les barrières du passage à niveau seulement pour des trains courts circulant dans le sens 1 (A B puis C)

5 - modifiez votre programme pour qu'il fonctionne seulement pour des trains courts circulant dans le sens 2 (C B puis A)

Analysons le problème pour des trains longs circulant dans le sens 1. L'algorithme correspondant seulement à ce cas est le suivant :

1 : attendre que le capteur A soit enfoncé (B et C étant forcément relâchés)

2 : fermer les barrières

3 : attendre que le capteur B soit relâché (C étant forcément enfoncé puisque c'est un train long)

4 : ouvrir les barrières  

Et voici l'algorigramme correspondanat utilisant 2 boucles Tant que (réalisable en Flowcode V3 ou V4):


Train long dans le sens 1

 

Et voici un autre algorigramme équivalent mais qui utilise cette fois 2 boucles Jusqu'à (réalisable seulement en Flowcode V4) :


Train long dans le sens 1

Pour une locomotive (train court) l'algorithme doit détecter les changements successifs de chacun des capteurs tout au long du passage du train dans la zone contrôlée. L'algorithme de détection d'un train court est alors le suivant :

1 : attendre que le capteur A soit enfoncé

2 : fermer les barrières

3 : attendre que le capteur A soit relâché

4 : attendre que le capteur B soit enfoncé

5 : attendre que le capteur B soit relâché

6 : ouvrir les barrières  

7 : attendre que le capteur C soit enfoncé

8 : attendre que le capteur C soit relâché

Il vous reste à trouver l'algorigramme correspondant en utilisant une succession de boucles.

 

I – 2 – Que se passe-t-il si un train s’arrête dans la zone contrôlée (entre A et C) pour repartir en marche arrière, quelque soit sa longueur ? Que proposez-vous pour solutionner ce problème ?

I – 3 – Que se passe-t-il si deux trains se suivent à une distance inférieure à la distance A C, quelque soit leur longueur ? Que proposez-vous pour solutionner ce problème ?

Une fois parfaitement fonctionnel, enregistrez votre programme sous le nom pan_activite_1.fcf

 

II - Activité 2 :

Dans cette deuxième activité le passage à niveau protège la traversée de deux voies ferrées. Les trains circulent dans un seul sens sur chacune des voies (sens 1 sur la voie 1 et sens 2 sur la voie 2), mais il est exclu :

Les 3 capteurs de la voie 1 sont appelés A, B et C, et activent respectivement les entrées B0, B1 et B2 dans Flowcode. Les 3 capteurs de la voie 2 sont appelés D, E et F et activent respectivement les entrées B3, B4 et B5. Les capteurs B et E sont toujours situés au niveau de la barrière.

Bit du port B
Capteur du passage à niveau
B0
A
B1
B
B2
C
B3
D
B4
E
B5
F

Afin d'identifier plus facilement le rôle de chaque capteur par rapport à sa position sur le voie ferrée, il est vivement conseillé de disposer les interrupteurs en 2 lots de 3 et horizontaux (avec comme étiquettes simplement A B C D E et F) :

Ainsi disposés, il est plus facile de simuler la circulation de tout les types de trains (court, moyen et long) et ce dans les deux sens et sur chacune des voies ferrées.

Remarque : pour inverser l'ordre d'affichage des interrupteurs il faut configurer la Direction "Inverse" dans leurs propriétés :

L'état des barrières du passage à niveau sera donné par une LED rouge que vous connecterez au bit A0 : LED allumée = barrières BAISSÉES


Modélisation de l'activité 2 dans Flowcode V3

 


Modélisation de l'activité 2 dans Flowcode V4

II – 1 – Proposez dans Flowcode un algorigramme répondant à la problématique de l’activité 2 : si la sortie A0=1 alors les barrières sont baissées et si A0=0 alors les barrières sont levées. Testez-le en simulant la circulation des trains en actionnant les 3 interrupteurs A, B et C pour la voie 1, et les 3 interrupteurs D, E et F pour la voie 2. Vous veillerez particulièrement à bien tester les 3 longueurs de trains (train court, train moyen et train long) et ce sur chacune des voies (dans le sens 1 seulement sur la voie 1 et dans le sens 2 seulement sur la voie 2). En cas de disfonctionnement, corrigez votre algorigramme puis testez-le à nouveau jusqu’à obtenir la solution exacte de l’activité 2.

II – 2 – Que se passe-t-il si un train entre dans le zone contrôlée D F sur la voie 2 alors que la barrière est baissée car un train n’est pas encore sorti de la zone contrôlée A C sur la voie 1 ? Que proposez-vous pour solutionner ce problème afin de permettre le croisement des trains de longueur quelconque sur la zone contrôlée ?

II – 3 – Que se passe-t-il si un train circule en sens interdit (en sens 1 sur la voie 2 ou en sens 2 sur la voie 1) ?

Une fois parfaitement fonctionnel, enregistrez votre programme sous le nom pan_activite_2.fcf

 

III - Activité 3 :

Dans cette dernière activité le passage à niveau protège la traversée de deux voies ferrées réelles et les trains peuvent circuler dans les deux sens sur chacune des voies. Pour des raisons de sécurité, le système devra prendre en compte les 4 cas particuliers suivants, et baisser les barrières du passage à niveau (ou ne pas les lever) pour protéger la traversée des voies dès qu’il le faudra :

  1. deux trains doivent pouvoir se croiser dans la zone contrôlée
  2. deux trains doivent pouvoir se suivre à une distance inférieure à la distance A C
  3. un train à grande vitesse sur une voie doit pouvoir doubler un train lent sur l’autre voie dans la zone contrôlée
  4. un train peut s’arrêter dans la zone contrôlée pour repartir en marche arrière
Illustration de deux trains qui se suivent à une distance inférieure à la distance A C état des barrières

Un premier train arrive par le capteur A : les barrières se ferment dès que la capteur A est enclanché

FERMÉES

Le train avance normalement puis relâche A et relâche B : les barrières s'ouvrent dès que la capteur B est relâché

OUVERTES

Mais alors que le premier train n'a pas encore passé le capteur C, un second train rentre dans la zone contrôlée : les barrières doivent immédiatement se refermer lorsque le second train enclanche le capteur A, et le système doit entièrement se concentrer sur la circulation du second train (et oublier le premier)

FERMÉES

 

Illustration d'un train qui s’arrête dans la zone contrôlée pour repartir en marche arrière état des barrières

Un premier train arrive par le capteur A : les barrières se ferment dès que la capteur A est enclanché

FERMÉES

Le train tombe en panne alors qu'il écrase les capteurs A et B : les barrières du passage à niveau restent fermées durant tout le temps d'immobilisation du train

 

Remarque : lorsque le tain tombe en panne il pourrait très bien couvrir les 3 capteurs A B et C

 

FERMÉES

Pour libérer le passage à niveau afin que les automobilistes puissent passer, le train est remorqué en marche arrière : les barrières doivent d'ouvrir dès que le capteur B est relâché

OUVERTES

Le train quitte ensuite la zone contrôlée toujours en marche arrière et le passage à niveau repasse en position de repos en attendant l'arrivée d'un prochain train

OUVERTES

 

 

L'état des barrières du passage à niveau est toujours donné par une LED rouge que vous connecterez au bit A0 : LED allumée = barrières BAISSÉES


Modélisation de l'activité 3 dans Flowcode V3


Modélisation de l'activité 3 dans Flowcode V4

III – 1 – Le nom et le câblage des capteurs dans Flowcode étant identiques à l’activité 2, proposez dans Flowcode un algorigramme répondant à la problématique de l’activité 3. Testez-le en simulant la circulation des trains en actionnant les 3 capteurs A, B et C pour la voie 1, et les 3 capteurs D, E et F pour la voie 2. Vous veillerez à bien tester les 3 longueurs de trains (train court, train moyen et train long) et ce sur chacune des voies dans les deux sens de circulation, et à simuler les 4 cas particuliers énoncés ci-dessus. En cas de disfonctionnement, corrigez votre algorigramme puis testez-le à nouveau jusqu’à obtenir la solution exacte de l’activité 3.

Une fois parfaitement fonctionnel, enregistrez votre programme sous le nom pan_activite_3.fcf

Retour en haut de la page

www.gecif.net

© Mai 2022