基于qt的光机电模块化控制软件的设计方法及设备
技术领域
1.本发明涉及光学扫描器件控制软件领域,尤其涉及一种基于qt的光机电模块化控制软件的设计方法及设备。
背景技术:
2.随着光机电一体化的高速发展,软件定义(software defined)相关技术越来越成为研究者们和工程人员关注的热点,其旨在高效便捷地对装配成型的光学器件进行精确调控。传统的人工控制方法往往依赖于人为的现场实地的操控和故障检修,这无疑会大大增大光机电系统的维护成本。
3.针对上述问题,只需一次部署、可支持远程调控的智能化软件定义控制系统被大量研究和应用,其凭借灵活性、无人化等诸多优点在很大程度上推动了光机电一体化的发展。
技术实现要素:
4.本发明的主要目的在于提供一种基于qt的光机电模块化控制软件的设计方法及设备。用于解决光机电一体化领域软件开发流程中出现的硬件适配性差、代码复用性不强、效率低下和逻辑混乱等问题。
5.有鉴于此,本发明第一方面提供了一种基于qt的光机电模块化控制软件的设计方法,其特征在于,所述方法应用于光学扫描类器件调控的控制软件,所述方法包括:通过所述光学扫描类器件调控的控制软件进行工作任务管理,以及扫描电压的用户控制,所述工作任务管理包括滤波;通过所述光学扫描类器件调控的控制软件按照规范数据帧格式与所述光学扫描类器件进行数据通讯;通过所述光学扫描类器件调控的控制软件对所述光学扫描类器件进行数据采集,并对所述光学扫描类器件的关键参数进行监控和实时反馈。
6.可选地,结合第一方面,在一种可能的实现方式中,所述光学扫描类器件调控的控制软件包括:主程序模块、数据通讯模块、用户控制模块、数据采集模块、数据处理模块、图形显示模块;所述主程序模块分别与所述数据通讯模块、所述用户控制模块、所述数据采集模块、所述图形显示模块采用可插拔模式连接。
7.可选地,结合第一方面,在一种可能的实现方式中,所述数据通讯模块包括串口、usb、tcp、udp协议与相应的通信接口,用于所述主程序模块调用或销毁。
8.可选地,结合第一方面,在一种可能的实现方式中,所述光学扫描类器件调控的控制软件在代码层面引入数据通信读写器抽象类,完成实例化之后,所述光学扫描类器件调控的控制软件与微控制器之间数据通讯直接调用读写器对象,所述读写器对象包含接收与发送两个核心模块功能。
9.可选地,结合第一方面,在一种可能的实现方式中,所述用户控制模块可支持固定格式的指令输入与非固定格式的指令输入,支持整型和浮点型数据;采用状态机的思想对收发数据帧进行解析,以避免数据帧在传输过程中的丢包,延迟时间长的问题。
10.可选地,结合第一方面,在一种可能的实现方式中,所述采用状态机的思想对收发数据帧进行解析包括:从数据帧的帧头开始解析,根据状态机的状态不同进行转移,当走到状态机的最后一步时确认数据帧是合法的,进而进行数据处理和反馈操作。
11.可选地,结合第一方面,在一种可能的实现方式中,所述方法还包括:根据数据采集卡构建数据采集子线程类,所述数据采集卡包括发现数据采集卡、启动数据采集卡、开始数据采集卡、暂停数据采集卡、停止数据采集卡和关闭数据采集卡;根据数据采集卡的实际型号,完成库文件函数的初步加载。
12.可选地,结合第一方面,在一种可能的实现方式中,所述方法还包括:通过所述光学扫描类器件调控的控制软件设置数据采集卡的采集频率、数据量程参数,针对所述光学扫描类器件的光信号电压值、光谱进行监控,以根据所述数据处理模块对实时数据的吞吐量进行调整。
13.可选地,结合第一方面,在一种可能的实现方式中,所述图形显示模块,采用数据采样率大于10khz的数据进行折半处理后进行显示;所述数据处理模块,采用fastdtw波形异常检测对红外光信号电压值数据进行实时监控,其算法采用python编码,提供接口供所述主程序模块调用。
14.可选地,结合第一方面,在一种可能的实现方式中,实时监控过程中存在高精度计时器对光扫描类器件的响应时间等参数进行测算,及主要构成为windows api中的queryperformancefrequency和queryperformancecounter,在此基础构建可直接调用的计时器函数。
15.可选地,结合第一方面,在一种可能的实现方式中,所有实时监控相关操作均可由用户进行相关参数设置,开发者可自行设计和实现自己算法模块,做好与主程序模块的接口适配即可。
16.本发明第二方面提供了一种基于qt的光机电模块化控制软件的设计设备,其特征在于,所述基于qt的光机电模块化控制软件的设计设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述基于qt的光机电模块化控制软件的设计设备执行如本发明第一方面及任意一种可能的实现方式所述的基于qt的光机电模块化控制软件的设计方法。
17.本发明第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如本发明第一方面及任意一种可能的实现方式所述的基于qt的光机电模块化控制软件的设计方法。
18.本发明提供了一种基于qt的光机电模块化控制软件的设计方法及设备,该方法包括:通过所述光学扫描类器件调控的控制软件进行工作任务管理,以及扫描电压的用户控制,所述工作任务管理包括滤波;通过所述光学扫描类器件调控的控制软件按照规范数据帧格式与所述光学扫描类器件进行数据通讯;通过所述光学扫描类器件调控的控制软件对所述光学扫描类器件进行数据采集,并对所述光学扫描类器件的关键参数进行监控和实时反馈。这样可以解决光机电一体化领域软件开发流程中出现的硬件适配性差、代码复用性不强、效率低下和逻辑混乱等问题。
19.针对光扫描类器件存在的硬件兼容性差、调控不便捷、人工成本高等问题,以f
‑
p
腔可调谐滤波器作为示例,基于qt开源框架提出了一种基于qt的光机电模块化控制软件的设计方法。提供灵活的驱动电压波形输出,与下位机微控制器之间可按照串口、usb、tcp等多种通信方式进行数据传输,对常见的不同型号数据采集卡做了功能抽象,控制软件与数据采集卡采用usb高速数据通信,同时控制软件通过获取用户的控制信息,进行相应的操作。此外兼容python编码的算法模块,在qt中灵活调用python代码。控制软件能自主进行光扫描类器件的状态监控,并作出实时反馈。
附图说明
20.图1为本发明实施例提供的一种qt create程序设计与开发流程图;
21.图2为本发明实施例提供的一种光学扫描类器件调控的控制软件的系统模块图;
22.图3为本发明实施例提供的一种数据帧格式图;
23.图4为本发明实施例提供的一种数据采集卡调用的流程图;
24.图5为本发明实施例提供的一种用户控制模块的界面示意图;
25.图6为本发明实施例提供的一种基于qt的光机电模块化控制软件整体流程与设计图;
26.图7为本发明实施例提供的一种基于qt的光机电模块化控制软件的设计设备的结构示意图。
具体实施方式
27.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
28.本技术中出现的术语“和/或”,可以是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本技术中字符“/”,一般表示前后关联对象是一种“或”的关系。
29.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。
30.随着光机电一体化的高速发展,软件定义(software defined)相关技术越来越成为研究者们和工程人员关注的热点,其旨在高效便捷地对装配成型的光学器件进行精确调控。传统的人工控制方法往往依赖于人为的现场实地的操控和故障检修,这无疑会大大增大光机电系统的维护成本。针对上述问题,只需一次部署、可支持远程调控的智能化软件定义控制系统被大量研究和应用,其凭借灵活性、无人化等诸多优点在很大程度上推动了光机电一体化的发展。
31.进一步地,光机电扫描类器件的调控方式是工业控制领域关注的热点和重点。比如mems型或压电陶瓷型等光机电扫描类器件一般采用电驱动的方式进行控制,采用mems工艺制备的f
‑
p腔红外可调谐滤波器以低压静电力来驱动移动板,而基于压电陶瓷等驱动单元的f
‑
p腔可调谐滤波器一般以几十伏甚至上百伏的高压使得压电陶瓷伸缩进而驱动可移动反射腔面。当然对于激光雷达这类对角度偏移极为敏感的光机电扫描类器件,除了电驱动控制以外还需要更为复杂的调控手段。值得说明的是,考虑到驱动控制的实时性,用户指定的驱动电压指令一般传输给下位机中的单片机、fpga等微控制器后再进行处理。本发明将主要关注f
‑
p腔滤波器这类光扫描类器件的软件控制的设计方法,可归属于为上位机软件设计内容。
32.因此,光扫描类器件一般需要根据用户需求产生包括锯齿波、正弦波等多个波形的精确电压。此外对于光电信号值、光谱等数据信息的采集也是重要的设计部分,现有技术中往往针对特定的数据采集卡设备开发对应驱动,然后进行调用对应的库函数。这种数据采集卡的开发流程十分繁琐且缺乏统一的数据采集相关接口,十分有必要进行代码层面的抽象,从而提高开发效率。
33.在工业控制软件领域,qt作为一种优秀的开源框架被众多开发者所使用,且各方面性能优化也在持续进行中。qt基于c 编程语言,信号和槽机制来实现构件编程,具有跨平台的优势,兼容windows、linux和ios等多个操作系统。qt有mingw和msvc两个可选用的编译器,为了配合usb adio数据采集卡动态链接库(dll)文件的使用,本实施例选择msvc编译器,为此需要安装visual studio以获取其msvc编译器,在安装前请注意qt与msvc之间的版本对应关系。
34.使用qt creator进行窗体等图形化设计时,有代码编辑和非代码编辑两种方式。代码编辑方式较为繁琐,而非代码编辑方式利用qt creator的图形化构建能力可以设计出各类窗体,交互十分便捷。所以,对于图像化界面的构建本实施例选择非代码编辑方式进行,在构建完图形化界面后再通过代码编写对应的业务逻辑。如图1所示,为qt creator程序设计与开发流程。
35.参见图1,该qt creator程序设计与开发流程可以包括:逻辑设计、图形化界面实现、添加组件、设置组件属性、添加信号插槽、设置信号插槽属性、产生源文件、添加源文件内容、编译调试。
36.光学扫描类器件调控的控制软件主要包括以下模块:主程序模块、数据通讯模块、用户控制模块、数据采集模块、数据处理模块、图形显示模块。下面对各个模块的功能做简要介绍:主程序模块负责调控其他模块,作为qt软件运行的基本载体;图形显示模块提供与用户进行交互的图形界面;数据通讯模块负责上位机控制软件与下位机控制软件之间的数据通信与指令传输;用户控制模块负责用户的指令输入、指令数据帧组合与解析;数据采集模块负责调用数据采集卡设备的库文件,实现对数据采集的相关功能;数据处理模块负责对采集到的数据进行处理并作出相应的反馈动作。各模块之间的交互关系见图2。
37.主程序模块。qt中默认以mainwindow为主窗口程序类,即对应本实施例中的主程序模块类,其除了构建主图形化界面以外,与数据采集相关的业务逻辑也包含在此类中。
38.图形显示模块。本实施例采用数据可视化qt控件qcustomplot作为红外探测器信号数据采集波形显示的控件。qcustomplot可制作高质量2d绘图,图形和图表,以及可视化
应用程序实时的效率,其相比于qchart等其他图形化控件在数据刷新速率、交互形式和个性化设计等方面有很大优势,可支持秒级过万数据点的刷新,这样便可实现波形等图形显示的近实时性。例如针对武汉亚为科技出品的usb adio数据采集卡的采样频率上限为20khz,qcustomplot就完全符合红外光信号波形数据刷新速率要求。同时将qcustomplot作为实时电容测量值曲线的显示控件,可以通过上位机控制电容测量频率,下位机按照设置的电容测量频率采集三路电容测量值然后发送给上位机控制软件进行显示。
39.数据通讯模块。常见的通讯方式包括串口、usb、tcp和udp等,主要含有接收数据和发送数据两大功能。从功能角度考虑,设计数据通讯模块类(datatransfer),其主要包括初始化接口(datatransferinit)、数据接收接口(datarecv)和数据发送接口(datasend)。经过比较各种数据收发方式,强烈建议采用环形队列的方法分别建立数据接受缓冲区和数据发送缓冲区,接收到数据则放入数据接收缓存队列以等待数据处理模块进行提取,需要发送数据时则将需要发送的数据投放至数据发送缓存区,再由数据发送接口直接发送。针对数据传输,本实施例制定的数据帧格式规范为:帧头 主功能字 次功能字 有效数据长度 有效数据 校验和 帧尾,如图3所示。该图3中,数据帧的格式为:帧头 数据长度 消息类型 操作码 有效数据 校验和。
40.数据采集模块。经过调研,常见的数据采集卡型号如下:ni公司出品的cdaq
‑
91xx系列、凌华科技出品的多功能数据采集卡、亚为科技出品的usb adio示波卡等。针对数据采集卡,用户需要根据厂商提供的库文件进行二次开发,windows端以.dll为主,linux端以.so为主,且windows端一般加载dll文件后直接按照函数名调用厂商规定的功能函数,而linux端往往需要用户编写驱动程序。本实施例对数据采集卡的调用流程做了简化设计,便于开发者适配不同型号的数据采集卡,具体流程如图4所示。
41.请参见图4,首先可以导入adio dll,进而查找数据采集卡设备,判断设备数是否大于0,当是时,打开数据采集卡设备;当否时,继续查找数据采集卡设备。打开数据采集卡设备之后,循环采集数据,设置相关参数,继续判断数据长度是否大于0。当判断数据长度大于0时,循环采集数据。当数据长度不大于0时,关闭数据采集卡设备。
42.针对数据采集卡模型,设计对应的数据采集子线程类(daqthread)。daqthread子线程与mainwindow主线程之间通过信号与槽机制进行数据通信,将采集到的数据发送给mainwindow主线程,而mainwindow主线程可以执行发现数据采集卡设备、启动数据采集卡设备、开始数据采集、暂停数据采集、停止数据采集和关闭数据采集卡设备等指令,并可设置数据采集卡的采集频率、数据值量程等参数。
43.用户控制模块,用户可以通过对话框的形式设置f
‑
p腔滤波器的驱动电压特征波形,涉及到特征波形的幅值、偏压、步幅、步长等具体参数。完成波形设置后,向下位机发送设置驱动电压信号的指令。选用qspinbox控件和qdoublespinbox控件作为数据输入口,其中qspinbox控件旨在处理整数和离散值,qdoublespinbox控件则用于处理浮点值,具体的图形界面设计如图5所示。该图5中驱动电压设置可以包括:电压波形设置、幅值、偏压、电压步幅、时间步长、占空比。
44.数据处理模块,本实施例以fastdtw这类异常波形识别算法为示例,开展数据处理算法模块的设计工作。考虑到算法采用python编码的情况,则需要在qt中导入python.h库文件,调用流程如下:使用py_initialize完成初始化,使用pyrun_simplestring按照函数
名调用函数,而py_finalize()用于释放资源。
45.在本实施例中,数据处理算法模块针对于红外光信号波形异常检测,可根据实际需求进行替换,构建相应的算法模型后,与数据采集模块之间约定好调用接口名称即可。
46.图6所示为本实施例的基于qt的光机电模块化控制软件的整体流程与设计图。上位机向下位机发送的指令可分为f
‑
p腔滤波器腔长控制相关指令和电容位移传感器相关指令。f
‑
p腔滤波器腔长控制相关指令包括设置腔长变化的特征波形、锁定当前腔长以及电致动器件驱动控制心跳检查三个部分。
47.请参见图6,开始之后一方面,先连接信号槽函数,打开串口,设置串口参数。向下位机发送腔长控制指令。判断串口接收缓冲区数据长度是否大于8。当大于8时,则解析数据帧。当串口接受缓冲区数据不大于8时,继续向下位机发送腔长控制指令。在解析数据帧之后,判断是否接收到电容测量值数据。当接受到电容测量值数据时,显示电容测量值,并换算出f
‑
p腔的腔长。当未接收到电容的测量值数据时,继续判断串口接受缓冲区数据长度是否大于8。
48.另一方面,开始之后,启动数据采集子线程,加载数据采集卡adio dll文件。进一步采集红外探测器信号数据并显示。判断是否到达中心波长处。当是时,向下位机发送锁定腔长指令,统计相应时间。当未到达中心波长处时,继续采集红外探测信号数据并显示。
49.更进一步的,电容位移传感器相关指令包括设置电容测量频率、电容测量模块心跳检查两个部分。同时利用串口槽函数机制,判断串口接受缓冲区的数据帧长度是否大于8,当然具体的数据帧长度可根据实际需求进行设定。如果接收到的数据帧长度大于8,则进行数据帧的解析;否则,不进行处理。主要是获取下位机发送的电容测量值,进一步进行分析。此外,上位机也接受来自下位机的各种反馈信息。另一方面,上位机通过usb通信实时获取数据采集卡采集到的红外光信号探测器的探测数据,判断是否找到f
‑
p腔可调谐滤波器的中心波长对应的谐振峰。针对不同的光学扫描类器件,涉及到光谱信息、温度信息、加速度信息等复杂数据采集需求时,开发者可建立多个数据采集通道进行并行数据采集,从而提高数据采集的效率,本发明的数据采集抽象类设计十分便于多通道数据采集的扩展。
50.图7是本发明实施例提供的一种基于qt的光机电模块化控制软件的设计设备的结构示意图,该设备300可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(cemtrml processimg umits,cpu)310(例如,一个或一个以上处理器)和存储器320,一个或一个以上存储应用程序333或数据332的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器320和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对该装置300中的一系列指令操作。更进一步地,处理器310可以设置为与存储介质330通信,在装置300上执行存储介质330中的一系列指令操作。
51.设备300还可以包括一个或一个以上电源340,一个或一个以上有线或无线网络接口330,一个或一个以上输入输出接口360,和/或,一个或一个以上操作系统331,例如wimdows serve,nmc os x,umix,limux,freebsd等等。本领域技术人员可以理解,图7示出的基于qt的光机电模块化控制软件的设计设备的结构并不构成限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
52.本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性
计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述基于神经网络的扫描器件位移控制方法的步骤。
53.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
54.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(remd
‑
omly nenory,ron)、随机存取存储器(rmmdon mccess nenory,rmn)、磁碟或者光盘等各种可以存储程序代码的介质。
55.在本技术所提供的实施例中,应该理解到,所揭露的方法,在没有超过本技术的精神和范围内,可以通过其他的方式实现。当前的实施例只是一种示范性的例子,不应该作为限制,所给出的具体内容不应该限制本技术的目的。例如,一些特征可以忽略,或不执行。
56.本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
57.以上对本发明实施例所提供的一种基于qt的光机电模块化控制软件的设计方法及设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
转载请注明原文地址:https://doc.8miu.com/read-1450035.html