Python在电气设备智能检测系统原型实现中的应用
作者:***
来源:《电脑知识与技术》2021年第33期
        摘要:基于人机协同的电气设备智能检测系统,是一个相对比较复杂的系统,为了能够快速验证在系统研发中关键技术的可行性,采用语法优雅功能强大的Python编程语言进行了原型验证。探讨了Python语言在后端接口实现、数据库中的数据存取、系统与设备即时通信,后台定时服务和与算法文件进行信息交互等方面的应用。实践证明采用Python开发语言,能够快速地开发原型系统,满足研发的需要。
        关键词:Python;后端接口;设备通信;算法文件交互;原型验证
        中图分类号:TP312 文献标识码:A
        文章编号:1009-3044(2021)33-0017-03
        开放科学(资源服务)标识码(OSID):
        Application of Python in Prototype Implementation of Intelligent Detection System for Electrical Equipment
        LIU Chuan-zhong1,2,3
        (1.Shanghai Electrical Apparatus Research Institute (Group) Co.,Ltd., Shanghai 200063, China; 2.Shanghai Key Laboratory of Smart Grid Demand Response, Shanghai 200063, China; 3.Research and Development (Experiment) Center of Electrical Equipment for National Energy Smart Grid User Side, Shanghai 200063, China)
        Abstract: The intelligent detection system of electrical equipment based on man-mac
hine cooperation is a relatively complex system. In order to quickly verify the feasibility of key technologies in system development, the prototype verification is carried out by using Python which has elegant syntax and powerful function. This paper discusses the application of Python in the implementation of back-end interface, data access in database, instant communication between system and equipment, background scheduler service and information interaction with algorithm files. Practice has proved that using Python can quickly develop the prototype system and meet the needs of research and development.
        Key words: Python; back-end interface; instant communication; interaction with algorithm files; prototype verification
        1 背景
        随着IT信息、物联网、云计算等技术的快速发展和中国制造2025制造强国战略的全面推进,用户端电气设备的应用与日俱增,相应的产品质量和使用安全问题也不容忽视。目前用户端电气设备生产制造环节的检验手段和工具的智能化在我国仍处于相对初级阶段,不能完
全满足产业快速发展的需要。将机器学习、机器视觉、云计算、物联网等技术应用于用户端电器设备检测系统,解决产品检测环节生产效率较低、质量无法严格保证的问题势在必行。为了快速构建智能电气设备检测系统,验证相关技术的可行性,本课题选用有语法优雅、功能强大的Python作为主要编程语言进行原型开发验证。
        2 原型系统
        如图1所示,电气设备智能检测原型系统由视觉检测器、算法训练服务器和Web服務器(包含数据库)三部分组成。
        视觉检测器由摄像头、触摸屏和人机控制界面组成,一般部署于产品检测生产线,当待检测的产品通过检测器摄像头所对应的工位时,检测器利用在训练服务器上训练好的算法对摄像头按一定的规则所拍摄的产品图片进行智能判定。
        训练服务器采用Ubuntu 20.04系统,由训练集、算法库、模型库、后台服务和接口服务组成,主要用来对算法进行训练。训练服务器搭建Samba服务器[1],允许视觉检测器进行磁盘映射,进行算法文件的获取或照片检测结果的上传等。训练集的图片及标注信息由视觉检
测器定时上传得到。算法库由专门的算法工程师开发调试后部署,可在本地直接启动,也可以在Web页面上操作通过接口服务进行启动。模型库存放算法训练成功后的模型文件,同时相关信息会被更新到MySQL数据库中。后台服务会定时获取训练服务器的CPU和内存使用情况,并将相关信息更新到MySQL数据库中。接口服务提供启动算法训练的Web API接口,供Web服务器上的前端页面进行调用。
        在原型系统中,Web服务器采用Windows 10专业版,由MySQL数据库、MQTT代理服务器、后台服务、Web API接口服务和前端页面组成,主要用来提供人机交互界面对视觉检测器、训练集、算法、模型等信息进行管理。MySQL数据库采用社区版8.0.19,主要用来存储用户角权限信息、检测器信息、算法信息、模型训练信息和系统参数等。MQTT代理服务器我们采用开源消息代理软件Mosquitto 2.0.0以服务的方式在后台运行,开启了密码验证和日志功能,可在f配置文件中进行修改配置,它支持可发布/可订阅的消息推送模式,视觉检测器和后台服务均可以作为客户端发布/订阅相关的主题进行实时信息交互。后台服务程序常驻内存,通过订阅相关的主题,实现对视觉检测器状态汇报数据的实时侦听并及时将状态信息保存到数据库供前端界面读取显示。人机交互功能通过前后端分离的方式进行开发,前端页面采用阿里开源的基于React的前端开发脚手架Ant Design Pro[2],后端
接口采用基于微型的 Python web开发框架Flask。
        3 Python应用
        3.1 Python简介
        Python 是一种易于学习使用又功能强大的开源免费跨平台的编程语言,它提供了高效的高级数据结构,还支持简单有效的面向对象编程。优雅的语法,动态类型,交互式的开发环境,以及解释型语言的本质,使得它成为多数平台上写脚本和快速开发应用的理想语言[3],目前Python已被广泛应用自动化测试与运维、网络爬虫、数据分析与可视化等领域。
        Python具有自动内存管理,支持多种基本数据类型和数据结构,支持面向对象编程和异常捕捉,它提供了强大的标准库且支持扩展,有很多第三方的模块(modules)/包(packages)可以使用,如在科学计算中常用到的[4]数值计算扩展包NumPy(Numeric Python),数据符号计算库SymPy(Symbolic mathematics with Python),面向对象的绘图库Matplotlib,以及本课题中用到的微型的Web 框架-Flask,消息队列遥测传输(MQTT)的Python客户端paho-mqtt,任务调度工具APScheduler等。
        简单来说Python安装后,运行和开发基本可以分为三种方式:交互式解释器、命令行脚本和集成开发环境。为了方便和灵活,本课题采用Anaconda安装Python开发环境,以VSCode作为集成开发环境[5]。
        3.2 后端接口与数据存取
        在本课题中,Web API后台接口部分我们采用开源的轻量级Web应用程序框架-Flask,它实现的核心简单且具有良好的扩展性,既可以开发MVC网络程序,也可以提供具有Restful风格的Web API。虽然该框架没有提供对ORM(Object Ralational Mapping,对象关系映射)的支持把对象模型表示的对象映射到基于SQL的关系模型数据库结构中去,但我们可以采用Flask扩展Flask-SQLAlchemy实现对Mysql数据库的增删改查操作[6]。
        在使用框架的过程中,可以使用route()装饰器来把函数绑定到URL,通过把 URL的一部分标记为<variable_name>就可以在URL中添加变量,使用route()装饰器的methods参数来处理不同的HTTP方法。如下面的代码
        @ute('/api/v1.0/products/<int:pid>', methods=['GET'])
        def getProductEntityById(pid):
        表示函數getProductEntityById支持HTTP的GET方法,可以使用的参数为int型,变量名称为pid,当客户端请求http://192.168.11.124:6688/api/v1.0/2时会调用函数getProductEntityById(2),在此处假定接口服务器所在的IP地址为192.168.11.124,Flask应用运行时使用的端口为6688。
        3.3 即时通信
        在本课题中,为了使视觉检测器和后台服务保持实时通信,采用了构建于TCP/IP协议之上基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议-MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)协议[7]。在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。
正则化匹配26个字母python
        视觉检测器和训练服务器软件均作为Client,经过MQTT Broker代理服务器通过主题(
Topic)发布或订阅的方式进行发送数据或接收数据。在本项目中我们设计了由Web后台服务发起视觉检测器订阅和由视觉检测器发起Web后台服务订阅的两类共6个主题,分别是检测器状态查询(TrainMachine2Detector/DetectorStatus/Inq)、配置检测器参数(TrainMachine2Detector/DetectorPara/Set)、读取检测器参数(TrainMachine2Detector/DetectorPara/Get)和注册通知(Detector2TrainMachine/RegDetectorinfor/Notify)、检测器状态上报(Detector2TrainMachine/DetectorStatus/Resp)、检测器参数上传(Detector2TrainMachine/DetectorPara/Resp)。报文传输的主要内容定义在有效载荷(payload)中,如读取检测器参数时需要知道是要查询哪个视觉检测器,我们定义的其有效载荷采用JSON格式,其示例为:{"ClientID": "DEV-HA202012-0001"}。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。