Les Monostables _M
Un monostable est un bit interne de la mémoire d'information, de classe _M.
Chaque monostable a pour valeur booléenne soit 0, soit 1. Il peut etre utilisé dans une EXPRESSION, ou dans une LISTE_ACTIONS
Déclarer un Monostable
Dans la zone d'ALIAS, déclarez un monostable de la manière suivante:
#define ACRONYME <-> _M(libelle="Ceci est mon monostable");
La définition commence par le mot clé #define, puis une chaine de caractères représentant l'ACRONYME de l'entrée, puis une double flèche (un inférieur « < », un tiret « - », un supérieur « > »), la classe _M, un couple de parenthèses, et enfin un point virgule terminal.
De manière optionnelle, il est possible d'adjoindre un libellé au monostable en lui ajoutant l'option libelle
.
Les options d'un monostable
Dans une EXPRESSION, il est possible de moduler la sémantique du bit interne en utilisant les options suivantes:
- edge_up: permet de ne prendre en compte que les fronts montants (vrai lorsque l'entrée passe de 0 à 1)
- edge_down: permet de ne prendre en compte que les fronts descendants (vrai lorsque l'entrée passe de 1 à 0)
Positionnement
Prenons en exemple:
/* Entre 10h et 11h, on veut chauffer */
- MA_CONDITION → MON_MONOSTABLE;
Si MA_CONDITION est VRAIE, alors MON_MONOSTABLE devient VRAI.
Si MA_CONDITION devient FAUSSE alors MON_MONOSTABLE devient FAUX également.
Tip
De part la nature evenementiel des monostables, il est conseillé de n'avoir qu'une seule et unique ligne D.L.S positionnant un monostable donné.
Exemple d'usage
/* Nous sommes dans le DLS "PORTE" */
#define WANT_CHAUFFE <-> _M (libelle="Demande de chauffe");
Usage dans une EXPRESSION
/* Entre 10h et 11h, on veut chauffer */
- _HEURE > 10:00 . _HEURE < 11:00 → WANT_CHAUFFE;
/* Si WANT_CHAUFFE passe de 0 à 1, MON_BISTABLE est positionné à 1 */
- WANT_CHAUFFE(edge_up) → MON_BISTABLE;
/* Si WANT_CHAUFFE passe de 1 à 0, MON_BISTABLE est positionné à 0 */
- WANT_CHAUFFE(edge_down) → MON_BISTABLE;
Warning
Un monostable ne peut etre positionné que dans le module D.L.S à qui il appartient. Le positionnement d'un monostable d'un autre module D.L.S lèvera une erreur à la compilation.