第27卷第6期2006年12月青岛科技大学学报
JournalofQingdaoUniversityofScienceandTechnologyVol.27No.6Dec.2006
文章编号:1672-6987(2006)06-0540-03
基于Matlab的随动系统半实物仿真平台设计
隋树林,于镭,邵巍
(青岛科技大学自动化与电子工程学院,山东青岛,266042)
摘要:设计了一种基于Matlab与DSP的随动系统仿真平台。系统利用Matlab对
DSP端口进行访问,并对实时数据进行分析、处理和显示。软件部分采用Matlab进行程序编写,发挥了Matlab强大的数据处理功能,克服了VC与Matlab混合编程工作量大,结构复杂的缺点,又弥补了单独用VC编程处理数据能力弱的不足,较好的实现了对随动系统的半实物仿真和校验。
关键词:Matlab;DSP;随动系统;半实物仿真中图分类号:TP211文献标识码:A
DesignofTrackingSystemHardware-in-loop
SimulationPlatformBasedonMatlab
SUIShu-lin,YULei,SHAOWei
(CollegeofAutomationandElectronicEngineering,QingdaoUniversityof
ScienceandTechnology,Qingdao266042,China)
Abstract:ThedesignofatrackingsystemsimulationplatformbasedonMatlabandDSP
ispresentedinthispaper.Inthesystem,MatlabisusedtoaccessDSPport,analyzeandprocesstherea-ltimedataaswellasshowtheresults.Inordertoovercomethe
shortcomingofcomplexstructureandmakeuptheweaknessonprocessingdatausingVClanguageonly,thesoftwareofthesystemisprogrammedwithMatlabthathaspow-erfulfunctiontoprocessdata.Thissystemhasbeentestedusinghardware-in-loopsim-ulationandagoodresulthasbeenachieved.
Keywords:Matlab;DSP;trackingsystem;hardware-in-loopsimulation半实物仿真是计算机在进行仿真时引入部分硬件实物进行软硬结合的仿真,是对各种复杂控制系统进行初步测试的常用方法。本工作将Matlab引入到随动系统仿真回路中进行半实物仿真,并对控制参数进行在线调整,改善系统的性能,为系统的开发和校验提供了一个良好的平台。
图1系统结构图Fig.1Systemstructure
1系统结构
基于Matlab串口操作的实时PID参数调节随动系统的结构见图1。
收稿日期:2005-12-02
作者简介:隋树林(1958~),男,教授.
操作指令、PID参数、采样频率、点数以及运动模式等参数由Matlab的交互式界面通过串口传入DSP,DSP结合主动、从动电机经过位置编
第6期隋树林等:基于Matlab的随动系统半实物仿真平台设计
541
码器传来的数据进行处理计算,得到PWM模块的输出信号,再经驱动电路放大后,驱动电机运动,在进行闭环控制的同时,Matalb也将位置信息实时的显示出来。
串口
set(s,BaudRate,19200);%设置s的波特率为19200
set(findobj(0,tag,buttonstart),ena-ble,off);%使开始按钮无效,以防两次打开该
set(s,OutputBufferSize,4096);%设置发送缓冲区的大小
set(s,InputBufferSize,20000);%设置接受缓冲区的大小
set(s,BytesAvailableFcnMode,byte);s.BytesAvailableFcnCount=16;
s.BytesAvailableFcn=@pidcallback;%接收16个字节响应接收回调函数pidcallback
s.RecordName=myrecord.txt;s.RecordMode=index;
s.RecordDetail=verbose;%生成接收数据的文本记录文件
s.Timeout=10;%设置10秒内没有接收满数据,则进行超时处理
fopen(s);%连接s和DSP
fwrite(s,[8p2ap2bi2ai2bd2ad2btime2],uint8);%向DSP传输控制指令和参数
end
回调函数pidcallback()里主要是调用fread()函数读取接收缓冲区里由DSP通过串口发过来的数据,并进行实时画图操作。2.3曲线实时显示
Matlab没有提供现成的函数来绘制实时的图形,但是可以用Matlab中的drawnow函数来实现实时可视化过程。它可将用户最后的设置补充到图形窗口中,用drawnow命令将最新的设置写入图形句柄所对应的图形中,这样,循环修改坐标的值就可以得到实时的动态图像。2.4智能化过程的实现
对于采集到的数据,可以利用Matlab强大的数据处理功能进行模型建立,参数优化,智能控制等操作
[6-7]
2Matlab编程
2.1界面设计与编程
Matlab的强项是矩阵和数值的计算,且提供了大量的实用工具箱,界面设计并不是它的强项。不过随着Matlab版本的提高,对界面设计的支持也越来越好。最新的Matlab7.0的GUIDE新增加了对用户界面面板和ActiveX控件的支持,其界面美化程度完全可以和VB相媲美[1,2]。可用两种简单的方法进行控件回调m函数的创建。一种是在GUI的工具菜单里的GUI-Options选项里选择GenerateFIG-fileandMfile单选项,然后在生成的m文件对应的控件回调函数里编写响应事件的程序;另一种是在该控件的cal-lback属性里设置callback函数名,然后在Matlab工作路径里建立同名的m函数。也可以通过编写MEX程序,对硬件进行相应的操作。若用Simulink进行软件设计则需要建立相应的s函数。
2.2与DSP通信
用作主机和从机的两台目标机可以安装串口卡或者以太网卡,通过RS232或TCP/IP协议进行通信,也可通过USB进行通信[4],特殊情况下也可以通过并口连接[5]。本系统采用了串口通信,Matlab支持面向对象技术,用一个对象将计算机串口封装起来,只要创建串口对象,对串口对象操作就是对串口操作。以下是开始按钮回调程序对串口进行的操作:
functionbuttonstartfcn()
globalbpidp2i2d2time2count2sdata;%声明用到的全局变量
p2=round(get(findobj(0,tag,sliderp),Value));%得到控制P参数的滑动键的值
%得到其他参数的值
s=serial(COM1);%产生串口对象s,并且与串口COM1关联[3]
。如果只利用Matlab本身函数库中所
带的或自我编写的m文件、s文件进行处理运算,速度较慢,很可能满足不了实时处理的要求,将m文件或s文件编译为带有dll扩展名的MEX文542
青岛科技大学学报第27卷
件后,可以大大提高程序的运行速度。动和随动电机位置的变化,调节PID参数。这个系统只是一个基于Matlab的比较简单的串口实时操作实例,在此基础上做进一步的工作,可以通过分析阶跃响应函数曲线来确定各项性能,并与期望性能指标比较,得出理想参数,如能进一步结合Simulink或SISO设计工具,则系统的智能化程度将大大提高。
3DSP编程
该系统采用的DSP芯片是Motorola公司的56807型号
[8]
。它是Motorola公司的16位
7
DSP,运行速度可以达到每秒410条指令,它的PWM模块可以方便的对输出电压的脉宽进行改变,经放大后可以对直流伺服电机的转速进行调节。图2是DSP程序的流程图。
图3程序运行结果
Fig.3Theresultoftheprogramrunning
5结语
该系统充分利用了Matlab与硬件连接的能力,结合Matlab自身的优势搭建智能化平台,具有扩展程度高,应用灵活性强的特点,对于随动系统
图2DSP程序流程图Fig.2TheflowchartofDSP
的系统设计,参数调节等都具有一定的实际意义。
参考文献
DSP用read函数从上位机读取8个字节的指令到数组RX_DATA,分别用来接收开始结束命令,PID参数,采样周期,采样点数等。
read(SCI0,&RX_DATA,sizeof(RX_DA-TA));
DSP每次向串口发送16个字节,用来传输两个电机的位置参数:
X_DATA[0]=P_LSB&0x00FF;TX_DATA[1]=&0x00FF;
write(SCI0,&TX_DATA,sizeof(TX_DA-TA));
(P_LSB>>8)
[1]吴越华,冯昊.基于Matlab图形用户界面的对话框设计的应
用[J].福建电脑,2003(9):50-54
[2]杨东勇,张容,陈敏智.图形交互式离散控制系统教学环境的
开发[J].浙江工业大学学报,2000,28(2):125-129
[3]王万里,张文杰,王燕.在Windows2000平台下实现Matlab
对硬件的访问[J].计算机仿真,2004(5):235-238
[4]夏文芳,吴鸿修,李享元.基于USB的实时数据采集系统及
其在Matlab中的应用[J].电子技术应用,2003(2):15-17[5]聂士忠,王玉泰.Matlab环境中基于微机并口的多通道数据
采集系统设计与实现[J].山东师范大学学报(自然科学版),2004(12):34-36
[6]苏金明,黄国明,刘波.Matlab与外部程序接口[M].北京:电
子工业出版社,2004
[7]张志勇.精通Matlab6.5版[M].北京:北京航空航天大学出
4程序运行结果
图3为采用PID控制的电机运动的测量实例。根据绘制的采样图,可以方便观察和记录主版社,2003
[8]邵贝贝,龚光华.MotorolaDSP型16位单片机原理与实践
[M].北京:北京航空航天大学出版社,2003
因篇幅问题不能全部显示,请点此查看更多更全内容