版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 《工業(yè)系統(tǒng)驅(qū)動與控制》</p><p><b> 設計報告</b></p><p><b> 設計內(nèi)容與要求</b></p><p> 在某工業(yè)系統(tǒng)中,需要一個由計算機精確控制的施力裝置,用來對某系統(tǒng)進行力加載試驗,請設計一個能夠精確控制輸出力為180公斤的工業(yè)控制系統(tǒng)。</p>
2、<p><b> 要求:</b></p><p> 1)使用本門課所學知識,按上述要求設計系統(tǒng),畫出系統(tǒng)組成框圖,</p><p> 并注明各個環(huán)節(jié)的輸入和輸出信號的形式; </p><p> 2)簡單描述系統(tǒng)的工作原理或過程; </p><p> 3)列出系統(tǒng)及調(diào)試所用的儀器設備和主要器件; <
3、;/p><p> 4)畫出軟件流程框圖;</p><p> 5)改寫DRAWINGC.C或CONTOL_D.C程序,實現(xiàn)控制;(將本課程所用采集</p><p> 卡的位數(shù)改為10位,選用13路AD采集通道,2路DA控制輸出通道)</p><p><b> 附:</b></p><p> 一
4、、傳感器型號為XYL-1,指標如下:</p><p> 1)量程:0~200kg</p><p> 2)工作電壓為10V</p><p> 3)輸出范圍0~20mV</p><p> 4)傳感器是線性的。</p><p> 二、電壓/力轉(zhuǎn)換器(執(zhí)行器):輸入0~10V,輸出0~200公斤,輸出線性。</
5、p><p><b> 設計分析</b></p><p> 首先針對題目進行分析可以看到,本題具體要求可以抽象成一個比較簡單的工業(yè)問題,即如何通過數(shù)字控制以實現(xiàn)信號的穩(wěn)定,快速,精確輸出。結合本課程的內(nèi)容,可以基本確定其主體結構為一數(shù)字PID控制系統(tǒng),通過PID反饋網(wǎng)絡對信號進行調(diào)節(jié)從而實現(xiàn)題設中壓力的輸出。故而整個系統(tǒng)執(zhí)行流程大致如下:</p><
6、p><b> 圖1 系統(tǒng)工作流程</b></p><p> 在工控計算機中輸入指定輸出的壓力,例如本題為180,由于題中壓力轉(zhuǎn)換器的參數(shù)可知,輸入范圍為0-10V,輸出為0-200,故而根據(jù)其線性特性二者可以建立以下關系:,其中。取該值進行線形計算可知180壓力對應電壓為9V,即我們需要通過采集卡輸出9V電壓。從而工控計算機可以通過相應的數(shù)字/模擬轉(zhuǎn)換函數(shù)對采集卡進行操作達到以上目
7、的。</p><p> 當系統(tǒng)通過采集卡輸出電壓至電壓/壓力轉(zhuǎn)換器后,將產(chǎn)生相應的壓力作用于受力物體上,但是受制于工業(yè)機械的性能問題,受力物體無法在較短時間內(nèi)精確接受到相應的壓力,從而影響了工業(yè)系統(tǒng)的性能。因此,我們在此引入反饋系統(tǒng)進行調(diào)節(jié)。</p><p> 利用壓力傳感器實時采集當前受力對象所受的壓力并轉(zhuǎn)換成電壓信號輸入到采集卡中,注意,由于壓力傳感器的可用輸出電壓范圍僅為0-20
8、mV,在采集卡增益處理時需要選擇比較大的增益倍數(shù),否則無法精確地處理數(shù)據(jù),或者可以再此處加入比例放大電路來實現(xiàn)電壓放大功能,但是會因此產(chǎn)生延遲。</p><p> 通過采集卡的AO通道將電壓返回工控計算機中,利用指定的PID算法進行調(diào)整并再次輸出,同時,在屏幕上繪制圖像來判斷壓力信號是否在較短的時間內(nèi)到達穩(wěn)定的輸出值。</p><p> 在該系統(tǒng)實現(xiàn)之前,需要針對具體的PID系統(tǒng)參數(shù)進
9、行調(diào)試,從而達到最優(yōu)控制的效果。</p><p> 通過以上流程可以基本實現(xiàn)PID程序控制。</p><p><b> 主要設備器件</b></p><p><b> 基本器件如下:</b></p><p> IPC-610/RK-40610工控計算機1臺</p><p&
10、gt; PCL-812PG/ACL-8112PG數(shù)據(jù)采集卡一塊</p><p> PCLD-880 REV.A1或ACLD-9188 REV.B1端子板一塊</p><p> 20pin扁平電纜一條或37pinD形電纜一條</p><p> XYL-1壓力傳感器一臺</p><p> 電壓/壓力轉(zhuǎn)換器一臺</p>&l
11、t;p> 直流穩(wěn)壓輸出電源一臺</p><p><b> 各色導線若干</b></p><p> 為了實現(xiàn)比例放大電路,以下器件可選:</p><p><b> 電阻,電阻各一</b></p><p> UA741運算放大器</p><p> 通過以上放大電
12、路,根據(jù)深反 饋原理,可以實現(xiàn)電壓100倍放大,故而此時反饋電壓范圍可以擴展到0-2V。</p><p><b> 工控軟件設計</b></p><p> 為了實現(xiàn)PID調(diào)節(jié)功能,在此給出其程序設計流程圖以及部分核心函數(shù)的代碼,但是在開始之前,需要針對PID系統(tǒng)的三大參數(shù)進行調(diào)試確定工作。線代PID參數(shù)確定一般采用兩種方法,一是使用最為廣泛的人工調(diào)試法,二是基
13、于神經(jīng)網(wǎng)絡或是遺傳算法等高級智能算法進行參數(shù)自適應調(diào)整從而達到最優(yōu)效果。此處采用人工調(diào)試法。</p><p> 經(jīng)過調(diào)試后得合適的PID參數(shù),即比例項,積分項,微分項參數(shù)。</p><p><b> 圖2 軟件流程圖</b></p><p><b> 核心代碼:</b></p><p> #
14、include "math.h"</p><p> #include "graphics.h"</p><p> int Base=0x220;</p><p> DA(int port, int data) //數(shù)字轉(zhuǎn)模擬并執(zhí)行輸出</p><p><b> {</b>&
15、lt;/p><p> short high,low;</p><p> low=data&0xff;</p><p> high=(data>>8)&0x0f;</p><p> outportb(Base+4+port*2,low);</p><p> outportb(Base+5
16、+port*2,high);</p><p><b> }</b></p><p> int AD (int port) //在指定端口獲取模擬量并轉(zhuǎn)為數(shù)字信號</p><p><b> {</b></p><p> short high,low,temp;</p><
17、p> int outdata;</p><p> outportb(Base+10,port);</p><p> outportb(Base+9,2);//增益為(010)d,即Gain=4,放大4倍</p><p> outportb(Base+11,1);</p><p> outportb(Base+12,0x
18、ff);</p><p> temp=inportb(Base+5);</p><p> temp=temp&0x10;</p><p> while(temp==0x10)</p><p><b> {</b></p><p> temp=inportb(Base+5);<
19、;/p><p> temp=temp&0x10;</p><p><b> }</b></p><p> high= inportb(Base+5);</p><p> low = inportb(Base+4);</p><p> outdata=high&0x0f;<
20、;/p><p> outdata=outdata<<8;</p><p> outdata=outdata+low;</p><p> return(outdata);</p><p><b> }</b></p><p> ////////////////////以下均為Dra
21、wingc.c自帶圖形繪制函數(shù)//////////////</p><p> void auto_initgraph()</p><p><b> {</b></p><p> int gd=DETECT,mode,erro;</p><p> mode=0;erro=0;</p><p>
22、; closegraph();</p><p> initgraph(&gd,&mode,"");</p><p> erro=graphresult();</p><p> if(erro<0)</p><p> {printf("initgraph erro/n");
23、</p><p><b> exit(0);</b></p><p><b> }</b></p><p><b> }</b></p><p> void draw_xy(ox,oy,widthx,heighty,color)</p><p>
24、 int ox,oy,widthx,heighty,color;</p><p><b> {</b></p><p> int points1[8],points2[8];</p><p> setcolor(color);</p><p> setlinestyle(0,0,1);</p>&
25、lt;p> moveto(ox,oy);lineto(ox,oy-heighty);</p><p> moveto(ox,oy);lineto(ox+widthx,oy);</p><p> setfillstyle(1,color);</p><p> points1[0]=ox;points1[1]=oy-heighty-(int)(height
26、y/20);</p><p> points1[2]=ox-(int)(heighty/110);</p><p> points1[3]=oy-heighty;</p><p> points1[4]=ox+(int)(heighty/110);</p><p> points1[5]=oy-heighty;</p>
27、<p> points1[6]=points1[0];points1[7]=points1[1];</p><p> fillpoly(4,points1);</p><p> points2[0]=ox+widthx+(int)(widthx/25);</p><p> points2[1]=oy;points2[2]=ox+widthx;<
28、;/p><p> points2[3]=oy-(int)(widthx/150);</p><p> points2[4]=ox+widthx;</p><p> points2[5]=oy+(int)(widthx/150);</p><p> points2[6]=points2[0];points2[7]=points2[1];&l
29、t;/p><p> fillpoly(4,points2);</p><p> settextstyle(0,0,1);</p><p> outtextxy(ox+6,oy+6,"o");</p><p> outtextxy(points1[0]+6,points1[1],"y");</p
30、><p> outtextxy(points2[0],points2[1]+6,"x");</p><p><b> }</b></p><p> void draw_dash(ox,oy,widthx,heighty,color)</p><p> int ox,oy,widthx,height
31、y,color;</p><p><b> {</b></p><p> int i,fx,fy;</p><p> setcolor(color);</p><p> setlinestyle(1,0,1);</p><p> for(i=1;i<11;i++)</p>
32、;<p><b> {</b></p><p> fx=ox+i*widthx/10.0;</p><p> moveto(fx,oy);</p><p> fy=oy-heighty;</p><p> lineto(fx,fy);</p><p><b>
33、}</b></p><p> for(i=1;i<11;i++)</p><p><b> {</b></p><p> fy=oy-i*heighty/10.0;</p><p> moveto(ox,fy);</p><p> fx=ox+widthx;</p
34、><p> lineto(fx,fy);</p><p><b> }</b></p><p><b> }</b></p><p> void draw_curve(pointsx,pointsy,points_num,max_v,ifdrawdash)</p><p>
35、; double *pointsx,*pointsy,max_v;</p><p> int points_num,ifdrawdash;</p><p><b> {</b></p><p> int i,widthx,heighty,ox,oy;</p><p><b> int x,y;<
36、/b></p><p> double xpert,yperv;</p><p> ox=20;oy=400;</p><p> widthx=550; heighty=370;</p><p> yperv=heighty/max_v;</p><p> xpert=((double)widthx)/
37、((double)points_num-1.0);</p><p> if(ifdrawdash==1) draw_dash(ox,oy,widthx,heighty,3);</p><p> draw_xy(ox,oy,widthx+10,heighty+10,2);</p><p> setcolor(4);</p><p>
38、setlinestyle(0,0,1);</p><p> for(i=0;i<(points_num-1);i++)</p><p><b> {</b></p><p> x=(int)(ox+pointsx[i]*xpert);</p><p> y=(int)(oy-pointsy[i]*yperv
39、);</p><p> moveto(x,y);</p><p> x=(int)(ox+pointsx[i+1]*xpert);</p><p> y=(int)(oy-pointsy[i+1]*yperv);</p><p> lineto(x,y);</p><p><b> }</b&
40、gt;</p><p><b> return;</b></p><p><b> }</b></p><p> /////////////////////////////////////////////////////////////////////</p><p> //////////
41、/////////////////主函數(shù)///////////////////////////////////</p><p><b> main()</b></p><p><b> {</b></p><p> int i,t,da_out;</p><p> double x[200]
42、,y[200],e1,e2,Ey,u,sume;</p><p> double kp,ki,kd;</p><p> double Nout;</p><p> t=1000;da_out=0;</p><p> scanf("%f,%f,%f",&kp,&ki,&kd);//輸入經(jīng)過
43、調(diào)試后的PID參數(shù)</p><p> scanf("%f ",&Nout);//讀取輸出的壓力,用戶可輸入180</p><p> Ey=Nout/20.0; //將期望輸出壓力轉(zhuǎn)換為相應的期望電壓</p><p> e1=Ey-0.0; e2=0.0; sume=e1;</p><p> DA(0,0);
44、//clear DA輸出</p><p> for(i=0;i<200;i++)</p><p><b> { </b></p><p> u=kp*e1+ki*sume+kd*(e1-e2);</p><p> If(u>8.0) u=8.0;</p><p> I
45、f(u<0.0) u=0.0;</p><p> da_out=(int)(u/10.0*1023.0); </p><p> //采集卡位數(shù)為10位, 故最大值發(fā)生改變</p><p> DA(0,da_out); </p><p> delay(t);//延時</p><p> y[i]=(
46、AD(13)/1023.0*8.0)*10.0/8.0-8.0;</p><p> //注意,傳感器經(jīng)過100倍放大再加上采集卡增益后對應的電壓范圍為0-8V,故而需要再做一次線性變換來符合執(zhí)行器0-10V輸入電壓范圍</p><p><b> x[i]=i;</b></p><p> e2=e1;e1=Ey-y[i];sume=sume
47、+fabs(e1); </p><p><b> }</b></p><p> auto_initgraph();//初始化圖像設備</p><p> draw_curve(x,y,200,10.0,1); //畫圖</p><p><b> getch();</b></p&
48、gt;<p><b> DA(0,0);</b></p><p> closegraph(); //關閉圖像設備 </p><p><b> }</b></p><p> /////////////////////////////////////////////////////////////////
49、////</p><p><b> 總結與感想</b></p><p> 通過以上程序以及設計流程可以基本實現(xiàn)題目要求的功能,在此可以看到,反饋這一概念在工業(yè)控制中常常扮演重要角色,特別是在精確控制等領域。事實上,反饋的思想在電工學,生理學等多方面均有表現(xiàn)。</p><p> 本次實驗尚有一些不足,主要是程序未能在真實場景中進行測試,故而
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《工業(yè)系統(tǒng)驅(qū)動與控制》設計題
- 電氣控制與plc課程設計報告工業(yè)鏟車操作控制
- 控制系統(tǒng)設計與仿真課程設計報告
- 操作系統(tǒng)課程設計報告--驅(qū)動調(diào)度
- 工業(yè)鏟車控制系統(tǒng)plc課程設計
- 控制系統(tǒng)課程設計報告--- 控制系統(tǒng)設計與仿真
- plc課程設計----工業(yè)鏟車控制系統(tǒng)設計
- 工業(yè)工程課程設計報告
- 彩燈控制系統(tǒng)課程設計報告
- 交通控制系統(tǒng)課程設計報告
- 工業(yè)通信技術課程設計報告---基于plc控制的溶液混合課程設計
- 自控課程設計報告--控制系統(tǒng)的設計與校正
- 電氣控制與plc課程設計---工業(yè)洗衣機控制系統(tǒng)設計
- 信號與系統(tǒng)課程設計報告
- 信號與系統(tǒng)課程設計報告
- linux字符設備驅(qū)動課程設計報告
- 溫度采集與控制課程設計報告
- 流量比值控制系統(tǒng)課程設計報告
- 步進電機控制系統(tǒng)設計課程設計報告
- 機電控制系統(tǒng)plc驅(qū)動實驗平臺課程設計
評論
0/150
提交評論