亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

将本地 PLCnext 数据记录器中的数据库转换为 CSV 文件

记录工业应用中的值是许多客户的主要特征,在某些应用中变量的数量可能非常多,因此需要一种本地且简单的方法来配置此数据记录。

下面我们将深入了解本机数据记录服务组件,看看我们如何从该服务生成 CSV 文件。


您可以在这些链接中找到有关数据记录服务组件的更多信息:

您已经配置了数据记录会话,您将拥有一个包含所有变量记录值的 *.db 文件。这个 *.db 文件是一个数据库文件,但是如果我们想浏览这些值,这种格式需要像 Sqlite3 或 DB Browser 这样的工具。

许多客户已经熟悉 *.csv 文件,因此我们将了解如何将此数据库导出为 csv 文件。每个 PLCnext 控制器中的 Sqlite3 工具都提供了进行此导出所需的所有工具。

创建数据库时,我们可以为数据库设置我们想要的名称,但我们不能为数据库中包含这些值的表设置特定名称。幸运的是,Sqlite3 工具可以通过显示数据库中存在的表来帮助我们,使用命令“Sqlite3 .tables”。
您可以在 Sqlite3 的帮助页面或此页面中找到所有具体命令:Sqlite3。

当我们知道表名后,我们就可以从这个表中选择所有数据,并将这些数据导出到一个csv文件中。

为了简化这个过程,我将链接您两个脚本以从数据库中导出。
当然,您可以根据需要调整脚本!

很遗憾,我们无法上传 *.sh 文件,所以下面你会看到这两个文件的内容。

一、ISO8601 Timestamp 格式的文件:

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 文件,其中包含您的数据库名称和数据库第一个条目的 DateTime,如下所示:

您现在拥有一个 CSV 文件,其中包含您使用本机 DataLogger 服务组件记录的所有数据。

您可以通过使用 cron 工具每小时或每天自动创建此文件来更进一步 .

如果您有任何问题或意见,请随时与我们联系!


工业技术

  1. 命令行界面
  2. 将真值表转换为布尔表达式
  3. C 文件处理
  4. C - 头文件
  5. 从 CM 到 EMS 再到 MSP:一个行业的演变
  6. COVID-19 将 3D 打印推向了聚光灯下
  7. 我如何从潜在客户开发投资中获得最大收益?
  8. 从机器学习中受益最多的 4 个行业
  9. 将 ISO 9001 标准整合到制造商的战略中
  10. 什么是铣刀?
  11. 使用 Go 提供静态文件
  12. 使用 IXMLSerializable 接口从 XML 文件填充类