Comptage d’impulsions avec wb-rules
Comptage d’impulsions sur une entrée numérique
Un compteur ou un bouton à sortie contact sec est raccordé à l’entrée universelle A1 du contrôleur. La règle compte le nombre de connexions de A1 à la masse et affiche le résultat dans un appareil virtuel. Cet appareil comprend également un bouton de remise à zéro du compteur.
Le WB-MCM8 fournit la même fonction de comptage d’impulsions avec les valeurs conservées dans sa propre mémoire non volatile. Le fabricant le recommande pour les installations réelles ; l’exemple ci-dessous est destiné à la démonstration et à l’apprentissage.
Dans une installation réelle, tenez compte de la fréquence des écritures dans PersistentStorage. Ces écritures atteignent le stockage eMMC du contrôleur, et une sauvegarde à chaque impulsion à fréquence élevée peut accélérer son usure.
Exemple de règle
La règle restaure le compte sauvegardé au démarrage, ne compte que les fronts montants (0 → 1) et enregistre à la fois les incréments et les remises à zéro.
defineVirtualDevice("pulse_counter", {
title: "Pulse counter",
cells: {
impulses: {
type: "value",
value: 0
},
reset: {
type: "pushbutton"
}
}
});
var ps = new PersistentStorage("pulse-counter-storage", { global: true });
var inputChannel = "wb-gpio/A1_IN";
var impulseCount = (ps["impulseCount"] === undefined) ? 0 : ps["impulseCount"];
dev["pulse_counter"]["impulses"] = impulseCount;
defineRule("count_impulses", {
whenChanged: inputChannel,
then: function (newValue) {
if (newValue) {
impulseCount += 1;
dev["pulse_counter"]["impulses"] = impulseCount;
ps["impulseCount"] = impulseCount;
}
}
});
defineRule("reset_counter", {
whenChanged: "pulse_counter/reset",
then: function () {
impulseCount = 0;
dev["pulse_counter"]["impulses"] = impulseCount;
ps["impulseCount"] = impulseCount;
}
});
Pour le WBE2-DI-DR-3, remplacez le canal d’entrée A1 par le canal souhaité dans sa table des canaux MQTT, par exemple wb-gpio/MOD1_IN1.
