Discusiones sobre Productos NI

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

Problemas activación salidas modulos SCXI con funciones easy I/O y NI-DAQ.

Buenas tardes:

Si alguien puede ayudarme en el siguiente problema lo agradecería enormemente:

Se trata de una aplicación inicialmente construida con CVI 5.0 para Win95. Esta se ha reconvertido con CVI 7.1 para WinXP. La aplicación usaba la función WriteToDigitalLine() con el archivo de configuración del DAQ "niconfig.daq". En la reconversión se deja de usar este sistema para pasar a emplear la función  SCXI_Set_State() tomando los parametros de los canales y modulos de un fichero include con los #define adecuados.

Además al comienzo de la aplicación hacemos un reconocimiento de los modulos con la función SCXI_ModuleID_Read().

Una vez realizada la reconversión, todo comenzo a funcionar correctamente salvo que al cabo de un tiempo los relés de los modulos no actuaban según las indicaciones de la función SCXI_Set_State(). P.e. no cerraban cuando debían hacerlo fallando así la aplicación en las medidas a efectuar.

Después de unas pruebas volvimos a utilizar la función WriteToDigitalLine() y el resultado fue satisfactorio. Así quedo hasta hace poco que comenzo a dar fallos esporádicos y similares al anterior. Después de esto hemos insertado un control para comprobar que la orden de actuación sobre un canal determinado ha sido realizada con exito. Para ello se utiliza la función SCXI_Get_State() y se compara el valor devuelto con el valor enviado a la función WriteToDigitalLine().

Así ha estado funcionando unos días pero ahora de nuevo empieza a no obedecer a las ordenes de activación/desactivación de los relés. Ejecutando paso a paso podemos ver que cuando se realiza la llamada a la función WriteToDigitalLine() con valor 0 en la variable "Line State" no se desconecta el relé indicado del modulo SCXI-1160 y además al llamar a la función SCXI_Get_State() el valor que devuelve esta en la variable "Data" es también 0. ¿No debería devolver 1?. De unas 6 o 7 veces que lo he intentado, 2 han ido bien y el resto no. ¿Algún problema de drivers o incompatibilidades de algún tipo?.

El problema es bastante importante ya que tengo un bus de medida donde entran señales distintas (Vac o Vdc) a través de relés comandados por los modulos SCXI-1160 y al no obedecer correctamente a las desactivaciones y más tarde en la ejecución de la aplicación obedecer a la activación de otro relé de medida, se producen cortocircuitos que dañan gravemente el hardware de verificación empleado (de momento nuestro HW de interface).

El sistema sobre el que estoy trabajando es el descrito en el tema "SCXI-1001, PCI6503, Labwindows/CVI 7.1, NI-DAQ 7.4 no detecta modulos automáticamente".

Si se necesita algo más de información por favor diganmelo.

Saludos y gracias.

 

0 kudos
Mensaje 1 de 9
6.024 Vistas

Más información al respecto.

He probado a mover el relé del SCXI-1160 directamente desde el panel de la función WriteToDigitalLine() y he notado que a veces falla en la desactivación. He observado que lo que hace en estos casos es que cuando el valor de la variable "Line State" es 0, desactiva el relé e inmediatamente lo vuelve a activar. De esta forma si intentamos de nuevo desactivarlo, no responde y debemos dar una orden de activación para después dar una orden de desactivación.

Así mismo, he observado que si hacemos la operación de activar-desactivar con un ciclo de trabajo lo más rapido posible (lo que supone cambiar el valor de Line State y activar el icono de Run Function Panel) suele fallar bastante. De lo contrario si efectuamos este ciclo con una velocidad normal (no asfixiante para el programador) no he llegado a detectar fallo.

Estoy empezando a pensar en un problema de SW y que quizás deba realizar una desinstalación completa de todo (CVI, niDAQ, tarjeta PCI-6503, tarjeta PCI-GPIB) para volver a empezar la instalación desde cero de nuevo. Si esta es la solución, no entiendo el porque. ¿Podría volver a ocurrir?. Lo unico que se ha instalado después del paquete de NI ha sido el antivirus PANDA y un programa para conexión remota (DameWare). Además esta máquina esta conectada en red a un servidor de la empresa que entre otras cosas se encarga de actualizar periodicamente antivirus, WinXP y MS Office.

Si debo instalar todo de nuevo, ¿cual sería el orden correcto para ello, si es que existe?.

 

0 kudos
Mensaje 2 de 9
6.019 Vistas

El tema es URGENTE ya que pasado mañana debe salir el equipo para el cliente.

Si pudiese tener una contestación para mañana por la mañana sería estupendo. Así tendría al menos un día para pruebas.

Siento la presión y espero me disculpen por la insistenciaGuiño.

Gracias.

0 kudos
Mensaje 3 de 9
6.013 Vistas

Saludos Killo,

 

La siguiente documentación para la funciones SCXI_Set_State y SCXI_Get_State puede que sea explicación necesaria para el comportamiento que estas experimentando:

SCXI_Set_State: Ya que los reles en el módulo SCXI-1160 tienen una vida determinada (no infinita), el driver mantiene una copia en el sofware del estado de los reles cuando usted los cambia. Si usted llama esta funcion para especificar el estado de los reles en la misma posición en que estaba, Traditional NI-DAQ (Legacy) no excita los reles nuevamente. Cuando el SCXI-1160 enciende, los reles se encuentran en la misma posición que estaban al momento de apagarlos y como el driver no sabe cual fue era el estado, automáticamente excita todos los reles cuando llamas esta funcion.

SCXI_Get_State: El SCXI-1160 es un módulo (de pestillo?) latching, lo que significa que al encender, el módulo se encuentra con los reles en la misma posición que estaban al apagarse. Por lo tanto, al comienzo de una aplicación de Traditional NI-DAQ, no hay manera de saber cual era el estado de los reles. El driver retiene el estado de los reles tan pronto se escriba en la tarjeta alguna posicion. Esto sólo ocurre con los módulos SCXI-1160 y SCXI-1161. Los SCXI-1162, SCXI-1163, SCXI-1162HV y SCXI-1163R siempre leen el estado de los reles directamente desde el hardware.

 

Es posible que una solución sea llamar a la función SCXI-Reset antes de escribir en el módulo. De esta manera estaremos seguro de que la escritura va directamente al módulo y luego intenta leer el estado de los reles usando la funcion SCXI_Get_State.

 

Si esto no funciona sería de utilidad que incluyas los archivos de CVI para ver si hay algo mas que pueda estar causando este comportamiento. ¿A que te refieres con velocidad normal y rápida? Puedes incluir parte de tu codigo con el que experimentas este comportamiento?

 

Gracias,

 

Tica

Applications Engineer

0 kudos
Mensaje 4 de 9
6.011 Vistas

Si, si, esto ya lo sabia de cuando emplee estas funciones (SCXI_SetState y SCXI_GetState).

Pero lo extraño es lo que comento en mi segundo post sobre el tema: Incluso usando la función WriteToDigitalLine() directamente desde el panel de función y no desde la aplicación ejecutable, cuando el relé debe desactivarse lo que hace es desactivarse e inmediatamente se vuelve a activar por si solo sin recibir orden para ello. Y a partir de este momento se ve que esta memorizado el estado de OFF en memoria y no responde a una nueva orden de desactivación. Se debe dar orden de ON para despues dar orden de OFF y así obedece.

Con lo de velocidad normal y rapida me refiero a la velocidad en realizar las ordenes desde el panel de función: Seleccionar el campo de la variable Line State, borrar el valor anterior, escribir el nuevo valor y seleccionar con el ratón el icono de ejecución de la función. Se trata de realizar estos pasos con el teclado y ratón tranquilamente o realizarlos lo más rápido que pueda.

La función SCXI_Reset() la use en la primera reconversion de CVI5.0 a CVI7.1. Pero no resuelve el problema ya que este radica en que cuando debe establecerse un estado OFF el relé realiza una secuencia OFF-ON quedando en memoria como que el relé esta OFF pero realmente está ON.

Es como si hubiese un problema con el HW del SCXI-1160. Creo que el tipo de relé usado en este modulo es un biestable de doble bobina, una bobina para el estado ON y otra para el estado OFF del relé. Pués bien, por ejemplo, si al dar la orden de OFF la bobina de ON siguiese en tensión, el relé pasaría al estado OFF pero al retirar tensión de esta bobina volvería al estado ON por fallo en el HW ya que la bobina correspondiente sigue con tensión. Esto es un suponer que igual no es así pero es que ya estoy tan perdido que no se por donde tirar además esto se podría verificar en la placa interna pero debido a la dificultad de acceso al interior no he optado por esta prueba de momento. Aunque cambie los modulos sigue apareciendo el problema.

Lo último que he probado hoy es lo comentado en mi último post de ayer: Desinstalar todo el SW y HW de NI y volver a instalarlo de nuevo. Pero sigue igual.

Ahora la configuración que tengo es MAX v3.1.1, CVI v7.1, niDAQ v7.3, NI488.2 v2.20, PCI-6503, PCI-GPIB y un chasis SCXI-1001 con la siguiente distribución de modulos:

            Modulo 1.  NI SCXI-1160.   ID: 12 (1160-1)
            Modulo 2.  NI SCXI-1160.   ID: 12 (1160-2)
            Modulo 3.  NI SCXI-1160.   ID: 12 (1160-3). Conectado a tarjeta DAQ en PC.
            Modulo 4.  NI SCXI-1160.   ID: 12 (1160-4)
            Modulo 5.  NI SCXI-1160.   ID: 12 (1160-5)
            Modulo 6.  NI SCXI-1160.   ID: 12 (1160-6)
            Modulo 7.  NI SCXI-1160.   ID: 12 (1160-7)
            Modulo 8.  NI SCXI-1163R.  ID: 28 (1163-1)
            Modulo 9.  NI SCXI-1163R.  ID: 28 (1163-2)
            Modulo 10. NI SCXI-1163R.  ID: 28 (1163-3)
            Modulo 11. NI SCXI-1162HV. ID: 24 (1162-1)
            Modulo 12. NI SCXI-1162HV. ID: 24 (1162-2)

Te adjunto el codigo por si hubiese algo extraño o mal realizado en el.

Saludos.


 

0 kudos
Mensaje 5 de 9
5.996 Vistas

Hola Tica:

Centrandome en que el problema es reproducible desde el Panel de Función he pensado que podría ser un problema de configuración o conexión entre la PCI-6503 y el SCXI-1001. Además dudo que un producto de NI como este que estará más que probado tenga problemas como el que te describí en mi post anterior de los relés. Y es que cuando uno tiene fallos tan raros y no sabe de donde pueden proceder, empiezas a atar cabos por todas partes y a pensar que todo puede estar mal. No se.

Hoy he realizado unos cambios en la configuración de los módulos en función de una documentación que me ha dejado un compañero distinta a la que recibí con estos y tras algunas pruebas aún no se ha reproducido el problema pero como este era aleatorio, no me fio de que ya este solucionado. Te resumo como tenia configurado los modulos anteriormente (jumpers) y como los he dejado ahora.

ANTES LOS TENIA DE LA SIGUIENTE FORMA:

  • Modulos del 1 al 7: SCXI-1160.
    • Estado de los jumpers: W1= 1-2, W2 = DIO, W3 = DIO, W4 = DIO, W5 = 1-2
    • Módulo 3 conectado a la PCI-6503.
  • Modulos del 8 al 10: SCXI-1163R.
    • Estado de los jumpers: W2= DIO, W3= DIO, W4= A(chasis único), W5= DIO, W6= S(modo serie)
  • Modulos del 11 al 12: SCXI-1162HV.
    • Estado de los jumpers: W2= DIO, W3= P(CON resistencia pull-up a SERDATOUT), W4= DIO, W5= 24, W6= S, W7= DIO

AHORA LOS TENGO ASÍ:

  • Modulos del 1 al 7: SCXI-1160.
    • Estado de los jumpers: W1= 2-3, W2 = DIO, W3 = DIO, W4 = DIO, W5 = 2-3
  • Modulos del 8 al 10: SCXI-1163R.
    • Estado de los jumpers: W2= DIO, W3= DIO, W4= A(chasis único), W5= DIO, W6= S(modo serie)
  • Modulos del 11 al 12: SCXI-1162HV.
    • Estado de los jumpers para el modulo 11: W2= DIO, W3= P(CON resistencia pull-up a SERDATOUT), W4= DIO, W5= 24, W6= S, W7= DIO
    • Estado de los jumpers para el modulo 12: W2= DIO, W3= NP(SIN resistencia pull-up en SERDATOUT), W4= DIO, W5= 24, W6= S, W7= DIO
    • Módulo 11 conectado a la PCI-6503.

También he realizado unas modificaciones en el código que me han parecido más lógicas de usar para las funciones Rele() y Entrada(). Realizo una segunda escritura del relé de los módulos SCXI-1160 por asegurar esta. Te envio el código.

Una cosa que no habia comentado hasta el momento es que el sistema esta montado para un entorno industrial todo dentro de un armario tipo Rack 19" de unos 2 metros de altura y en el interior de este se manejan tensiones trifasicas de hasta 415Vac, monofásicas de hasta 220Vac y continuas de hasta 150Vdc. Por ejemplo el relé con el que he venido haciendo las pruebas comentadas hasta ahora con las que obtenia el fallo gobierna la bobina de un relé de potencia de 220Vac que es el que conecta todo el sistema. Esta bobina tiene su antiparasitario. Ya te mandaré fotos para que tengas una idea.

Es por esto último que tengo dudas de si es adecuado el cable NB1(180524-20) que estoy usando para la conexión entre PCI-6503 (777690-01) y SCXI-1001. Lo he montado todo lo separado posible de tensiones peligrosas.

Espero noticias tuyas y gracias de antemano por tu colaboración.

 

0 kudos
Mensaje 6 de 9
5.969 Vistas

¿Alguna sugerencia?...........Emoticono tristeEmoticono triste

 

Saludos.

0 kudos
Mensaje 7 de 9
5.939 Vistas

Hola Tica:

¿Me puedes decir algo al respecto?. Gracias.

Saludos.

0 kudos
Mensaje 8 de 9
5.881 Vistas

yo tengo un problema con un scxi-1001 con modulos de salida de scxi-1163R en slot 8 el cual me acivaba 3 bombas y debido a que hubo un corto circuito en las senales de salida al cruzarse con linea de 220 vca. ya no responde al pedirle desde la pc que se activen las bombas. ya cambie la tarjeta 1163R de modulo de salida y corregi el corto circuito, ya resetie el scxi y no logro que arranquen las bombas. ya meti 12 vca a los releys externos y de inmediato arrancan todas las bombas. por lo tanto la falla esta en que no se activan desde la pc las salidas de scxi.    alguien sabe que puedo hacer para que arranquen. una persona me dice que posible se haya danado modulo de entradas de scxi

      gracias 

 

0 kudos
Mensaje 9 de 9
2.952 Vistas