Changwan
智能化井下仪器在线监测与控制系统

智能化井下仪器在线监测与控制系统

项目背景

  • 背景:智能终端实验室(大三)
  • 时间:2023.08~2024.05
  • 合作企业:湖北三赫智能科技有限公司

塔里木油田在油气探测过程中面临钻头异常损坏问题,导致开采成本显著增加、作业周期不可控。传统人工监测方式存在响应滞后、数据分析粒度粗等问题,需智能化解决方案。


基于PyQt5的Windows终端开发

Windows终端1
Windows终端3
Windows终端4
Windows终端5
Windows终端6
Windows终端7
Windows终端8
Windows终端9
Windows终端10

技术栈:PyQt5 + Bleak + Matplotlib + Websocket 等

开发难点与解决方案

  1. 多设备实时数据采集

    • 难点:需要大量蓝牙传感器进行数据实时采集,数据传输速率高(每秒10个点),多设备响应时间不一致,影响算法效率及页面渲染效果。由于GIL全局解释器锁,多线程无法并行运行,而多进程资源消耗大。
    • 解决方案:采用协程机制,将蓝牙采集模块独立为一个进程,每个传感器数据采集任务创建协程,通过事件循环调度,确保数据采集的高效性和实时性。
  2. 算法实时分析

    • 难点:算法需处理大量数据点并实时报警,使用线程存在性能瓶颈,多进程间数据通信复杂且频繁。
    • 解决方案:将算法模块用C语言编写,通过Cython编译为共享模块(.so文件),在Python中调用,显著提升运行效率。
  3. 内存泄露检查

    • 难点:程序内存泄露排查困难,守护进程导致程序无法正常退出,难以定位问题。
    • 解决方案:使用memory_profiler模块进行内存分析,结合Matplotlib可视化排查,发现蓝牙进程未有效关闭,持续采集数据导致内存泄露。通过优化进程管理解决问题。
  4. TCP粘包问题

    • 难点:与绞车的Socket通信中,因数据传输速率问题导致TCP粘包,macOS开发环境下未出现,打包后运行时出现问题。
    • 解决方案:为TCP数据包添加包头、包尾及包长标识,解决粘包问题,并通过校验确保数据完整性。

基于Tornado与SpringBoot的后端开发

web1
web2
web3
web4
web5
web6
web7
web8
web9
web10

技术栈:Tornado + Redis + MySQL + HDFS + JeecgBoot 等

  1. MySQL与Redis的一致性问题

    • 难点:Redis作为缓存时,MySQL与Redis数据不一致,导致前端页面显示错误。
    • 解决方案:对实时性要求高的数据采用主动更新策略,Redis更新时同步更新MySQL;对实时性要求低的数据采用过期缓存机制,确保数据一致性。
  2. 分布式数据存储

    • 难点:Windows终端采集的大量数据文件、日志文件等存储和处理难度大。
    • 解决方案:搭建HDFS分布式文件存储系统,结合MapReduce对大数据文件进行高效处理。
  3. 系统更新

    • 难点:网络不稳定时,Windows终端更新易中断,影响用户体验。
    • 解决方案:通过心跳机制判断网络状态,采用断点续传方式更新,提升用户体验。

a1
a2
a3

项目成果

  • 成功解决塔里木油田钻头异常损坏问题,降低开采成本,提高作业效率。
  • 通过JeecgBoot框架搭建后台管理系统,提供数据可视化、数据管理、数据统计等功能。
  • 构建分布式数据存储与处理系统,支持大规模数据文件的高效管理。
  • 为企业提供内部通信的APP,便于对企业对一线开发情况的跟踪和沟通。

Author:YiChangwan