Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Implementar un watchdog en el programa

¡Resuelto!
Ir a solución

Hola,

 

Estoy intentando incluir en mi codigo un Watchdog, para evitar posibles problemas en caso de que se quede colgado y que me lo indicara en su caso.

He estado buscando ejemplos, y he intentado implementar el siguiente adjunto.

 

Pero no me queda muy claro su funcionamiento. Cuando el sistema se queda colgado, deja de trabajar el whileloop y pasaría a la secuencia dos, de "system reset"?? tengo que tener siempre este a true? y que hace realmente la función de "system reset"?

 

Agradecía cualquier aclaración o alguna otra idea más sencilla para implementar el Watchdog.

 

Un saludo y muchisimas gracias!!

0 kudos
Mensaje 1 de 6
5.118 Vistas

No tengo ahora mismo el módulo y el hardware para programar en una fpga, pero te explico lo que hace el programa:

  1. cargas un valor en Initial Count Value, por ejemplo el número 3
  2. el 3 pasa al shift register
  3. en la siguiente iteración se resta 1 al shift register, con lo que pasa a valer 2 (suponiendo que reset=false)
  4. como 2 es mayor que 0 se sigue ejecutando el bucle.
  5. se repite desde 3. hasta que el shift register valga 0 y sale del bucle. Si sale del bucle, pasa a la 2ª secuancia, al system.reset.
  6. si en algún momento el botón Reset vale True, el shift register recargaría el valor de Initial Count Value. Suponiendo que el valor es el mismo que en el paso 1 volvería el programa a 1. y no saldría del bucle.

En resumen, hacer una cuenta hacia atrás en el valor del shift register, que es como el timer de un watchdog de un microcontrolador. Si desborda, sales del bucle y pasas a la segunda secuencia, ejecutando un reset del sistema. Si vuelves a poner a true el control de Reset, no desborda.

 

Lo que tienes que hacer en tu programa es un clear del watchdog de forma periódica. Para hacer el clear pon el valor true en su control Reset y después vuelve a poner false para que siga contando de forma normal. Así, si tu programa se queda colgado, no reseteará el watchdog, éste desbordará y hará un reset.

 

Ejecutando ese programa (excepto el system.reset, que puedes sustituir por una ventana de aviso) con el target del PC podrás simular el funcionamiento.

Mensaje 2 de 6
5.106 Vistas

Hola jrafa,

 

Muchisimas gracias por tu respuesta.

Estuve probando el programa en un subvi, fuera de la FPGA y no me llegaba a decrementar a negativos, sino que se iniciaba a 65535, y entonces daba igual que lo iniciara con el reset o no, por eso tenía dudas del funcionamiento.

 

Entonces como me comentas, tengo que incluir en mi programa en RT, una activación-desactivación del Reset para que no se llegue a salir del bucle. A parte, he incluido un indicativo al cumplirse la condición para saber cuando se produce el watchdog (y entonces activar o no el System Reset).

 

Pero mi duda es en cuanto a tiempo, me gustaría incluir un watchdog de 1 segundo. Cómo puedo controlar el Reset para saber aproximadamente cada cuanto tiempo está ejecutandose??

 

Un saludo y muchísimas gracias por tu ayuda.

Descargar todos
0 kudos
Mensaje 3 de 6
5.091 Vistas
Solución
Aceptado por juanfer23

El tiempo que tardará en desbordarse el watchdog, si no hay un clear, depende del número que le cargas y de la base de tiempos del bucle. El bucle se repetirá tantas veces como el valor de Initial Count, la base de tiempos la puedes ver haciendo doble click sobre el nodo izquierdo del timed loop y viendo su period. El tiempo es el producto del periodo (el tiempo en hacer cada iteración) e Initial Count (el número de iteraciones).

Mensaje 4 de 6
5.084 Vistas

Todo claro. Muchísimas gracias!!!!!!

0 kudos
Mensaje 5 de 6
5.076 Vistas

Perdonar,

 

He estado implementando el watchdog utilizando la libreria de Real Time, pero no me queda claro su funcionamiento en este caso.

Supongo que es al dejarse de activar el "whack.vi" pero no veo de que manera lo estoy alimentando de manera continua en mi loop.

 

Agradecería por favor si me podeis aclarar esta duda,

 

un saludo y muchas gracias!!!

0 kudos
Mensaje 6 de 6
4.833 Vistas