データベースをネイティブの PLCnext Datalogger から CSV ファイルに変換する
産業用アプリケーションから値をログに記録することは、多くの顧客の主な特徴であり、一部のアプリケーションでは変数の数が非常に多くなる可能性があるため、このデータログを構成するためのネイティブで簡単な方法が必要です。
以下では、ネイティブの Datalogging サービス コンポーネントについて詳しく説明し、このサービスから CSV ファイルを生成する方法を確認します。
Datalogging Service コンポーネントの詳細については、次のリンクを参照してください:
- データロガーの構成と OPC UA 履歴アクセスからの使用
- リアルタイム データロガー – PLCnext Info Center
Datalogging セッションを構成すると、ログに記録されたすべての変数値を含む *.db ファイルが作成されます。この *.db ファイルはデータベース ファイルですが、値を参照するには、この形式に Sqlite3 や DB ブラウザなどのツールが必要です。
多くの顧客は既に *.csv ファイルに精通しているため、このデータベースを csv ファイルにエクスポートする方法を説明します。すべての PLCnext コントローラに存在する Sqlite3 ツールは、このエクスポートを行うために必要なすべてのツールを提供しています。
データベースが作成されると、データベースに必要な名前を設定できますが、値を含むデータベースに存在するテーブルに特定の名前を設定することはできません。幸いなことに、Sqlite3 ツールは、コマンド「Sqlite3
特定のコマンドはすべて、Sqlite3 のヘルプ ページまたはこのページ Sqlite3 にあります。
テーブルの名前がわかれば、このテーブルからすべてのデータを選択し、このデータを csv ファイルにエクスポートできます。
プロセスを少し簡単にするために、2 つのスクリプトをリンクして、データベースからエクスポートを作成します。
もちろん、ニーズに合わせてスクリプトを変更できます!
残念ながら、*.sh ファイルをアップロードできないため、以下に 2 つのファイルの内容を示します。
まず、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 タイムスタンプ形式の 2 番目のファイル:
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>
スクリプトが完了すると、次のようなデータベースの名前とデータベースの最初のエントリの DateTime を含む CSV ファイルが見つかります:
これで、ネイティブの DataLogger サービス コンポーネントを使用して記録したすべてのデータを含む CSV ファイルができました。
ツール cron
を使用して、このファイルの作成を毎時間または毎日自動化することで、さらに先へ進むことができます。 .
ご質問やご意見がございましたら、お気軽にお問い合わせください!
産業技術