Watchdog for Serial Communication

Hi All,

Anyone configured a watchdog for serial comm before? I have a requirement to check whether the serial communication between Allen Bradley - DeltaV is Good.

Thanks,

Gelo

  • Gelo,

    There is a couple of ways to do a watchdog, but a simple one is to use a Timer in the Allen Bradley which is read by DeltaV. The timer can be for any duration but normally I set it to an hour. Once the hour has elapsed, then it resets and starts again from 0.

    In DeltaV create a rate of change module which looks at the timer value via the comms and setup an alarm based on the rate of change - if the timer value doesn't change (comms has failed) then the alarm will be triggered and that's your comms fail alarm.

    I think there's also a comms status for the DeltaV serial cards but I'm not that familiar with it and what it provides.
  • Have the PLC send its clock seconds over as one of your registers. This will give you a zero to sixty saw-tooth pattern. Pass this value through a delay block. When the current value and the delayed value match, you know that you have stopped communicating. Avoid using a single bit as a heartbeat because "strobing" can give a false alarm of loss of communication.
  • In reply to Colin Welsh:

    Gelo,

    There is an even simpler practice that I've found works very well, provided you are able to write as well as read data. In DeltaV, you read a digital input from the PLC (call it something like PLC_COMM_PULSE), connect it to a NOT block and write the value as a DO to the PLC (something like PLC_COMM_PULSE_NEG). In the PLC, you need a single rung with a contact referencing the PLC_COMM_PULSE_NEG, driving a coil referencing PLC_COMM_PULSE. What this will do is cause the PLC_COMM_PULSE bit to cycle as fast as the serial communication cycle allows, but avoids timing issues between the serial communication link and the watchdog module. To detect a failure, you add a timer in DeltaV to both digital values (PLC_COMM_PULSE and PLC_PULSE_COMM_NEG), OR the timer outputs together and use the resulting bit to drive an alarm or other control actions as appropriate. You can set the time duration per your needs, as fast as a couple of module cycles, but you will probably want to lengthen it a bit to avoid nuisance alarms. You can also trend the timer elapsed times to see how fast the communication cycle is updating.
  • I've used a counter in the PLC that resets back to zero at some number (we used 9999).
    Check every "x" seconds, if the value hasn't changed, communication has failed. Set the status of the registers to bad, or clear them or set some other indication of failed communication.

    Is there bidirectional communication? Or just from PLC to DeltaV?