基于Qt的农用电机速度数据采集与处理系统
陈 翔,张 果*,王剑平,杨晓洪,陈伟松
(昆明理工大学信息工程与自动化学院,云南昆明 650500)
摘要采用可跨平台图形界面开发工具Qt,设计了农业用电机速度采集与处理系统。该软件既可以作为一款虚拟仪器在PC机上运行,同时也可移植到ARM处理器的Linux平台上作为一款便携式仪器。系统通过采集电机控制板串口传来的实时电机速度数据,自动描绘电机速度曲线,方便直观观察电机速度启动和运行时的情况,同时可自动分析电机达到给定速度值的响应时间,最大速度,超调情况,有助于在农业上进行电机性能的分析。
关键词数据采集;农用电机; 速度; Qt
中图分类号S126;TH89
基金项目国家自然科学基金(61364008);云南省自然科学基金(2010CD044)。
作者简介陈翔(1989-),男,硕士研究生,研究方向:嵌入式系统。*
收稿日期2015-06-02
Data Acquisition and Processing System of Agricultural Motor Speed Based on Qt
CHEN Xiang, ZHANG Guo*,WANG Jian-ping et al (College of Information Engineering and Automation, Kunming University of Science and Technology, Kunming, Yunnan 650500)
AbstractThe system of motor speed acquisition and processing is designed, which adopt the cross-platform graphical interface development tools Qt. The software can be either as a virtual instrument in PC operation, or transplanted to the LINUX platform based on the ARM processer as a portable instrument. The system draw motor speed curve automatically by collecting the real-time speed data from the serial port of motor control board. By this way, it is convenient and intuitive to observe the situation of motor speed when the motor up or run. At the same time, the system can automatically analyze the response time, the maximum speed, overshoot amount. It can analyze the performance of the motors in agriculture.
Key words Data acquisition; Agricultural motor; Speed; Qt
随着现代农业自动化的迅速发展,电机在农业方面的应用越来越广泛。电机运行时的速度控制成为电机整体控制的一大关键,而如何有效观察电机速度并分析又成了一大关键。单靠直接获取到的一堆电机速度数据进行逐一分析显得不直观且费时间。因此,为了直观观察电机速度运行情况,有必要采集电机速度数据并绘制成速度曲线,同时通过软件对曲线进行自动分析。
该文采用了扩展性,移植性强并且可跨平台的QT开发工具[1]和串口、Qwt扩展库,设计了一款可进行电机速度采集与处理的跨平台软件。该软件仪表界面X轴单位秒,Y轴单位为转每分,通过串口实时获取电机控制器实时传送过来的电机数据并描绘成速度曲线图,在需要曲线分析的情况下可点击曲线分析按键进行分析给定速度值的响应时间,最大速度,超调情况。该软件可在PC机运行,相当一款虚拟仪器。同时移植到基于CORTEX-A9的Linux平台上,成为一台应用于电机速度曲线绘制的便携式仪器。
1 系统硬件
采用Qt开发的电机速度数据采集与处理系统作为一款虚拟仪器的同时,也可作为一款便携式电机速度采集与处理仪器[2]。该便携式仪器主要采用飞思卡尔公司生产的。CORTEX-A9处理器和7寸电容屏。使用时,通过CORTEX-A9处理器的串口连接到电机控制板上的串口实时获取电机速度数据并自动描绘曲线显示在7寸电容屏上。
采用Qt开发的程序很容易移植到CORTEX-A9上的Linux平台。由于Qt的跨平台性,在开发程序阶段,程序可在x86平台上的PC机完成开发同时也可作为上位机在PC机上运行并进行调试,只要把电机控制板的串口连接到电脑的串口,打开程序的串口,便可实时接收电机速度数据并同时绘制电机速度曲线图,通过观察曲线图便可验证程序的正确与否,加快程序的开发速度。在程序开发结束后,可采用Qt的ARM版本 qmake编译工具,便可编译成可移植到CORTEX-A9平台上的软件,完成便携式仪器的制作。
2 系统软件设计
软件设计主要分为数据采集通信模块,绘图模块和曲线分析模块。采用Qt图形用户界面编程工具Qt Designer进行软件界面设计和采用信号-槽(signals and slots)机制进行程序设计。由于Qt库具有良好的扩展功能,在没有串口库和仪器仪表界面库的情况下,可采用第3方的扩展库或自己编写的库进行扩展。这里主要采用第3方的qextserialport类串口库和Qwt图形库进行扩展。Qwt库提供了仪表盘,圆盘,画布,坐标轴,指南针等基础GUI组件,采用这些GUI组件可以做出优秀的仪器仪表软件界面。软件设计结构如图1。
图1 软件设计结构
2.1数据采集通信模块
2.1.1 串口通信模块。qextserialport类是基于Qt程序串口类[3],在windows系统和linux系统都适用。在软件设计中串口参数设置中,主要用到qextserialport类中设置波特率setBaudRat(BaudRateType)函数,设置数据位setDataBits(DataBitsType)函数,设置校验位setParity(ParityType)函数,设置停止位setStopBits(StopBitsType)函数这几个函数。
在设置串口端口时,由于linux平台和windows平台有所差别,为了使得代码能兼容两个平台,如下面代码所示,采用预定义的方法,Qt编译器会根据不同平台进行选择编译。同时最后一行实现了信号与槽的连接,当串口接收到数据以后,会调用readMyCom函数。
#ifdef Q_OS_LINUX
myCom=newQextSerialPort(“/dev/”+portName);
#elif defined (Q_OS_WIN)
myCom= new QextSerialPort(portName);
#endif
connect(myCom,SIGNAL(readyRead()),this,SLOT(readMyCom()));
需要注意的是,进行读取电机速度数据时,在读取数据函数myCom->readAll()前加判断语句if(myCom->bytesAvailable()>8), if(myCom->bytesAvailable()>8)这条语句是让串口缓冲区有了一定大于8个字节的数据后再读取,这样使得电机控制板发送过来的速度数据完整,比如电机控制板串口发送(速度为2 500 r/min)给软件,如果不加语if(myCom->bytesAvailable()>8),会使得软件有可能第一次收到250 r/min数据,第2次收到0 r/min,产生的电机速度曲线波形会严重失真。
2.1.2 数据采集频率设置。电机控制板串口会按照一定的频率实时送电机速度数据到采集软件上,为了使得采集的每个速度数据在软件曲线绘制界面上显示都有对应的时间,需要在软件界面上进行电机速度数据采集频率设置,电机速度采集频率和电机控制板串口实时发送速度数据的频率是一样的。
2.1.3 保存数据。 为了方便分析电机速度数据,可在软件界面上点击保存功能,可保存电机速度数据及对应时间,同时在读取电机速度数据时,可点击读取按键打开保存的电机数据文件,方便日后分析。
2.2绘图模块 绘图模块采用了第3方提供的Qwt库的QwtPlot类,是一个二维绘图部件,提供了画布与二维坐标轴。在QwtPlot的画布上可以显示无限绘画组件。这些绘图组件包括曲线(QwtPlotCurve),标签(QwtPlotMarker),网格(QwtPlotGrid),或者其它任意的从QwtPlotItem派生出来的子类。通过这些绘图组件,实现电机速度曲线的绘制。具体实现如下。
2.2.1 设置背景。 首先是设置画布网格,画布颜色,曲线颜色等,画布其实就是电机速度曲线的背景,类似实物信号示波器上的背景。具体实现如下:
(1)设置画布颜色。
ui->qwtPlot->canvas()->setPalette(QPalette (QColor(Qt::darkCyan)));
(2)设置画布网络。
QwtPlotGrid *grid = new QwtPlotGrid;
(3)设置曲线颜色为红色。
curve->setPen(QPen(Qt::red,3, Qt::SolidLine));
2.2.2 绘制曲线。 在绘制曲线时,需要一个数据容器进行存储采集从电机控制板串口传过来的数据。采用Qt常用的普通容器QVector类进行存储数据,QVector类是一个提供动态数组的模板类。它将自己的每一个数据存储在连续的内存中,可以使用索引号来快速访问它们。当串口读取到达到设置的缓冲数据时,会发射readyRead()信号,通过信号与槽的机制触发槽串口函数readMyCom(),在readMyCom()函数中把获取到的串口数据存储QVector容器中。同时设置定时器,每50 s″调用setSamples函数传入容器存储的数据以进行曲线数据的更新,通过attach函数把重新加载数据后的曲线附加到画布上,最后通过replot函数[4]进行重新绘制曲线。具体实现方法如下:
QVector
QVector
xs.append(temp);// 把每次串口获取到的速度数据插入到xs数据存储容器
ys.append(times);//把每次新速度数据对应时间数据插入到ys数据存储容器
每50 s″执行下面语句。
curve->setSamples(xs,ys);//加载曲线数据
curve->attach(ui->qwtPlot);//把曲线附加到画布上;
ui->qwtPlot->replot();//QwtPlot重绘绘制曲线。
2.3曲线分析电机速度采集与处理系统可单一观察电机速度描绘出来的曲线,同时为了便于在进行电机闭环转速控制时观察电机速度曲线的响应时间,超调情况等,在软件界面设置给定电机速度,采集频率后,可点击“曲线分析”按键,便会等待曲线达到稳定状态后计算出达到稳定速度的响应时间,超调情况,期间最大电机速度等。
响应时间是曲线速度从零至到达并停留在稳态值的±5%或±2%的误差范围内所需的最小时间。在此软件设计中响应时间的计算是当给定速度值小于500 r/min时,达到并停留在给定速度值的±5%范围内所需要的最小时间。当给定速度值大于500 r/min,达到并停留在给定速度值的±2%范围内所需要的最小时间。
最大速度值是指电机运行过程出现的最大速度值。
超调情况主要计算曲线速度未到达稳定状态前大于给定速度值的电机速度第一个峰值时的超调情况。
3软件测试
为了验证电机速度数据采集与处理系统的效果,采用了基于闭环转速PID控制的无刷直流电机进行验证。无刷直流电机控制板采用STM32F103VC作为处理器。电机速度通过STM32F103VC处理器检测无刷直流电机的霍尔传感器信号进行运算,运算公式RPM=60/(6×△T×磁极对数)。其中,△T为换一次相所花的时间秒数。将运算后的速度值通过电机控制板串口传到电机速度采集与处理系统。
3.1设置软件参数电机控制板的串口传送数据速率为0.02 kHZ,设置的电机给定值是2 500 r/min,因此在软件界面上输入电机速度给定值2 500,采集频率0.02。如果无需进行曲线分析的话,只需设置采集频率,而不用在软件界面设置给定速度值,设置给定速度值一般针对闭环转速控制情况。同时设置好串口参数,打开串口,点击开始采集数据,启动无刷直流电机,软件就开始自动描绘曲线,由于是PID控制,点击曲线分析按键进行自动分析响应时间,最大速度,超调情况。
3.2测试结果 如图2曲线所示,很直观看出电机速度曲线出现超调情况,通过曲线分析得知电机的最大速度是3 171 r/min,响应时间短,在0.25 s时就达到稳定状态,超调量较大,达到26.840%。响应时间短,不过超调量显示比较大,还需要对比例参数P进行调节。可以看出,电机速度数据采集与处理系统对电机性能分析起到相当良好的作用。
图2 测试介面
4 结束语
采用Qt开发的农用电机速度与处理系统既可以作为一款虚拟仪器在PC机上使用,避免使用实际仪器带来的昂贵成本。又可以移植到ARM平台上作为一款可便携式仪器,该仪器方便携带,避免了在不方便时带着笨重的PC机。由于是采集电机速度,采集速率要求不高,无需使用昂贵的采集卡,利用串口接口就可实现电机速度采集[5],有效降低采集数据成本[6]。该系统可以为电机在农业方面的使用提供一定的技术支持,更好地分析电机的运行情况。且系统能实时动态描绘电机速度曲线,使得观察电机速度运行更加直观,同时可分析响应时间,调节情况,最大速度等电机各方面的性能。
参考文献
[1] 李文帆,刘志刚,伍文城,等.基于Qt的电力系统地理接线图绘制软件设计[J].电力系统自动化,2013,37(7):72-76.
[2] 颜理政,杨阳,彭力,等.基于Qt的电测量仪表校验系统界面[J].计算机系统应用, 2014,23(5):241-244.
[3] 林贤贤,吕冬华,杨永杰,等. 基于Qt的鞋底摩擦力测试软件的设计[J].测控技术,2012,32(7):106-109.
[4] 张宁.基于Qt的虚拟仪器设计与应用[J].测控技术, 2014,33(6):123-126.
[5] 高丹华,杨恋,董庆庆,等.基于QT的高性能超声探伤仪[J].仪表技术与传感器,2014(10):17-18.
[6] 袁碧金,吴雷,李鹏程.基于专家PID控制三相交流斩波调压系统[J].电力电子技术,2010,44(5):82-83.