Преобразование баз данных из собственного регистратора данных PLCnext в файлы CSV
Регистрация значений из промышленного приложения является основной характеристикой для многих клиентов, а в некоторых приложениях количество переменных может быть очень большим, поэтому требуется собственный и простой способ настройки регистрации данных.
Ниже мы углубимся в собственный компонент службы регистрации данных и посмотрим, как мы можем сгенерировать CSV-файл из этой службы.
Вы можете найти дополнительную информацию о компонентах службы регистрации данных по этим ссылкам:
- Настройка регистратора данных и его использование в режиме архивного доступа OPC UA
- Регистратор данных в реальном времени — Информационный центр PLCnext
После настройки сеансов регистрации данных у вас будет файл *.db, содержащий все зарегистрированные вами значения переменных. Этот файл *.db является файлом базы данных, но для этого формата требуется инструмент, такой как Sqlite3 или DB Browser, если мы хотим просмотреть значения.
Многие клиенты уже знакомы с файлами *.csv, поэтому мы увидим, как сделать экспорт этой базы данных в файл csv. Инструмент Sqlite3, присутствующий в каждом контроллере PLCnext, предоставляет все необходимые инструменты для выполнения этого экспорта.
Когда база данных создана, мы можем установить имя, которое мы хотим для базы данных, но мы не можем установить конкретное имя для таблицы, присутствующей в базе данных, содержащей значения. К счастью, инструмент Sqlite3 может нам помочь, показывая таблицы, присутствующие в базе данных, с помощью команды «Sqlite3
Вы можете найти все конкретные команды на странице справки Sqlite3 или на этой странице:Sqlite3.
Когда мы знаем имя таблицы, мы можем выбрать все данные из этой таблицы и экспортировать эти данные в файл csv.
Чтобы немного облегчить процесс, я свяжу вам два скрипта для экспорта из базы данных.
Конечно, вы можете адаптировать скрипт под свои нужды!
К сожалению, мы не можем загружать файлы *.sh, поэтому ниже вы увидите содержимое двух файлов.
Во-первых, файл для формата временной метки 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 .ta) #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
И второй файл для формата RAW Timestamp:
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 .ta) #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
Поскольку эти файлы будут скриптами, не забудьте добавить к файлу флаг исполняемого файла:
chmod +x ExportSQL2CSV_*.sh
Затем мы можем вызвать скрипт. Вот вызов скрипта:
./ExportSQL2CSV_ISO.sh <PathToDatabase>
Когда сценарий будет выполнен, вы найдете файл CSV с именем вашей базы данных и датой и временем первой записи базы данных, как показано ниже:
Теперь у вас есть CSV-файл со всеми данными, которые вы записали с помощью собственных сервисных компонентов DataLogger.
Вы можете пойти еще дальше, автоматизируя создание этого файла каждый час или каждый день с помощью инструмента cron
. .
Если у вас есть какие-либо вопросы или замечания, не стесняйтесь обращаться к нам!
Промышленные технологии
- Интерфейс командной строки
- C Обработка файлов
- C — заголовочные файлы
- От CM к EMS к MSP:эволюция отрасли
- COVID-19 привлек внимание к трехмерной печати
- Как получить максимальную отдачу от инвестиций в генерацию лидов?
- 4 отрасли, которые больше всего выигрывают от машинного обучения
- Интеграция стандарта ISO 9001 в стратегию производителей
- Что такое файл Mill?
- Обслуживание статических файлов с помощью Go