Aller au contenu principal

Variable d'état

Nous voulons créer un état machine comme si nous avions une CNC qui nous envoie un "1" chaque fois qu'une pièce est créée, sinon le signal d'entrée revient à "0".

Créer une variable d'état

Pour définir votre état, nous devons créer une variable booléenne qui définit si votre état est ON (vrai) ou OFF (faux). Pour cet exemple, nous supposerons que si ma CNC n'envoie pas de "1" pendant 2 minutes, nous la considérerons comme OFF.

Configuration

Créez une variable nommée CNC_received_signal_ts avec 0 comme expression pour enregistrer le moment où vous avez reçu votre dernier signal.

remarque

ts dans le nom de la variable signifie "timestamp". Consultez Conseils et astuces pour savoir ce qu'est un timestamp et comment utiliser NOW.

Enregistrez quand vous recevez un signal

Allez dans le moteur de règles et créez une règle avec un déclencheur Valeur qui se déclenchera lorsque nous recevrons un signal "1" de la CNC. Un déclencheur au changement de valeur est utilisé ici car nous savons que notre variable passera à "0" juste après.

Déclencheur de valeur de l'état machine

Votre action sera une action de type Variable. L'action fixe le CNC_received_signal_ts à NOW. Cela enregistre le moment où vous avez reçu votre signal.

Action variable pour l'état machine

Créer la variable d'état

Nous avons maintenant tout ce dont nous avons besoin pour créer une variable d'état qui est vraie ou fausse si le dernier signal reçu est avant ou après 2 minutes.

Allez dans Variables et créez une variable nommée CNC_state.
L'expression sera ($NOW - $CNC_received_signal_ts) < 120000.

Ce que nous faisons ici est que nous soustrayons la dernière fois que nous avons reçu un signal de la date actuelle NOW. Si cette valeur est inférieure à 120 000ms (2 minutes), cela signifie que notre machine est allumée.

astuce

Il est préférable que votre délai (120 000ms) soit stocké dans une variable qui lui est propre, il sera plus facile de l'identifier et de la changer par la suite.

Maintenant que nous avons notre variable, il nous reste à créer nos évènements d'état machine correspondants.