En este post veremos cómo utilizar el Watchdog y cuál es el límite de su controlador industrial Arduino diseñado para la automatización industrial.
Requisitos
PLC Arduino Ethernet o 20 I/Os: Ethernet PLC 20 I/Os PLC
Librería Watchdo: Librería avr/wdt.h
¿Qué es el Watchdog?
El Watchdog es un temporizador electrónico que permite reiniciar el sistema en caso de mal funcionamiento del ordenador y recuperarse.
El Watchdog consiste en un temporizador decreciente: cuando el temporizador llega a cero, el sistema se reinicia. Entonces siempre hay que refrescar el "watchdog".g.
Software
Debes usar la biblioteca de Watchdog "#include <avr/wdt.h>" proporcionada por Arduino para programar tu propio Watchdog.
Funciones:
#define | wdt_reset() __asm__ __volatile__ (“wdr”) |
#define | WDTO_500MS 5 |
#define | WDTO_1S 6 |
#define | WDTO_2S 7 |
#define | WDTO_4S 8 |
#define | WDTO_8S 9 |
IMPORTANTE: El Watchdog del Ardbox no puede trabajar por debajo de los 500ms. No hay limitaciones para el PLC M-Duino.
A continuación encontrarás un ejemplo de cómo usarlo: el Watchdog lib
/* Copyright (c) 2017 Boot&Work Corp., S.L. All rights reserved This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <avr/wdt.h> ////////////////////////////////////////////////////////////////////////////////////////////// void setup() { Serial.begin(9600L); // Set the watchdog on 500 ms wdt_enable(WDTO_500MS); } ////////////////////////////////////////////////////////////////////////////////////////////// void loop() { // Refresh the watchdog wdt_reset(); // WORK HERE, but faster than 500ms Serial.println("Watchdog is working if you don't see the points"); delay(550); Serial.println("..."); }
Cómo usar el Watchdog con tu PLC industrial