一、概述
QCPFrame 全称Qt-based Commonly-used Plugin Framework。它是一个开源的基于Qt的跨平台插件开发框架,旨在提高基于PC及Linux平台下工控软件设计的通用性,重用性,高效性,可裁剪性,松耦合性。在QCPFrame中,您可以基于控制台或者服务来运行最小插件系统,也可以通过view editor(也是一个插件)来编辑带有UI的桌面程序。在QCPFrame中,一切皆插件,甚至一个后台功能,菜单项,工具栏项,状态栏项,dock片都可以是一个插件。插件在编辑和配置插件,包括它自己,这一切就像是在搭积木,使得模块开发人员只用专注于本模块的开发,而无需过多关注软件系统最终的集成。
二、应用案例
本章节所述案例都是在QCPFrame的基础上进行二次开发,增加业务层,这包括业务层模型和业务层插件,业务层模型(Model)是业务层其他模块与QCPFrame的Core和View通讯的中介,它使QCPFrame所有特性为该业务方向服务。
1. 航空自动测试系统
自动测试系统具有自动化测试程度高,量产效率高等特征,被广泛应用于测试测量系统中,该案例用于航空自动化测试系统。
1.1原生模块:
QCPF_Model,QCPF_ViewModel,QCPF_HostView,QCPF_PluginManager,QCPF_SystemManager,QCPF_UserManager,QCPF_ViewEditor。
1.2 二次开发模块:
ATSModel(自动测试业务层模型),Information(信息输出插件),FileExplore(文件浏览器插件),Logger(日志输出插件),UI-3500(某UUT测试序列插件),Self-Check(系统自检插件),Report(测试报告预览、打印插件)。
1.3 说明
在完成二次开发后,QCPFrame摇身一变成为“插件式自动测试开发平台”,即开发者在QCPFrame框架下基于ATSModel业务开发“自动测试序列插件”,每多使能一个“自动测试序列插件”在下图左侧“测试程序”下拉框就会多一个可选项。ATSModel用于控制测试程序的开始,停止,暂停,测试序列管理,测试信息输入,测试项管理等一系列业务。它是测试序列与QCPFrame沟通的桥梁。
另外,在该项目中,FileExplore(文件浏览器插件),Logger(日志输出插件)两个模块被设计成与业务无关,他们基于QCPF_Model的通用特性,使得其能够被后续其他业务方向的平台二次开发所重用。
图1. 基于QCPFrame的航空自动测试平台
图2. 航空自动测试平台系统管理器
图3. 航空自动测试平台测试序列插件管理器
图4. 航空自动测试平台UI编辑器
2. 无人机监控系统
无人机监控系统用于地面站系统对无人机进行监视,控制,飞行任务下发,数据下载等功能。
2.1原生模块:
QCPF_Model,QCPF_ViewModel,QCPF_HostView,QCPF_PluginManager,QCPF_SystemManager,QCPF_UserManager,QCPF_ViewEditor。
2.2 二次开发模块:
UAVModel(无人机监控系统业务层模型),无线电数传插件,数据采集插件,数据分析插件,图像处理插件,地理位置插件,路径规划插件,机载计算机管理插件,mqtt通讯插件,系统自检插件,日志输出插件,测试报告预览、打印插件等。
2.3 说明
在完成二次开发后,QCPFrame变为“插件式无人机监控开发平台”,即开发者在QCPFrame框架下基于UAVModel业务开发“地面站业务相关插件”。UAVModel是地面站业务层与QCPFrame沟通的桥梁。
图5. 基于QCPFrame的地面站平台
3. 分布式机床数据采集系统
用于实时采集机床温度,声音及震动信号,通过Mqtt协议分发数据到订阅端。
3.1原生模块:
QCPF_Model,QCPF_ViewModel,QCPF_HostView,QCPF_PluginManager,QCPF_SystemManager,QCPF_UserManager,QCPF_ViewEditor,QCPF_Mqtt。
3.2 二次开发模块:
MachineAcqModel(机床数据采集业务层模型),图表显示插件QCPF_CustomPlot,QCPF_Mqtt。在实际设计过程中,尽量向着通用,松耦合方式开发,便于后期重用。
3.3 说明
该项目通过Mqtt将采集到得数据发布给多个Web订阅端,用于分布式远程教学。在完成二次开发后,QCPFrame变为“分布式机床数据采集系统”,即开发者在QCPFrame框架下基于MachineAcqModel业务开发“数据采集业务相关插件”。MachineAcqModel是采集系统业务层与QCPFrame沟通的桥梁。
图6. 基于QCPFrame的分布式数据采集系统