Browse our Blog. You will find multiple applications, solutions, code examples. Navigate using the tag cloud or search using specific criteria
How to use the Watchdog with your industrial PLC
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 on a decrementing timer, when the timer reaches to 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 not 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("..."); }