In this post, we will see how to use the watchdog and what is the limit for your industrial controller Arduino designed for industrial automation.
Requirements
Ethernet or 20 I/Os PLC Arduino: Ethernet PLC 20 I/Os PLC
Watchdog library: avr/wdt.h library
What is the watchdog?
Watchdog is an electronic timer that allows to reset the system in case of computer malfunctions and recover from it.
Watchdog consists of a decrementing timer, when the timer reaches zero the system resets. Then you always have to refresh the watchdog.
Software
You should use the Watchdog library “#include <avr/wdt.h>” provided by Arduino in order to program our own Watchdog.
Functions:
#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 |
IMPORTANT: The Ardbox PLC watchdog cannot work under 500ms. There are no limitations for M-Duino PLC.
Below you will find an example about how to use it: the 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("...");
}
How to use the Watchdog with your industrial PLC