# Fluke NetDAQ

> Equipos de adquisición de datos Fluke NetDAQ (2640A, 2645A) y 2680 Series (2680A, 2686A), configurados a partir de los tags y leídos con la biblioteca propia de Fluke en un proceso auxiliar de 32 bits: el dispositivo y su tarjeta Instrumento, el punto y la función de un tag, la lectura, la escritura y lo que el controlador deja a Logic.

El controlador **Fluke NetDAQ** lee y escribe los equipos de adquisición de datos en red de Fluke: los NetDAQ
2640A y 2645A, y la 2680 Series, 2680A y 2686A. Cada dispositivo es un instrumento en la red, y cada tag
es uno de sus puntos: un canal analógico y lo que mide allí (un termopar, una tensión continua, una
resistencia, una termorresistencia), una de sus líneas digitales, un relé de un módulo DIO de la 2680
Series o su totalizador. La estación configura el instrumento a partir de los tags: cada vez que se
conecta, envía la configuración completa y reemplaza la que el instrumento tenía, de modo que el
instrumento mide exactamente lo que dicen los tags de la estación.

El controlador habla con los instrumentos mediante la biblioteca propia de Fluke, `NTOOL32.dll`, la misma
sobre la que está construido el controlador de LabVIEW de estos instrumentos, que la estación incluye junto al
controlador. Añada el controlador y sus dispositivos en la página [Connector](connector).

## Antes de empezar {#before-you-start}

| Qué | Por qué |
| --- | --- |
| El runtime de Microsoft Visual C++ 2005 de 32 bits en el ordenador | La biblioteca de Fluke lo necesita, y Ganter Lab no puede incluirlo. La estación comprueba por sí misma si está y, mientras falta, la página del controlador, la página de cada dispositivo y el último error de cada dispositivo lo dicen, con los pasos de [Instalar el runtime de Visual C++ 2005](#installing-the-visual-c-2005-runtime). |
| El instrumento en la red, en su modo de red general (General), con su dirección IP y su número de canal base (BCN) fijados en su panel frontal | La estación llega al instrumento en su dirección IP por el puerto TCP 4369, y la biblioteca de Fluke nombra el instrumento por su número de canal base. |
| Un ordenador a la vez | Un instrumento habla con un ordenador: mientras otro programa (Fluke DAQ, NetDAQ Logger, un programa de LabVIEW) lo tiene, la estación no puede abrirlo. |
| Un NetDAQ con software embebido 2.0 o posterior | La biblioteca de Fluke no configura un NetDAQ más antiguo; la conexión del dispositivo falla diciendo que el instrumento necesita una actualización. |

El controlador funciona solo en Windows.

## Instalar el runtime de Visual C++ 2005 {#installing-the-visual-c-2005-runtime}

La estación comprueba por sí misma si Windows puede cargar la biblioteca de Fluke, sin esperar a un
dispositivo: la primera vez que la página del controlador, la página de uno de sus dispositivos o el
agente lo pregunta, y de nuevo cada 30 segundos mientras falta el runtime. Hasta que el Connector ha
arrancado no se sabe si el runtime está, y no se dice nada de ello. Mientras falta:

| Dónde | Qué dice |
| --- | --- |
| La página del controlador | Un aviso de precaución, "El runtime de Microsoft Visual C++ 2005 no está instalado en este ordenador", con los pasos de abajo. Su enlace abre la página de Microsoft en el navegador del ordenador. |
| La página de cada dispositivo | El mismo aviso. |
| El último error de cada dispositivo | Los mismos pasos, en inglés, como se escriben las causas propias del controlador. |
| El agente | `driver_capabilities` los da en `prerequisite`, con `installed` en falso. |

Para instalarlo:

1. Abra la página de Microsoft [Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26347), la que la propia lista de Microsoft de las descargas de Visual C++ admitidas da para Visual C++ 2005.
2. Elija el archivo `vcredist_x86.exe` (2,6 MB), también en un Windows de 64 bits: `vcredist_x64.exe` no sirve, porque la biblioteca de Fluke es de 32 bits.
3. Ejecútelo como administrador. Windows puede pedir que reinicie el ordenador.

Si la lista de programas instalados ya muestra "Microsoft Visual C++ 2005 Redistributable", instálelo de
todos modos: el que está puede tener solo el runtime de C, sin la parte MFC que necesita la biblioteca de Fluke.

Como mucho 30 segundos después de la instalación, el aviso desaparece y los dispositivos de este
controlador se conectan con la configuración que tienen, sin reiniciar Ganter Lab.

## Dispositivo {#device}

Un dispositivo de este controlador tiene el campo **Host o IP** de la tarjeta Conexión y, debajo, la tarjeta
**Instrumento**.

| Campo | Significado | Predeterminado |
| --- | --- | --- |
| **Host o IP** | La dirección IP del instrumento en la red, o un nombre que se resuelve en una dirección IPv4. No hay puerto: todo instrumento responde en el puerto TCP 4369. | vacío |
| **Canal base** | El número de canal base (BCN) fijado en el panel frontal del instrumento, de 1 a 99. La biblioteca de Fluke nombra el instrumento por él, así que dos dispositivos de la estación nunca comparten uno. | vacío |
| **Velocidad de escaneo** | Lenta, Media o Rápida. Un escaneo más lento integra durante más tiempo y lee con más resolución y menos ruido; uno más rápido escanea más canales por segundo. | Lenta |
| **Intervalo de sondeo (ms)** | Cada cuánto lee la estación los tags del dispositivo, salvo que un tag fije su propio intervalo. El instrumento escanea al intervalo de sondeo más corto entre los tags del dispositivo, de modo que cada sondeo encuentra un escaneo reciente. | 1000 |

Un dispositivo nuevo no tiene host ni canal base, y la estación no intenta alcanzarlo hasta tener ambos:
su fila dice "Host aún sin indicar" hasta que se escribe el host, luego "Canal base aún sin indicar" hasta
que se escribe el canal base, y su página dice qué completar. La URI base que muestra la cabecera es
`netdaq://192.168.0.21/1?speed=slow`: el host, el canal base y la velocidad de escaneo.

Se rechaza guardar un dispositivo cuyo canal base ya tiene otro dispositivo NetDAQ de la estación, en
cualquier host: "El número de canal base 5 ya pertenece al dispositivo Fluke NetDAQ 'Logger'. Elija otro número de canal base."
Un dispositivo que aún espera su canal base no tiene ninguno, y un dispositivo conserva su propio número
al guardarse de nuevo.

La tarjeta **Instrumento** muestra además lo que el instrumento dijo ser la última vez que la estación se
conectó a él: su **Modelo del equipo** (2640A, 2645A, 2680A o 2686A) y su **Versión de firmware**, la de su
software embebido, que el diario también registra. Ambos dicen "Aún sin leer" hasta que el instrumento se
conecta, y nunca se guardan, así que el mismo dispositivo puede apuntar hoy a un 2640A y mañana a un
2645A.

## Direccionamiento de tags {#tag-addressing}

### El punto {#the-point}

La tarjeta Fuente de un tag contiene el selector Punto, lo que el tag lee en el instrumento, y los campos que ese
punto necesita. Son la dirección completa del tag.

| Punto | Campos | Tipo de dato | Acceso | Valor |
| --- | --- | --- | --- | --- |
| **Canal analógico** | Canal y **Función**, con los campos propios de la función | Double o Float | Solo lectura | La medida, en la unidad de la función |
| **Línea digital** | Línea, de 0 a 7 en un NetDAQ, de 0 a 19 en el módulo DIO de una 2680 Series | Boolean | Solo lectura (el predeterminado) o Lectura y escritura | Verdadero mientras la línea está en alto |
| **Relé** | Relé, de 0 a 7, en el módulo DIO de una 2680 Series | Boolean | Lectura y escritura (el predeterminado) o Solo lectura | Verdadero mientras el relé está cerrado |
| **Totalizador** | ninguno | Int64 o Double | Solo lectura (el predeterminado) o Lectura y escritura | La cuenta de la entrada del totalizador |

Un NetDAQ numera sus canales analógicos de 1 a 20. Una 2680 Series los numera por módulo y canal: el
módulo (1 a 6) y luego el canal en él (01 a 20), así que el canal 3 del módulo 2 es el 203. Elegir otro
punto trae un tipo de dato y un acceso que permite, donde el tag tenía uno que no permite.

### La función de un canal analógico {#the-function-of-an-analog-channel}

| Función | Unidad | Campos |
| --- | --- | --- |
| **Tensión continua** | voltios | **Rango**: automático, `90 mV`, `300 mV`, `3 V`, `30 V`, `50 V`, `150/300 V` |
| **Tensión alterna** | voltios | **Rango**: automático, `300 mV`, `3 V`, `30 V`, `150/300 V` |
| **Resistencia** | ohmios | **Rango**: automático, `300 Ω`, `3 kΩ`, `30 kΩ`, `300 kΩ`, `3 MΩ`; **Cableado** |
| **Frecuencia** | hercios | ninguno |
| **Termorresistencia (RTD)** | grados Celsius | **Resistencia R0 (Ω)**, de 10 a 1010 (100 para una Pt100); **Cableado**, a cuatro hilos por defecto. Una termorresistencia de platino con alfa 0,00385 |
| **Termopar** | grados Celsius | **Tipo de termopar**: J, K (el predeterminado), E, T, R, S, B, C o N, y L o U en la 2680 Series; **Comprobar termopar abierto**, activado por defecto |
| Corriente | miliamperios o porcentaje | **Rango**: `100 mA`, leído en miliamperios, o **4 a 20 mA, en porcentaje**, leído como 0 a 4 mA y 100 a 20 mA; **Valor de la resistencia shunt (Ω)**, la resistencia que atraviesa la corriente, de 10 a 250 (250 por defecto) |
| **Termistor** | grados Celsius | **Coeficientes de Steinhart-Hart**: la A, la B y la C de la hoja de datos del termistor, cada una mayor que 0 y como máximo 0,1; **Cableado**. Solo la 2680 Series |

**Cableado** es **Dos hilos** o **Cuatro hilos**. Un canal a cuatro hilos toma el canal diez por encima
de él para su par de medida (el canal 3 toma el 13), así que solo los canales 1 a 10 de un instrumento o
de un módulo son canales a cuatro hilos, y un tag en el canal de medida no lee nada propio. Elegir otra
función trae el rango y el cableado de esa función.

Algunos rangos y cableados pertenecen a una familia de etapas de entrada:

| Etapa de entrada | Instrumentos | Lo que solo ella tiene |
| --- | --- | --- |
| Rápida | el 2645A y el módulo FAI de la 2680 Series | el rango `50 V`; una termorresistencia, y los rangos `300 Ω` y `3 kΩ`, solo a cuatro hilos |
| De precisión | el 2640A y el módulo PAI de la 2680 Series | el rango `150/300 V` (300 V en los canales 1 y 11, 150 V en los demás) |

El panel ofrece todos los rangos, ya que qué instrumento responde solo se sabe cuando la estación se
conecta. Un tag que el instrumento conectado no puede leer queda fuera de su configuración y muestra el
motivo como su error; el resto del instrumento se configura y se lee.

La línea de solo lectura **Dirección de origen (bus)** muestra la dirección que recibe el controlador, como
`ch=3&fn=tc&tc=T&otc=on`, `ch=5&fn=vdc&range=3v`, `ch=1&fn=rtd&r0=100&wires=4`,
`ch=9&fn=current&range=4-20ma&shunt=250`, `dio=0`, `relay=2` o `totalizer`.

## Cómo configura la estación el instrumento {#how-the-station-configures-the-instrument}

| Paso | Qué hace la estación |
| --- | --- |
| Conectar | Abre el instrumento por su número de canal base y lee su modelo. |
| Configurar | Detiene el escaneo del instrumento, envía la configuración construida a partir de los tags (cada tag analógico configura su canal, todo otro canal queda apagado) y vuelve a iniciar el escaneo al intervalo de sondeo más corto entre los tags, con la velocidad de escaneo del dispositivo. |
| Un canal que el instrumento rechaza | El canal queda fuera, su tag muestra el motivo del instrumento y el resto se envía de nuevo. |
| Desconectar | Detiene el escaneo del instrumento y cierra la conexión. |
| Perder la conexión | El instrumento deja de escanear por sí solo al cabo de un tiempo, lo que evita desgastar los relés de un módulo PAI; la estación lo configura de nuevo cuando se reconecta. |

Lo que se haya configurado en el panel frontal del instrumento, o con otro programa, se reemplaza. Dos
tags que configuran el mismo canal de forma distinta no pueden leerse ambos: el segundo muestra la
dirección del primero como su error.

## Lectura {#reading}

El instrumento escanea con su propio reloj. Una lectura toma el último escaneo del instrumento, y un
escaneo sirve a todos los tags analógicos del dispositivo durante la mitad del intervalo de sondeo más
corto entre ellos; una 2680 Series se lee módulo a módulo. Las líneas digitales, los relés y el
totalizador se leen directamente del instrumento, de la misma manera. Lo que el instrumento responde
decide lo que muestra el tag (véase [La cadena de valor](connector-value-pipeline)):

| El instrumento | El tag |
| --- | --- |
| Una lectura | El valor, en la unidad de la función, antes de que las etapas propias del tag lo conviertan |
| Una sobrecarga | Infinito positivo o negativo |
| Un termopar abierto, con la comprobación activada | NaN, sobre el que decide la política del tag para un valor que no es un número |
| Aún sin escaneo, justo después de configurarse | Nada, hasta el primer escaneo |
| Sin respuesta a tiempo | Silencio: la política del tag para un dispositivo que no respondió decide lo que muestra |
| Una conexión perdida, u otro ordenador que lo tiene | El dispositivo se reconecta y configura el instrumento de nuevo |

## Escritura {#writes}

| Punto | Qué hace una escritura |
| --- | --- |
| **Línea digital**, **Relé** | Pone la línea en alto o cierra el relé con verdadero (o 1), y lo contrario con falso (o 0). Cualquier otro valor se rechaza. |
| **Totalizador** | Vuelve la cuenta a cero. 0 es el único valor que admite; cualquier otro se rechaza. |
| **Canal analógico** | Nada: un canal analógico solo se lee. |

Una escritura que el instrumento rechaza vuelve rechazada, con el código de error de Fluke y las propias
palabras de la biblioteca en el diario.

## La biblioteca de Fluke y el proceso auxiliar de 32 bits {#flukes-library-and-the-32-bit-helper}

La biblioteca de Fluke es una biblioteca de 32 bits, que la estación de 64 bits no puede cargar, así que
el controlador funciona en el proceso auxiliar de 32 bits de la estación, `Lab.Desktop.DriverBridge.exe`, como
el controlador [OPC DA](driver-opc-da): el proceso auxiliar arranca la primera vez que se conecta un
dispositivo del controlador o que la estación comprueba el runtime de Visual C++ 2005, y sus dispositivos y tags se leen, se escriben y se anotan en el diario como
cualquier otro. Si el proceso auxiliar se detiene, los dispositivos muestran que se detuvo y se
reconectan a través de uno nuevo.

La biblioteca guarda la lista de instrumentos que alcanza en un archivo propio, `ccf.cfg`, junto al
proceso auxiliar (`bridge-x86\ccf.cfg` en la carpeta del programa). La estación escribe ese archivo ella
misma: no hay que configurar nada en él, y un archivo borrado se vuelve a escribir en la siguiente
conexión. La biblioteca llama a un instrumento a la vez, así que los instrumentos de una estación se leen
uno tras otro.

## Límites que conviene conocer {#limits-worth-knowing}

| No se hace | Dónde se hace en su lugar |
| --- | --- |
| Las alarmas propias del instrumento y sus salidas de alarma | [Alarmas](logic-alarms) en los tags, y acciones de Logic que activan una línea digital o un relé |
| Canales calculados y cálculo de canales | [Variables](logic-variables) en Logic |
| La grabación en la PC Card del 2686A y la cola de escaneos del instrumento | El historial propio de la estación: una ejecución de [Process](process) o un [datalog](process-datalogs) |
| Descubrimiento | Ninguno: añada cada instrumento con su host y su canal base |
| macOS | El controlador funciona solo en Windows |
