知识讲堂|SQLite在PLCnext上的应用
- 关键词:菲尼克斯,SQLite,PLCnext
- 摘要:SQLite是一款轻量级的开源的嵌入式数据库,是包含在C库中的关系型数据库管理系统 (RDBMS)。与许多其他客户端-服务器型数据库管理系统不同的是,SQLite不是个程序与之通信的独立进程,而是被直接嵌入到了最终程序中成为了它的一个重要组成部分。
SQLite是一款轻量级的开源的嵌入式数据库,是包含在C库中的关系型数据库管理系统 (RDBMS)。与许多其他客户端-服务器型数据库管理系统不同的是,SQLite不是个程序与之通信的独立进程,而是被直接嵌入到了最终程序中成为了它的一个重要组成部分。
SQLite是如何工作的?
SQLite 是将整个数据库(定义、表、索引和数据本身)作为单个跨平台文件存储在主机上的。它通过在写入期间锁定整个数据库的文件来实现这种简单的设计。SQLite 读取操作可以是多任务的,但写入只能按顺序执行。由于采用无服务器设计,SQLite 应用程序比客户端-服务器型数据库需要更少的配置。SQLite 被称为 zero-conf,因为它不需要服务管理(如启动脚本)或基于 GRANT 和密码的访问控制。其访问控制是通过赋予数据库文件本身的文件系统权限来处理的。
SQLite有什么特点?
SQLite作为一款相对轻型的数据库,具有体积小,性能高,可移植性强的特点。它最低只需要几百KB内存就可以正常运行,同时能以极快的运行速度在各类32位和64位OS系统中部署。
SQLite 作为 SQL 兼容的数据库管理系统(DBMS),不像大多数 SQL 数据库系统那样为列分配类型,而是使用了一个不寻常的类型系统将其分配给单独的值;在语言方面,它是动态类型的。此外,SQLite还可以将字符串插入到整数列中,使得其在绑定到动态类型的脚本语言时增加了列的灵活性。
SQLite的表单通常包括一个隐藏的 rowid 索引列,这使得更快地访问表单中的数据成为可能。比方说如果数据库中包含整数主键列,SQLite 就会将其视为 rowid 的别名来优化它,使得其内容存储为严格类型的 64 位有符号整型,并将其行为更改为自动递增列。
融合SQLite的PLCnext系列控制器
菲尼克斯PLCnext系列控制器集成了SQLite数据库功能,其可以通过DataLogger这一PLCnext系统服务组件将项目工程运行中的实时数据从全局数据空间(GDS)传输到Linux层的数据库中以进行记录和存储。
当我们启动PLCnext控制器时,Datalogger服务也将随之启动。然后DataLogger 就会以给定的采样率收集与配置的 GDS 端口的 ESM 任务同步的值,并将它们与时间戳(精确到 1 µs)一起存储到 RAM 磁盘中。
在标准设置下,数据库以 SQLite 兼容方式存储在 PLCnext 控制器上。配置变量的值保存在 SQLite 数据库内的表中。控制器上后缀为*.db的数据库文件的默认保存路径是 /opt/plcnext。由于控制器的文件系统可以通过 SFTP 协议访问,为此我们可以使用合适的 SFTP 客户端软件例如 WinSCP对这数据库文件进行进一步操作。另外,DataLogger服务既可通过配置.xml文件配置,也可以如下图所示直接在PLCnext Engineer编程软件中进行配置,变更之后的配置将在控制器重启后被激活。
在PLCnext Engineer软件PLANT窗口,双击PLCnext进入Data Logger Sessions窗口即可进行Datalogger配置。
PLCnext结合数据库的应用,
让我们可以轻松实现数据存储,
实现3T融合:
为IoT应用提供更多的解决方案!