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.
  • In reply to Colin Welsh:

    The DeltaV status will monitor the health of the PLC Connection, and if the DeltaV Dataset is marked as BAD, then it is not communicating. But for some PLC's, the logic can be stopped (not in Run Mode), and the connection to the PLC may still be "healthy", therefore it is recommended to embed a Watchdog that relies on the logic actually running, such as a ramping register.

    Andre Dicaire

  • 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?
  • In reply to Colin Welsh:

    Hi Colin,

    Thanks for the response, i'll try your suggestion. i was actually thinking of using an input parameter (name it TEST)

    PLC will send a '1' signal to TESTparameter.
    DeltaV will also send a '0' signal to TEST parameter for let say every 3 seconds.

    when the value in TEST parameter is '0' for let say 10 seconds, meaning PLC stops communicating with DeltaV.

    Never configured Watchdog before.
  • In reply to DBacker:

    Hi DBacker,

    I'll see if i can play around wiith delay block to get this.

    Thanks for the suggestion
  • In reply to Bill Thackston:

    Hi Bill,

    This sounds great but requires additional DO to the PLC. as per the requirement, no additional IOs shall be configured.
  • In reply to Michael Moody:

    Hi Michael,

    just from PLC to DeltaV. reading from PLC is used for critical control in DeltaV.

    I'm still puzzled with "IF the value hasn't changed" checks.
  • In reply to GeloCortez:

    The value should changed at least every second from the PLC. You may choose to increment the counter every scan or every second (user's choice). We normally used a counter to increment from 0 to 9999 and then reset back to 0 in the PLC. If communication stops, the value freezes in the DeltaV (stops incrementing).
  • Hi All,

    I think i got it.

    Thanks for all the help.
    Gelo
  • In reply to Michael Moody:

    Hi,

    What I did is to connect the counting timer from PLC to DeltaV Deadtime function block. when the IN (form PLC) is equal to OUT for let say 10 seconds then it is confirmed for lost communication
  • In reply to GeloCortez:

    Thanks for sharing your solution, .

    Best Regards,

    Rachelle McWright: Business Development Manager, Dynamic Simulation: U.S. Gulf Coast

  • In reply to Michael Moody:

    why not just use the "Seconds" from the internal PLC clock? Why set up a counter?
  • In reply to DBacker:

    Really have no idea on how they will set it up on PLC side. Already sent an email for PLC vendor for the requirement which is for them to send a continous signal to DeltaV