Template:DigitalOutput Failsafe Technical

From Phidgets Support

Failsafe Feature

Starting from firmware version {{{2}}}, using Phidget22 library versions {{{3}}} and later, this device supports the use of a failsafe feature to put your device in a safe state should your program hang or crash.

With this feature, each Digital Output channel on this device has its own independently settable failsafe timer.

If the failsafe is not enabled, the device will behave as it did before the addition of this feature, maintaining the last state or duty cycle it received until it is explicitly told to stop.

Enabling the failsafe feature for a channel starts a recurring failsafe timer. Once the failsafe timer is enabled, it must be reset within the specified time or the channel will enter a failsafe state. Resetting the failsafe timer will reload the timer with the specified failsafe time, starting when the message to reset the timer is received by the Phidget.

For example: if the failsafe is enabled with a failsafe time of 1000ms, you will have 1000ms to reset the failsafe timer. Every time the failsafe timer is reset, you will have 1000ms from that time to reset the failsafe again.

Diagram of the failsafe behaviour when set to 1000ms

If the failsafe timer is not reset before it runs out, the channel will enter a failsafe state. For Digital Output channels, this sets the output to a FALSE state. On the {{{1}}} this {{{4}}}. Once the channel enters the failsafe state, it will reject any further input until the channel is reopened.

To prevent the channel from falsely entering the failsafe state, we recommend resetting the failsafe timer as frequently as is practical for your applicaiton. A good rule of thumb is to not let more than a third of the failsafe time pass before resetting the timer.

Once the failsafe has been enabled, it cannot be disabled by any means other than closing and reopening the channel.

When you use a failsafe in your program, we strongly recommend setting up an error event handler to catch the Failsafe Error Event, to allow your program to catch the failsafe event.

If you want your program to try to automatically recover from a failsafe state, you can close and re-open the channel from the error event handler after determining a failsafe condition caused the event.