Recuento de impulsos con wb-rules
Conteo de impulsos en una entrada digital
Un contador o pulsador con salida de contacto seco se conecta a la entrada universal A1 del controlador. La regla cuenta cuántas veces se conecta A1 a masa y muestra el resultado en un dispositivo virtual. El dispositivo también incluye un botón para restablecer el contador.
El WB-MCM8 proporciona la misma función de recuento de impulsos con los valores de los contadores almacenados en su propia memoria no volátil. El fabricante lo recomienda para instalaciones reales; el ejemplo siguiente es para demostración y aprendizaje.
En una instalación real, tenga en cuenta la frecuencia de escritura en PersistentStorage. Estas escrituras llegan al almacenamiento eMMC del controlador y guardar cada impulso a frecuencias elevadas puede acelerar el desgaste del almacenamiento.
Regla de ejemplo
La regla restaura el conteo guardado al arrancar, cuenta solo los flancos de subida (0 → 1) y guarda tanto los incrementos como los restablecimientos.
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;
}
});
Para WBE2-DI-DR-3, sustituya el canal de entrada A1 por el canal requerido de su Tabla de canales MQTT, por ejemplo wb-gpio/MOD1_IN1.
