Exportar datos del Datalogger PLCnext a CSV: Guía paso a paso
Registrar valores de una aplicación industrial es una característica principal para muchos clientes, y en algunas aplicaciones el número de variables puede ser realmente alto, por lo que se requiere una forma nativa y fácil de configurar este registro de datos.
A continuación, profundizaremos en el Componente de Servicio Datalogging nativo y veremos cómo podemos generar un archivo CSV a partir de este servicio.
Puede encontrar más información sobre los componentes del servicio Datalogging en estos enlaces:
- Configurar el Datalogger y usarlo desde OPC UA Historical Access
- Real-Time Datalogger - PLCnext Info Center
Una vez que haya configurado las sesiones de Datalogging, tendrá un archivo *.db que contiene todos sus valores registrados de las variables. Este archivo *.db es un archivo de base de datos pero este formato necesita una herramienta como Sqlite3 o un DB Browser si queremos navegar por los valores.
Muchos clientes ya están familiarizados con los archivos *.csv, así que veremos cómo hacer una exportación de esta base de datos a un archivo csv. La herramienta Sqlite3 presente en cada controlador PLCnext proporciona todas las herramientas necesarias para hacer esta exportación.
Cuando se crea la base de datos, podemos establecer el nombre que queramos para la base de datos, pero no podemos establecer un nombre específico para la tabla presente en la base de datos que contiene los valores. Afortunadamente, la herramienta Sqlite3 puede ayudarnos mostrando las tablas presentes en la base de datos, con el comando "Sqlite3 <NombreDeBaseDeDatos> .tables". Puede encontrar todos los comandos específicos en la página de ayuda de Sqlite3 o en esta página: Sqlite3.
Cuando sabemos el nombre de la tabla, podemos seleccionar todos los datos de esta tabla y exportar estos datos a un archivo csv.
Para facilitar un poco el proceso, le enlazaré dos scripts para hacer una exportación desde una base de datos. Por supuesto, puede adaptar el script para sus necesidades.
Desafortunadamente no podemos subir archivos *.sh, así que a continuación tendrá el contenido de los dos archivos.
Primero, el archivo para el formato de Timestamp ISO8601:
ExportSQL2CSV_ISO.sh
#!/bin/bash
name_of_database="${1:?Missing database}"
name_of_database_no_ext=${name_of_database::-3}
# Get the name of the table
name_of_table=$(sqlite3 $name_of_database .tables)
# Get the DateTime of the first entry to name the output file
DateTime=$(sqlite3 $name_of_database "SELECT strftime('%Y_%m_%d_%H_%M_%S',Timestamp) from $name_of_table limit 1;")
# Create the filename
output_filename=${name_of_database_no_ext}_${DateTime}.csv
# Make the export to the csv file
sqlite3 -header -csv -separator ";" $name_of_database "SELECT * from $name_of_table;" \
> $output_filename
Y el segundo archivo para el formato de Timestamp RAW:
ExportSQL2CSV_RAW.sh
#!/bin/bash
name_of_database="${1:?Missing database}"
name_of_database_no_ext=${name_of_database::-3}
# Get the name of the table
name_of_table=$(sqlite3 $name_of_database .tables)
# Get the DateTime of the first entry to name the output file
DateTime=$(sqlite3 $name_of_database "SELECT strftime('%Y_%m_%d_%H_%M_%S',(Timestamp - 4611686018427387904)/10000000 - 62135596800,'unixepoch') from $name_of_table limit 1;")
# Create the filename
output_filename=${name_of_database_no_ext}_${DateTime}.csv
# Make the export to the csv file
sqlite3 -header -csv -separator ";" $name_of_database "SELECT \
strftime('%Y-%m-%d %H:%M:%f',(Timestamp - 4611686018427387904)/10000000 - 62135596800,'unixepoch') AS Time,\
* from $name_of_table;" \
> $output_filename
Como estos archivos serán scripts, no olvide agregar la bandera de ejecutable en el archivo:
chmod +x ExportSQL2CSV_*.sh
Luego podemos llamar al script. Aquí está la llamada del script:
./ExportSQL2CSV_ISO.sh <RutaALaBaseDeDatos>
Cuando el script termine, encontrará un archivo CSV con el nombre de su base de datos y el DateTime de la primera entrada de la base de datos como el siguiente:
Ahora tiene un archivo CSV con todos los datos que grabó usando los Componentes de Servicio DataLogger nativos.
Incluso puede ir más allá automatizando la creación de este archivo cada hora o cada día con la herramienta cron.
Si tiene alguna pregunta o comentario, no dude en contactarnos.
Tecnología Industrial
- Uso de la interfaz de línea de comandos con SPICE
- De CM a EMS a MSP: Trazando la Evolución de la Manufactura Electrónica
- La COVID-19 destaca el papel crucial de la impresión 3D en la sanidad
- Maximiza el ROI de tu Inversión en Generación de Leads
- Las 4 Industrias Revolucionadas por el Machine Learning
- Integrar ISO 9001 en la estrategia de manufactura: impulsando calidad y crecimiento
- Servir archivos estáticos sin esfuerzo con Go: Un enfoque probado
- Poblar una clase C++ desde XML usando IXMLSerializable en PLCnext
- ¿Qué es una Lima de Banco? Guía Completa de la Herramienta Esencial para Madera y Metal
- Manejo de archivos en C: Dominando E/S con fopen, fprintf, fread y fseek
- Entendiendo los Archivos de Cabecera en C: Tipos, Uso y Buenas Prácticas