首页
学习
活动
专区
圈层
工具
发布

MyEMS核心代码解读001

myems/myems-modbus-tcp/acquisition.py

这段代码是一个用于从Modbus TCP设备采集数据并存储到MySQL数据库的Python脚本。它主要包含以下几个部分:

导入必要的库:包括处理JSON、数学运算、异步操作、时间、日期、十进制数、MySQL连接以及Modbus TCP通信等。

检查主机和端口的连通性:使用telnetlib3库异步地检查与Modbus TCP设备的连接是否成功。

数据采集流程:

步骤1:检查与Modbus TCP设备的连接。

步骤2:从系统数据库中获取数据点列表。

步骤3:从Modbus TCP设备读取数据点的值。

步骤4:将采集到的数据批量插入历史数据库,并更新最新值。

数据采集和处理逻辑:

使用while True循环不断进行数据采集。

在每次循环开始时,首先检查与Modbus TCP设备的连接。

从系统数据库中获取需要采集的数据点列表。

对每个数据点,根据其配置(如地址、功能码、偏移量等)从Modbus TCP设备读取值。

将读取到的数据按照数据点的类型(模拟值、能量值、数字值)分类,并进行相应的处理,如字节交换、应用比例因子等。

将处理后的数据批量插入到历史数据库中,并更新每个数据点的最新值。

在每次数据采集周期结束后,休眠指定的时间间隔,然后重复上述过程。

错误处理和日志记录:在数据采集过程中,如果遇到任何错误(如数据库连接失败、Modbus通信错误等),脚本会记录错误信息,并根据情况决定是否重试或跳过当前数据点。

数据库操作:脚本涉及到与两个MySQL数据库的交互——系统数据库和历史数据库。系统数据库用于存储数据点的配置信息,历史数据库用于存储采集到的数据值。

配置文件:脚本使用config模块来获取数据库连接和其他配置信息。

字节交换功能:对于某些Modbus设备,可能需要对读取到的数据进行字节交换,脚本中包含了处理32位和64位数据的字节交换函数。

这段代码实现了一个完整的数据采集流程,包括与设备的通信、数据的读取和处理、以及数据的存储。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OIO1MnlO8NoernHSOt1v3jdw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券