




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——華科機(jī)械綜合測(cè)試試驗(yàn)球桿試驗(yàn)報(bào)告
球桿控制定位系統(tǒng)試驗(yàn)報(bào)告
試驗(yàn)小組成員:周開(kāi)城u202310555機(jī)械0902班
張偉u202310571機(jī)械0902班
一試驗(yàn)?zāi)康?(1)把握對(duì)實(shí)際物理模型的建模方法。
(2)把握在Matlab中利用Simulink等工具對(duì)系統(tǒng)進(jìn)行模型分析的方法。(3)把握PID控制算法的原理和實(shí)際應(yīng)用。(4)學(xué)習(xí)PID參數(shù)的調(diào)理方法。
二試驗(yàn)系統(tǒng)及試驗(yàn)原理
(一)球桿系統(tǒng)的特點(diǎn)
球桿系統(tǒng)是一個(gè)典型的非線性系統(tǒng),理論上而言,它是一個(gè)真正意義上的非線性系統(tǒng),其執(zhí)行機(jī)構(gòu)還具有好多非線性特性,包括:?死區(qū)
?直流馬達(dá)和帶輪的傳動(dòng)非線性。?位置測(cè)量的不連續(xù)性。
?導(dǎo)軌表面不是嚴(yán)格的光滑表面,產(chǎn)生非線性阻力。
這些非線性因素對(duì)于傳統(tǒng)意義上的測(cè)量和建模造成很大的影響,并對(duì)系統(tǒng)的控制性能造成十分大的影響,怎樣去設(shè)計(jì)一個(gè)魯棒的控制系統(tǒng),是現(xiàn)代控制理論的一個(gè)重要問(wèn)題。固高科技提供的球桿系統(tǒng)既可以用于研究控制系統(tǒng)運(yùn)行的非線性動(dòng)力學(xué),也可以用于研究控制系統(tǒng)的非線性觀測(cè)器等,是一個(gè)較為通用的試驗(yàn)設(shè)備。
由于系統(tǒng)機(jī)械結(jié)構(gòu)的特點(diǎn),球桿系統(tǒng)具有一個(gè)最重要的特性——不穩(wěn)定性,對(duì)于傳統(tǒng)的試驗(yàn)方法,存在一些試驗(yàn)的難處,不穩(wěn)定的系統(tǒng)簡(jiǎn)單對(duì)試驗(yàn)人員產(chǎn)生危險(xiǎn)或是不可預(yù)料的傷害,球桿系統(tǒng)相對(duì)而言,機(jī)械比較簡(jiǎn)單,結(jié)構(gòu)比較緊湊,安全性也比較高,是一個(gè)可以避免這些危險(xiǎn)和傷害的試驗(yàn)設(shè)備。采用智能伺服驅(qū)動(dòng)模塊和直觀的Windows程序界面,是控制系統(tǒng)試驗(yàn)的一個(gè)理想的試驗(yàn)設(shè)備。
(二)球桿系統(tǒng)
如圖1所示,包括控制計(jì)算機(jī)、IPM100伺服驅(qū)動(dòng)器、球桿本體和光電碼盤、線性傳感器、伺服電機(jī)和球桿裝置等部分,組成一個(gè)閉環(huán)系統(tǒng)。光電碼盤將杠桿臂與水平方向的夾角、角速度通過(guò)RS232接口與計(jì)算機(jī)通信。在控制系統(tǒng)中,輸入鋼球的控制位置和控制參數(shù),通過(guò)控制決策計(jì)算輸出電機(jī)轉(zhuǎn)動(dòng)方向、轉(zhuǎn)動(dòng)速度、加速度等,并由智能伺服驅(qū)動(dòng)器產(chǎn)生相應(yīng)的控制量,發(fā)出模擬信號(hào)使電機(jī)轉(zhuǎn)動(dòng),帶動(dòng)杠桿臂運(yùn)動(dòng)從而控制球的位置。
1
本系統(tǒng)為一個(gè)單輸入(電機(jī)轉(zhuǎn)角θ)、單輸出(鋼球位置x)系統(tǒng)。其中,θ由伺服電機(jī)的角度編碼器測(cè)定,輸出量x由軌道上電位器輸出的電壓信號(hào)獲得。系統(tǒng)的控制框,如圖1所示。整個(gè)機(jī)構(gòu)運(yùn)行如圖2所示:
球桿系統(tǒng)主要由以下幾部分組成,如下圖。
(三)機(jī)械部分:機(jī)械部分包括底座、小球、橫桿、減速皮帶輪、支撐部分、馬達(dá)等。
小球可以在橫桿上自由的滾動(dòng),橫桿的一端通過(guò)轉(zhuǎn)軸固定,另一端可以上下轉(zhuǎn)動(dòng),通過(guò)控制直流伺服電機(jī)的位置,帶動(dòng)皮帶輪轉(zhuǎn)動(dòng),通過(guò)傳動(dòng)機(jī)構(gòu)就可以控制橫桿的傾斜角。直流伺服電機(jī)帶有增量式編碼器(1000P/R),可以檢測(cè)電機(jī)的實(shí)際位置,在橫桿上的凹槽內(nèi),有一線性的傳感器用于檢測(cè)小球的實(shí)際位置,兩個(gè)實(shí)際位置的信號(hào)都被傳送給控制系統(tǒng),構(gòu)成一個(gè)閉環(huán)反饋系統(tǒng)。當(dāng)帶輪轉(zhuǎn)動(dòng)角度θ,橫桿的轉(zhuǎn)動(dòng)角度為α,當(dāng)橫桿偏離水平的平衡位置后,在重力作用下,小球開(kāi)始沿橫桿滾動(dòng)。
(四)電氣部分
球滾動(dòng)時(shí)位移的測(cè)量:直線位移傳感器。線性軌道傳感器接+5V電壓。軌道兩邊測(cè)得
2
的電壓作為IPM100控制卡A/D輸入口的信號(hào)。當(dāng)小球在軌道上滾動(dòng)時(shí),通過(guò)不銹鋼桿上輸出的電壓信號(hào)的測(cè)量可得到小球在軌道上的位置。
伺服輸出角度的測(cè)量:采用IPM100控制器,電機(jī)驅(qū)動(dòng)齒輪轉(zhuǎn)動(dòng)時(shí)通過(guò)電機(jī)實(shí)際位置轉(zhuǎn)
換得到角度θ。
(五)智能伺服驅(qū)動(dòng)
電機(jī)的運(yùn)動(dòng)通過(guò)IPM100智能伺服驅(qū)動(dòng)器進(jìn)行控制,IPM100是一個(gè)智能的高精度、全數(shù)字的控制器,內(nèi)嵌100W的驅(qū)動(dòng)電路,適合于有刷和無(wú)刷電機(jī)?;诜答伩刂圃恚诘玫絺鞲衅餍盘?hào)后,對(duì)信號(hào)進(jìn)行處理,然后給電機(jī)繞組施加適當(dāng)?shù)腜WM電壓信號(hào),這樣,一個(gè)相應(yīng)的扭矩作用于電機(jī)軸,使電機(jī)開(kāi)始運(yùn)動(dòng),扭矩的大小決定于用戶程序中的控制算法。
IPM100是一款智能的控制器,它除了板載的用于放大控制信號(hào)的驅(qū)動(dòng)放大器和PWM調(diào)制電路,還有一個(gè)全數(shù)字的DSP處理芯片,內(nèi)存以及其它規(guī)律元件,有了這些,就可以實(shí)現(xiàn)先進(jìn)的運(yùn)動(dòng)控制技術(shù)和PLC的功能,它產(chǎn)生實(shí)時(shí)的軌跡路徑,實(shí)現(xiàn)閉環(huán)伺服控制,執(zhí)行上位機(jī)的操作命令,完成板載IO信號(hào)的處理,所有這些都依照儲(chǔ)存器的程序指令或是主機(jī)的在線命令執(zhí)行,這種嵌入式的智能控制可以提供一個(gè)實(shí)時(shí)性十分好的控制效果,即使由于PC的非實(shí)時(shí)操作系統(tǒng)而產(chǎn)生延時(shí)的狀況下。
由于控制器可以獨(dú)立運(yùn)行,也可以采用從動(dòng)模式,本手冊(cè)介紹的球桿系統(tǒng)將采用兩種模式。IPM100安裝于控制箱內(nèi)部,通過(guò)RS232和上位計(jì)算機(jī)進(jìn)行通訊,直流電源也置于控制箱內(nèi)部。
3
計(jì)算機(jī)IPM100智能伺服驅(qū)動(dòng)伺服電機(jī)球桿裝置電機(jī)編碼直線位移傳感
(六)球桿系統(tǒng)的數(shù)學(xué)模型建立
實(shí)際上使小球在導(dǎo)軌上加速滾動(dòng)的力是小球的重力在同導(dǎo)軌平行方向上的分力同小球受到的摩擦力的合力。考慮小球滾動(dòng)的動(dòng)力學(xué)方程,小球在V型桿上滾動(dòng)的加速度:
??J?R2?m??r??mgsinα?mrα?2?0????(1-1)
其中m——小球質(zhì)量;
J——小球的轉(zhuǎn)動(dòng)慣量;R——小球半徑;r——小球位置偏移;g——重力加速度;
α——軌道桿與水平面之間的夾角;
θ——電動(dòng)機(jī)轉(zhuǎn)角;
又有:α?dLθ
。
由于實(shí)際摩擦力較小,忽略摩擦力,并由于α較小,因此可以忽略此項(xiàng)的影響,其基本的數(shù)學(xué)模型轉(zhuǎn)換成如下方式:
mgsinα????J?2?m??r??R?(1-2)4
當(dāng)α
球桿系統(tǒng)P控制器原理圖
可以得到單位負(fù)反饋系統(tǒng)的閉環(huán)傳遞函數(shù)為:
x(s)?(s)?cs?c2
可以看出是一個(gè)二階系統(tǒng)(忽略了各種阻力)。
(八)比例積分控制器原理
PD控制器的控制作用可以由以下方程定義:
u(t)?Kpe(t)?KpTd其傳遞函數(shù)為:
U(s)E(s)?Kp(1?Tds)
de(t)dt
式中Kp為比例增益,而Td稱為微分時(shí)間常數(shù),Kp,Td都可以調(diào)理,微分控制作用也稱為速率控制,它是控制器輸出中與作用誤差信號(hào)變化率成比例的一部分,微分時(shí)間Td是速率控制作用超前于比例控制作用效果的時(shí)間間隔,微分控制作用具有預(yù)計(jì)的優(yōu)點(diǎn),但是它也具有缺點(diǎn),由于它放大了噪聲信號(hào),并且還可能在執(zhí)行器中造成飽和效應(yīng)。
微分控制作用不能單獨(dú)使用,由于它僅僅在瞬態(tài)過(guò)程中才是有效的??刂葡到y(tǒng)如下圖所示:
xd+-ePD控制器?球桿系統(tǒng)x
圖3-1球桿系統(tǒng)PD控制器原理圖
可以得到單位負(fù)反饋系統(tǒng)的閉環(huán)傳遞函數(shù)為:
x(s)?(s)?c(1?Tds)s2?Tds?c
6
(九)PID控制原理
比例控制作用、積分控制作用和微分控制作用的組合叫做比例-加-積分-加-微分控制作用,這種組合具有三種控制作用的優(yōu)點(diǎn),具有這種組合作用的控制器方程為:
u(t)?Kpe(t)?KTitp?0e(t)dt?KpTdde(t)dt
即其傳遞函數(shù)為:
U(s)E(s)?Kp(1?1Tis?Tds)
式中Kp為比例增益,Ti為積分時(shí)間,Td為微分時(shí)間。控制系統(tǒng)如下圖所示:
xd+-ePID控制器?球桿系統(tǒng)x
圖4-1球桿系統(tǒng)PID控制器原理圖
可以得到單位負(fù)反饋系統(tǒng)的閉環(huán)傳遞函數(shù)為:
x(s)?(s)?Tds?cs?1/Tis?Tds?cs?1/Ti32
依照齊格勒-尼赫爾斯法則設(shè)計(jì)PID控制器,由于含有積分器,所以依照其次法設(shè)計(jì),首先假設(shè)Ki=0,Kd=0,增加Kp直到浮現(xiàn)周期振蕩,取浮現(xiàn)周期振蕩的最小的Kp=Kcr,設(shè)周期振蕩
的周期為Pcr,按下表計(jì)算PID參數(shù):
控制器類型PPIPIDKp0.5Kcr0.45Kcr0.6KcrKi01.2/Pcr2/PcrKd000.125Pcr(十)PID參數(shù)調(diào)理方法
(1)經(jīng)驗(yàn)法:又叫現(xiàn)場(chǎng)湊試法,即先確定一個(gè)調(diào)理器的參數(shù)值PB和Ti,通過(guò)改變給定值對(duì)控制系統(tǒng)施加一個(gè)擾動(dòng),現(xiàn)場(chǎng)觀測(cè)判斷控制曲線形狀。若曲線不夠理想,可改變PB或Ti,再畫控制過(guò)程曲線,經(jīng)反復(fù)湊試直到控制系統(tǒng)符合動(dòng)態(tài)過(guò)程品質(zhì)要求為止,這時(shí)的PB和Ti就是最正確值。假使調(diào)理器是PID三作用式,那么要在整定好的PB和Ti的基礎(chǔ)上加進(jìn)微分作用。由于微分作用有抵制偏差變化的能力,所以確定一個(gè)Td值后,可把整定好的PB和Ti值減小
7
一點(diǎn)再進(jìn)行現(xiàn)場(chǎng)湊試,直到PB、Ti和Td取得最正確值為止。顯然用經(jīng)驗(yàn)法整定的參數(shù)是確鑿的。但花時(shí)間較多。
為縮短整定時(shí)間,應(yīng)注意以下幾點(diǎn):①根據(jù)控制對(duì)象特性確定好初始的參數(shù)值PB、Ti和Td。可參照在實(shí)際運(yùn)行中的同類控制系統(tǒng)的參數(shù)值,或參照表所給的參數(shù)值,使確定的初始參數(shù)盡量接近整定的理想值。這樣可大大減少現(xiàn)場(chǎng)湊試的次數(shù)。②在湊試過(guò)程中,若發(fā)現(xiàn)被控量變化緩慢,不能盡快達(dá)到穩(wěn)定值,這是由于PB過(guò)大或Ti過(guò)長(zhǎng)引起的,但兩者是有區(qū)別的:PB過(guò)大,曲線漂泊較大,變化不規(guī)則,Ti過(guò)長(zhǎng),曲線帶有振蕩分量,接近給定值很緩慢。這樣可根據(jù)曲線形狀來(lái)改變PB或Ti。③PB過(guò)小,Ti過(guò)短,Td太長(zhǎng)都會(huì)導(dǎo)致振蕩衰減得慢,甚至不衰減,其區(qū)別是PB過(guò)小,振蕩周期較短;Ti過(guò)短,振蕩周期較長(zhǎng);Td太長(zhǎng),振蕩周期最短。④假使在整定過(guò)程中出現(xiàn)等幅振蕩,并且通過(guò)改變調(diào)理器參數(shù)而不能消除這一現(xiàn)象時(shí),可能是閥門定位器調(diào)校不準(zhǔn),調(diào)理閥傳動(dòng)部分有間隙(或調(diào)理閥尺寸過(guò)大)或控制對(duì)象受到等幅波動(dòng)的干擾等,都會(huì)使被控量出現(xiàn)等幅振蕩。這時(shí)就不能只注意調(diào)理器參數(shù)的整定,而是要檢查與調(diào)校其它儀表和環(huán)節(jié)。
(2)衰減曲線法:是以4:1衰減作為整定要求的,先切除調(diào)理器的積分和微分作用,用湊試法整定純比例控制作用的比例帶PB(比同時(shí)湊試二個(gè)或三個(gè)參數(shù)要簡(jiǎn)單得多),使之符合4:1衰減比例的要求,記錄下來(lái)此時(shí)的比例帶PBs和振蕩周期Ts。假使加進(jìn)積分和微分作用,可按表給出經(jīng)驗(yàn)公式進(jìn)行計(jì)算。若按這種方式整定的參數(shù)作適當(dāng)?shù)恼{(diào)整。對(duì)有些控制對(duì)象,控制過(guò)程進(jìn)行較快,難以從記錄曲線上找出衰減比。這時(shí),只要被控量波動(dòng)2次就能達(dá)到穩(wěn)定狀態(tài),可近似認(rèn)為是4:1的衰減過(guò)程,其波動(dòng)一次時(shí)間為Ts。
(3)臨界比例帶法,用臨界比例帶法整定調(diào)理器參數(shù)時(shí),先要切除積分和微分作用,讓控制系統(tǒng)以較大的比例帶,在純比例控制作用下運(yùn)行,然后逐漸減小PB,每減小一次都要認(rèn)真觀測(cè)過(guò)程曲線,直到達(dá)到等幅振蕩時(shí),記錄下來(lái)此時(shí)的比例帶PBk(稱為臨界比例帶)和波動(dòng)周期Tk,然后按表3-4-3給出的經(jīng)驗(yàn)公式求出調(diào)理器的參數(shù)值。按該表算出參數(shù)值后,要把比例帶放在比計(jì)算值稍大一點(diǎn)的值上,把Ti和Td放在計(jì)算值上,進(jìn)行現(xiàn)場(chǎng)觀測(cè),假使比例帶可以減小,再將PB放在計(jì)算值上。這種方法簡(jiǎn)單,應(yīng)用比較廣泛。但對(duì)PBk很小的控制系統(tǒng)不適用。
(4)反應(yīng)曲線法,前三種整定調(diào)理器參數(shù)的方法,都是在預(yù)先不知道控制對(duì)象特性的狀況下進(jìn)行的。假使知道控制對(duì)象的特性參數(shù),即時(shí)間常數(shù)T、時(shí)間遲延ξ和放大系數(shù)K,則可按經(jīng)驗(yàn)公式計(jì)算出調(diào)理器的參數(shù)。利用這種方法整定的結(jié)果可達(dá)到衰減率φ=0.75的要求
三試驗(yàn)內(nèi)容及試驗(yàn)過(guò)程
(一)試驗(yàn)步驟
(1)認(rèn)真觀測(cè)球桿控制定位系統(tǒng),指出系統(tǒng)的各個(gè)部分,開(kāi)啟后蓋,認(rèn)知相關(guān)的電氣控制部分及機(jī)械傳動(dòng)部分,并做好記錄。
8
(2)安裝好后蓋,將電源線,通訊線與電源箱,電腦正常連接。(3)接通電源,開(kāi)啟測(cè)試軟件。
(4)在matlab下開(kāi)啟QGTEST.MDL進(jìn)入測(cè)試界面。(5)點(diǎn)擊運(yùn)行
(6)設(shè)置運(yùn)動(dòng)位置POS,觀測(cè)球桿運(yùn)動(dòng)狀況。
(7)切換伺服開(kāi)關(guān),運(yùn)動(dòng),中止開(kāi)關(guān),測(cè)試硬件響應(yīng)。(8)改變運(yùn)動(dòng)速度,加速度及位置,觀測(cè)運(yùn)動(dòng)狀況。(9)開(kāi)啟各個(gè)示波器
(10)用手輕撥鋼球,讓鋼球在滑道上緩慢滾動(dòng),觀測(cè)采集到鋼球的位置數(shù)據(jù)。(11)中止實(shí)時(shí)仿真,觀測(cè)各示波器數(shù)據(jù),并保存到相應(yīng)的文件。
(二)控制系統(tǒng)的搭建
(1)通過(guò)改變?nèi)齻€(gè)輸入常量的值,改變曲柄的運(yùn)動(dòng)速度,加速度和最終停留位置
Move_Abs的創(chuàng)立
A在桌面上新建一個(gè)文件夾,如:“班號(hào)組號(hào)〞。B開(kāi)啟matlab.點(diǎn)擊simulink圖標(biāo)。新建一個(gè)文件。
C將User-DefinedFunctions/S-Function拖入新建文件中,改名為Init。D將一個(gè)Source/Constant拖入新建文件中,并開(kāi)啟。E將Com輸出端連接Init輸入端。
F將Port&Subsystems/EnabledSubsystem拖入新建文件中,并開(kāi)啟。G將其中的“In1—Out1〞刪掉。
H將User-DefinedFunctions/S-Function拖入EnabledSubsystem中,改名為move_absolute。
I將三個(gè)Source/Const拖入新建文件中。
J將文件mcqg.out,IPM100.CFG,Move_Abs.h,InitIPM_RAM.h,
InitIPM_RAM.cpp,TMLcommn.dll,TML_lid.dll,TML_lib.h,TML_lib.lib,文件復(fù)制到班號(hào)組號(hào)中。
K在Init框圖上點(diǎn)擊右鍵/S-FunctionParameters.將S-FunctionName改為InitIPM_RAM并確定。
I在move_absolute??驁D上點(diǎn)擊右鍵/S-FunctionParameters.將S-FunctionName改為move_Abs.并確定。
M將matlab的命令輸入窗口上的CurrentDirectory的路徑設(shè)為“班號(hào)組號(hào)〞的路徑。N在命令輸入窗口中依次輸入mexMove_Abs.cpp,mexInitIPM_RAM.cpp。這是可以看到move_absolute框圖輸入端口為3個(gè)。輸出為零。
O將三個(gè)Constant與move_absolute3個(gè)輸出端口相連。P保存新建文件取名為Move_Abs1.存入“班級(jí)組號(hào)〞中。運(yùn)行,觀測(cè)曲柄的運(yùn)行速度,加速度和最終停留位置。
9
(2)小球在球桿上位置數(shù)據(jù)采集Get_AD的創(chuàng)立A在桌面上新建一個(gè)文件夾,如:“班號(hào)組號(hào)〞。B開(kāi)啟matlab.點(diǎn)擊simulink圖標(biāo)。新建一個(gè)文件。
C將User-DefinedFunctions/S-Function拖入新建文件中,改名為Init。D將一個(gè)Source/Constant拖入新建文件中,并開(kāi)啟。E將Com輸出端連接Init輸入端。
F將Port&Subsystems/EnabledSubsystem拖入新建文件中,并開(kāi)啟。G將其中的“In1—Out1〞刪掉。
H將User-DefinedFunctions/S-Function拖入EnabledSubsystem中,改名為Get_ADI另將一個(gè)Source/Constant拖入子系統(tǒng)中。J在子系統(tǒng)中拖入一個(gè)示波器scop。
K將Constant的值改為5.名稱改為AD_NO。
L將AD_NO的輸出端與Get_AD的輸出端相連,將Get_AD的輸出端與示波器scop的輸入端相連。
M在Get_AD框圖上點(diǎn)擊右鍵/S-FunctionParameters.將S-FunctionName改為Get_AD并確定。
N將Get_AD.cpp,Get_AD.h復(fù)制到文件夾“班號(hào)組號(hào)〞中。O在命令輸入窗口輸入mexGet_AD.cpp。
P將所搭建的模塊另存到12中。取名為GetAD.
用手使小球在球桿上移動(dòng),用示波器上顯示出小球運(yùn)動(dòng)位置的變化軌跡。
(3)伺服控制stopandservo的創(chuàng)立
A在桌面上新建一個(gè)文件夾,如:“班號(hào)組號(hào)〞。B開(kāi)啟matlab.點(diǎn)擊simulink圖標(biāo)。新建一個(gè)文件。
C將User-DefinedFunctions/S-Function拖入新建文件中,改名為Init。D將一個(gè)Source/Constant拖入新建文件中,并開(kāi)啟。E將Com輸出端連接Init輸入端。
F將Port&Subsystems/EnabledSubsystem拖入新建文件中,并開(kāi)啟。G將其中的“In1—Out1〞刪掉。
H將兩個(gè)User-DefinedFunctions/S-Function拖入EnabledSubsystem中,分別改名為stop和servo。
I將兩個(gè)SignalRouting/ManualSwitch(分別取名為ManualSwitch1和ManualSwitch2)和4個(gè)Source/Constant拖入Sbsystem中。
J將ManualSwitch1和ManualSwitch2的兩個(gè)輸入端分別與兩個(gè)Constant相連。K將ManualSwitch1的輸出端與stop相連。將ManualSwitch2的輸出端與servo相連。L與ManualSwitch1相連的兩個(gè)Constant分別取值-1,改名continue和3,改名為stop.與ManualSwitch2相連的兩個(gè)Constant分別取值0,改名POWEROFF和1,改名為POWERON。M將Stop.cpp,Stop.h,Servo.cpp,Servo.h復(fù)制粘貼到“班號(hào)組號(hào)〞中。
10
N在命令輸入窗口中一次輸入mexStop.cpp,mexServo.cpp。O將所搭建的模塊另存到“班號(hào)組號(hào)〞中。取名為stoppandservo.運(yùn)行:若將stop與-1連接,servo與1連接。則運(yùn)行時(shí),曲柄將運(yùn)動(dòng)到特定位置后中止運(yùn)動(dòng);若在中途改變stop與3連接,則曲柄馬上中止運(yùn)動(dòng);若沒(méi)有上一步,將servo改為與0相連,則曲柄馬上自然下垂到初始位置,再將servo改為與1相連,則曲柄馬上又回到目標(biāo)位置。(4)根據(jù)球桿系統(tǒng)的模型,建立PID控制器,控制球在球桿某個(gè)位置的simulink控制模型。A在桌面上新建一個(gè)文件夾,如:“班號(hào)組號(hào)〞。B開(kāi)啟matlab.點(diǎn)擊simulink圖標(biāo)。新建一個(gè)文件。
C將User-DefinedFunctions/S-Function拖入新建文件中,改名為Init。D將一個(gè)Source/Constant拖入新建文件中,并開(kāi)啟。E將Com輸出端連接Init輸入端。
F將Port
//ParametermismatchwillbereportedbySimulink
if(ssGetNumSFcnParams(S)!=ssGetSFcnParamsCount(S)){return;}
//SpecifyI/O
//if(!ssSetNumInputPorts(S,0))return;if(!ssSetNumInputPorts(S,1))return;
ssSetInputPortWidth(S,0,DYNAMICALLY_SIZED);ssSetInputPortDirectFeedThrough(S,0,1);if(!ssSetNumOutputPorts(S,1))return;
ssSetOutputPortWidth(S,0,DYNAMICALLY_SIZED);
ssSetNumSampleTimes(S,1);
//ReserveplaceforC++objectssSetNumPWork(S,1);
ssSetOptions(S,SS_OPTION_WORKS_WITH_CODE_REUSE|SS_OPTION_EXCEPTION_FREE_CODE|SS_OPTION_USE_TLC_WITH_ACCELERATOR);}//Function:mdlInitializeSampleTimes=========================================//Abstract:
//Thisfunctionisusedtospecifythesampletime(s)foryour
//S-function.Youmustregisterthesamenumberofsampletimesas//specifiedinssSetNumSampleTimes.
staticvoidmdlInitializeSampleTimes(SimStruct*S){
ssSetSampleTime(S,0,CONTINUOUS_SAMPLE_TIME);//INHERITED_SAMPLE_TIMEssSetOffsetTime(S,0,0.0);
ssSetModelReferenceSampleTimeDefaultInheritance(S);
13
}
//Function:mdlStart=======================================================//Abstract:
//Thisfunctioniscalledonceatstartofmodelexecution.Ifyou//havestatesthatshouldbeinitializedonce,thisistheplace//todoit.
#defineMDL_START
staticvoidmdlStart(SimStruct*S){
//StorenewC++objectinthepointersvectorDoubleAdder*da=newDoubleAdder();
//InputRealPtrsTypeuPtrs=ssGetInputPortRealSignalPtrs(S,0);
ssGetPWork(S)[0]=da;}//Function:mdlOutputs=======================================================//Abstract:
//Inthisfunction,youcomputetheoutputsofyourS-function
//block.Generallyoutputsareplacedintheoutputvector,ssGetY(S).staticvoidmdlOutputs(SimStruct*S,int_Ttid){
//RetrieveC++objectfromthepointersvector
//DoubleAdder*da=static_cast(ssGetPWork(S)[0]);//GetdataaddressesofI/O
InputRealPtrsTypeu=ssGetInputPortRealSignalPtrs(S,0);real_T*y=ssGetOutputPortRealSignal(S,0);//
//CallAddTomethodandreturnpeakvalue//y[0]=da->AddTo(*u[0]);
//shortval_ad;shortAD_No;WORDadr_AD;AD_No=*u[0];adr_AD=0;
if(AD_No==2)adr_AD=0x23e;if(AD_No==5)adr_AD=0x241;if(adr_AD!=0){
TS_GetIntVariable(adr_AD,val_ad);
*y=400.00*((float)(unsignedshort)val_ad/65535.00);}
//}//Function:mdlTerminate=====================================================
14
//Abstract:
//Inthisfunction,youshouldperformanyactionsthatarenecessary//attheterminationofasimulation.Forexample,ifmemorywas//allocatedinmdlStart,thisistheplacetofreeit.staticvoidmdlTerminate(SimStruct*S){
//RetrieveanddestroyC++object
//DoubleAdder*da=static_cast(ssGetPWork(S)[0]);//deleteda;}
//RequiredS-functiontrailer
#ifdefMATLAB_MEX_FILE/*IsthisfilebeingcompiledasaMEX-file?*/#include\/*MEX-fileinterfacemechanism*/#else
#include\/*Codegenerationregistrationfunction*/#endif
InitIPM_RAM.cpp
/*Copyright2023-2023TheMathWorks,Inc.*/
//*******************************************************************//****Tobuildthismexfunctionuse:mexMytst.cpp****
//*******************************************************************
#include\
#defineWIN32
//#ifndefWIN32
//#error\//#endif
#include\
#defineS_FUNCTION_LEVEL2
#defineS_FUNCTION_NAMEInitIPM_RAM
//Needtoincludesimstruc.hforthedefinitionoftheSimStructand//itsassociatedmacrodefinitions.#include\
#include\
//#include\
#pragmacomment(lib,\)#pragmawarning(disable:4761)
15
#defineIS_PARAM_DOUBLE(pVal)(mxIsNumeric(pVal)
//ParametermismatchwillbereportedbySimulink
if(ssGetNumSFcnParams(S)!=ssGetSFcnParamsCount(S)){return;}
//SpecifyI/O
//if(!ssSetNumInputPorts(S,0))return;if(!ssSetNumInputPorts(S,1))return;
ssSetInputPortWidth(S,0,DYNAMICALLY_SIZED);ssSetInputPortDirectFeedThrough(S,0,1);if(!ssSetNumOutputPorts(S,1))return;
ssSetOutputPortWidth(S,0,DYNAMICALLY_SIZED);
ssSetNumSampleTimes(S,1);
//ReserveplaceforC++objectssSetNumPWork(S,1);
ssSetOptions(S,SS_OPTION_WORKS_WITH_CODE_REUSE|SS_OPTION_EXCEPTION_FREE_CODE|SS_OPTION_USE_TLC_WITH_ACCELERATOR);}//Function:mdlInitializeSampleTimes=========================================//Abstract:
//Thisfunctionisusedtospecifythesampletime(s)foryour
//S-function.Youmustregisterthesamenumberofsampletimesas//specifiedinssSetNumSampleTimes.
staticvoidmdlInitializeSampleTimes(SimStruct*S){
ssSetSampleTime(S,0,INHERITED_SAMPLE_TIME);ssSetOffsetTime(S,0,0.0);
ssSetModelReferenceSampleTimeDefaultInheritance(S);}
//Function:mdlStart=======================================================//Abstract:
//Thisfunctioniscalledonceatstartofmodelexecution.Ifyou
16
//havestatesthatshouldbeinitializedonce,thisistheplace//todoit.
#defineMDL_START
staticvoidmdlStart(SimStruct*S){
//StorenewC++objectinthepointersvector//DoubleAdder*da=newDoubleAdder();shortrtn;
InputRealPtrsTypeuPtrs=ssGetInputPortRealSignalPtrs(S,0);
//ssGetPWork(S)[0]=da;//FILE*pfile;
DWORDnBaud=115200;BYTEnHostID=255;
BYTEnRSType=SERIAL_RS232;BYTEnPort=1;
WORDstart_address;
//pfile=fopen(\nPort=*uPtrs[0];
rtn=TS_OpenSerialPort(nRSType,nPort,nHostID,nBaud);//fprintf(pfile,\rtn=TS_SetupAxis(255,\);
//fprintf(pfile,\rtn=TS_SelectAxis(255);
//fprintf(pfile,\rtn=TS_Reset();Sleep(100);
////1¤×÷·?ê?????_20230917
//Downloadthe\TS_DownloadProgram(\,start_address);
//Afterthefiledownload,executethedownloadedcode
TS_GOTO(start_address);//gotothestartaddressofthesetupprogram//Afterthis,youcanstartsendingon-linecommandstowardsthedrive//
rtn=TS_Power(POWER_ON);
//fprintf(pfile,\
//rtn=TS_MoveVelocity(2,0.64,MOVE_IMMEDIATE,FROM_REFERENCE);
rtn=TS_MoveAbsolute(4420,5,1,UPDATE_IMMEDIATE,FROM_REFERENCE);//fprintf(pfile,\//fclose(pfile);Sleep(100);}
17
//Function:mdlOutputs=======================================================//Abstract:
//Inthisfunction,youcomputetheoutputsofyourS-function
//block.Generallyoutputsareplacedintheoutputvector,ssGetY(S).staticvoidmdlOutputs(SimStruct*S,int_Ttid){
//RetrieveC++objectfromthepointersvector
//DoubleAdder*da=static_cast(ssGetPWork(S)[0]);
//GetdataaddressesofI/O
//InputRealPtrsTypeu=ssGetInputPortRealSignalPtrs(S,0);real_T*y=ssGetOutputPortRealSignal(S,0);
//CallAddTomethodandreturnpeakvalue//y[0]=da->AddTo(*u[0]);
///*WORDadr_APOS=0x228;//addressoftheAPOSTMLvariable-measuredpositionlongi_APOS=0;//variablestoringtheactualpositionreadfromthedriveTS_GetLongVariable(adr_APOS,i_APOS);//readtheactualpositionif(i_APOS(ssGetPWork(S)[0]);//deleteda;}
//RequiredS-functiontrailer
#ifdefMATLAB_MEX_FILE/*IsthisfilebeingcompiledasaMEX-file?*/#include\/*MEX-fileinterfacemechanism*/#else
#include\/*Codegenerationregistrationfunction*/#endif
18
Move_AbS.cpp
/*Copyright2023-2023TheMathWorks,Inc.*/
//*******************************************************************//****Tobuildthismexfunctionuse:mexMytst.cpp****
//*******************************************************************
#include\
#defineWIN32
//#ifndefWIN32
//#error\//#endif
#include\
#defineS_FUNCTION_LEVEL2
#defineS_FUNCTION_NAMEMove_Abs
//Needtoincludesimstruc.hforthedefinitionoftheSimStructand//itsassociatedmacrodefinitions.#include\
#include\
//#include\
#pragmacomment(lib,\)#pragmawarning(disable:4761)
#defineIS_PARAM_DOUBLE(pVal)(mxIsNumeric(pVal)
ssSetNumSFcnParams(S,0);
//ParametermismatchwillbereportedbySimulink
if(ssGetNumSFcnParams(S)!=ssGetSFcnParamsCount(S)){return;}
19
//SpecifyI/O
if(!ssSetNumInputPorts(S,3))return;for(i=0;i
在150位置上的穩(wěn)定狀況
在250位置上的穩(wěn)定狀況26
四試驗(yàn)總結(jié)及心得體會(huì)
(一)試驗(yàn)總結(jié)(主要說(shuō)說(shuō)PID調(diào)理的一些感受)(1)PID調(diào)理器各校正環(huán)節(jié)的作用
比例環(huán)節(jié):即時(shí)成比例地反應(yīng)控制系統(tǒng)的偏差信號(hào)e(t),偏差一旦產(chǎn)生,調(diào)理器馬上
產(chǎn)生控制作用以減小偏差。
積分環(huán)節(jié):主要用于消除靜差,提高系統(tǒng)的無(wú)差度。積分作用的強(qiáng)弱取決于積分時(shí)間常
數(shù)TI,TI越大,積分作用越弱,反之則越強(qiáng)。
微分環(huán)節(jié):能反應(yīng)偏差信號(hào)的變化趨勢(shì)(變化速率),并能在偏差信號(hào)的值變得太大之前,
在系統(tǒng)中引入一個(gè)有效的早期修正信號(hào),從而加快系統(tǒng)的動(dòng)作速度,減小調(diào)理時(shí)間。
(2)常用的控制方式:P控制,PI控制,PD控制,PID控制(3)PID算法的兩種類型:位置型控制,增量型控制(4)微分先行和輸入濾波
微分先行:微分先行是把對(duì)偏差的微分改為對(duì)被控量的微分,這樣,在給定值變化時(shí),
不會(huì)產(chǎn)生輸出的大幅度變化。而且由于被控量一般不會(huì)突變,即使給定值已發(fā)生改變,被控量也是緩慢變化的,從而不致引起微分項(xiàng)的突變。
輸入濾波:輸入濾波就是在計(jì)算微分項(xiàng)時(shí),不是直接應(yīng)用當(dāng)前時(shí)刻的誤差e(n)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度建筑工人勞動(dòng)合同(附創(chuàng)新技術(shù)培訓(xùn)內(nèi)容)
- 二零二五年度國(guó)際酒店餐飲業(yè)勞務(wù)供應(yīng)協(xié)議
- 二零二五年度生活垃圾清運(yùn)與環(huán)保技術(shù)研發(fā)應(yīng)用合同
- 電子商務(wù)平臺(tái)代運(yùn)營(yíng)服務(wù)協(xié)議
- 采購(gòu)合同辣椒采購(gòu)合同
- 音樂(lè)課本中的歌曲背后的故事征文
- 專業(yè)保潔服務(wù)合作協(xié)議
- 簡(jiǎn)愛(ài)人物形象塑造分析:世界名著導(dǎo)讀課程教案
- 人力資源招聘與培訓(xùn)流程說(shuō)明
- 企業(yè)綠色信用修復(fù)服務(wù)協(xié)議
- 10我們所了解的環(huán)境污染 (教學(xué)設(shè)計(jì))2023-2024學(xué)年統(tǒng)編版道德與法治四年級(jí)上冊(cè)
- 2025中國(guó)煙草/中煙工業(yè)招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 新教科版小學(xué)科學(xué)三年級(jí)下冊(cè)教案(全冊(cè))
- 2025小學(xué)語(yǔ)文一年級(jí)下冊(cè)第二單元教學(xué)課件匯編(配套新教材)
- 語(yǔ)文課堂中的多媒體教學(xué)方法研究
- 2025年湖南交通職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 小學(xué)生傳統(tǒng)文化教育的家庭學(xué)校社會(huì)協(xié)同機(jī)制
- 兒童飲食健康指南
- 民用無(wú)人機(jī)操控員執(zhí)照(CAAC)考試復(fù)習(xí)重點(diǎn)題庫(kù)500題(含答案)
- 2025年春新北師大版物理八年級(jí)下冊(cè)課件 第六章 質(zhì)量和密度 第三節(jié) 密度的測(cè)量與應(yīng)用
- 2024-2025學(xué)年成都市高一上英語(yǔ)期末考試題(含答案和音頻)
評(píng)論
0/150
提交評(píng)論