Wiren BoardDocumentazione
Documentazione · Italiano

Conteggio degli impulsi con wb-rules

revisione 106981

Conteggio degli impulsi su un ingresso digitale

Un contatore o un pulsante con uscita a contatto pulito viene collegato all’ingresso universale A1 del controllore. La regola conta quante volte A1 viene collegato a massa e visualizza il risultato in un dispositivo virtuale. Il dispositivo comprende anche un pulsante di azzeramento del contatore.

Il WB-MCM8 offre la stessa funzione di conteggio degli impulsi, con valori memorizzati nella propria memoria non volatile. Il produttore lo consiglia per le installazioni reali; l’esempio seguente ha scopo dimostrativo e didattico.

In un’installazione reale, considerare la frequenza delle scritture su PersistentStorage. Queste scritture raggiungono la memoria eMMC del controllore e salvare a ogni impulso con frequenze elevate può accelerarne l’usura.

Regola di esempio

La regola ripristina il conteggio salvato all’avvio, conta solo i fronti di salita (0 → 1) e salva sia gli incrementi sia gli azzeramenti.


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;
  }
});

Per WBE2-DI-DR-3, sostituire il canale di ingresso A1 con il canale necessario della relativa tabella dei canali MQTT, ad esempio wb-gpio/MOD1_IN1.