DDC單回路PID閉環(huán)控制系統(tǒng)的設(shè)計及實時仿真課程設(shè)計報告_第1頁
DDC單回路PID閉環(huán)控制系統(tǒng)的設(shè)計及實時仿真課程設(shè)計報告_第2頁
DDC單回路PID閉環(huán)控制系統(tǒng)的設(shè)計及實時仿真課程設(shè)計報告_第3頁
DDC單回路PID閉環(huán)控制系統(tǒng)的設(shè)計及實時仿真課程設(shè)計報告_第4頁
DDC單回路PID閉環(huán)控制系統(tǒng)的設(shè)計及實時仿真課程設(shè)計報告_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 課程設(shè)計(綜合實驗)報告( 2011- 2012 年度第 二學期)名 稱: 過程計算機控制系統(tǒng) 題 目:DDC單回路PID閉環(huán)控制系統(tǒng)的設(shè)計及實時仿真院 系: 控制與計算機工程學院 班 級: 學 號: 學生姓名: 指導(dǎo)教師: 朱耀春 設(shè)計周數(shù): 一周 成 績: 日期:2012 年 6 月 20 日 課程設(shè)計報告一、 課程設(shè)計的目的與要求1.設(shè)計目的在計算機控制系統(tǒng)課程學習的基礎(chǔ)上,加強學生的實際動手能力,通過對DDC直接數(shù)字閉環(huán)控制的仿真加深對課程內(nèi)容的理解。2.設(shè)計要求本次課程設(shè)計通過多人合作完成DDC直接數(shù)字閉環(huán)控制的仿真設(shè)計,學會A/D、D/A轉(zhuǎn)換模塊的使用。通過手動編寫PID運算式掌

2、握數(shù)字PID控制器的設(shè)計與整定的方法,并做出模擬計算機對象飛升特性曲線,熟練掌握DDC單回路控制程序編制及調(diào)試方法。二、 設(shè)計正文1.設(shè)計思想 本課程設(shè)計利用Turboc2.1開發(fā)環(huán)境,通過手動編寫C語言程序完成PID控制器的設(shè)計,A/D、D/A轉(zhuǎn)換,繪出PID階躍響應(yīng)曲線與被控對象動態(tài)特性曲線。整個設(shè)計程序模塊包含了PID配置模塊,PLCD-780定時采樣、定時輸出模塊,PID手/自動切換模塊(按鍵控制)及繪圖顯示模塊。設(shè)計中,通過設(shè)定合理的PID 參數(shù),控制PLCD-780完成模擬計算機所搭接二階慣性環(huán)節(jié)數(shù)據(jù)的采集,并通過繪圖程序獲得對象階躍響應(yīng)曲線。 2. 設(shè)計步驟(1)前期準備工作 (

3、1.1)配備微型計算機一臺,系統(tǒng)軟件Windows 98或DOS (不使用無直接I/O能力的NT或XP系統(tǒng)), 內(nèi)裝Turbo C 2.0/3.0集成開發(fā)環(huán)境軟件;(1.2)配備模擬計算機一臺(XMN-1型), 通用數(shù)據(jù)采集控制板一塊(PLCD-780型);(1.3)復(fù)習Turboc2.0并參照說明書學習PLCD-780的使用(2) PID的設(shè)計(2.1)PID的離散化理想微分PID算法的傳遞函數(shù)形式為:采用向后差分法對上式進行離散,得出其差分方程形式為:uk=uk-1+q0*e2+q1*e1+q2*e0;其中各項系數(shù)為:q0=kp*(1+T/Ti+Td/T); q1=-kp*(1+2*Td/

4、T); q2=kp*Td/T;實際微分PID算法的傳遞函數(shù)形式為:采用向后差分法對上式進行離散化,寫成差分方程的形式為: uk=c0*(uk-1)+c1*ek+c2*ek-1+c3*ek-2+uk-1;其中各項系數(shù)為:c0=Tf/(T+Tf);c1=kp*T/(T+Tf)*(1+T/Ti+Td/T); c2=-kp*T/(T+Tf)*(1+2*Td/T); c3=kp*Td/(T+Tf); (2.2)數(shù)字PID算法的改進積分分離算法積分分離算法通過控制PID輸入偏差e達到優(yōu)化目的,當偏差較大時停止積分作用,只有當偏差較小時才投入積分,算法如下表示:當|e(k)|>時,采用PD控制; 當|

5、e(k)|<時, 采用PID控制;的值根據(jù)具體對象及要求確定??狗e分飽和算法抗積分飽和算法依據(jù)控制系統(tǒng)最終的控制輸出量u達到優(yōu)化目的,當控制量u較大且超出執(zhí)行機構(gòu)與A/D轉(zhuǎn)換范圍時,控制器停止積分作用,保證輸出超限時不積分;帶死區(qū)的數(shù)字PID算法在實際控制系統(tǒng)中,計算機控制為了避免控制動作過于頻繁,以消除系統(tǒng)振蕩,就會采用帶死區(qū)的PID算法。該算法是在原PID算法前加一個不靈敏區(qū)來實現(xiàn),即 當|e(k)|>C時,|e(k)|=|e(k)|; 當|e(k)|<C時,|e(k)|=0 其中C代表不靈敏區(qū)值;(2.3) 手動/自動雙向無擾切換自動切手動:系統(tǒng)處于自動時,手操器實時跟

6、蹤自動PID調(diào)節(jié)器的輸出,切換瞬間由于手操器內(nèi)部電路起保持作用,使得切換沒有擾動產(chǎn)生,此時對象處于手操器的開環(huán)控制,調(diào)節(jié)器跟蹤手操器的輸出。手動切自動:手動到自動的切換過程主要由計算機軟件實現(xiàn),一方面PID調(diào)節(jié)器獲得手操器輸出,同時軟件使得算法中的uk-1)、ek、ek-1、ek-2等歷史狀態(tài)清零。 程序中通過設(shè)置鍵盤,使的按下手動鍵H時,系統(tǒng)處于手動狀態(tài),按下自動鍵A時,系統(tǒng)處于自動狀態(tài)。(3)硬件二階慣性環(huán)節(jié)搭建利用模擬計算機中的電容電阻及運算放大器,搭接二階慣性環(huán)節(jié),仿真一個被控對象。其傳遞函數(shù)為,硬件電路如下:圖中各元件參數(shù)如下:R3=R2=510K;R1=R4=R5=R6=R7=1M

7、 ;C1=C2=C=4.7uF;則可得:K=(R5/R1)*(R6/R4)=1 T1=T2=R5*C1=R6*C2=1000000*0.0000047=4.7s所以G(s)=1/(4.7s+1)*(4.7s+1)搭建好硬件電路后,將PLCD-780插入IPC機箱插槽,用導(dǎo)線將PLCD-780中的A/D、D/A、電源的接線端子與所搭二階慣性環(huán)節(jié)的輸出、輸入端口及機箱上的電源連接,組成一個完整的PID閉環(huán)控制系統(tǒng),為通信做好準備。(4)PID參數(shù)的整定8.75,6.6*1.2,6.6*04運用過程控制中PID參數(shù)的工程整定方法,運用衰減曲線法對PID參數(shù)進行整定。在matlab中,設(shè)置PID參數(shù)為

8、Td=0,Ti=,設(shè)置合適的比例帶使得對象閉環(huán)階躍響應(yīng)曲線衰減率為0.9,從而確定PID的整定參數(shù)為:P=0.8,Ti=1.2tr , Td=0.4tr ;matlab中對象響應(yīng)曲線為:由曲線可得PID參數(shù)為:P=0.8=0.8×5=4,Ti=1.2tr=1.2×10=12 ,Td=0.4tr=0.4×10=4(5)實驗結(jié)果輸出通過在程序中編寫相應(yīng)的繪圖模塊子程序,在需要畫圖時調(diào)用相應(yīng)的子程序?qū)崿F(xiàn)曲線的繪制。同時在程序中,本小組采用按鍵實現(xiàn)了PID手自動切換,理想PID與實際PID的切換,以及在手自動狀態(tài)下由按鍵改變PID參數(shù),使得調(diào)節(jié)方式更加的靈活。 3.設(shè)計結(jié)

9、果(1)PID階躍響應(yīng)曲線調(diào)用程序,向PID模塊輸入一個階躍信號,繪出PID階躍響應(yīng)曲線如下:(1.1)理想PID階躍響應(yīng)圖: (1.2)實際PID階躍響應(yīng)圖:(2)被控對象(慣性環(huán)節(jié))階躍響應(yīng)曲線上圖通過D/A輸出一個1伏左右的信號輸入模擬的被控對象(慣性環(huán)節(jié)),A/D采集對象的輸入信號及其響應(yīng),再使D/A輸出一個幅度為2伏左右的階躍信號,同時采集輸入輸出信號。然后,D/A再反向在輸出一個幅度為2伏左右負的階躍信號,同時采集輸入輸出信號,得出仿真對象飛升特性曲線。程序中,通過按鍵實現(xiàn)模擬對象輸入信號的加減。當按下H按鍵時,且按下U鍵時,D/A輸出一個1伏階躍信號,再次按下按鍵時階躍信號累加。

10、每次按下D鍵時,D/A輸出的階躍信號遞減1。(3)設(shè)定值r、控制量u和被控對象輸出y的響應(yīng)曲線:4.程序清單/*-頭文件定義-*/ #include<conio.h> #include<graphics.h> #include <stdio.h> #include <dos.h>/*-定義繪圖坐標-*/ #define ox 8 /*-原點橫坐標-*/ #define oy 440 /*-原點縱坐標-*/ #define xx 620 /*-x軸頂點橫坐標-*/ #define xy 440 /*-x軸頂點縱坐標-*/ #define lenx

11、580 #define leny 400 #define yx 8 /*-y軸頂點橫坐標-*/ #define yy 15 /*-y軸頂點縱坐標-*/ /*-定義繪圖區(qū)域-*/ #define left 20 #define top 20 #define right 620 #define bottom 460 /*-坐標軸注釋-*/ #define xtext1x 450 #define xtext1y 450 #define ytext1x 10 #define ytext1y 60 #define xtext2x 610 #define xtext2y 450 #define ytext

12、2x 10 #define ytext2y 20/*-理想PID運算式-*/float lxpid(float kp,float td,float ti,float e3,float u1) int t=1; float u; float q0=kp*(1+t/ti+td/t); float q1=-kp*(1+2*td/t); float q2=kp*td/t; u=q0*e0+q1*e1+q2*e2+u1; return u; /*-實際PID運算式-*/float sjpid(float kp,float tf,float td,float ti,float e3,float du1,f

13、loat u1) int t=1,k=1000; float u2; float c1=tf/(t+tf); float c2=kp*t*(1+t/ti+td/t)/(t+tf); float c3=-kp*t*(1+2*td/t)/(t+tf); float c4=kp*td/(t+tf); u2=c1*du1+c2*e0+c3*e1+c4*e2+u1; return u2; /*-繪圖初始化-*/void Initial_Sys(void) int GraphDriver; int GraphMode; detectgraph(&GraphDriver,&GraphMode

14、); initgraph(&GraphDriver,&GraphMode,"C:TC201EBGI"); cleardevice(); /*-繪制坐標系-*/void DrawAxis(void) int i; setbkcolor(15); setcolor(5); line(ox,oy,xx,xy); /*x_axis*/ line(xx-5,xy-5,xx,xy); line(xx,xy,xx-5,xy+5); line(ox,oy,yx,yy); /*y_axis*/ line(yx-5,yy+10,yx,yy); line(yx+5,yy+10,y

15、x,yy); for(i=0;i<51;i+) line(ox+10*i,oy,ox+10*i,oy-10); line(ox+10*i+5,oy,ox+10*i+5,oy-5); for(i=1;i<=8;i+) line(ox,oy-50*i,ox+10,oy-50*i); outtextxy(ox+50*0-7,oy+20,"0"); outtextxy(ox+50*1-7,oy+20,"5"); outtextxy(ox+50*2-7,oy+20,"10"); outtextxy(ox+50*3-7,oy+20,&

16、quot;15"); outtextxy(ox+50*4-7,oy+20,"20"); outtextxy(ox+50*5-7,oy+20,"25"); outtextxy(ox+50*6-7,oy+20,"30"); outtextxy(ox+50*7-7,oy+20,"35"); outtextxy(ox+50*8-7,oy+20,"40"); outtextxy(ox+50*9-7,oy+20,"45"); outtextxy(ox+50*10-7,oy+20

17、,"50"); outtextxy(ox-10,oy-50*1,"1"); outtextxy(ox-10,oy-50*2,"2"); outtextxy(ox-10,oy-50*3,"3"); outtextxy(ox-10,oy-50*4,"4"); outtextxy(ox-10,oy-50*5,"5"); outtextxy(ox-10,oy-50*6,"6"); outtextxy(ox-10,oy-50*7,"7"); ou

18、ttextxy(ox-10,oy-50*8,"8"); settextstyle(SMALL_FONT,HORIZ_DIR,5); outtextxy(xtext1x,xtext1y,"Time"); outtextxy(xtext2x,xtext2y,"t/s"); settextstyle(SMALL_FONT,VERT_DIR,5); outtextxy(ytext1x,ytext1y,"The output (Response)"); outtextxy(ytext2x,ytext2y,"U(t)

19、/V");main() float kp,ti,td,tf,e3=0,ee3=0,u6=0,au1=0; int r=1,k=1; Initial_Sys(); DrawAxis(); while(k<100) u0=lxpid(1,3.0,10,e,u1); e0=r; /*printf("%fn",u0);*/ u3=sjpid(1,5,3.0,10,ee,au1,u4); setcolor(5); line(k-1)*10,130-u1*100,k*10,130-u1*100); line(k*10,130-u1*100,k*10,130-u0*100

20、); delay(10000); u2=u1; u1=u0; e2=e1; e1=e0; ee0=r; setcolor(3); line(k-1)*10,150-u4*100,k*10,150-u4*100); line(k*10,150-u4*100,k*10,150-u3*100); delay(10000); u5=u4; u4=u3; ee2=ee1; ee1=ee0; au1=u4-u5; k+;/*-頭文件定義-*/#include "stdio.h"#include "math.h"#include "graphics.h&qu

21、ot;/*for graph driver installing,only can be called in Turbo C*/#include "string.h"#include "dos.h"#include "bios.h"#include "conio.h"/*for interrupt program 頭文件定義* /#include "stdlib.h"#include "io.h"/*-按鍵地址區(qū)定義-*/*statements*/double key_ESC

22、=0x011b;/*define can not suit the length of bioskey 鍵盤內(nèi)存定義*/double key_E=0x1265;double key_A=0x1e61;double key_H=0x2368;double key_U=0x1675;double key_D=0x2064;double key_I=0x1769;double key_P=0x1970;double key_up=0x4800;double key_down=0x5000;double key_left=0x4b00;double key_right=0x4d00;double ke

23、y_pgup=0x4900;double key_pgdown=0x5100;/*-PLCD780基址定義-*/#define BASE 0x220/*-PCL812G need 16 addresses in a row,from 220H to 3F0H*/#define REG 0/*-定義繪圖坐標-*/#define ox 40/*-原點橫坐標-*/#define oy 440 /*-原點縱坐標-*/#define xx 600/*-x軸頂點橫坐標-*/#define xy 440/*-x軸頂點縱坐標-*/#define yx 40/*-y軸頂點橫坐標-*/#define yy 40/

24、*-y軸頂點縱坐標-*/*-PID參數(shù)定義-*/float Kp=1.0;float Ti=10.0;float Td=3.0;float Tf0=15.0;float Tf=0; float T=0.1; /*-采樣時間-*/float ad,e,pv0;float u=0.0;float pv=0.0;float sp=0.0;char A_H='H'char manu;int key=0;int time_counter=0;/*times of interrupt*/int cj_counter=0;/*sampling counter*/int Q_counter=8

25、00;/* 采集步長 賦初始值*/int stepdata800;int slopedata800;int error800;/*-函數(shù)聲明 -*/void interrupt (*fadd1C)(void);void loop();float AD(unsigned char channal);/*A/D*/void DA(float pv1);/*D/A*/void interrupt INT_1C(void);/*8259,reset interrupt controller*/int scankey();float DelayAction(float y0);void PIDset(v

26、oid);float PID(float sp1,float pv1,float Kp1,float Ti1,float Td1,float Tf1,char A_H1,float T1);float Object(float u1,float T1);void Initial_Sys(void);/*Initiate graph display*/void axis(void);void Drawline(int cj,float pv1,float sp1,float u1,float e1);/*主函數(shù)*/void main(void)int i;for(i=0;i<500;i+)

27、stepdatai=10;slopedatai=i;errori=0; /* Set new INT_1C and save old */disable();fadd1C=getvect(0x1C);/*1C為定時器控制的軟中斷,平均一秒發(fā)生18.2次,即周期為55ms 中斷程序*/* 開啟中斷服務(wù)*/setvect(0x1C,INT_1C);enable();axis();loop();/*主函數(shù)結(jié)束 下面為定時采值輸出程序*/void loop() doif(cj_counter*T)<(time_counter/18.2) PIDset();/*Introduction:Exit-

28、E/ESC,A_H-A/H,Ideal/Parallel PID,sp-U/D*/u=PID(sp,pv,Kp,Ti,Td,Tf,A_H,T);/*DA(u); */pv=Object(u,T);/*ad=AD(O);*/*pv=DelayAction(u);*/e=errorcj_counter;Drawline(cj_counter,pv,sp,u,e);manu=0;/*status bar,at the top of the screen-how to express %.2f*/if(Tf=0)printf("IdealPID,Mode:%c,sp=%.1f,pv=%2.1

29、f,u=%.1f,error=%.1f,Kp=%.1f,Ti=%.1f,Td=%.1ftr",A_H,sp,pv,u,e,Kp,Ti,Td);else if(Tf>0)printf("Parallal,Mode:%c,sp=%.1f,pv=%2.1f,u=%.1f,error=%.1f,Kp=%.1f,Ti=%.1f,Td=%.1ftr",A_H,sp,pv,u,e,Kp,Ti,Td);else printf("ttTf got a wrong value! Please exit and restart this program.r")

30、;cj_counter+;while(cj_counter<500);disable();/* 恢復(fù)中斷*/setvect(0x1C,fadd1C);enable();/*D/A conversion program,0 to 4095 - 0to +5*/float AD(unsigned char channal)float result=0;int i;unsigned char hb=0,lb=0,ok=0x10;/*12bit AD/high 4 bits and low 8 bits*/outportb(BASE+11,REG);/*軟件程序觸發(fā)*/delay(10); /*

31、here,'delay(int ms)' is used long before,and we just need some time for hardware working*/outportb(BASE+10,channal);/*進行通道設(shè)置.選擇通道0*/delay(10);outportb(BASE+9,1); /*設(shè)置增益通道增益*/delay(10);outportb(BASE+12,0);/*觸發(fā)A/D轉(zhuǎn)換*/delay(10); dook=inportb(BASE+5);while(ok&0x10);hb=inportb(BASE+5);delay(1

32、0);lb=inportb(BASE+4);result = lb + (hb&0x0F)<<8);/*0 to 4095*/result=result*5/4096;/*0 V to +5V*/return result;/*A/D conversion program,0 to +5 - 0 to 4095*/void DA(float pv1) int temp,i; unsigned char hb,lb; if (pv1>5) /* make the output real */ pv1=5; else if (pv1<0) pv1=0; temp=(

33、int)(4095*pv1/5.0); hb=temp<<8; lb=temp-(hb<<8); outportb(BASE,1); delay(10); outportb(BASE+4,lb); /* low 8 */ delay(10); outportb(BASE+5,hb); /* high 4 */void interrupt INT_1C(void)time_counter+;outportb(0x20,0x20); /*鍵盤控制*/int scankey(void)int key0;key0=bioskey(1);/* function 1 returns

34、 0 until a key is pressed */if(key0!=0)key0=bioskey(0);/* function 0 returns the key that is waiting */return key0;/*DelayAction*/*tao=(int)(18.2*2) Delay action=2 seconds*/float DelayAction(float y0)float y_out;static float y_old36=0;int cyc;y_out=y_old36-1;for(cyc=1;cyc<36;cyc+)y_old36-cyc=y_ol

35、d36-cyc-1;y_old0=y0;return y_out;/*PID 主程序*/void PIDset(void)key=scankey();if(A_H='H')if(key=key_up)Kp+=0.2;else if(key=key_down)Kp-=0.2;else if(key=key_left)Ti-=0.2;else if(key=key_right)Ti+=0.2;else if(key=key_pgup)Td+=0.2;else if(key=key_pgdown)Td-=0.2;else if(key=key_U)manu='+'el

36、se if(key=key_D)manu='-'if(A_H='A')if(key=key_U)sp+=10;if(key=key_D)sp-=10;if(key=key_E|key=key_ESC)exit(1);if(key=key_A)A_H='A'if(key=key_H)A_H='H'if(key=key_I)Tf=0;if(key=key_P)Tf=Tf0;/*PID-default:IdealPID*/float PID(float sp1,float pv1,float Kp1,float Ti1,float Td

37、1,float Tf1,char A_H1,float T1)float delta_u,u0,e,C1,C2,C3,C4;static float e1,e2,u1,delta_u1;/*here,u1 stands for the previous value of u*/if(Kp1<0)printf("Kp becomes a negative number,please restart.");else if(Ti1<0) printf("Ti becomes a negative number,please press restart.&qu

38、ot;);else if(Td1<0) printf("Td becomes a negative number,please press restart.");elseC1=Tf1/(T1+Tf1);C2=Kp1*T1*(1+T1/Ti1+Td1/T1)/(T1+Tf1);C3=-Kp1*T1*(1+2*Td1/T1)/(T1+Tf1);C4=Kp1*Td1/(T1+Tf1);/*自動控制*/if(A_H1='A')e=sp1-pv1;delta_u=C1*delta_u1+C2*e+C3*e1+C4*e2;/*here,delta_u1 stand

39、s for the previous value of delta_u*/u0=u1+delta_u; e2=e1;e1=e;delta_u1=delta_u;u1=u0;errorcj_counter=sp1-pv1;return u0;/*手動控制*/else if(A_H1='H')if(manu='+')u+=10;if(manu='-')u-=10;sp1=pv1;u1=u;sp=pv1;e1=0;e2=0;delta_u1=0;errorcj_counter=sp1-pv1;return u;/*object:二階慣性環(huán)節(jié)*/floa

40、t Object(float u1,float T1)/*G(s)=1/(4.7s+1)2,K=1,Tp1=Tp2=4.7*/static float y1,y2;float y;y=1/(31.49+T1)*(-22.09*y2+53.58*y1+T1*u1);y2=y1;y1=y;return y;/*顯示與畫圖*/*初始化 CRT*/void Initial_Sys(void)int GraphDriver; int GraphMode; detectgraph(&GraphDriver,&GraphMode); initgraph(&GraphDriver,&a

41、mp;GraphMode,"C:TC201EBGI");/*draw basic coordinate axis*/void axis(void)int i;Initial_Sys();setbkcolor(15);/*white0/black15*/setcolor(9);/*linght blue*/rectangle(10,20,630,470);/*zone of drawing*/line(ox,oy,xx,xy);/*axis and arrow*/line(xx-5,xy-5,xx,xy);line(xx,xy,xx-5,xy+5);line(ox,oy,yx

42、,yy);line(yx-5,yy+5,yx,yy);line(yx+5,yy+5,yx,yy);settextstyle(2,1,5);/*Small font,vert,5 times bigger*/outtextxy(20,100,"The Output (Response)");outtextxy(20,40,"U(t)");settextstyle(2,0,5);/*Small font,horiz,5 times bigger*/outtextxy(300,455,"Time");outtextxy(590,455,"t/sec");setlinestyle(1,0,1);/*dot line,none,width*/for(i=1;i<4;i+)/*each inport starting position*/line(ox,oy-100*i,ox+500,oy-100*i);outtextxy(ox-16,oy-100*0,"0");outtextxy(ox-16,oy-100*1,"1");outtextxy(ox-16,oy-100*2,"2"

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論