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.
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.
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.
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.
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.
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.
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::
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:
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 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.
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.
Il ya deux politiques qui peuvent être prises après que l'état d'un Condition ait été évalué:
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.
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.
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.
Suivez les étapes suivantes pour créer un Logix et vous familiariser avec la façon dont l'interface utilisateur Logix fonctionne.
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.
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).
Actions qui sont actuellement disponibles pour une utilisation dans les Conditions et qui sont répertoriées ci-dessous avec des informations sur chacune:
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.
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.
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.
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.
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.)
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.