- myems/myems-modbus-tcp/acquisition.py
这段代码是一个用于从Modbus TCP设备采集数据并存储到MySQL数据库的Python脚本。它主要包含以下几个部分:
1 导入必要的库:包括处理JSON、数学运算、异步操作、时间、日期、十进制数、MySQL连接以及Modbus TCP通信等。
- 检查主机和端口的连通性:使用telnetlib3库异步地检查与Modbus TCP设备的连接是否成功。
- 数据采集流程:
- 步骤1: 检查与Modbus TCP设备的连接。
- 步骤2: 从系统数据库中获取数据点列表。
- 步骤3: 从Modbus TCP设备读取数据点的值.。
步骤4: 将采集到的数据批量插入历史数据库,并更新最新值。
4.数据采集和处理逻辑:
- 使用while True循环不断进行数据采集。
- 在每次循环开始时,首先检查与Modbus TCP设备的连接。
- 从系统数据库中获取需要采集的数据点列表。
- 对每个数据点,根据其配置(如地址、功能码、偏移量等)从Modbus TCP设备读取值。
- 将读取到的数据按照数据点的类型(模拟值、能量值、数字值)分类,并进行相应的处理,如字节交换、应用比例因子等。
- 将处理后的数据批量插入到历史数据库中,并更新每个数据点的最新值。
- 在每次数据采集周期结束后,休眠指定的时间间隔,然后重复上述过程。
5.错误处理和日志记录: 在数据采集过程中,如果遇到任何错误(如数据库连接失败、Modbus通信错误等),脚本会记录错误信息,并根据情况决定是否重试或跳过当前数据点。
6.数据库操作: 脚本涉及到与两个MySQL数据库的交互——系统数据库和历史数据库。系统数据库用于存储数据点的配置信息,历史数据库用于存储采集到的数据值。
7.配置文件: 脚本使用config模块来获取数据库连接和其他配置信息。
8.字节交换功能: 对于某些Modbus设备,可能需要对读取到的数据进行字节交换,脚本中包含了处理32位和64位数据的字节交换函数。