将pymodbus读取的数据存入数据库
时间: 2024-02-27 11:53:49 浏览: 100
好的,以下是一个将pymodbus读取的数据存入SQLite3数据库的示例代码:
```python
# 导入modbus库和sqlite3库
from pymodbus.client.sync import ModbusTcpClient
import sqlite3
# 定义Modbus客户端连接地址和端口号
client = ModbusTcpClient('localhost', port=502)
# 连接Modbus服务器
client.connect()
# 读取保持寄存器(Holding Registers)
holding_registers = client.read_holding_registers(0, 10)
# 关闭Modbus客户端连接
client.close()
# 将读取结果存入SQLite3数据库
conn = sqlite3.connect('data.db') # 连接数据库
c = conn.cursor() # 创建游标
# 创建表格
c.execute('''CREATE TABLE IF NOT EXISTS holding_registers
(id INTEGER PRIMARY KEY AUTOINCREMENT,
address INTEGER,
value INTEGER,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP)''')
# 插入数据
for i, value in enumerate(holding_registers.registers):
address = i
c.execute('INSERT INTO holding_registers (address, value) VALUES (?, ?)', (address, value))
# 提交更改
conn.commit()
# 关闭数据库连接
conn.close()
```
以上代码使用sqlite3库创建一个名为data.db的SQLite3数据库,并在其中创建一个名为holding_registers的表格,用于存储Modbus保持寄存器的地址、值和时间戳。读取Modbus保持寄存器后,将每个地址和值插入到表格中,并提交更改。您可以根据自己的需要修改表格结构和插入数据的方式。
阅读全文