綜合測控實(shí)驗(yàn)Simulink-2015_第1頁
綜合測控實(shí)驗(yàn)Simulink-2015_第2頁
綜合測控實(shí)驗(yàn)Simulink-2015_第3頁
綜合測控實(shí)驗(yàn)Simulink-2015_第4頁
綜合測控實(shí)驗(yàn)Simulink-2015_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

綜合測控實(shí)驗(yàn)(下)主講人:黃弢、王峻峰主要內(nèi)容:Matlab、Simulink測控系統(tǒng)應(yīng)用:Matlab、Simulink調(diào)用*.dll,結(jié)合PID算法,實(shí)現(xiàn)對外部設(shè)備的閉環(huán)控制其它控制系統(tǒng)軟件平臺:組態(tài)軟件在控制系統(tǒng)的應(yīng)用DR-LinkVisualC++,VisualBasic51單片機(jī)、ARM控制實(shí)驗(yàn)內(nèi)容Matlab/SimulinkPLC組態(tài)軟件DR-LinkVC++/VB51單片機(jī)變頻器直流電機(jī)調(diào)速器步進(jìn)電機(jī)驅(qū)動器伺服電機(jī)驅(qū)動器可控硅調(diào)功器三相交流異步電機(jī)直流電機(jī)步進(jìn)電機(jī)伺服電機(jī)發(fā)熱元件換算算法輸出電流電壓PWMPID算法被控對象課程內(nèi)容PWM脈寬調(diào)制實(shí)現(xiàn)調(diào)壓——直流斬波調(diào)壓直流斬波調(diào)壓:將一個(gè)量值的直流電變?yōu)榱硪粋€(gè)量值的直流電,也稱DC/DC變換

利用C寫的S-Function執(zhí)行步驟

mdlInitializeSizes是Simulink與S-function交互時(shí)調(diào)用的第一個(gè)方法。隨后Simulink將調(diào)用其他S-function方法(都以mdl開頭)。仿真結(jié)束時(shí),Simulink調(diào)用mdlTerminate。注意:Simulink仿真時(shí)直接在適當(dāng)?shù)臅r(shí)間調(diào)用每個(gè)回調(diào)方法,利用C寫的S-Function仿真步驟如圖4.1所示:03二月2023SIMULINK自定義模塊CommonlyUsedBlocks(公共模塊庫)Continuous(連續(xù)模塊庫)Discrete(離散模塊庫)Logic&BitOperation(邏輯與位操作模塊庫)Ports&Subsystems(端口與子系統(tǒng)模塊庫)

MathOperation(數(shù)學(xué)模塊庫)

Function&Tables(函數(shù)與表格模塊)Ports&SubsystemsSignalAttributes(信號與系統(tǒng)模塊庫)Sinks(接收器模塊庫)Sources(輸入源模塊庫)User-DefinedFunctions03二月2023Simulink

s-Functuion應(yīng)用在MATLAB環(huán)境下使用MEX命令將已編譯好的C文件(通過SIMULINK編譯)轉(zhuǎn)換成DLL文件,然后再結(jié)合S-FUNCTION,調(diào)用該DLL文件。首先在MATLAB的COMMAND窗口中輸入:>>mex-setup會出現(xiàn):

Selectacompiler:[1]LccCversion2.4inF:\MATLAB\sys\lcc[2]MicrosoftVisualC/C++version6.0inC:\ProgramFiles\MicrosoftVisualStudio[0]None即選擇一個(gè)編譯器。在這里一般選擇VC++選項(xiàng),直接在命令窗口中敲擊編譯器編號的數(shù)字鍵,然后回車即可。S-Function模板創(chuàng)建DLL

新建一個(gè)文件夾,選擇為當(dāng)前目錄打開simulink,選擇User-DefinedFunctions/S-FunctionExamples/C-filesS-Function//BasicC-MEXTemplate,根據(jù)所定義模塊的功能,將該自動生成的文件重命名,并存入你指定的文件夾中將模版的c文件另存,文件名自定義,如MyOn.cpp。將Function改成和文件名一樣,如圖4.5所示。在mdlOutputs(SimStruct*S,int_Ttid)函數(shù)中進(jìn)行修改,將real_T*y=ssGetOutputPortSignal(S,0);替換為real_T*y=ssGetOutputPortRealSignal(S,0);Matlab命令窗口,輸入:mexMyOn.cpp,可以看到出現(xiàn)了一個(gè)MyOn.dll文件在simulink窗口下,新建一個(gè)mdl文件(可為mytemp1,mdl的文件名不能與sfunction的名字相同,即不能為MyOn,否則會出現(xiàn)命名沖突。)),向其中添加一個(gè)S-Function模塊,雙擊模塊,將其中的S-FunctionName改為dll的文件名(不加后綴,也就是MyOn)。

相同

輸入輸出設(shè)置及采集編程以下編程均在MyOn.cpp文件中標(biāo)注輸入輸出設(shè)置:

三個(gè)接口沒有任何,這樣我們就不清楚道理每個(gè)接口作用。為此,我們可以在圖4.10所示的模塊上單擊右鍵,然后選擇MaskS-Function,在該cpp文件mdlStart(SimStruct*S)函數(shù)中添加采集卡初始化以及開啟采集任務(wù)。

constreal_T*u1=(constreal_T*)ssGetInputPortRealSignalPtrs(S,0);constreal_T*u2=(constreal_T*)ssGetInputPortRealSignalPtrs(S,1);constreal_T*u3=(constreal_T*)ssGetInputPortRealSignalPtrs(S,2);doubleFs=u1[0];//采樣頻率

if(ADCardInit()!=1)//采集卡初始化

{ssSetErrorStatus(S,"Can'tfindtheDAQCard!");}DAQ1(0x1,5000,1024*4,buffer);//開啟采集Fs=5000pnum=0; //初始化buf指針位置采集卡初始化及開啟數(shù)據(jù)采集:

if(u2[0]==1)DAQ1(0x1,Fs,1024,buffer);elseif(u2[0]==2)DAQ1(0x2,Fs,1024,buffer);elseif(u2[0]==3)DAQ1(0x4,Fs,1024,buffer);elseif(u2[0]==4)DAQ1(0x8,Fs,1024,buffer);elseif(u2[0]==5)DAQ1(0x10,Fs,1024,buffer);elseif(u2[0]==6)DAQ1(0x20,Fs,1024,buffer);elseif(u2[0]==7)DAQ1(0x40,Fs,1024,buffer);elseif(u2[0]==8)DAQ1(0x80,Fs,1024,buffer);elsessSetErrorStatus(S,"channelnumberiswrong!");ADCardInit()是采集卡DLL函數(shù),作用是初始化采集卡。如果初始化成功則返回1,用于判斷是否連上采集卡。DAQ1()函數(shù)為采集卡DLL單通道采樣函數(shù),作用是啟動采集卡進(jìn)行單通道數(shù)據(jù)采集。參數(shù)1為采樣通道,是以8位2進(jìn)制數(shù)表示各個(gè)通道是否開啟,如對通道1進(jìn)行采集,該參數(shù)即為:00000001;同理,對3通道進(jìn)行采集,其參數(shù)為00000100。各通道對應(yīng)關(guān)系分別為:0x1:通道1 0x2:通道2 0x4:通道30x8:通道4 0x10:通道5 0x20:通道60x40:通道7 0x80:通道8DAQ2(ch,Fs,len,buffer1,buffer2)為雙通道采樣函數(shù),第一個(gè)參數(shù)為通道號,和DAQ1一樣,同樣是以2進(jìn)制數(shù)表示,如對1,2通道進(jìn)行采集,該參數(shù)即為00000011;對3,4通道進(jìn)行采集,即為00001100;下面是幾組通道的對應(yīng)關(guān)系0x3:通道1、2 0x0A:通道2、40x0C:通道3、40x11:通道1、5 0x12:通道2、50x22:通道2、6程序中使用位操作,首先獲取采樣通道號,例如1和2,將通道變量置0,即程序中的:unsignedcharchannel=0x00; //初始化采集通道用位操作方法,設(shè)置channel的第0位、第1位為1:

channel|=(1<<ch1);//設(shè)置采樣通道1(該例子中ch1為0)

channel|=(1<<ch2);//設(shè)置采樣通道2(該例子中ch2為1)第二個(gè)參數(shù)Fs為采樣頻率;第三個(gè)參數(shù)len為采樣長度;第四、五個(gè)參數(shù)為兩個(gè)通道的緩存區(qū)指針。數(shù)據(jù)輸出

數(shù)據(jù)輸出在mdlOutputs()函數(shù)內(nèi)實(shí)現(xiàn)。

intLength=1024*4; //讀取的buffer長度

constreal_T*u2=(constreal_T*)ssGetInputPortRealSignalPtrs(S,1);ReadDaq(u2[0],Length,buffer);//從采集卡讀取bufferreal_T*y=ssGetOutputPortRealSignal(S,0); //獲取輸出指針

if(pnum>=Length)pnum=0;//判斷指針是否已滿*y=buffer[pnum]; //輸出第pnum個(gè)點(diǎn)的值

pnum++; //指針加1

函數(shù)ReadDaq()作用是讀取下位機(jī)buf里的采樣數(shù)據(jù)。參數(shù)1為通道號,分別為1-8;參數(shù)2為buffer長度;參數(shù)3為保存的buffer指針。退出采集卡:函數(shù)ADCardQuit()是采集卡dll函數(shù),其作用是退出采集卡。staticvoidmdlTerminate(SimStruct*S){

ADCardQuit();}再次在MATLAB的CommandWindow中輸入mexMyOn.cpp,完成數(shù)據(jù)采集卡的程序編寫。打開測試實(shí)驗(yàn)平臺上的直流電源,打開通道1的信號源,返回使用該模塊形成的mytemp1.mdl文件,將運(yùn)行時(shí)間改為inf,點(diǎn)擊菜單欄上的“保存”圖標(biāo),點(diǎn)擊菜單欄上的“運(yùn)行”圖標(biāo),進(jìn)行執(zhí)行。雙擊Scope可以查看采集的信號波形。調(diào)用界面設(shè)計(jì)clfresetset(gcf,'menubar','none')set(gcf,'unit','normalized','position',[0.2,0.2,0.5,0.35]); set(gcf,'defaultuicontrolunits','normalized') %設(shè)置用戶缺省控件單位屬性值h_axes1=axes('position',[0.05,0.55,0.6,0.4]);h_axes2=axes('position',[0.05,0.05,0.6,0.4]);有兩軸對象和兩個(gè)按鈕對象。

hpush1=uicontrol(gcf,'Style','push',... %制作“采集”按鈕

'position',[0.8,0.25,0.18,0.15],'string','采集');hpush2=uicontrol(gcf,'Style','push',... %制作“停止”按鈕

'position',[0.8,0.05,0.18,0.15],'string','停止');%首先讓我們先前建立的mytemp1mdl文件運(yùn)行%“采集”按鍵引起的回調(diào)set(hpush1,'callback',[...'set_param(''mytemp1'',''SimulationCommand'',''start''),',... 't=timer(''TimerFcn'',''getdata'',''Period'',1,''ExecutionMode'',''fixedSpacing'',''TasksToExecute'',inf),',...%設(shè)置定時(shí)器,運(yùn)行g(shù)etdata文件,與上面是一行。'pause(2);start(t);',... %暫停2秒并啟動定時(shí)器

]);%“停止”按鍵引起的回調(diào)hpush2=uicontrol(gcf,'Style','push',... 'position',[0.8,0.05,0.18,0.15],'string','停止');%制作“停止”按鈕set(hpush2,'callback','stop(t);set_param(''mytemp2'',''SimulationCommand'',''stop'');');%停止定時(shí)器,mdl文件停止運(yùn)行。

回調(diào)屬性球桿定位控制系統(tǒng)實(shí)驗(yàn)電機(jī)簡單運(yùn)動控制Qtest.mdl的Matlab模型結(jié)構(gòu)如下圖所示:模型主要由一個(gè)常量模塊——COM,代表使用的串口號;S函數(shù)——InitIPM_RAM,初始化控制卡和下載配置文件;一個(gè)子系統(tǒng)構(gòu)成。雙擊子系統(tǒng),能看到其內(nèi)部結(jié)構(gòu)如下所示:將文件mcqg.out、IPM100.CFG、TMLcomm.dll、TML_lib.dll、TML_lib.h、TML_lib.lib復(fù)制到當(dāng)前路徑中。其中mcqg.out是執(zhí)行InitIPM-_RAM必須要的文件(在s-function的c文件中有相應(yīng)語句);IPM100.CFG、TMLcomm.dll、TML_lib.dll、TML_lib.h、TML_lib.lib五個(gè)文件是IPM的驅(qū)動文件;編寫InitIPM_RAM.h、InitIPM_RAM.cpp、Move_Abs.cpp、Move_Abs.h、Get-AD.cpp、Get-AD.h、Stop.cpp、Stop.h、Servo_On.cpp、Servo_On.h、InitIPM_RAM.h、InitIPM_RAM.cpp是初始化IPM的c文件和頭文件,同時(shí)也要mex產(chǎn)生對應(yīng)的dll文件。InitIPM_RAM函數(shù)功能:對采集控制卡初始化;函數(shù)實(shí)現(xiàn)描述:定義與上位機(jī)通訊的波特率115200定義驅(qū)動器的軸號255定義與上位機(jī)通訊方式RS232定義與上位機(jī)通訊默認(rèn)端口號串口1初始化驅(qū)動器載入驅(qū)動器配置文件使用說明:1個(gè)輸入設(shè)置串口號1個(gè)輸出“1”

(真值也就是“Subsystem的一個(gè)觸發(fā)信號,初始化完成后發(fā)出信號)Get_AD函數(shù)功能:采集AD數(shù)據(jù)(對于球桿系統(tǒng)為采集小球位置);函數(shù)實(shí)現(xiàn)描述:定義AD采樣端口的值、地址、AD端口號等變量對他們賦初始值IPM100運(yùn)動控制器有兩個(gè)10位的模擬量輸入端口,AD2和AD5,該函數(shù)中對AD端口號AD_No(系統(tǒng)默認(rèn)為5)進(jìn)行判斷并讀取該端口模擬量的值,并賦給變量val_ad。再通過讀取內(nèi)存中模擬量輸入端口對應(yīng)地址單元內(nèi)的值,根據(jù)*y=400.00*((float)(unsignedshort)val_ad/65535.00)計(jì)算出小球的實(shí)際位置(單位毫米)。其中400為整個(gè)位移傳感器的長度(400毫米),65535(1111111111111111)B為小球位置為400mm時(shí)對應(yīng)的值。備注:AD轉(zhuǎn)換結(jié)果有10位的分辨率,并左移6位。這樣AD轉(zhuǎn)換后的值在內(nèi)存中為16位。該函數(shù)的輸入是AD輸入通道模擬量經(jīng)轉(zhuǎn)換后在內(nèi)存中的值,輸出為計(jì)算出來的小球的實(shí)際位置。使用說明:1個(gè)輸入:AD端口號1個(gè)輸出:經(jīng)過換算出來的小球的位置YMove_Abs函數(shù)功能:絕對運(yùn)動命令:控制電機(jī)運(yùn)動函數(shù)實(shí)現(xiàn)描述:輸入電機(jī)的目標(biāo)位置、目標(biāo)速度和目標(biāo)加速度,使電機(jī)運(yùn)動到設(shè)定的目標(biāo)位置使用說明:3個(gè)輸入:設(shè)定運(yùn)動的速度和加速度及目標(biāo)位置Stop函數(shù)功能:運(yùn)動停止命令函數(shù)函數(shù)實(shí)現(xiàn)描述:讀入電機(jī)停車的方式(默認(rèn)STOP_3系統(tǒng)以設(shè)定的加減速度停車)

使用說明:一個(gè)輸入:設(shè)定停止模式Servo_on函數(shù)功能:電機(jī)伺服控制函數(shù)實(shí)現(xiàn)描述:讀入

TS_Power(Axis_On_Flag)Axis_On_Flag值(1或0)根據(jù)輸入值上伺服或下伺服。使用說明:一個(gè)輸入:設(shè)定伺服狀態(tài)(上伺服或下伺服)問題討論1:問題1:Servo_on開時(shí),曲柄才能運(yùn)動到目標(biāo)位置,問題2:當(dāng)Stop關(guān)閉時(shí),曲柄才能運(yùn)動到目標(biāo)位置,當(dāng)Stop開時(shí),理論上曲柄會一動一停的運(yùn)動到目標(biāo)位置,實(shí)際很艱難,可以聽到電機(jī)在運(yùn)動。QGTest的子系統(tǒng)中五個(gè)模塊的程序是循環(huán)執(zhí)行的。Stop和Move_Abs循環(huán)執(zhí)行,曲柄則會一停一動的運(yùn)動。如果搭建的只有servo_on和Stop兩個(gè)模塊的系統(tǒng)中則不存在這個(gè)問題。對于Servo_on可能也是由于程序的循環(huán)執(zhí)行所造成的。問題討論2:1.時(shí)域波形特征:有效值,均值,均方差,峰值,峰峰值,頻率.2.頻域波形分析:信號波形和相應(yīng)幅值譜和相位譜,并得到相應(yīng)的頻率值和幅值.Fft的雙邊特性3.熱電偶溫度測量:測量信號的均值4.數(shù)字濾波器設(shè)計(jì)消除不需要的頻率分量

卷積基礎(chǔ)任何輸入的數(shù)字信號均可以表示成時(shí)延脈沖的線性組合,如下數(shù)字信號的脈沖表示而單位脈沖響應(yīng)h[n],是系統(tǒng)對單位脈沖函數(shù)輸入的響應(yīng)。每個(gè)濾波器都有單位脈沖響應(yīng)。如果已知濾波器的單位脈沖響應(yīng)h[n],則可以利用卷積的方法來計(jì)算濾波器在任意輸入的輸出。卷積的計(jì)算由于濾波器為線性時(shí)不變因果系統(tǒng),當(dāng)輸入是單位脈沖δ[n-k],則輸出是h[n-k],可見,系統(tǒng)的輸出取決于輸入和系統(tǒng)的脈沖響應(yīng)h[n],卷積事實(shí)上等于序列x[k]和和h[k]的反轉(zhuǎn)位移序列相乘,卷積的計(jì)算:逐點(diǎn)相乘后相加,這里要理解h[n-k]的含義,h[n-k]是h[k]關(guān)于縱軸的鏡像;h[n-k]是h[-k]右移n個(gè)采樣點(diǎn)所得的值。離散系統(tǒng)的時(shí)域模型

——差分方程差分方程是遞歸定義的,函數(shù)f(t)在t=kT處第i階差分的差分就是其第i+1階差分,如:上述函數(shù)的二階前向差分方程定義為:離散系統(tǒng)中信號是以序列的形式出現(xiàn)的,因此只能用差分方程來分析。設(shè)f(t)為t的函數(shù),在t=kT處取值為f(kT),此時(shí)f(t)在t=kT處的一階差分方程定義為:前向差分后向差分差分方程與卷積差分方程與卷積均可以計(jì)算己知輸入情況下的濾波器的輸出,二者的結(jié)果對于同一個(gè)濾波器而言應(yīng)該是相同的。Z變換與差分方程求解Z變換是對離散序列進(jìn)行的一種數(shù)學(xué)變換。常用以求線性時(shí)不變差分方程的解。

離散時(shí)間序列x(n)的Z變換:逆Z變換:由Y(z)計(jì)算y[n]y[n]=Z?1{Y(z)}z-1延遲因子,不能把單步延遲項(xiàng)z-1和逆Z變換的符號Z

?1混淆。①線性性質(zhì):②時(shí)延性質(zhì):延遲定理用Z傳輸函數(shù)、脈沖響應(yīng)、差分方程可以描述同一個(gè)數(shù)字系統(tǒng)。數(shù)字濾波器設(shè)計(jì)數(shù)字濾波器經(jīng)典濾波器根據(jù)濾波特性來分:低通;高通;帶通;帶阻(理想濾波器是不可實(shí)現(xiàn)的,只能在一定程度上去逼近)從單位脈沖響應(yīng)長度來分:IIR-DF;FIR-DF現(xiàn)代濾波器尋找在某種準(zhǔn)則下的最優(yōu)解維納濾波器,卡爾曼濾波器,自適應(yīng)濾波器從對信號處理的作用來分:選頻;其他1.ωp和ωs分別稱為通帶邊界頻率和阻帶截止頻率。2.從ωp到ωs稱為過渡帶,過渡帶上的頻響一般是單調(diào)下降的3.通帶頻率范圍為0≤|ω|≤ωp,在通帶中要求(1-δ1)<|H(ejω)|≤1,阻帶頻率范圍為ωs≤|ω|≤π,在阻帶中要求|H(ejω)|≤δ2。11+p1-psps顯然,p越小,通帶波紋越小,通帶逼近誤差就越??;s越大,阻帶波紋越小,阻帶逼近誤差就越??;ωp與ωs間距越小,過渡帶就越窄。所以低通濾波器的設(shè)計(jì)指標(biāo)完全由通帶邊界頻率ωp、通帶最大衰減p

阻帶邊界頻率ωs和阻帶最小衰減s確定。11/Aps歸一化的數(shù)字低通濾波器幅度響應(yīng)指標(biāo)FIR濾波器可以設(shè)計(jì)為線性相位,并且總是穩(wěn)定的。在多數(shù)情況下,F(xiàn)IR濾波器的階數(shù)NFIR

顯著大于具有等效幅度響應(yīng)的IIR濾波器階數(shù)NIIR

。NFIR/NIIR

通常為10的量級或更高.I

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論