el 06-16-2010 04:12 PM
Saludos nuevamente a toda la comunidad.
Hace algun tiempo deje corriendo un SCADA, el cual monitorea algunas variables como temperatura y humedad, estas son muestreadas cada 5 minutos y los datos van directamente a una base de datos local basada en ACCESS, todo esto mediante las librerias gratuitas ADODB.
El proceso del sistema esta basado de la siguiente manera:
En este bloque de operacion hay varios procesos trabajando independientemente bajo estructura WHILE en donde hay submenus, otro bloque de captura de datos de sensores mediante MODBUS TCP, alarmas, envio de datos a la base y otros.
El problema que surgio es que este sistema quedo trabajando bien en todos los aspectos pero despues de casi ya un mes dejo de tomar muestras de los sensores aunque todo el demas sistema esta trabajando bien. Honestamente no se que esta pasando ya estoy ago desesperado porque ya van varias cosas que me pasan con el programa, no se si sea algo en la base de datos o en la captura mediante MODBUS aunque esto ultimo no creo porque los datos si estan llegando. Estoy utilizando como primera conexion de TCP el vi TCP OPEN CONNECTION y he visto que algunos programadores ponen un buffer o algo, yo solo pongo la direccion IP, el puerto y mando directamente a mis bloques MODBUS no se si por ahi tenga que meter algo asi y cuales serian.
Si alguien me pudiera ayudar se los agradeceria mucho. Les voy a adjuntar una imagen del bloque de captura de datos a la base y del subvi. GRACIAS!!!
06-17-2010 10:37 AM - editado 06-17-2010 10:41 AM
Hola Mr Bungle, El hecho de que un loop pueda dejar de funcionar puede ser porque se este dando algún Error el en VI pero por lo que veo en los Screenshots, hay poco manejo de error, en lagunas secciones pasas los cables pero no hay un punto que se maneje y en otros lugares no hay cables de error por lo que identificar el problema se complica mucho. Un buen manejo de error te ayuda a que aplicación trabaje en una forma más estable, ayuda a hacer el debug del código y en general crea código mas robusto. Al estar trabajando con MODBUS y Bases de datos es particularmente importante el manejo de error ya que podría ser desde algo sencillo como que intento acceder la base de datos en algún punto, o que el dispositivo MODBUS perdió comunicación por un instante, pero al suceder el error tu aplicación ya no se puede recuperar.
Lo ideal es que cuando se realice un error puedas identificarlo y en caso de ser necesario detener tu aplicación. Lo mas común para hacer esto es utilizar las terminales de Error de los Vis, y puedes cablear estas a lo que es el stop de los ciclos. Y ya al final agregar el Simple Error handler.
Si estas con el VI o tu ejecutable tiene la opción de debug podrías usar un probe y revisar el status de los cables
Aquí hay algunas ligas que te podrían ser de utilidad:
¿Cómo Puedo Crear Advertencias Personalizadas en LabVIEW?
Cualquier duda avisame.
Saludos