JMRI: Logix Documentation
Author: David Duchamp
Keywords: java model railroad JMRI Logix

# JMRI: Documentation Logix

Les Logix™ fournissent une capacité puissante à JMRI pour surveiller une ou plusieurs conditions sur un réseau, et prendre des mesures lorsque ces conditions changent d'une manière spécifiée par l'utilisateur. Logix peut être utilisé pour commander les signaux, portails de croisement et d'autres types d'automatisme sur le réseau. L'interface utilisateur est conçue pour être conviviale pour tous les utilisateurs avec une familiarité de base avec JMRI. Un Logix fournit un moyen pour la mise en place d'une logique éfinie par l'utilisateur de manière intuitive, sans que l'utilisateur ait à se familiariser avec la logique mathématique.

## Contenus

La documentation ci-dessous décrit Logix, et discute de sa configuration. La documentation est divisée en sections; cliquez ci-dessous pour un accès facile à une section listée. Si vous préférez essayer avant de tout lire, lire Introduction à Logix et Conditions, puis cliquez sur Mise en route et suivez ces instructions. Revenez ici pour lire ce que vous avez fait.

- Introduction à Logix et Conditions
- Qu'est ce que Logix
- Conditions
- La fenêtre Modifier Condition
- L'Expression Logique
- Déclenchemet des Actions
- Les Actions
- Mise en route
- Etat des variables Disponibles
- Actions Disponibles
- Notes Supplémentaires

### Introduction aux Logix et Conditions

Un Logix est un petit groupe de Conditions concentrés sur une tâche unique sur le réseau. Chaque Condition peut être considéré comme une déclaration de la forme:

si (expression logique) alors (action).

La partie "expression logique" d'un conditionnel teste l'état d'un groupe de conditions spécifiées par l'utilisateur sur la mise en forme, par exemple, si certains aiguillages sont droits ou déviés, ou si un bloc est occupé. La partie "action" de la condition spécifie quelle action doit être faite si l'état de l'expression logique évolue.

Par exemple, un Logix avec plusieurs Conditions pourrait contrôler l'apparence d'un Feu de signalisation. La première Condition pourrait vérifier les conditions pour une apparence VERTE. Un second Condition peut vérifier une autre apparence permise. Les autres Conditions pourraient vérifier les autres apparences. Un Logix est suffisamment souple pour que les règles de signalisation de tout chemin de fer puissent êtremises en place, à condition, bien sûr, que les information nécessaires pour tester les conditions soient disponibles. Donc, avec un seul Logix, un utilisateur doit être en mesure de mettre en place la logique requise pour contrôler l'apparence d'un Feu de signalisation.

Pensez à un Logix comme un petit groupe d'une ou plusieurs Conditions qui répondent à un besoin unique. Etre capable de regrouper toutes les Conditions qui répondent à ce besoin dans un seul Logix simplifie les choses. Seul un nom système est nécessaire pour toute la logique pour aborder la tâche, et le regroupement de toute la logique pour la tâche à un seul endroit, rend beaucoup plus facile de voir comment les expressions logiques liées peuvent travailler ensembles et comment elles pourraient s'affecter l'une l'autre.

## Logix

Sauf quand il est créé ou modifié, un Logix est "actif", ce qui signifie que les entités (aiguillages, détecteurs, lumières, etc) dans les expressions logiques des Conditions Logix sont surveillées. Chaque fois que l' état d'un des Conditions surveillées change, la Condition "recalcule" son expression logique. Si le résultat du calcul change la valeur de l'expression logique, alors les actions spécifiées de la Condition sont prises.

Les entités surveillées spécifiées dans l'expression logique d'une Condition sont appelés "variables d'état" et le résultat du calcul est l'état de la Condition. C'est le changement d'état de la condition qui l'amène à émettre des commandes pour les actions à réaliser. L'expression logique est aussi appelée l'"antécédent" de la Condition et le groupe de mesures à prendre est aussi appelé la "conséquence" de la Condition.

Un Logix n'a pas un état que beaucoup d'entités JMRI ont. Un Logix a cependant la capacité d'être "activé" ou "désactivé". Quand un Logix est désactivé (non activé), les expressions logiques de ses Conditions sont encore évalués, mais les actions spécifiées dans la Condition ne sont pas prises. Chaque Logix activé ou désactivé est enregistré lorsque le Logix est enregistré sur le disque, donc un Logix qui était désactivé lors de son dernier enregistrement va démarrer désactivé lors du prochain chargement à partir du fichier de configuration. Quand un Logix désactivé est activé, les états de tous ses Conditions sont mis à INCONNU, et tous les Conditions sont calculées.

### Le Tableau Logix

Un Logix est défini via le Tableau Logix auquel on peut accéder en sélectionnant Tableau Logix dans le menu Outils. Le Tableau Logix listes tous les Logix actuellement définis par leur nom système et utilisateur. Le Tableau indique également si un Logix est "Activé". La dernière colonne de la Table fournit un moyen simple de modifier un Logix et ses Conditions. En cliquant sur la case de choix Sélectionner pour un Logix, un menu déroulant Avec trois choix; Modifier, Copier et Supprimer. Chaque choix ouvre un volet pour l'opération correspondante.

#### Commandes Tableau Logix

- Sous le tableau Logix se trouve le bouton Ajouter ....
- Le menu Options vous permet de Activer ou Désactiver tout Logix.
- Le menu Outils contient quatre outils de maintenance Logix:
  - Ouvrir le tableau des listes de sélection
  - Rechercher des éléments orphelins
  - Rechercher des conditions vides
  - Trouver des références croisées

### Création d'un nouveau Logix

Pour créer une nouveau Logix, cliquez sur le bouton Ajouter... situé au bas du Tableau Logix. Cela fera apparaêtre une fenêtre Créer Logix. Saisir un nom système et un nom utilisateur, puis cliquez sur Créer Logix , va créer le Logix, et ouvrir la fenêtre Modifier Logix. Cette fenêtre permet de créer et d'éditer les Conditions. Une fois que Logix est créé, son nom système ne peut pas être changé. Son nom utilisateur, cependant, peut être changé soit dans le Tableau Logix ou la fenêtre Modifier Logix. Un nouveau Nom d'Utilisateur peut être n'importe quel texte utile, à condition que le nouveau nom d'utilisateur n'ait pas déjà été attribué à un autre Logix.

Un Logix est nommé selon la convention JMRI. Le nom système du Logix doit toujours commencer par deux lettres IX et sont habituellement suivies par un numéro choisi par l'utilisateur. Par exemple, sont valables les Noms Système Logix comprenant: IX1, IX34, et IX100. Le nom utilisateur est tout ce que l'utilisateur veut utiliser pour identifier les Logix particuliers, par exemple, "Commande Signal 5". Toutes les lettres dans un nom de système doivent être en majuscules. Si l'utilisateur entre les lettres minuscules, JMRI automatiquement les convertira en majuscules. Aussi, par souci de commodité pour l'utilisateur, si le nom du système entré ne commence pas par IX, le programme ajoutera IX devant ce qui est entré. Par exemple, pour entrer un nom système de IX32, il suffit d'entrer 32 dans le champ Nom système, et le programme fera le reste.

La fenêtre Modifier Logix affiche le Nom Système et Nom Utilisateur du Logix au sommet. Le Nom Utilisateur peut être modifié en entrant/modifiant les textes dans le champ Nom Utilisateur. Le Suivant est un tableau de Conditions appartenant à Logix. Pour ajouter une nouvelle condition, cliquez sur le bouton Nouvelle Condition en bas du Tableau Condition. Cela va créer une nouvelle Condition et ouvrir la fenêtre Modifier la Condition permettant de définir l'expression logique et l'action de la nouvelle condition. Une Condition existant peut être éditée en cliquant sur le menu Édition de cette Condition dans la table. Le Nom Utilisateur de la Condition peut être modifié dans le tableau . Le Nom Utilisateur d'une condition peut être n'importe quel texte utile, à condition qu'il ne soit pas le même que le Nom Utilisateur d'une autre Condition dans le même Logix. Le nom utilisateur peut être le même que le Nom Utilisateur d'une Condition dans un autre Logix. Lorsque vous modifiez le nom utilisateur (ou de n'importe quel élément de n'importe quel tableau JMRI) s'il vous plaêt. N'oubliez pas de passer à une autre cellule dans le tableau de sorte que le programme est averti que vous avez terminé votre inscription, sinon l'entrée ne peut pas prendre effet.

Cliquant Calculer sous le Tableau Conditions provoquera un recalcul des Conditions du Logix. Les états résultant sont affichés dans la colonne État du tableau . Cependant, puisque que le Logix est en cours d'édition, ils sont inactifs et donc pas aucune mesure Condition ne sera prise. Lorsque l'édition du Logix est faite, le Logix est activé et peut être activé pour permettre aux Conditions d'exécuter leurs actions.

L'ordre des Conditions dans le Tablau Condition peut être modifié en cliquant sur Réorganiser (en dessous du Tableau Condition). Cliquer Réorganiser change toutes les modifications des boutons Édit dans la dernière colonne du tableau à la Première. Sélectionnez la condition qui doit être la première, et elle est immédiatement déplacée vers le haut du Tableau. Tous les autres boutons changent pour Suivante . Sélectionnez les Conditions restantes dans l'ordre désiré, jusqu'à ce que tous les boutons reviennent à Modifier .

Le seul moment où les Conditions sont évéluées dans l'ordre listée est quand tous leurs états sonr INCONNUS, comme lorsque le Logix est activé. Les Conditions sont évaluées quand une de leurs varaibles d'états change son état. Si une entité est utiliséecomme une variable d'état dans plus d'une condition, nous ne savons pas dans quel ordre la condition est évaluée.

Lorsque Terminé est cliqué au bas de la fenêtre Modifier Logix, toute changement dans le nom utilisateur Logix est vérifié et fait. Une vérification est faite pour les incohérences en précisant que l'entité (capteur, aiguillage, etc) référencée dans les variables d'état multiples n'est pas surveillée comme un déclencheur pour le calcul de Logix, et un message d'avertissement apparaêt si des incohérences sont constatées. Puis le Logix est activé, la fenêtre Modifier Logix est fermée, et l'utilisateur est renvoyé au Tableau Logix. Immédiatement avant que le Logix soit activé, l'état de toutes ses Conditions est mis à INCONNU. Immédiatement après l'activation, toutes les Conditions sont calculées.

La fenêtre Modifier Logix fournit aussi un moyen pour supprimer un Logix s'il n'est plus nécessaire. Cliquez sur Supprimer Logix supprime Logix et tous ses Conditions. Cette opération peut également être faite en sélectionnant l'option Supprimer item dans le menu déroulant Sélectionner le menu sur le tableau Logix.

Sélection de l'item Copie dans le menu déroulant Sélectionner le menu sur le tableau Logix affichera une série de fenêtres de dialogue qui fourniront un moyen de copier e Logix et tout ou partie de sa condition à un nouveau Logix ou à un existant.

## Conditions

Un Nom système d'une Condition a la forme IXnnnnCmm, et est défini automatiquement lorsque la Condition est créée par l'utilisateur en cliquant sur Nouvelle Condition dans la fenêtre Modifier Logix. Le nom système de la première tranche des Conditions pour Logix IXnnn sera toujours IXnnnC1, la seconde tranche de nom système des Conditions aura IXnnnC2, et ainsi de suite. Le nom utilisateur d'une Condition est ce que l'utilisateur veut assigner pour identifier l'usage de la Condition. Un nom utilisateur entré ne doit pas être utilisé par plus d'un Condition dans un Logix donné, cependant. Le nom système et le nom utilisateur sont affichés au sommet de la fenêtre Modifier Condition. Le nom utilisateur peut être Entré/Édité là ou dans le tableau Conditions de la fenêtre Éditer Logix. Le nom utilisateur d'une Condition peut être n'importe quel texte utile, à condition qu'il ne soit pas lemême que le nom utilisateur d'un autre Condition dans le même Logix. Le nom utilisateur peut être le même que le nom d'utilisateur d'un Condition dans un autre Logix.

Comme mentionné plus haut, les Conditions sont des énoncés de la forme::

- si (antécédent) puis (conséquente).

Par conséquent, une Condition a deux parties distinctes: son "expression logique" et ses "actions". Elles sont examinées séparément ci-dessous.

Les expressions logiques connectent les états (vrai ou faux) des "variables d'états" par exemple, si un capteur est actif ou inactif, si aiguillage est direct, si une Mât de signalision est rouge, si le temps d'horloge rapide se situe entre 10h00 et 11h00, les variables d'état etc sont liées ensembles dans une expression logique par les opérateurs logiques. Une liste des variables d'état courantes est fournie ci-dessous.

Les opérateurs logiques actuellement disponibles sont NOT, AND et AND NOT. L' opérateur AND est configuré automatiquement par le programme. Pour chaque variable d'état, l'utilisateur sélectionne si l'opérateur NOT précède la variable d'état. Si l'opérateur NOT précède la variable d'état, la valeur vrai/faux sur la variable d'état est inversée. Par exemple, si "Capteur Actif CS5" est vrai, "Capteur CS5 NOT Actif " sera faux, et vice versa. Notez que" Capteur Actif CS5" n'est parfois pas la même chose que" Capteur CS5 NOT Inactif", parce que le Capteur CS5 peut être dans l'état INCONNU.

Les expressions logiques sont lues comme des déclarations écrites. Il est facile de mettre en place une expression logique, d'évaluer de nombreuses situations sur le réseau. Par exemple, "si le canton 10 et le canton 11 sont occupés et l'aiguillage 20 est dévié "serait mis en place comme:

- Capteur LS1020 Actif AND Capteur LS1021 Actif AND l'aiguillage LT20 dévié

Où LS1020 est un capteur qui est vrai lorsque le canton 10 est occupé (peut-être à partir d'un BDL168), capteur LS1021 est vrai lorsque le canton 11 est occupé, et l'aiguillage LT20 Dévié est vrai lorsque l'Aiguillage LT20 est dévié. Cette expression logique serait calculer vrai si les trois des variables d'état sont vraies, c'est à dire, si le canton 10 est occupé et le canton 11 est occupé et l'Aiguillage 20 est dévié; sinon le résultat serait faux

Les Actions peuvent être spécifiées pour chaque condition. Un certain nombre d'actions types sont disponibles.Pour L'Aiguillage, par exemple, Définir Aiguillage, Définir Apparence Signal, Déclenchement d'Itinéraires, etc. Ces types d'action disponibles sont décrits ci-dessous dans le détail. Chaque action a une option sélectionnable par l'utilisateur pour l'éxécution si: 1)changement de l'expression logique à vrai, 2) changement de l'expression logique à faux, ou 3) le changement de l'expression logique. Cela signifie qu'un Condition peut effectivement avoir trois états..

Si (antécédent est vrai) puis (faire actions "changer le vrai" ).

si (antécédent est faux), puis (faire actions "changer le faux" ).

si (changements d'état antécédent) puis (faire actions "sur le changement").

### La fenêtre Modifier Condition

La fenêtre Modifier Condition est où les expressions logiques sont mises en place et où les actions sont spécifiées. La fenêtre Modifier Condition s'affiche quand une Condition est créée, ou lorsque le bouton Modifier d'une Condition est pressé dans la fenêtre Éditer Logix. La fenêtre Édition Condition affiche le nom système et le nom utilisateur de la Condition en haut. Le nom utilisateur peut être édité en Entrer/Modifier le texte dans le Champ Nom Utilisateur Tout texte peut être utilisé, à condition qu'il ne reproduit pas le nom utilisateur d'une autre Condition dans le même Logix. Viennent ensuite les deux sections - une pour l'installation d'une expression logique et une autre pour mettre en place les actions.

### L'Expression Logique

La section expression logique contient unetableaude variables d'état, avec deux boutons et une boête de menu déroulant ci-dessous. Le menu déroulant permet le choix des opérateurs logiques à utiliser dans l'antécédent. Les choix sont: tous les AND , tous les OR ou le Mixed . Mixed permet à l'utilisateur de spécifier toute combinaison de AND, OR et NOT. Lorsque ce choix est fait l'expression logique requiert des parenthèses afin d'être sans ambigüité. Ainsi, lorsque ce choix est fait, un champ texte est affiché afin que les parenthèses puissent être insérées et l'expression modifiée. Les variables d'état sont représentées dans l'expression par leur numéro de ligne.

La première colonne dans le tableau des état des variable est le numéro de ligne de la variable. La colonne suivante affiche l'opération logique précédente de la variable dans l'expression. Dans le cas de "Mixed" une boête de choix permet à l'utilisateur de choisir une opération. Cependant, ces choix peuvent être changés dans le champ texte antécédent et il est l'expression de champ texte que les Conditions utilisent afin de déterminer son état. La troisième colonne contient une boête de choix qui permet à l'utilisateur de sélectionner l'opérateur NOT si nécessaire.

La quatrième colonne est une description des variables d'état et la condition à surveiller pour que son état soit vrai. La prochaine colonne indique l'état qui a été testé pour la dernière variable (vrai ou faux). L'état affiché inclut les effet de l'opérateur NOT si NOT est sélectionné.

La colonne "Déclencheur" définit si la variable d'état doit entraêner la condition pour s'acquitter de ses actions lorsque cette variable change. Notez que les états actuels de toutes les variable sont toujours utilisés dans le calcul de la condition de l'état. Le réglage du "Déclencheur (Trigger)" permet à une variable d'état d'être "passive" et ne pas provoquer la Condition pour évaluer son état. C'est, par exemple une variable d'état qui est une condition nécessaire, mais non suffisante pour provoquer toutes les actions à prendre place.

Remarque : La désactivation des variable d'état déclencheurs doit être faite avec prudence. Elles sont efectuées seulement lorsque l'état de l'expression logique change. La désactivation d'un déclencheur peut empêcher des actions d'être exécutées même si cet état a changé.

Suit une colonne Modifier pour modifier une variable d'état existante. La dernière colonne du tableau (boutons Supprimer ) est utilisée pour supprimer un état de variable si vous décidez qu'il n'est plus nécessaire.

Pressez Ajouter Variable d'État pour ajouter une variable d'état (une ligne dans l'état des variables du tableau ). Cela ouvre une fenêtre avec une boête de choix pour l'utilisateur pour sélectionner un type de variable d'état. Les variables d'état disponibles sont documentées ci-dessous. Quand un type est choisi la fenêtre Édition variable affiche un champ de texte pour le nom de l'entité à utiliser pour la variable d'état. Quand un nom (soit nom système soit nom utilisateur) est entré, il doit correspondre à une entité existante (capteur, aiguillage, la lumière, etc.) Il est utile d'ouvrir le tableau de capteur lors de l'entrée du noms capteur , ou le tableau des aiguillages pour montrer les aiguillages disponibles, etc

Attention: Si vous utilisez des noms utilisateur pour spécifier des variables d'état soyez prudent lorsque vous éditez vos noms utilisateur ou vous pouvez casser vos définitions de variable d'état. Le nom utilisateur spécifié doit correspondre, caractère pour caractère, blancs, y compris, au nom d'utilisateur réel du capteur, aiguillage, etc, pour que vos variables d'état puissent travailler. Si vous voulez être en mesure d'éditer librement vos noms utilisateur, utilisez les noms système pour définir vos variables d'état.

A tout moment pendant l'entrée de l'état des données variables, le bouton Vérifier les variables d'état peut être cliqué pour vérifier les données saisies et d'évaluer les variables d'état. Lorsque ce bouton est enfoncé, la vérification et l'évaluation se poursuit jusqu'à ce qu'elle se termine avec succès ou qu'une erreur soit détectée. Si une erreur est détectée; la vérification s'arrête pour que l'utilisateur puissent corriger l'erreur et cliquez sur Vérifiez les variables d'état à nouveau. S'il vous plaêt rappelez vous après l'édition du nom système et des données articles de cliquer sur une cellule différente dans le tableau avant de cliquer Vérifiez les variables d'état (ou mise à jour Conditions en bas de la fenêtre) pour que le programme soit avertit que vous avez terminé votre entrée. Sinon votre entrée ne peut prendre effet, et une erreur peut être signalée inutilement.

### Déclenchement des Actions

Il ya deux politiques qui peuvent être prises après que l'état d'un Condition ait été évalué:

- Exécutez les actions Conditions uniquement si l'état de lau Condition a changé
- Exécutez les actions Conditions indépendamment de savoir si l'état a changé

La politique d'utilisation est choisie par les boutons radio dans le milieu de la fenêtre Édition Condition.

Le bouton Exécuter des actions sur le changement d'état uniquement empêche un comportement indésirable de se produire lorsque plusieurs séquences d'actions "sur le vrai" ou "le faux" sont exécutées. C'est, si des déclencheurs successifs provoquent l'évaluation de l'expression logique dans le même état, seul le premier déclencheur pourra exécuter les actions. Normalement, il est préférable qu'une Condition exécute ses actions seulement lors de l'évolution de la Condition. Toutefois, s'il est important de maintenir les actions associées à un état particulier de la condition, le bouton Exécuter les actions à chaque fois doit être utilisé si des événements extérieurs annulent certaines des actions de la Condition, mais ne modifie pas l'état de la Condition, cette politique va exécuter l'action sur tous les déclenchements.

### Les Actions

La section Actions de la fenêtre Édition Condition contient un tableau d'actions, avec deux boutons dessous pour ajouter une nouvelle action et réorganiser la liste d'actions. La section fournit en le spécifiant les actions à prendre lorsqu'une Condition est calculée et change son état. Le tableau d'actions se compose d'une colonne pour la description de l'action à faire et deux colonnes de boutons, Modifier et Supprimer , pour l'édition ou la suppression d'une action existante. Pour ajouter une nouvelle action, appuyez sur le bouton "Ajouter une action". Une nouvelle fenêtre "Editer action" apparaêt. Sélectionnez un type d'action dans le zone Type, et des éléments de données nécessaires pour spécifier complètement l'action apparaêtront à la droite de la boête type. Lorsqu'un nom doit être saisi, le nom doit correspondre au nom système ou au nom utilisateur d'une entité existante (capteur, aiguillage, Feux de signalisation, etc) du type correspondant. L'ouverture du Tableau Capteur en entrant les noms des capteurs, et du Tableau Aiguillage pour voir les aiguillages disponible, etc, peuvent être utiles. Les types d'actions disponibles sont décrits en détail ci-dessous . Si vous utilisez des noms utilisateur pour spécifier vos actions, la même prudence mentionné ci-dessus s'applique. Soyez très prudent lorsque vous modifiez un nom utilisateur qui est utilisé pour spécifier les actions.

Pour chaque action, trois options sont disponibles pour le moment pour réaliser l' d'action: 1) Le changement à True (Vrai), 2) sur le changement à False (Faux), et 3) sur le Change (changement). Ces références à l'état calculé de la condition, qui est égale à la valeur de l'expression logique telle que spécifiée dans le tableau variable d'état. Une de ces options doit être sélectionnée. Quand vous avez terminé, cliquez sur "Update" pour installer vos modifications, "Annuler" pour fermer la fenêtre sans aucune modification

Pour modifier l'ordre des conditions dans un Logix, ou l'ordre des actions dans un Condition cliquez sur le bouton "Réorder". Le bouton le plus à droite du tableau ensuite vous permetra de sélectionner le premier, le suivant, etc. Notez cependant, il s'agit simplement de l'ordre dans lequel les commandes sont émises mais ne garantissent pas que leur effet final se fera dans le même ordre. S'il est nécessaire d'avoir des actions qui se déroulent dans un ordre précis, utilisez des Conditions séparées pour chaque action et la chaêne Condition sera telle que l'état action précédant terminé est la variable d'état pour l'action suivante.

### Enregistrer la Condition

Lorsque l'expression logique et les actions ont été spécifiées, cliquez sur Update Conditions au bas de la fenêtre. Cela déclenche une vérification de l'expression logique (la même que celle faite par l'état Vérifiez Variables ) et une vérification de données entrées pour les actions. Si le nom utilisateur de la Condition a été édité, il est également vérifié. Si une erreur est trouvée, une fenêtre de message s'ouvre annonçant l'erreur, et la mise à jour est arrêtée pour permettre à l'utilisateur de corriger l'erreur et cliquez sur Update Condition à nouveau. Si aucune erreur n'est trouvée, le Condition est mise à jour avec les données entrées, le fenêtre Éditer Condition est fermée, et l'utilisateur est renvoyé à la fenêtre Modifier Logix.

Deux autres boutons sont disponibles au bas de la fenêtre Modifier Condition En cliquant Annuler fermer la fenêtre Modifier Condition sans mettre à jour le Condition. En cliquant Annuler le résultats est la perte de toutes les données qui ont été saisies. L'autre bouton, Supprimer Condition , fournit un moyen facile de supprimer une condition inutile. Cliquez sur Supprimer Condition pour supprimer la condition en cours d'édition et revenir à la fenêtre Modifier Logix.

## Mise en Route

Suivez les étapes suivantes pour créer un Logix et vous familiariser avec la façon dont l'interface utilisateur Logix fonctionne.

1. Sélectionnez Tableau Logix dans les Outils . Cliquez sur
2. Ajouter situé au bas de le tableau Logix.
3. Dans la fenêtre Créer Logix qui apparaêt, entrez 6 pour le nom système, et "test" comme nom utilisateur, puis cliquez surCréer Logix .
4. Dans la fenêtre Modifier Logix qui apparaêt, cliquez sur New Conditional .
5. Dans la fenêtre Modifier Condition qui apparaêt, cliquez sur Ajouter État Variable pour commencer à définir une expression logique pour le Condition.
6. Dans la nouvelle fenêtre qui apparaêt, cliquez sur la case de choix " Type Variable" pour révéler une boête de sélection déroulante. Sélectionnez "Capteur Actif".
7. Remarquez qu'un champ texte apparaêt, vous demandant d'entrer un nom de capteur. Entrez le nom (Nom système ou nom utilisateur) de l'un de vos capteurs existants. (Si vous n'avez pas un capteur existant, sélectionnez le Tableau Capteur dans le menu Outils et en créer un.)
8. Cliquez sur le bouton
9. Update et notez les ligne d'entrées qui apparaissent dans le tableau variable d'état.
10. Cliquez New State Variablet pour créer une autre ligne dans la table. Notez que AND apparaêt dans la première colonne de la nouvelle ligne. Sélectionnez à nouveau "Capteur Actif", comme type de variable, et entrez le nom d'un capteur différent (le créer si nécessaire).
11. Cliquez sur troisième colonne d'entrée de la deuxième rangée pour révéler les boête de sélection pour les NOT. Sélectionnez NOT, puis cliquez sur Vérifier l'état Variables à nouveau. Notez que l'état de la seconde variable d'état s'est inversé.
12. Pour une autre Action cliquez sur Add Action .
13. Dans la nouvelle fenêtre qui apparaêt, cliquez dans la boête de choix sur "Action Type" pour révéler une boête de sélection de défilement. Sélectionnez "Set Turnout". Entrez le nom de l'aiguillage même si entré avant. Quitter "Change Option" pour "On Change to True", et" Closed "pour l'option de la "Position Aiguillage".
14. Cliquez Update pour fermer la fenêtre Modifier Condition et revenir à la fenêtre Modifier Logix. Cliquez
15. Done pour fermer la fenêtre Modifier Logix et activer vos nouveau Logix. Cliquez sur OK dans la case de rappel qui apparait pour enregistrer.

Vous avez créé un Logix pour contrôler la position d'un aiguillage selon les états de deux capteurs. C'est aussi simple que cela. Il vous a fallu plus de temps pour lire ce tutoriel que pour créer le Logix.

## Variables d'État Disponible

Les variables d'état qui sont actuellement disponibles pour une utilisation dans les Conditions sont énumérées ci-dessous, avec des informations sur chacune d'elles. Les variables d'état doivent toujours évaluer soit vrai ou faux. L'état résultant en vrai est donné pour chacune d'elle. Si la condition n'est pas remplie, la variable d'état est évaluée à fausse. Quand un Logix est actif, les états des entités (capteur, aiguillage, lumière, etc) spécifiés dans les variables d'état dans ses Conditions sont surveillées, à moins que la case Calcul déclencheurs de la variable état soit cochée (voir ci-dessus). Un calcul de toutes les Conditions dans le Logix est déclenché lorsqu'un état surveillé change comme noté ci-dessous (si elle n'est pas évidente).

- Capeur Actif : Evalué à vrai si l'état du capteur spécifié est actif.
- Capteur Inactif : Evalué à vrai si l'état du capteur spécifié est inactif.
- Aiguillage Dévié : Evalué à vrai si l'état connu de l'aiguillage est dévié.
- Aiguillage Direct : Evalué à vrai si l'état connu de l'aiguillage est direct.
- Condition Vrai : Evalué à vrai si l'état de la Condition spécifiée est vrai. Notez que parce que le nom utilisateur de la Condition peut être dupliqué sur différents Logix, un nom système doit être utilisé pour spécifier une appartenance de la Condition à un Logix différent.
- Condition Faux :Evalué à vrai si l'état de la Condition spécifié est faux. Notez que parce que le nom utilisateur de la Condition peut être dupliqué sur différents Logix, un nom système doit être utilisé pour spécifier une appartenance de la Condition à un Logix différent.
- Light On : Evalué à vrai si la lumière spécifiée est allumée.
- Light Off : Evalué à vrai si la lumière spécifiée est éteinte.
- Comparaison de valeur mémoire : Compare la valeur sauvée dans la mémoire spécifiée à la valeur de la variable d'état utilisant un opérateur de comparaison spécifié. Evalué à vrai (true)si la comparaison est vraie. Il y à 5 opérateurs de comparaison qui peuvent être définis pour l'évaluation:
  - "moins que"
  - "moins que ou égal"
  - "égal"
  - "plus grand que ou égal "
  - "plus grand que"
  Le calcul est déclenché lorsque l'une des valeurs de mémoire surveillées change ainsi que la valeur de comparaison.
- Gamme horloge rapide : la valeur vraie (true)si l'horloge courante rapide si le temps est entre l'heure de début et de fin spécifiés pour la plage. Les heures doivent être spécifiées dans le format hh: mm, où hh est heure et mm est minutes, par rapport à une horloge de 24 heures. Le calcul est déclenché lorsque le temps d'horloge rapide entre dans la plage et lors de la sortie de l'horloge rapide de la gamme.
- Apparence Feu de Signalisation Égale : Évaluée à vraie si l'apparence du Feu de Signalisation spécifiée est égale l'apparence spécifiée dans l'état de la variable. Le calcul est déclenché lors du changement de l'apparence du Feu de Signalisation.
- Feu de Signalisation Allumé : Évaluée à vrai si le Feu de Signalisation spécifiée est allumée.
- Feu de Signalisation manuel : Évaluée à vrai si le Feu de Signalisation spécifiée est manuelle
- Apparence Mât de Signalisation Égale : Évaluée à vraie si l'apparence du mât de signalisation spécifié est égale à l'apparence spécifiée dans l'état de la variable. Le calcul est déclenché lors du changement de l'apparence du mât de signalisation.
- Mât de Signalisation Allumé : Évaluée à vraie si le mât de signalisation spécifié est allumé.
- Mât de Signalisation Manuel : Évaluée à vraie si le mât de signalisation spécifié est porté
- État OCanton : Évalué à vrai si l'état spécifié est égal à l'état de OCanton Occupé.

### Actions disponibles

Actions qui sont actuellement disponibles pour une utilisation dans les Conditions et qui sont répertoriées ci-dessous avec des informations sur chacune:

- Commutation Aiguillage : Définit l'aiguillage indiqué à l' état choisi. Spécifiez l'aiguillage devant être basculé en inscrivant le nom système ou nom utilisateur Précisez l'état dans lequel le mettre en choisissant direct ou dévié dans le menu contextuel.
- Définir Apparence Feu de Signalisation : Définit le Feu de Signalisation spécifiée avec l'apparence choisie. Précisez le Feu de Signalisation à ommuter en saisissant sonnom système ou nom utilisateur. Spécifier l'apparence à mettre en choisissant dans le menu contextuel.
- Définir Signal Manuel : Définit le Feu de Signalisation spécifiée à tenir. Précisez le Feu de Signalisation à tenir en entrant son nom système ou nom utilisateur.
- Effacez Signal Manuel : Efface le feu de signalisation spécifiée. Précisez le Feu de Signalisation en entrant son nom système ou nom utilisateur.
- Définir Feu de Signalisationl éteint: Définir le Feu de Signalisation à ne pas allumer. Spécifier la Feu de Signalisation designé en entrant son nom système ou nom utilisateur.
- Définir Signal Allumé : Définit le Feu de Signalisation spécifiée et reste allumée. Précisez le Feu de Signalisation en entrant son nom système ou nom utilisateur.
- Déclencheur Itinéraire : Déclenche l'itinéraire spécifié. Précisez la voie en inscrivant le nom système ou nom utilisateur.
- Définir Capteur: Définit le capteur spécifié à l'état choisi. Spécifiez le capteur à mettre en inscrivant son nom système ou nom utilisateur. Précisez l'état à mettre en choisissant actif ou inactif dans le menu contextuel.
- Définir Capteur temporisé: Définit le capteur spécifié à l'état choisi après avoir attendu un certain nombre de secondes spécifié. Spécifiez le Capteur à mettre en inscrivant son nom système ou nom utilisateur. Spécifiez l'état à mettre en choisissant actif ou inactif dans le menu contextuel. Précisez le nombre de secondes à attendre avant de fixer le capteur en entrant un nombre dans le champ le plus à droite.
- Définir Lumière : Définit la lumière spécifiée à l'état choisi. Précisez la lumière à régler en saisissant son nom système ou nom utilisateur. Précisez l'état à mettre en choisissant On ou Off dans le menu contextuel.
- Définir Mémoire: Définit la valeur à entrer dans la mémoire spécifiée. Précisez la mémoire en inscrivant son nom système ou nom utilisateur. Indiquez la valeur à définir dans la mémoire en l'inscrivant dans le champs le plus à droite.
- Activer Logix : Active le Logix spécifié. Spécifiez le Logix à activer en entrant son nom système ou nom utilisateur.
- Désactiver Logix : Désactive la Logix spécifié. Spécifiez le Logix pour le désactiver en tapant son nom système ou nom utilisateur.
- Fichier Sound Play : Joue le fichier son spécifié. Spécifiez le fichier son à jouer en saisissant son nom dans le champ prévu. Cliquez Fixer pour mettre en place un dialogue de sélection de fichier pour aider à trouver le fichier. Accédez à votre fichier son, puis cliquez sur le nom de votre fichier sonore dans le dialogue pour la copie (y compris son chemin) dans le champ.
- Exécuter script Démarre le script spécifié. Spécifiez le script à démarrer en entrant son nom dans le champs fournit. Cliquez Définir pour apporter une un fichier de sélection où trouver le fichier. Naviguer vers votre fichier script, puis cliquez sur le nom du fichier script dans la liste pour le copier ( incluant son chemin)dan sle champ.
- Réglage Aiguillage Retardé:Configure l'aiguillage spécifié à l'état choisit après un nombre de secondes spécifiées. Précisez l'aiguillage en entrant son nom. Précisez l'état à fixer par le choix Direct ou Dévié dans le menu contextuel. Indiquez le nombre de secondes à attendre avant de basculer l'aiguillage en entrant un numéro dans le champs le plus à droite. Si cette condition est déjà en attente pour définir cet aiguillage, cette action est ignorée, et l'action précédente se poursuit comme initialement prévue. (voir aussi Annuler l'aiguillage retardé ci-dessous.
- Aiguillage Verrouillé : Verrouille ou déverrouille un aiguillage. Entrez le nom pour l'aiguillage, et choisir l'opération à partir du menu contextuel. Remarque, pour contrôler le type d'aiguillage verrouillé aller à la page Tableau Aiguillages et sélectionnez le mode de verrouillage.
- Réinitialisation du Capteur retardé : Définit le capteur écifié pour l'état choisi après attente d'un nombre spécifié de secondes. Précisez le capteur à initialiser en tapant son nom. Précisez l'état à fixer par choix, actif ou inactif dans le menu contextuel. Indiquez le nombre de secondes à attendre avant de fixer les capteurs en entrant un nombre dans le champs le plus à droite. Cette action est la même que celle de l'Initialisation du Capteur retardé, sauf si cette condition est déjà activement en attente pour régler le capteur spécifié, l'attente précédente est annulée et une nouvelle période d'attente est démarrée. En effet, le temps d'attente est redémarré. Le capteur n'est pas mis initialisé avant que la plupart despériode récentes de temporaisation expirent .
- Annuler Temporisation Capteur : Annule toutes les minuteries en attente pour régler le capteur spécifié dans tous les Conditions dans tous les Logixs. Spécifiez le capteur enentrant son nom. Le capteur n'est pas fixé; toutes les actions actives retardées pour le capteur spécifié sont annulées sans réglage du capteur.
- Réinitialisation du Réglage de Retardde l'Aiguillage: Définit l'aiguillage indiqué à l'état choisi après attente d'un nombre spécifié de secondes. Précisez l'aiguillage en inscrivant son nom. Précisez l'état à fixer par le choix Direct ou Dévié dans le menu contextuel. Indiquez le nombre de secondes à attendre avant de basculer l'aiguillage en entrant un nombre dans le champs le plus à droite. Cette action est la même que Initialisé Aiguillage Retardé :,sauf si cette Condition est déjà activée en attente de la direction de l'aiguillage spécifié. En effet l'attente précédente est annulée et une nouvelle période d'attente est démarrée. En effet, le temps d'attente est redémarré. L'aiguillage n'est pas orienté tant que la plupart des périodes d'attente récentes expirent.
- Annuler Temporisation Aiguillage : Annule toutes les minuteries d'attente pour régler les aiguillages spécifiés dans tous les Conditions dans tous les Logixs. Spécifiez l'aiguillage en entrant son nom. L'aiguillage n'est pas défini; toutes les actions actives retardées pour l'orientation de l'aiguillage spécifié sont annulées sans réglage de l'aiguillage.
- Régler l'Heure d'Horloge Rapide : Définit le temps à entrer sur l'horloge rapide .L'heure est entrée comme suit hh: mn où hh est heure et mn sur une horloge de 24 heures. Cette action règle l'horloge rapide à l'heure spécifiée indépendamment du fait que l'horloge accélérée tourne ou est arrêtée.
- Démarrage Horloge Accélérée: Démarre l'horloge accélérée JMRI en cours d'exécution. Si l'horloge rapide est déjà en cours, cette action n'a aucun effet.
- Arrêt Horloge accélérée: Suspend l'horloge accélérée JMRI. Si l'l'horloge rapide ne fonctionne pas, cette action n'a aucun effet.
- Copiez Mémoire dans mémoire : Copie la valeur d'une variable de mémoire dans une autre variable en mémoire. Précisez la mémoire à copier en entrant son nom dans le champ le plus à gauche. Précisez la mémoire devant recevoir la valeur copiée en saisissant son nom dans le champ le plus à droite.
- Réglage Apparence Mât de Signalisation : Définit le mât de signalisation spécifié pour l'aspect choisi. Spécifiez le mât de signalisation à régler en saisissant son nom système ou nom utilisateur. Spécifiez l'aspect à mettre en choisissant dans le menu contextuel.
- Réglage Mât de Signalisation Manuel : Définit le mât de signalisation spécifié manuel.Spécifiez le mât de signalisation manuel en entrant son nom système ou nom utilisateur.
- Efface Mât de Signalisation manuel : Efface l'emprise sur le mât de signalisation spécifié. Spécifiez le mât de signalisation en entrant son nom système ou nom utilisateur.
- Mettre le Mât de Signalisation Éteint : Définit le mât de signalisation spécifié pourqu'il ne s'allume pas. Spécifiez le mât de signalisation en entrant son nom système ou nom utilisateur.
- Effacer le Mât de Signalisation Éteint : Définit le mât de signalisation spécifié pour s'allumer. Spécifiez le mât de signalisation en entrant son nom du système ou nom d'utilisateur.
- Allouer Bulletins: Allouer (réserver) les OBlocks comprenant l'itinéraire couvert par le bulletin pour une utilisation par le détenteur du bulletin. Spécifiez le bulletin en entrant son nom système ou nom utilisateur.
- Désattribut Autorisation Restrictive : Désattribut (réserves) les OBlocks comprenant l'itinéraire couvert par le bulletin pour une utilisation par le détenteur du bulletin. Spécifiez l'autorisation restrictive en entrant son nom système ou nom utilisateur.
- Règle les Aiguillages de l'Itinéraire sous bulletin: Définit tous les aiguillages comprenant le parcours du bulletin. Spécifiez le bulletin en entrant son nom système ou nom utilisateur.
- Départ Automatique du Train : Démarre la lecture du script enregistré pour le train précisé dans l'autorisation restrictive. Spécifiez l'autorisation restrictive en entrant son nom du système ou nom d'utilisateur.
- Départ Manuel du Train : Sert une "autorisation" à un opérateur qui exécute manuellement les droits de circulation du train pour l'itinéraire sous autorisation restrictive. Spécifiez l'autorisation restrictive en entrant son nom système ou nom utilisateur.
- Train Commandé Automatiquement :Questions de la commande spécifiée pour un train automatique. Les commandes sont: ARRêT, REPRISE, ABANDON. Spécifiez l'autorisation restrictive du train en entrant son nom système ou nom utilisateur.
- Régler le Coefficient du Régulateur : Augmente ou diminue les réglages du régulateur d'un train en exécution automatique par le facteur indiqué. Spécifiez le bulletin du train en entrant son nom du système ou nom d'utilisateur.
- Attribuer des OCanton: Attribue un Ocanton. Spécifié le OCanton en entrant son nom du système ou nom d'utilisateur.
- Fixer le Chemin du Canton: Fixer l'aiguillage pour un chemin dans le Ocanton. Spécifié le OCanton en entrant son nom du système ou nom d'utilisateur.
- Désattribuer OCanton :Désattribue un Ocanton Spécifié le OCanton en entrant son nom du système ou nom utilisateur.
- Fixer un Canton Hors-Service: Fixe l'état d'un Ocanton à Hors-Service. Spécifié le OCanton en entrant son nom du système ou nom 'utilisateur.
- Annuler un Canton Hors-Service: Fixe l'état d'un Ocanton à état normal. Spécifié le OCanton en entrant son nom du système ou nom utilisateur.

### Notes complémentaires

Cette section contient des questions et réponses qui normalement ne sont pas nécessaires pour les utilisateurs Logix, mais dans certains cas ont été importantes ou ont de l' intérêt pour les versions précédentes de Logix.

- Pourquoi avoir un "groupe" de Conditions au lieu de simples Conditions?
  Un groupe de Conditions a été choisi pour plusieurs raisons, notamment:

  1. Un groupement de Conditions dans un Logix, et concentration des Logix sur une tâche devrait finir par être beaucoup plus convivial. Pensez à un Logix avec plusieurs Conditions commandant un Feu de signalisation de trois aiguillages. La première tranche de Condition peut vérifier les conditions pour un aspect rouge, et de prendre les mesures appropriées. La seconde condition peut vérifier sur un autre aspect autorisé qui, selon les règles du chemin de fer pourrait être modélisé dépendant de l'état calculé à la condition première. Autres Conditions serait de montrer d'autres apparences selon les règles du chemin de fer. Donc, avec un seul Logix, un utilisateur doit être capable de mettre en place la logique nécessaire pour fixer les apparences logiques pour une Tête de signal. Ainsi une fois le capteurs, les aiguillages, signaux et les Feuxs sont mises en place, un seul nouveau nom système, le nom du système de Logix, doit être défini et en garder la trace.

  2. Une autre raison pour le groupement de Conditions multiples est une opération plus simple . Moins d'auditeurs derrière les scène sont nécessaires pour accomplir la même tâche. Même si, suivant l'exemple ci-dessus, la logique de chaque aspect du Mât de signalisation (chaque condition) peut dépendre d'un capteur particulier (un canton d'occupation par exemple), si les Conditions sont combinées en un seul Logix, seul un interlocuteur est nécessaire pour ce capteur. C'est une mise en oeuvre plus simple que d'avoir plusieurs écouteurs.
- Comment est démarré un Logix ?
  Le démarrage de Logix est semblable au démarrage d'une lumière, un itinéraire, ou autre entité JMRI fonctionnant en permanence. En interne un Logix a une procédure "activer", qui est appelée lorsque le Logix est créé, après l'avoir édité, ou lorsqu'il est chargé à partir d'un fichier de configuration. Cette méthode démarre les auditeurs d'éléments dans les variables d'état des Conditions du Logix. Lorsque l'un de ces deux auditeurs (en indiquant que la propriété regardée d'une variable d'état a changé), le Logix est calculé, il en résulte que des mesures appropriées soient prises, à condition que le Logix soit activé.
- Quel est l'état ??initial d'un Logix et ses conditions?

  Quand un Logix est créé ou modifié, l'état initial de chaque Condition est vrai ou faux, comme indiqué dans la fenêtre Modifier Logix. Quand un Logix est chargé à partir d'un fichier de configuration, l'état initial de chaque condition est inconnue.

  Logix est activé automatiquement lorsqu'il est créé. Un Logix peut être activé/désactivé par décochant/cochant la case dans la colonne Activer dans le tableau Logix. Par exemple, vous voudrez peut-être désactiver un Logix alors que vous créez et débogé, jusqu'à ce que vous soyez certain que vous l'avez mis en place correctement. Un Logix peut être activé ou désactivé de manière dynamique par un autre Logix (voir actions permis actions dessus).

  Lorsque JMRI stocke la configuration d'un réseau dans un fichier, par exemple un fichier de panneau, tout Informations Logix, y compris l'état activé/désactivé du Logix, sont enregisrés . Quand un Logix est chargé depuis un fichier de configuration, il est activé ou désactivé en fonction de ce qui a été enregistré dans le fichier de configuration . Ceci est fait de sorte que les gens peuvent désactiver leur Logix tout en les débogant , mais encore sauver et restaurer la configuration selon vos besoins.

- Qu'est-ce qui se passe quand un programme JMRI démarre ou lorsqu'un fichier de configuration est chargé par un programme JMRI ?,

  Il s'agit d'une question complexe qui dépend de beaucoup de choses, comme, comment l'utilisateur a mis en place des évaluations d'aiguillage, la détection de Canton, etc Quand un fichier de configuration est lu, les différentes entités (capteurs, les aiguillages, les Têtes de signal, etc ) sont chargés dans un ordre presque aléatoire, et, puisque la plupart des entités vont se charger en état INCONNU Le calcul d'un Logix immédiatement après le chargement du fichier complet de configuration,ne produira pas un démarrage propre Ainsi quand un Logix est chargé, l'état de chaque condition commence par INCONNU. Immédiatement après que le fichier complet de configuration ait été chargé, toutes les Logix sont activés, et alors tous les logix sont calculés. L'état des Conditions changes de INCONNU pour vrai ou faux. Mais l'état calculé de la condition est "correct" si un ou plusieurs des variables d'état est évalués à partir d'une entité dans un état INCONNU? Par exemple, pensez à un aiguillage dans un état inconnu -- Aiguillage Droit et Aiguillage Dévié ont été évalués tous les deux à faux Lorsque JMRI enregistre la configuration du réseau dans un fichier, par exemple un fichier de panneau, toute informations Logix, y compris l'état activé/désactivé du Logix, est enregistrée . Quand un Logix est chargé depuis un fichier de configuration, il est activé ou désactivé statut est réglée en fonction de ce qui a été enregistré dans le fichier de configuration . Ceci est fait de sorte que les gens peuvent désactiver leur Logix tout en lesr débogant, mais encore sauver et restaurer la configuration selon vos besoins. Comme les auditeurs continuent de tirer pour des variables d'état, finalement chaque entité a son état actuel correct et le Logix fonctionnera très bien. Vous pouvezsurveiller cette action en regardant les états dans le Tableau Capteur, le Tableau Aiguillage, etc.les Conditions au démarrage certainement sont des choses à se rappeler au démarrage d'un Logix.

- Quand les Déclencheurs de Calcul doivent être décochés dans une variable d'état? Normallement les déclencheurs de Calcul doivent être cochésdans toute les variables d'état, ainsi un changement dans la variable d'état déclenchera le calcul d'un Logix. Il en résulte que le Logix réagira rapidement aux changements sur le reseau, et le maintien de l'état des signaux, aiguillages, etc comme vous le souhaitez. Il existe toutefois des situations où il est souhaitable de tester l'état d'une entité, mais ne pas l'utiliser comme un déclencheur de calcul. Les paragraphes qui suivent décrivent un couple de ces situations, mais il en existe d'autres.

  Parfois, une "boucle logique" peut en résulter si le déclenchement n'est pas supprimé. Par exemple, si l'état d'un aiguillage est testé dans une variable d'état, et l'aiguillage est fixé par une action de la même ou d'une autre condition du même Logix, le déclenchement continu (une boucle logique) pourrait en résulter. La meilleure façon de résoudre ce dilemme est de tester l'aiguillage, sans l'utiliser comme une entité de déclenchement. Cela se fait en décochant Déclencheurs de Calcul dans toutes les variables d'état où l'aiguillage est spécifié.Si l'aiguillage est utilisé dans les variables d'état de plus d'une condition du Logix, il doit être décoché partout où il est utilisé pour supprimer l'utilisationr comme un déclencheur.

  Une autre situation se présente lorsque l'action temporisée du capteur est utilisée avec un capteur interne pour déclencher un second Logix après que le temps de retard se soit écoulé. Si le second Logix ne doit pas être déclenché avant que le temps de retard écoulé, l'ensemble de ces variables d'état, à l'exception de la capteur interne temporisé, doit être décochée. Ce scénario peut se produire, par exemple, si une condition tourne On quelque chose comme sa première action, et défini un capteur temporisé comme sa deuxième action pour couper quelque chose après un certain délai prévu.

- Qu'est-ce qu'une "boucle logique" et comment peut-elle être évitée?

  Une "boucle logique" résulte quand le programme semble ralentir de manière significative ou verrouiller par plusieurs Logixs qui sont continuellement déclenchés en changeant les références mutuellement . La meilleure façon d'éviter une "boucle logique" est d'être conscient des situations qui peuvent conduire à une boucle, et de planifier votre logique pour éviter de telles situations.

  Une "boucle logique" peut survenir dans un même Logix quand une variable d'état (capteur, aiguillage, etc) qui déclenche le Logix est également modifié par ce même Logix. L'Éditeur Logix permet de détecter certaines situations qui pourraient entraêner une boucle, et émettre un avertissement lorsque vous fermez le Logix. tenir compte de ces avertissements! Un avertissement ne signifie pas qu'une boucle sera certainement entraêner si vous continuez. Le message d'avertissement est un "appel au réveil" pour vous prevenir que vous devriez étudier soigneusement ce que vous faites pour s'assurer qu'une boucle ne se fera pas.

  Une situation plus complexe impliquant deux ou plusieurs Logixs peut également entraêner une "boucle logique". Par exemple, si une Logix est déclenché par le capteur A, et a une action qui modifie l'aiguillage B, et le Logix 2 est déclenché par l'aiguillage B et change le capteur A, un potentiel de boucle existe car ces Logixs déclenchent l'un l'autre. Vous pouvez facilement étendre cette idée à des chaênes de déclenchement (boucles) impliquant trois ou plus Logixs, et même à des interactions entre Logixs et les itinéraires. Il n'ya pas de test dans le programme pour alerter sur des boucles comportant plusieurs Logixs. (Développer un tel test serait très difficile.)

- Que dois-je faire si je pense avoir une "boucle logique"?

  Quand elles se produisent, les "boucles logiques" peuvent être un peu effrayantes à dépanner. Votre ordinateur peut sembler être bloqué ou ralenti énormément parce que la boucle utilise la plupart du temps disponible de l'ordinateur. Heureusement JMRI fournit des outils pour aider à la conception et au débogage. Décocher "Triggers calcul" pour une variable d'état (voir ci-dessus), peut vous aider à concevoir autour des boucles lorsque vous avez identifié le Logix à l'origine du problème de boucle. Pour contourner le verrou ou le problème de ralentissement , démarrez avec tous vos Logixs désactivés (voir ci-dessous), puis leur permettre un par un jusqu'à ce que vous découvrirez la boucle.

  Si le fichier de panneau contenant Logixs charge automatiquement lorsque le programme démarre, appuyez et relâchez la touche Maj enfoncée quelques fois plus rapidement Dès que vous voyez le petit écran de démarrage JMRI (la première chose que vous voyez pendant le démarrage). Votre fichier panneau sera chargé avec tous les Logixs désactivés.

  Si vous chargez votre fichier de panneau manuellement en utilisant le menu Panneaux, avant de charger votre fichier, passez au menu Debug et sélectionnez Charger Logixs Désactivés . Après avoir répondu OK pour le message, chargez votre fichier de panneau comme vous le feriez normalement. Votre fichier de panneau sera chargé avec tous les Logixs désactivés.

  Après avoir chargé votre fichier de panneau, ouvrez le tableau Logix et vérifier que tous les Logixs sont désactivés. Si vous savez quel Logix est la cause du problème, vous pouvez alors corriger ou supprimer, réactiver les autres Logixs et enregistrer votre fichier panneau . Si vous ne savez pas quel Logix est à l'origine du problème, vous pouvez activer vos Logixs, un par un, jusqu'à ce que la boucle se produise. Lorsque la boucle commence, vous savez que le dernier Logix que vous avez activé est au moins partiellement responsable du problème. A ce stade, vous devriez relancer le programme avec tous les Logixs désactivés, et fixer ou supprimer le Logix que vous avez identifier.

  ATTENTION: Il est sage de sauvegarder votre fichier de panneau fréquemment lors de la saisie des Logixs. Si une boucle logique se produit, il peut être difficile, voir impossible, d'enregistrer votre fichier de panneau avant d'arrêter le programme. Rappelez-vous qu'un Logix est activé dès que vous cliquez sur Terminer de la fenêtre Modifier Logix. Aussi, n'oubliez pas que frapper un bouton Modifier dans le tableau Logix désactive le Logix sélectionné avant de l'ouvrir pour l'édition, offrant un moyen possible de s'introduire dans une boucle delogique sans avoir à redémarrer le programme.