毕业设计基于MATLAB的伺服系统在线监控平台设计.docx
《毕业设计基于MATLAB的伺服系统在线监控平台设计.docx》由会员分享,可在线阅读,更多相关《毕业设计基于MATLAB的伺服系统在线监控平台设计.docx(12页珍藏版)》请在冰豆网上搜索。
![毕业设计基于MATLAB的伺服系统在线监控平台设计.docx](https://file1.bdocx.com/fileroot1/2023-1/5/88a4be87-c80d-417a-96d4-b167fa777516/88a4be87-c80d-417a-96d4-b167fa7775161.gif)
毕业设计基于MATLAB的伺服系统在线监控平台设计
1总体介绍
基于MATLAB的在线监控平台是指通过MATLAB软件和USB转CAN总线实现单片机上的数据接收和发送,从而实现伺服系统速度、电流的采集及波形显示;实现对速度的控制。
下文将先介绍MATLAB/GUI界面和USB-CAN总线串口通信技术,然后分析基于MATLAB的GUI设计方法,最后设计一个GUI界面。
随着计算机技术的发展,计算机在信号处理中的应用越来越广泛,并且变得越来越重要,它能使得各种复杂的处理算法得以实现。
但是数据采集到计算机后要进行各种处理,使用VC、VB等编程语言就显得不方便。
由于MATLAB提供功能强大的各种计算,只要几个语句就能实现诸如各种方法的滤波、系统辨识、小波变换等,因此采用MATLAB软件非常适合。
Matlab不仅具有强大的科学计算功能,还具有满足一般要求的数据采集以及,界面设计开发功能。
MatlabGUI(GraphicUserInterface)就是内置于Matlab的进行图形界面开发的模块。
本文利用MatlabGUI设计通过串口进行数据发送和接收的界面,基于Matlab的串口通信通过USB-CAN总线实现串口数据发送与接收功能。
2MATLAB及相关技术
2.1MATLAB的发展现状
MATLAB产品系列被广泛地应用于包括信号与图像处理、控制系统设计、通讯、系统仿真等诸多领域,是集数学计算结果可视化和编程于一体,能够方便地进行科学计算和大量工程运算的数学软件。
它的一大特性就是数据采集,报告生成,和依靠MATLAB语言编程产生独立C/C++代码等等。
其在信号处理中的应用显得越来越重要,使得各种复杂的处理算法得以实现。
MATLAB提供了众多外部函数接口,本文从中选择MEX文件接口作为MATLAB对外界进行读写通道,首先USBCAN接口卡进行设计,接下来以这个接口卡为通道,实现了MATLAB对于硬件的访问。
2.2图形用户界面(GUI)
GUI是由各种图形对象组成的用户界面,在这种用户界面下,用户的命令和对程序的控制是通过“选择”各种图形对象来实现的。
MATLAB中的图形用户界面设计向导包括以下6个工具:
1.布局编辑器(LayoutEdtor)——在图形窗口中创建及布置图形对象。
布局编辑器是可以启动用户界面的控制面板,上述工具都必须从布局编辑器中访问,用guide命令可以启动,或在启动平台窗口中选择GUIDE来启动布局编辑器
2.几何排列工具(AlignmentTool)——调整各对象相互之间的几何关系和位置;
3.对象浏览器(ObjectBrowser)——用于获得当前MATLAB图形用户界面程序中的全部对象信息,对象的类型,同时显示控件的名称和标识,在控件上双击鼠标可以打开该控件的属性编辑器;
4.属性查看器(PropertyInspector)——查询并设置属性值;
5.菜单编辑器(MenuEditor)——创建、设计、修改下拉式菜单和快捷菜单;
6.Tab顺序编辑器(TabOrderEditor)——用于设置当用户按下键盘上的Tab键时,对象被选中的先后顺序。
2.3GUI控件对象类型及描述
控件对象是事件响应的图形界面对象。
当某一事件发生时,应用程序会做出响应并执行某些预定的功能子程序(Callback)。
控件对象及其功能:
1.按钮(PushButtons):
执行某种预定的功能或操作;
2.开关按钮(ToggleButton):
产生一个动作并指示一个二进制状态(开或关),当鼠点击它时按钮将下陷,并执行callback(回调函数)中指定的内容,再次点击,按钮复原,并再次执行callback中的内容;
3.单选框(RadioButton):
单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能在一组状态中选择单一的状态,或称为单选项;
4.复选框(CheckBoxes):
单个的复选框用来在两种状态之间切换,多个复选框组成一个复选框组时,可使用户在一组状态中作组合式的选择,或称为多选项;
5.文本编辑器(EditableTexts):
用来使用键盘输入字符串的值,可以对编辑框中的内容进行编辑、删除和替换等操作;
6.静态文本框(StaticTexts):
仅仅用于显示单行的说明文字;
7.滚动条(Slider):
可输入指定范围的数量值;
8.边框(Frames):
在图形窗口圈出一块区域;
9.列表框(ListBoxes):
在其中定义一系列可供选择的字符串;
10.弹出式菜单(PopupMenus):
让用户从一列菜单项中选择一项作为参数输入;
此外还有坐标轴(Axes)用于显示图形和图像。
MATLAB中的控件大致可分为两种,一种为动作控件,鼠标点击这些控件时会产生相应的响应。
一种为静态控件,是一种不产生响应的控件,如文本框等。
每种控件都有一些可以设置的参数,用于表现控件的外形、功能及效果,既属性。
属性由两部分组成:
属性名和属性值,它们必须是成对出现的。
2.4控件对象的属性
控件对象属性:
第一类是所有控件对象都具有的公共属性,第二类是控件对象作为图形对象所具有的属性。
1.控件对象的公共属性
Parent取值为某个图形窗口对象的句柄,该句柄表明了控件对象所在的图形窗口;
Children取值为空矩阵,因为控件对象没有自己的子对象;
Tag取值为字符串,定义了控件的标识值,在任何程序中都可以通过这个标识值控制该控件对象;
UserDate取值为空矩阵,用于保存与该控件对象相关的重要数据和信息;
Visible取值为no或off。
2.控件对象的基本控制属性
BackgroundColor取值为颜色的预定义字符或RGB数值;
ForegroundColor取值为颜色的预定义字符或RGB数值;
Enable取值为on(缺省值),inactive和off;
Extend取值为四元素矢量[0,0width,height],记录控件对象标题字符的位置和尺寸;
String取值为字符串矩阵或数组,定义控件对象标题或选项内容;
Max,Min取值都为数值;
Callback取值为字符串,可以是某个M文件名或一小段MATLAB语句,当用户激活某个控件对象时,应用程序就运行该属性定义的子程序;
Style取值可以是pushbutton,radiobutton,checkbox,edit,text,slider,frame,popupmenu或listbox;
Value取值可以是矢量,也可以是数值,其含义及解释依赖于控件对象的类型。
3.Callback管理属性
BusyAction取值为cancel或queue;
ButtDownFun取值为字符串,一般为某个M文件名或一小段MATLAB程序;
Creatfun取值为字符串,一般为某个M文件名或一小段MATLAB程序;
DeletFun取值为字符串,一般为某个M文件名或一小段MATLAB程序;
HandleVisibility取值为on,callback或off;
Interruptible取值为on或off。
此外还有控件对象的修饰控制属性和控件对象的辅助属性。
3MATLAB串口通信技术
3.1MATLAB外部函数接口简介
MATLAB具有良好的扩展性以及强大的数据分析能力和处理能力,且拥有一套完整的、功能齐全的编程环境,。
但在某些情况下,与外部环境的数据和程序进行实时交换是非常重要的。
但MATLAB只支持串口和很少一部分硬件,不能实现对数据的实时采集,它所处理的数据必须是现成的。
因此它不能很好地用于需要在现场对数据进行分析和处理。
MATLAB本身是一个跨平台的软件,并不具备直接访问硬件的能力。
即使安装了驱动程序并能正常工作的硬件设备,MATLAB也没有统一的形式对其进行访问。
所以对于USBCAN接口卡的设计完成后,需要选择一种MATLAB的外部接口函数,以便于MATLAB通过USBCAN接口卡对于CAN总线上的数据进行接收和发送。
通过定义串口对象的属性,就能定义串口的通信模式,从串口对象属性也能了解串口的状态。
表1串口对象属性
串口属性 含义
BaudRate定义传输波特率
DataBits定义每帧数据的比特位数
Parity定义奇偶校验类型
StopBits定义用于表示帧结束的比特位数
Terminator定义结束字符
ReadAsyncMode定义异步读操作为连续方式还是手工方式
BreakInterruptFcn定义中断事件的回调函数
PinStatusFcn定义当串口的CD,CTSC,DSR或RI针状态变化时触发的回调函数
3.2USB-CAN总线
本课题设计的CAN-USB转接卡的功能是:
采集CAN总线上的数据,通过USB总线和上位控制站之间进行数据传输。
在通讯方面,一方面要满足CAN总线的协议标准,实现开放性,互操作性,在高速通信的情况下做到拥有较好的抗干扰性能;另一方面,转接卡兼容USB2.0总线,转接卡可以通过USB连接到PC机。
其主要设计参数如下:
数据传输速率:
波特率在5KBPS~1MPS范围内;USB总线标准:
满足USB2.0协议的标准支持CAN2.0B协议(兼容CAN2.0A协议);运行环境:
WindowsXP
设计的具体实现是采用单片机通过控制USB控制芯片,与PC机进行通信,从PC机得到采集数据的指令和向PC机上传数据的指令。
同时,要从CAN网络读取数据分析,所以单片机通过不同的片选信号控制,两个CAN控制芯片,分别能够从两路CAN总线上采集数据,和将从PC机得到的数据通过两个CAN控制芯片分别发送出去。
4GUI设计方法
4.1GUI设计标准
一个优秀的界面基本上符合下面的标准:
1.易用性:
设计界面时力求简洁、直接、清晰的反映界面的功能和特征。
组件名称易懂,用词准确,与同一界面上的其他组件相区分,做到顾名思义。
2.规范性:
通常界面设计都按Windows界面的规范来设计,即包含“菜单条、工具栏、按钮、右键快键菜单”(GUI设计)的标准格式。
3.统一性:
统一性包括使用标准的组件,也指使用相同的信息表现方法,如在字体、标签风格、颜色、术语、显示错误信息等方面保持一直。
4.合理性:
界面大小合适布局简洁、有序、易于操作。
在MATLAB命令行中输入Guide,弹出如图1所示的GUI设计向导控制面板。
MATLAB为GUI设计准备了四种模板,分别为BlankGUI(Default)、GUIwithUicontrols(带控件对象的GUI模板)、GUIwithAxesandMenu(带坐标轴与菜单的GUI模板)与ModalQuestionDialog(带模式问话对话框的GUI模板)。
创建一个MATLAB用户图形界面的基本步骤为:
1.决定这个用户图形界面需要什么样的元素,每个元素需要什么样的函数。
在纸上手动粗略地画出组件的布局图。
2.调用MATLAB工具guide对图像中的控件进行布局。
图像窗口的大小,排列和其中的控件布局都可以利用它进行控制。
3.我们可以用MATLAB属性编辑器(propertyinspector)给每一个控件起一个名字(Tag),还可以设置每一个控件的其他特性,例如颜色,显示的文本等。
4.把图像保存到一个文件中。
当文件保存后,程序将会产生两个文件,文件名相同而扩展名相同。
fig文件包括你创建的用户图形界面,M文件包含加载这个图像的代码和每个GUI元素的主要响应。
5.编写代码,执行每一个与回调函数相关的行为。
4.2创建用户图形界面
选择默认模板,生成如图2所示的模板界面。
在设计界面左边的控件对象区选取所需对象,拖拽到右侧空白区要放置的地方创建该对象。
按照此方法,在空白界面下分别放置了俩个Pop-upMenu(列表框),九个StaticText(静态文本框),九个PushButton(命令按钮),六个EditText(文本编辑框)和四个Frames(边框),调整对象的位置,一个RadioButton(单选按钮)调整对象的位置,形成如图3所示的GUI界面。
图1GUI向导控制面板
图2默认的模板界面
图3创建的模板界面
4.2.1控件的设计
在绝大多数的图形用户界面中都包含控件。
控件是图形对象,它与菜单一起用于建立图形用户界面。
通过使用各种类型的控件,可以建立起操作简便,功能强大的图形用户界面。
与菜单对象一样,可以通过命令行方式与GUI设计工具两种方式来建立控件。
在命令行方式下,可以通过函数uicontrol来建立控件对象。
该函数的调用格式为:
controlhandle=uimenu('PropertyName1',PropertyValue1,…)
controlhandle是创建的控件对象的句柄值;PropertyName1是控件的某个的
属性名,PropertyValue1是与属性名相对应的属性值。
对象属性编辑器在GUI设计向导控制面板中按下PropertyEditor按钮可打开对象属性编辑器。
对象属性编辑器界面分为2个部分:
上部是图形对象列表,列出了所有根对象下的子对象。
包括每个图形窗口对象以及窗口对象中的各控件对象。
用户可以在此选择自己所需要设置的图形对象。
下部的是图形对象的属性列表。
列出了用户所选中的图形对象的所有属性名称以及属性的值。
当用户选中一个属性,则在两个文本框中会分别显示出属性的名称和当前的属性值,可以利用此对其属性的修改。
4.2.1回调函数的编写
回调程序编辑器的打开有如下方法:
A.在GUI设计向导控制面板中按下CallbackEditor按钮。
B.在图形窗口中的Toolw菜单下选择CallbackEditor选项。
一个GUI应用软件的实现,最终是要通过对控件对象的操作来完成,而这些操作必定是通过MATLAB中函数代码的执行来完成的。
函数代码的编制既可以通过编写回调函数完成,然后在编写时可以把该控件的函数代码直接书写在Callback中;也可以把函数代码放在一个自定义的。
M文件中,而在Callback中只将其文件名写上。
在编写回调函数时,handles是一个特别有用的结构数组,它以图形窗口中的所有对象的Tag值为域,存储着所有图形对象的句柄,通过handles可以方便地进行数据调用。
再利用所有对象都具有的UserData属性来进行数据存储、传递,编写一个完美的回调函数就是一件轻而易举的事了。
对控件执行默认操作时,matlab自动执行按钮的callback下的代码。
比如按钮,就是单击按钮一下。
所以对于编程的新人来说,只用在相应函数下,添加自己期望执行的操作代码就可以了。
比如说希望鼠标在控件上单击时执行某写代码,那将代码添加在ButtonDownFcn下就好。
希望在控件销毁(比如说某窗口)时,执行一些代码,那可以把代码添加在DeleteFcn下面。
控件是否支持“单击”,“鼠标划过”“鼠标松开”等等,可以去help查看它的Fcn有哪些。
在控件上右键选择viewcallbacks就可以看见它所支持的常用的回调函数callbacks。
需要对什么进行反应,直接点进去,添加自己的代码就可以了。
5.系统设计
5.1图形功能分析
1.用MATLAB为串口数据采集系统设计界面完成串口参数设置,串口数据采集的开关以及数据读写;
2.设计界面配置数据采集系统的参数,曲线显示界面与图形变换与处理。
5.2软件界面
系统的界面包括了链接设备区,CAN波特率选择下拉菜单,ID方式选择下拉菜单例的滚动条,使用滤波屏蔽滤波单选按钮,链接及释放设备按钮;发送接收测试区发送接收按钮读写数据框;详细设计如图4所示。
图4运行界面窗口
5.3主界面的实现
5.3.1串口选择
使用下拉菜单方式让使用者方便的进行选择设置。
1.CAN波特率选择范围5KBPS~1MPS,如图5所示;
图5波特率选择
2.ID方式选择包括2515方式,SJA方式,右对齐方式。
如图6所示;
图6ID方式选择
5.3.2串口数据参数设置
硬件设备USB-CANA2
Qm_usb.dll是接口DLL;
Qm_usb.dll放置在应用软件Exe文件所在目录下。
函数说明
初始化设备函数:
Init_can(com_NUM,Model,CanBaudRate,SET_ID_TYPE,FILTER_MODE,RXF,RXM)
说明:
本函数用于初始化USB接口,并对CAN总线进行基础设置。
参数:
CanBaudRate:
CAN波特率
com_NUM:
设备连接的端口。
0:
自动选着,其他值:
端口号
Model:
设备类型1:
A1型2:
A2型3:
A3型
SET_ID_TYPE:
值
意义
0
2512方式
1
SJA1000方式
2
右对齐方式
示例
Init_can(com_NUM,Model,CanBaudRate,SET_ID_TYPE,FILTER_MODE,RXF,RXM)
varret:
integer;
REF,RXM:
array[0..3]ofBYTE;
ret:
=Init_can(0,2,20,0,2,@REX,@RXM);//初始化函数演示
5.3.2接收和发送数据函数
发送数据
函数:
Can_sent(IDbuff;Databuff;FreamType,Bytes)
IDbuff:
ID缓冲区四字节数组
Databuff:
数据缓冲区八字节数组
FreamType:
发送的帧类型。
接收数据
函数:
Can_receive(IDbuff;Databuff;FreamType,Bytes)
在连接设备按钮的回调函数callback中写入程序
tt2=handles.text2;
loadlibrary('QM_USB.dll','qm_usb.h')
fm=calllib('QM_USB','Init_can',0,2,400,1,0,[0000],[0000]);
iffm==0
set(tt2,'String','已连接');
set(tt2,'ForegroundColor',[0.20.40.3]);
else
set(tt2,'String','未连接');
set(tt2,'ForegroundColor','red');
end
在释放按钮的回调函数callback中写入程序
tt2=handles.text2;
fm=calllib('QM_USB','Quit_can');
unloadlibrary('QM_USB')
iffm==0
set(tt2,'String','未连接');
set(tt2,'ForegroundColor','red');
end
设计总结
致谢
参考质料
[1]李显宏.MATLAB7.x界面设计与编译技巧[M].北京:
电子工业出版社,2006.
[2]秦襄培.Matlab图像处理与界面编程宝典[M].北京:
电子[J].中国制造业信息化,2008,15(23):
15-18.
[3]李炎新.用Matlab实现高速数据采集自动化[J].测控技术,2007.11.9-13.
[4]余成波,杨箐.数字信号处理及Matlab实现[M].清华大学出版社,2005:
87-126.
[5]陈矗光,毛涛涛,王正林,等.精通MatlabGUI设计[M].北京:
电子工业出版杜。
2008.
[6]刘秀.用Matlab实现硬件端口采集的方法[J].兵工自动化,2007,(3):
1-7.
[7]王彦良.基于MATLAB绘制各种根轨迹的图形用户接口设计[J].教育教学论坛,2010,(20):
2-5.
[8]王明伟,李茜,汤伟.基于MATLAB串口通信的数据采集系统的设计[J].微计算机信息,2009,(8).6-9.
[9]杨佳,王英志.柳彦春.GUI设计在数字信号处理课程中的应用[J].商情,2010,(8):
1-3.
[10]程伟,程文波,李灿平.基于MATLAB的实时数据采集与分析研究[J].电子测量技术,2008,(8).
[11]张立炎,张天贺,黄亮,等.燃料电池空气供给系统建模及基
参考文献于MatlabGUI仿真界面设计[J].系统仿真技术,2008,10.