File

Los valores que otro programa escribe en un archivo de una carpeta local o de red (el CSV de una máquina de ensayo, el registro de un registrador de datos, un resultado en JSON o XML) leídos como tags, y líneas o archivos completos escritos para otro programa: las tarjetas Carpeta y archivo, Texto del archivo y Escritura, lo que lee un tag en cada formato, la carpeta de entrada, el escaneo que ofrece un tag por columna o campo, tres ejemplos completos y lo que el driver no hace.

Ver como Markdown

El driver File lee los valores que otro programa escribe en un archivo: el CSV al que una máquina de ensayo agrega una fila después de cada muestra, el registro de un registrador de datos, un archivo de resultado en JSON o XML, un archivo de texto que solo contiene un código de lote. Cada tag lee un valor del archivo, y sus valores llegan donde llegan los de cualquier otro tag: a Logic, a los paneles de control, a las corridas de un banco de pruebas de Process. Donde el dispositivo lo permite, el driver también escribe para otro programa: una línea agregada a un archivo, o un archivo completo reemplazado.

Leer es el uso principal, y pide tres respuestas: la carpeta, el archivo y su formato. Cómo se lee el texto del archivo (su codificación, su separador de columnas, su separador decimal) se lee del propio archivo mientras se deja en detectar, el escaneo ofrece un tag por columna o campo, y todo tag nace de solo lectura. Lo que tiene que ver con la escritura solo aparece cuando se activa la escritura en el dispositivo.

Un dispositivo de este driver es una carpeta y el archivo que lee en ella: dos archivos de la misma carpeta son dos dispositivos. La carpeta es una unidad y una carpeta (C:\TestMachine\Logs) o un recurso compartido de red y una carpeta dentro de él (\\lab-pc\results), y la estación accede a ella con los permisos de Windows de la cuenta con la que se ejecuta. Los dispositivos cuelgan del driver y pueden archivarse en carpetas, Driver → Carpeta → Dispositivo → Tag, como en cualquier driver sin línea serie ni broker.

La página del driver

La línea bajo el encabezado dice "Cada dispositivo lee un archivo, o los archivos que llegan a una carpeta. Agregue un dispositivo, ingrese su carpeta, su archivo y su formato, y después escanéelo para agregar sus valores como tags." Para Configurar el conector, la página contiene la tarjeta Alcance del escaneo propia del driver, con el archivo que lee el escaneo (vea Descubrimiento). Debajo está la tabla Dispositivos de cualquier driver (vea La tabla de dispositivos), que crece con Agregar dispositivo, a la derecha de su título; vacía, dice "Todavía no hay dispositivos." La barra del driver lleva Descubrir, en gris hasta que la tarjeta Alcance del escaneo está completa. El driver aparece en Archivos y bases de datos, la categoría que va entre Web y API y Pruebas en toda lista de drivers.

Dispositivo

Un dispositivo de este driver no tiene tarjeta Conexión: en su lugar está la tarjeta Carpeta y archivo, seguida de la tarjeta Texto del archivo y, en un dispositivo que lee un archivo, de la tarjeta Escritura. El Intervalo de sondeo (ms) de la tarjeta Dispositivo, 1000 por defecto, dice cada cuánto leen el archivo los tags, y cada tag puede reemplazarlo como en cualquier driver.

Un dispositivo nuevo no tiene carpeta: dice "Carpeta aún sin indicar", su página dice "La estación no lee este dispositivo mientras no tenga una carpeta, así que todavía no se lee nada de él y no hay ningún error que mostrar. Indique la carpeta en la tarjeta Carpeta y archivo de abajo y la estación empieza a leerlo." y no se lee nada hasta que se indica la carpeta. La URI base que muestra el encabezado es la dirección de ejecución, con la carpeta y el nombre escritos en forma de URI, y después lo que no está en detectar: file://single?folder=C%3A%5CTestMachine%5CLogs&name=Log_%7Byyyy-MM-dd%7D.csv&format=delimited, o file://inbox?... para una carpeta de entrada.

La tarjeta Carpeta y archivo

Campo Significado Por defecto
Ruta de la carpeta "Una unidad y una carpeta, o un recurso compartido de red. Se accede a la carpeta con los permisos de Windows de la cuenta con la que se ejecuta la estación." La casilla muestra C:\TestMachine\Logs como sugerencia. vacío
Nombre del archivo En un dispositivo que lee un archivo: "Un nombre dentro de la carpeta. Las partes entre llaves son la fecha y la hora de la estación: Log_.csv es un archivo nuevo cada día." Una subcarpeta de la carpeta puede formar parte del nombre (results\last.csv). vacío
Archivos que leer La misma casilla en una carpeta de entrada: "Los archivos que leer, directamente en la carpeta: * equivale a cualquier serie de caracteres y ? a uno solo, como Test_*.csv." vacío
Leer de Un archivo: "El archivo se vuelve a leer cada vez que cambia. Un archivo que crece se lee desde donde terminó la última lectura." Carpeta de entrada: "Cada archivo nuevo se lee una vez, por orden de llegada, y se mueve a la subcarpeta Processed. No se elimina nada." Un archivo
Formato del archivo CSV y texto en columnas, Texto libre, JSON o XML: cómo encuentra un tag su valor en el archivo (vea Direccionamiento del tag). CSV y texto en columnas

Un nombre con una parte de fecha se escribe entre llaves con un formato .NET de fecha y hora, en el reloj de la propia estación: Log_{yyyy-MM-dd}.csv es Log_2026-10-03.csv hoy y el archivo del día siguiente pasada la medianoche, y Data_{yyyy-MM}.txt cambia cada mes. Bajo la casilla, la tarjeta muestra qué archivo es ahora: "Hoy: Log_2026-10-03.csv". Las llaves dobles {{ y }} son llaves del nombre. Una parte de fecha nunca escribe dos puntos, que ningún nombre de archivo admite: {HH-mm}, no {HH:mm}.

Cuando el dispositivo está en marcha, la tarjeta dice qué archivo lee:

La tarjeta dice Cuándo
"Leyendo ahora: Log_2026-10-03.csv" El archivo en uso, tal como el dispositivo lo lee ahora.
"Leyendo ahora: Log_2026-10-03.csv (aún no existe)" El archivo todavía no existe: sus tags esperan y el dispositivo sigue en línea.
"Un tag escribió este nombre. Tras un reinicio, el dispositivo vuelve a leer su archivo configurado." Un tag que lee el nombre del archivo se escribió y apunta el dispositivo a otro archivo (vea Escritura).
"3 archivos en espera en la carpeta de entrada" Una carpeta de entrada, con los archivos que coinciden con su patrón aún por leer ("1 archivo en espera en la carpeta de entrada" para uno).

Un ajuste que la tarjeta no puede aceptar se dice bajo las tarjetas, y el dispositivo no se guarda hasta que se corrige:

Usted escribe La tarjeta dice
Una carpeta que no es una ruta completa, como Logs "La carpeta es una ruta completa: una unidad y una carpeta (C:\Test), o un recurso compartido de red y una carpeta dentro de él (\server\tests)."
Una carpeta con un carácter que ningún nombre de carpeta admite, o un recurso compartido sin carpeta dentro (\\server) "La carpeta contiene un carácter que ningún nombre de carpeta admite, o es un recurso compartido de red sin una carpeta dentro."
Ningún nombre de archivo No se rechaza: el dispositivo se guarda y espera, "Nombre del archivo aún sin indicar" ("Archivos que leer aún sin indicar" en una carpeta de entrada), hasta que se indica un nombre.
Una ruta completa como nombre, como C:\Logs\last.csv "El nombre del archivo es un nombre dentro de la carpeta, no una ruta completa: la carpeta va en la casilla Ruta de la carpeta."
Un nombre con .., como ..\other\last.csv "El nombre del archivo sale de la carpeta con "..". El driver nunca sale de su carpeta."
Un nombre con : u otro carácter que ningún nombre de archivo admite, o una parte que termina en un punto o un espacio "El nombre del archivo contiene un carácter que ningún nombre de archivo admite (como : o |), o una parte termina en un punto o un espacio. Una parte de fecha no debe escribir dos puntos: use , no ."
Un nombre que Windows reserva para un dispositivo, como CON o COM1 "Windows reserva este nombre para un dispositivo (CON, NUL, COM1 y similares). Elija otro."
* o ? en un dispositivo que lee un archivo "Solo el patrón de una carpeta de entrada admite * o ?. Indique el nombre de un solo archivo, o lea de una carpeta de entrada."
Una subcarpeta en el patrón de una carpeta de entrada "Una carpeta de entrada es la propia carpeta: ponga la subcarpeta en la casilla Ruta de la carpeta y deje aquí solo el patrón."
Una parte de fecha sin cerrar, o que no es un formato de fecha "Una parte de fecha del nombre no está cerrada o no es un formato de fecha. Escríbala entre llaves, como Log_.csv."

El guardado cumple las mismas reglas, y el registro de acciones lo dice cuando rechaza una: "El dispositivo 'Tensile tester' tiene un ajuste de archivo que su driver no puede usar. Ábralo y corrija el campo que marca su panel."

La tarjeta Texto del archivo

Cómo se leen los caracteres, las columnas y los números del archivo. Todo ajuste empieza en Detectar en el archivo, y el driver lo lee del archivo en uso. Bajo un ajuste dejado así, una vez que el dispositivo ha leído el archivo, una línea dice lo que encontró, como "Encontrado en el archivo: UTF-8". Cualquier ajuste se puede fijar eligiéndolo, para un archivo cuyas primeras líneas no lo dicen.

Campo Se muestra Opciones Por defecto
Codificación siempre Detectar en el archivo, UTF-8, Windows-1252 (ANSI) (la codificación de los programas antiguos de Windows) Detectar en el archivo
Separador de columnas CSV Detectar en el archivo, Punto y coma (;), Coma (,), Tabulador Detectar en el archivo
Separador decimal siempre Detectar en el archivo, Punto decimal (12.5), Coma decimal (12,5) Detectar en el archivo
Fila de encabezado CSV De 0 a 1000: "La línea que contiene los nombres de las columnas, contada desde 1. 0 si el archivo no tiene." Las líneas anteriores se saltan. 1
Ajuste Lo que lee la detección
Codificación Una marca de orden de bytes al principio del archivo, que se impone a cualquier elección; si no, UTF-8 cuando los bytes son UTF-8 válido; si no, Windows-1252.
Separador de columnas El primero entre tabulador, punto y coma y coma que divide las primeras líneas en el mismo número de columnas; una primera línea sin ninguno de ellos es un archivo de una sola columna.
Separador decimal La coma cuando más números del archivo llevan una coma que un punto entre sus dígitos; si no, el punto. Los números JSON siempre llevan el punto; el ajuste vale para los números escritos como texto.

La tarjeta Escritura

Un dispositivo que lee un archivo lleva la tarjeta Escritura; una carpeta de entrada solo se lee y no la tiene.

Campo Se muestra Significado Por defecto
Permitir la escritura siempre Desactivado: "El dispositivo solo lee. Active la escritura para agregar líneas, reemplazar el archivo o cambiar a otro archivo mientras la estación se ejecuta." Activado: "Los tags de este dispositivo pueden escribir en el archivo. Cada tag sigue solo leyendo hasta que su acceso diga otra cosa." desactivado
Texto de encabezado escritura activada, CSV o texto libre "Se escribe primero en un archivo que crea una escritura, como Time;Pressure." Una línea, sin salto de línea. vacío
Fin de línea escritura activada Detectar en el archivo (el del propio archivo, CR LF en un archivo nuevo), CR LF, como en Windows o LF. Detectar en el archivo

La escritura solo se desactiva cuando ningún tag del dispositivo escribe. Mientras algún tag escribe, el interruptor sigue dibujado y en gris, y dice por qué: "2 tags de este dispositivo escriben en el archivo. Póngalos en solo lectura antes de desactivar la escritura." ("Un tag de este dispositivo escribe en el archivo. Póngalo en solo lectura antes de desactivar la escritura." para uno).

En línea, en espera y fuera de línea

Situación Lo que hacen el dispositivo y sus tags
Ninguna carpeta indicada El dispositivo espera: "Carpeta aún sin indicar", punto gris, nada leído y ningún error.
Carpeta indicada, sin nombre de archivo El dispositivo espera: "Nombre del archivo aún sin indicar", punto gris, nada leído y ningún error; su página dice "La estación no lee este dispositivo mientras no tenga un nombre de archivo, así que todavía no se lee nada de él y no hay ningún error que mostrar. Indique el nombre del archivo en la tarjeta Carpeta y archivo de abajo y la estación empieza a leerlo."
Carpeta de entrada, carpeta indicada, sin archivos que leer El dispositivo espera: "Archivos que leer aún sin indicar", punto gris, nada leído y ningún error; su página dice "La estación no lee este dispositivo mientras no sepa qué archivos leer, así que todavía no se lee nada de él y no hay ningún error que mostrar. Indique los archivos en Archivos que leer, en la tarjeta Carpeta y archivo de abajo (como Test_*.csv), y la estación empieza a leerlos."
No se puede acceder a la carpeta (un recurso compartido caído, una unidad que desapareció, una cuenta sin acceso) El dispositivo está fuera de línea y sus tags fallan la lectura; la carpeta se vuelve a mirar como mucho cada segundo, y el dispositivo se conecta en cuanto vuelve.
Se accede a la carpeta, el archivo aún no existe El dispositivo sigue en línea. Los tags que leen valores no tienen lectura y esperan; El archivo existe lee falso.
Otro programa tiene el archivo sin compartirlo Ninguna lectura esta vez; la lectura siguiente vuelve a intentarlo. El tag conserva su última lectura, y una más antigua que su intervalo de sondeo más 10 s cuenta como lectura fallida, como en cualquier driver.
Un valor no está, o no cabe en el tipo del tag Lectura fallida de ese tag, con el motivo; el dispositivo sigue leyendo sus otros tags.

Direccionamiento del tag

Lo que lee un tag

Un tag de este driver no tiene casilla de dirección propia: su tarjeta Fuente pregunta qué lee y, para un valor, dónde está el valor en el formato del dispositivo.

Lee Lo que muestra el tag Tipo de dato
Valor Un valor dentro del archivo, encontrado por los campos del formato del dispositivo de más abajo. Boolean, Int32, Int64, Float, Double o String; Double en un tag nuevo
Archivo completo Todo el contenido, sin los fines de línea del final: un archivo que solo contiene un código de lote o un estado. Como mucho 4 MiB. los mismos; String en un tag nuevo
El archivo existe Si el archivo en uso existe ahora. Boolean
Tamaño del archivo El tamaño del archivo en bytes. Int64
Último cambio Cuándo se escribió el archivo por última vez: verlo cambiar es como Logic sabe que llegaron datos nuevos. DateTime
Nombre del archivo El nombre del archivo en uso, dentro de la carpeta. Escrito, nombra otro archivo (vea Escritura). String
Conteo de líneas "Cuenta todas las líneas del archivo, incluidas la fila de encabezado y las líneas vacías." Int64

Un tipo en el que la fuente no se lee se rechaza con los tipos en que sí se lee: "Elija uno de los tipos de dato con los que se lee esto: Int64." Elegir otra fuente trae su propio tipo. El texto tomado de un archivo se lee en el tipo del tag como el driver Generic serial and TCP lee un mensaje, con el separador decimal del archivo: un Boolean lee 1, true, on o yes y 0, false, off o no, un entero lee un número entero, y un String toma los caracteres tal como están, así que un código como 0412 solo conserva su cero inicial como String.

Todo tag nace de Solo lectura, y en un dispositivo que no permite la escritura el campo Acceso no ofrece otra cosa. Cuando el dispositivo permite la escritura, un tag que lee Valor o Archivo completo puede ser de Lectura y escritura o de Solo escritura, y un tag que lee Nombre del archivo de Lectura y escritura; los datos del archivo (existencia, tamaño, último cambio, conteo de líneas) nunca se escriben: "Un dato del archivo no se puede escribir. Deje el tag en solo lectura."

CSV y texto en columnas

Campo Se muestra Significado Por defecto
Columna Lee Valor "El nombre de la columna en la fila de encabezado, o su número contado desde 1." Un texto solo de dígitos es un número; un nombre no distingue mayúsculas ni los espacios que lo rodean. En un archivo sin fila de encabezado: "El número de la columna, contado desde 1. El archivo no tiene fila de encabezado, así que sus columnas no tienen nombre." vacío
Fila que leer Lee Valor Última, Por número o Por su contenido. "Las filas se cuentan después de la fila de encabezado. Por su contenido lee la última fila cuya columna clave contiene el valor clave." Última
Número de fila Por número La fila de datos, contada desde 1 después del encabezado. vacío
Columna clave Por su contenido La columna cuyo valor elige la fila, por nombre o por número. vacío
Valor clave Por su contenido El valor que contiene la columna clave en la fila que se lee, como 0412. vacío

Un campo entre comillas dobles puede contener el separador; un campo que contiene un salto de línea no se lee. Un tag cuyos campos no pueden funcionar no se guarda, y su página dice lo que le falta:

Usted deja vacío o escribe La página del tag dice
Ninguna columna "Ingrese la columna, por su nombre en la fila de encabezado o por su número."
La columna 0 "Las columnas se cuentan desde 1."
Una columna por nombre en un archivo sin fila de encabezado "El archivo no tiene fila de encabezado, así que una columna se indica por su número."
Por número, sin número de fila "Ingrese el número, contado desde 1."
Por su contenido, sin columna clave "Ingrese la columna clave: la columna cuyo valor elige la fila."
Por su contenido, sin valor clave "Ingrese lo que contiene la fila o la línea."

La línea de solo lectura Dirección de origen (bus) muestra lo que recibe el driver: column?name=Force para el Force de la última fila, column?number=3&row=number&rowNumber=5 para la tercera columna de la quinta fila, column?name=Force&row=match&key=Sample&equals=0412 para la fila de la muestra 0412.

Texto libre

Campo Se muestra Significado Por defecto
Línea que leer Lee Valor Última (la última línea que no está en blanco), Por número o Por su contenido. "Las líneas se cuentan desde el principio del archivo. Por su contenido lee la última línea que contiene el texto." Última
Número de línea Por número La línea, contada desde 1 al principio del archivo. vacío
La línea contiene Por su contenido Un texto que contiene la línea que se lee, como Result. vacío
El valor es Lee Valor "Las mismas opciones que el driver Generic serial and TCP: la línea completa, una posición fija, un campo entre separadores o una expresión regular." Sus opciones son las de ese driver, con la primera nombrada por la línea: La línea completa, Posición fija (Primer carácter y Longitud), Campo entre separadores (Separador y Número de campo) y Grupo de captura de un patrón (Patrón). La línea completa

Las posiciones y los campos se cuentan desde 1, un patrón es una expresión regular de .NET con exactamente un grupo de captura alrededor del valor, y una línea que tarda más de 250 ms en leerse no se lee. Los rechazos son los del propio driver genérico, como "Indique el primer carácter del valor, contando desde 1." o "El patrón necesita exactamente un grupo de captura, alrededor del valor." La dirección de bus se escribe line seguido de lo que corresponda, por ejemplo line?row=match&contains=Result&extract=regex&pattern=....

JSON y XML

Campo Formato Significado
Ruta JSON JSON "Miembros separados por puntos y posiciones entre corchetes desde 0, como result.force o items[0].value." Un miembro cuyo nombre contiene un punto se escribe ['flow.rate'].
Ruta XML XML "Elementos desde la raíz separados por barras, una posición desde 1 donde un elemento se repite, y un atributo al final, como Result/Force o Result/@unit." Los nombres se comparan por su nombre local, sin el prefijo de espacio de nombres.

Un número JSON, true o false se toma tal cual, y una cadena se lee en el tipo del tag; un objeto o una lista solo se leen como String, su JSON. Un documento JSON o XML se lee completo cuando cambió, como mucho 4 MiB, y no se lee ninguna DTD. La dirección de bus es json?path=result.force o xml?path=Result%2FForce.

Usted deja vacío o escribe La página del tag dice
Ninguna ruta "Ingrese la ruta al valor. Para leer el archivo completo, elija Archivo completo."
Una ruta JSON que no se puede leer "Esto no es una ruta JSON: miembros separados por puntos y posiciones entre corchetes, como result.items[0].value."
Una ruta XML que no se puede leer "Esto no es una ruta XML: elementos separados por barras, una posición como Item[2] y un atributo al final, como @unit."

Lectura

En cada lectura el driver pregunta a Windows el tamaño y las horas del archivo, lo que funciona en un recurso compartido de red, donde los avisos de cambio de Windows no funcionan, y solo abre el archivo cuando alguno de ellos cambió. Siempre lo abre compartiendo la lectura, la escritura y la eliminación, así que el programa que escribe el archivo nunca queda bloqueado.

El archivo Lo que hace la lectura
Creció, y sigue empezando y terminando donde lo hacía Solo se lee lo agregado, nunca otra vez el archivo completo: un registro de muchos megabytes cuesta lo que cuestan sus líneas nuevas.
Se hizo más corto, se escribió de nuevo o se creó de nuevo Se vuelve a leer desde el principio.
Termina con una línea que ningún fin de línea cierra todavía Esa línea espera, para que nunca se lea un valor a medio escribir; cuando el archivo lleva 2 s sin cambiar, se lee como la última línea.
JSON, XML, o un tag que lee el archivo completo Se lee completo cuando cambió, como mucho 4 MiB; un documento que no se puede leer y cambió hace menos de 2 s se toma como aún en escritura, y los tags esperan.
Tiene una línea de más de 1 MiB No es texto en líneas: sus tags fallan la lectura.

Toda lectura lleva la fecha del último cambio del archivo, no la del momento en que se hizo, así que el registro de la corrida coloca una muestra cuando el otro programa la escribió.

La carpeta de entrada

Leer de Carpeta de entrada es para la máquina que escribe un archivo por muestra (Test_0412.json, Test_0413.json...): cada archivo nuevo que coincide con el patrón se lee una vez, por orden de llegada.

Paso Lo que ocurre
Llega un archivo Se toma cuando lleva 1 s con el mismo tamaño y la misma hora y ningún programa lo tiene abierto para escribirlo.
Cuál primero El creado primero, luego el escrito primero, luego por nombre. Dos archivos que llegan juntos se leen en dos pasadas: ninguno se salta.
Su lectura Todos los tags del dispositivo leen ese archivo, y el archivo es una lectura, con la fecha del archivo: el registro de la corrida graba cada una. Nombre del archivo dice de qué archivo vinieron los valores.
Cuando todos los tags lo han leído Se mueve a la subcarpeta Processed, que el driver crea y cuyo nombre es el mismo en todos los idiomas, porque otros programas pueden buscarla; un nombre ya ocupado allí pasa a name (2).json. Sus valores siguen siendo la lectura de los tags hasta el archivo siguiente.
Un movimiento que falla Se reintenta en cada lectura; el archivo no se vuelve a leer mientras tanto.
La estación se reinicia antes del movimiento El archivo se vuelve a leer: una lectura contada dos veces en lugar de una perdida.

Nunca se elimina nada: la subcarpeta Processed crece hasta que alguien la vacía. En una carpeta de entrada nunca se escribe.

Escritura

En un dispositivo que lee un archivo y permite la escritura, un tag que lee Valor o Archivo completo y cuyo acceso escribe dice lo que hace una escritura:

Campo Se muestra Significado Por defecto
Una escritura el tag escribe Agregar una línea: "Agrega una línea al final del archivo. Cada escritura cuenta: ninguna se descarta por otra más reciente." Reemplazar el archivo: "Reemplaza el archivo completo por el valor, a través de un archivo temporal, para que ningún programa lo lea a medio escribir." Agregar una línea
Plantilla de línea Agregar una línea "Vacía: el valor escrito es la línea completa. es el valor y el momento de la escritura, cada uno con un formato tras dos puntos si hace falta, como ." La casilla muestra {datetime};{value} como sugerencia. vacío
La plantilla Escribir 12.5 agrega
vacía 12.5
{datetime};{value} 2026-10-03 14:05:12;12.5
{datetime:dd/MM/yyyy HH:mm};{value:0.00} 03/10/2026 14:05;12.50

{value:FORMAT} admite un formato numérico de .NET, {datetime:FORMAT} un formato .NET de fecha y hora, en el reloj de la estación, yyyy-MM-dd HH:mm:ss cuando no se da ninguno. Un número se escribe con el separador decimal del archivo, así que la misma plantilla escribe 12,50 en un archivo que usa la coma. La plantilla de un tag Boolean puede omitir {value}: al escribirlo como verdadero, agrega la línea, como una orden. Una plantilla que el driver no puede rellenar se rechaza en la página del tag:

Usted escribe La página del tag dice
Una parte que no es {value} ni {datetime}, o una llave sin cerrar "La plantilla admite y , cada uno con un formato tras dos puntos si hace falta. {{ y }} son llaves de la línea."
Ningún {value} en un tag que no es Boolean "La plantilla no tiene , así que el valor escrito nunca llegaría al archivo. Solo un tag booleano puede omitirlo: al escribirlo como verdadero, agrega la línea."
Un salto de línea "La plantilla es una sola línea, sin salto de línea."
Un tag que escribe, en un dispositivo que no permite la escritura "El dispositivo no permite la escritura. Active la escritura en el dispositivo o deje el tag en solo lectura."
Una escritura Cómo se hace
Agregar una línea La línea va en una sola escritura y se vuelca al disco antes de que la escritura cuente como hecha. Un archivo que crea la escritura recibe primero el Texto de encabezado, y un archivo cuya última línea no tiene fin de línea recibe uno antes, para que la línea quede completa. Un valor que contiene un salto de línea se rechaza. Cada escritura cuenta: una escritura que aún espera en la cola del dispositivo nunca se descarta por otra más reciente al mismo tag, como nunca se descarta una orden.
Reemplazar el archivo El valor va a un archivo temporal junto al archivo, volcado al disco, que ocupa el lugar del archivo en un solo paso. Un valor más reciente que aún espera reemplaza a uno más antiguo, como para cualquier consigna.
El nombre del archivo Un tag que lee Nombre del archivo, de Lectura y escritura, escrito con otro nombre, apunta el dispositivo a ese archivo de la misma carpeta a partir de entonces: "Escribir aquí un nombre hace que el dispositivo lea y escriba a partir de entonces ese archivo de la misma carpeta. Un nombre fuera de la carpeta se rechaza." Una ruta completa, .., : o un nombre que Windows reserva se rechaza. Cuando el dispositivo se vuelve a conectar, reinicio incluido, vuelve a leer su archivo configurado.
Texto En la codificación, el fin de línea y el separador decimal del propio archivo, leídos de él donde el dispositivo los deja en detectar. Un archivo nuevo es UTF-8 sin marca de orden de bytes, con CR LF y el punto decimal, salvo que el dispositivo diga otra cosa.
Respuesta Hecha, o rechazada con la causa: el dispositivo no permite la escritura, la cuenta no tiene permiso, el archivo está marcado como de solo lectura (quitar ese atributo deja pasar la próxima escritura), el disco está lleno, o el archivo está abierto en otro programa. Un reemplazo se rechaza mientras cualquier programa tenga el archivo abierto, y una línea agregada solo mientras un programa lo tenga sin compartirlo; en cuanto ese programa cierra el archivo, la próxima escritura pasa.

La carpeta y las subcarpetas a las que apunta un nombre se crean cuando una escritura las necesita, siempre dentro de la carpeta del dispositivo.

Descubrimiento

La tarjeta Alcance del escaneo

Para Configurar el conector, la página del driver lleva su tarjeta Alcance del escaneo, bajo la línea "Lee un archivo y ofrece un tag por cada columna o campo que encuentra, y por los datos del archivo. Elija un dispositivo para leer su archivo, o escriba una carpeta, un archivo y un formato."

Campo Significado Por defecto
Archivo que escanear Un archivo escrito aquí, o un dispositivo del driver por su nombre. El archivo de un dispositivo se lee con los ajustes del dispositivo tal como están guardados, y una edición del dispositivo que aún espera para guardarse se guarda antes. Un archivo escrito aquí
Ruta de la carpeta Un archivo escrito: la carpeta, como en un dispositivo. vacío
Nombre del archivo o Archivos que leer Un archivo escrito: el nombre, o el patrón de una carpeta de entrada. vacío
Leer de Un archivo escrito: Un archivo o Carpeta de entrada. Un archivo
Formato del archivo Un archivo escrito: el formato. Todo ajuste de texto de un archivo escrito se detecta, la fila de encabezado incluida: la primera línea es un encabezado cuando ninguno de sus campos es un número y la línea siguiente tiene uno. CSV y texto en columnas

Lo que aún le falta al alcance se dice en rojo bajo la tarjeta, y Descubrir sigue en gris hasta que está completo:

El alcance La tarjeta dice
Un archivo escrito sin carpeta "Escriba la carpeta en la que está el archivo."
Una carpeta escrita que no es una ruta completa "'Logs' no es una carpeta que esta estación pueda leer. Escriba una ruta completa, por ejemplo C:\Test o \server\tests."
Un nombre escrito que no es un archivo de la carpeta "'..\last.csv' no es el nombre de un archivo dentro de la carpeta."
Un dispositivo que ya no existe "El dispositivo elegido para escanear ya no existe. Elija otro archivo que escanear."
Un dispositivo sin su carpeta o sin su archivo "El dispositivo 'Tensile tester' aún no tiene carpeta o archivo, o tiene un ajuste que su driver no puede usar. Complete primero su tarjeta Carpeta y archivo."

Cuando el dispositivo que se va a escanear tiene una edición que no se puede guardar, el escaneo no empieza: "El descubrimiento no se inició porque no se pudo guardar la edición del dispositivo que se va a escanear."

Lo que ofrece el escaneo

El escaneo lee el archivo que un dispositivo de un archivo lee ahora, o el archivo más reciente de una carpeta de entrada, que no mueve; un archivo que no está, una carpeta a la que no se puede acceder y un documento que no se puede leer terminan el escaneo con el motivo. Ofrece un candidato, con los valores encontrados como tags candidatos, todos de Solo lectura:

Formato Tags candidatos
CSV Uno por columna, que lee la última fila, con el nombre de su encabezado (por su número dondel encabezado no le da nombre o se lo da dos veces), con el tipo que dan los valores de sus primeras filas: Double cuando todos los valores son números, Boolean cuando todos son true o false, String en otro caso. Un código con un cero inicial, como 0412, sigue siendo String.
Texto libre La última línea, un String.
JSON, XML Uno por valor, con nombre y dirección dados por su ruta, como mucho 500; una lista JSON ofrece sus 20 primeros elementos, y el recorrido baja 8 niveles.
Todo formato Los datos del archivo: El archivo existe, Tamaño del archivo, Último cambio, Nombre del archivo y Conteo de líneas.

Un escaneo ofrece como máximo 500 valores, incluidas las columnas de un archivo CSV. Un escaneo cortado ahí lo dice en la línea que lo cierra y sobre sus resultados: "El escaneo de result.json se detuvo antes de tiempo. Un escaneo ofrece como máximo 500 valores: agregue los demás como tags por su columna, su ruta JSON o su ruta XML."

El candidato de un archivo escrito lleva el nombre del archivo (run para run.csv), o el de la carpeta para un nombre con una parte de fecha o una carpeta de entrada. Un candidato cuya carpeta, nombre y Leer de ya lee un dispositivo del driver (el dispositivo escaneado, u otro igual) aparece como Ya configurado: su tarjeta solo lista los valores que ningún tag de ese dispositivo lee todavía, marcados, y Agregar tags, antes de Abrir, agrega los marcados a ese dispositivo, de solo lectura. El resto del comportamiento de el escaneo está en Descubrimiento.

La propia página de un dispositivo hace lo mismo sin la página de su driver: Descubrir tags, en el encabezado de su tarjeta de tags, lee el archivo de ese dispositivo tal como está guardado y ofrece solo los valores para los que todavía no tiene tag (vea Descubrir los tags de un dispositivo).

Ejemplo: el CSV diario de una máquina de ensayo

Una máquina de tracción escribe un CSV al día en C:\TestMachine\Logs, llamado Log_2026-10-03.csv, con una fila de encabezado Sample;Force;Elongation y una fila como 0412;12,5;3,1 después de cada muestra. Léalo por el camino sencillo:

  1. En la página del driver, Agregar dispositivo; llámelo Tensile tester.
  2. En la tarjeta Carpeta y archivo escriba Ruta de la carpeta C:\TestMachine\Logs y Nombre del archivo Log_{yyyy-MM-dd}.csv; mantenga Un archivo y CSV y texto en columnas. La tarjeta muestra "Hoy: Log_2026-10-03.csv", y cuando el dispositivo lo lee, "Leyendo ahora: Log_2026-10-03.csv". Deje la tarjeta Texto del archivo en Detectar en el archivo: encuentra el punto y coma y la coma decimal.
  3. En la página del driver, elija Tensile tester en Archivo que escanear y Descubrir. El candidato aparece como Ya configurado y lista Sample (String, que conserva el cero de 0412), Force y Elongation (Double), y los datos del archivo. Agregar tags.

Cada tag lee la última fila; Último cambio se mueve con cada muestra nueva, y así sabe una acción de Logic que llegó una. A medianoche el dispositivo pasa al archivo del día siguiente, y hasta que la máquina lo escribe, los valores no tienen lectura y El archivo existe lee falso. Un agente hace lo mismo con las herramientas:

device_upsert name="Tensile tester" driver=File fileFolder="C:\TestMachine\Logs" fileName="Log_{yyyy-MM-dd}.csv" fileFormat=Delimited
device_discover driver=File fileDevice="Tensile tester"
tag_upsert device="Tensile tester" name=Force address=Force opcUaType=Double
tag_upsert device="Tensile tester" name=Sample address=Sample opcUaType=String
tag_upsert device="Tensile tester" name="Last change" fileSource=Modified

Ejemplo: una carpeta de entrada de archivos de resultado JSON

Una celda de ensayo deja un archivo de resultado por muestra en C:\Results\Inbox, como Test_0413.json con {"sample":"0413","result":{"force":12.5,"ok":true}}:

  1. Agregar dispositivo; llámelo Results, Ruta de la carpeta C:\Results\Inbox, Leer de Carpeta de entrada, Archivos que leer Test_*.json, Formato del archivo JSON.
  2. Agregar tag Force, Ruta JSON result.force, Double; Agregar tag Pass, Ruta JSON result.ok, Boolean; Agregar tag Sample, Ruta JSON sample, String.
  3. Agregar tag Source file, Lee Nombre del archivo: muestra de qué archivo vinieron los valores.

Cada archivo se lee una vez, después de quedarse quieto 1 s y sin que ningún programa lo tenga abierto para escribirlo, en el orden en que llegaron los archivos; cada uno es una lectura propia, con la fecha del archivo; cuando todos los tags lo han leído, pasa a C:\Results\Inbox\Processed. No se elimina nada. Con las herramientas:

device_upsert name=Results driver=File fileFolder="C:\Results\Inbox" fileName="Test_*.json" fileMode=Inbox fileFormat=Json
tag_upsert device=Results name=Force address=result.force opcUaType=Double
tag_upsert device=Results name=Pass address=result.ok opcUaType=Boolean
tag_upsert device=Results name=Sample address=sample opcUaType=String
tag_upsert device=Results name="Source file" fileSource=Name

Ejemplo: agregar una línea para otro programa

Otro programa lee D:\Records\run.csv, una línea por segundo con la hora y la presión:

  1. Agregar dispositivo; llámelo Run log, Ruta de la carpeta D:\Records, Nombre del archivo run.csv.
  2. En la tarjeta Escritura active Permitir la escritura y escriba Texto de encabezado Time;Pressure.
  3. Agregar tag Line, Double, Acceso Solo escritura, Una escritura Agregar una línea, Plantilla de línea {datetime};{value:0.00}.

Escribir 12.5 en Line agrega 2026-10-03 14:05:12;12.50, con la coma donde el archivo ya usa una o donde Separador decimal dice Coma decimal (12,5); un archivo que crea la escritura recibe primero Time;Pressure. Las escrituras que se suceden rápido se conservan todas, en orden. Para escribir un archivo por corrida, agregue un tag File, Lee Nombre del archivo, de Lectura y escritura: Logic escribe el número de serie con .csv cuando empieza una corrida, y las líneas van a ese archivo. Con las herramientas:

device_upsert name="Run log" driver=File fileFolder="D:\Records" fileName=run.csv fileFormat=Delimited fileWrites=true fileHeaderText="Time;Pressure"
tag_upsert device="Run log" name=Line opcUaType=Double accessType=WriteOnly fileWriteMode=AppendLine fileLineTemplate="{datetime};{value:0.00}"
tag_upsert device="Run log" name=File fileSource=Name accessType=ReadAndWrite

Herramientas del agente

driver_capabilities describe este driver en file: el camino sencillo, cada campo del dispositivo, la regla de la carpeta y el confinamiento a ella, las formas del nombre del archivo, las dos maneras de leer, los formatos con la gramática de dirección de cada uno, las fuentes y sus tipos, los ajustes de texto, cómo se comportan las lecturas y las escrituras, el descubrimiento y tres ejemplos completos. device_upsert driver=File admite fileFolder, fileName, fileMode (SingleFile, el predeterminado, o Inbox), fileFormat (Delimited, el predeterminado, Text, Json o Xml), fileEncoding (Automatic, Utf8 o Windows1252), fileSeparator (Automatic, Semicolon, Comma o Tab), fileDecimal (Automatic, Point o Comma), fileHeaderRow (de 0 a 1000), fileWrites y, con la escritura activada, fileHeaderText y fileLineEnd (Automatic, CrLf o Lf); un dispositivo que devuelve lleva file, con fileStatus, lo que encontró el driver en marcha: el archivo en uso, si existe, la codificación, los separadores y el fin de línea que leyó, y los archivos en espera en una carpeta de entrada. tag_upsert admite fileSource (Value, WholeFile, Exists, Size, Modified, Name o Lines), fileRow (Last, Number o Matching), fileRowNumber, fileKeyColumn, fileMatchText, fileWriteMode (AppendLine o ReplaceFile) y fileLineTemplate; la columna o la ruta es el address, un valor de texto libre usa los valueExtraction, valueStart, valueLength, valueSeparator, valueField y valuePattern del driver genérico, y un tag nuevo es de solo lectura y toma el tipo propio de la fuente, salvo que opcUaType diga otra cosa. device_discover driver=File lee o bien fileDevice, el nombre de un dispositivo del driver, o bien fileFolder, fileName, fileMode y fileFormat escritos para la escaneo; los tags que le faltan a un dispositivo configurado se agregan con tag_upsert. connector_browse devuelve fileFolder, fileName, fileMode y fileFormat de cada dispositivo. Las demás herramientas están en Herramientas del agente.

Límites que conviene conocer

  • Los libros de Excel no se leen: un libro se lee cuando su programa lo guarda como CSV.
  • El driver nunca elimina un archivo. Una carpeta de entrada mueve lo que leyó a Processed, y solo el archivo temporal de un reemplazo que falló se quita alguna vez.
  • "El archivo más reciente de la carpeta" no es una manera de leer: pierde archivos que llegan juntos y puede mostrar los valores de la muestra anterior. Una máquina que escribe un archivo por muestra se lee con una carpeta de entrada.
  • Un valor no se cambia en su sitio dentro de un archivo (una celda de un CSV, un miembro del JSON de otro programa): una escritura agrega una línea o reemplaza el archivo completo, porque dos programas que escriben el mismo archivo pueden perder el cambio del otro.
  • A un recurso compartido de red se accede con los permisos de Windows de la cuenta con la que se ejecuta la estación: el dispositivo no guarda usuario ni contraseña, así que el recurso compartido tiene que dejar entrar a esa cuenta (para leer, y para escribir y mover en un dispositivo que escribe o una carpeta de entrada).
  • El driver nunca toca nada fuera de su carpeta: un nombre que apunta a otro sitio se rechaza donde se escribe en el formulario y donde lo escribe un tag.
  • El archivo se mira en cada lectura: un cambio se ve en la lectura siguiente, nunca en el instante en que el otro programa lo escribe.
  • Un campo CSV que contiene un salto de línea no se lee, y un tag JSON, XML o de archivo completo lee como mucho 4 MiB.