版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)報(bào)告 課 程 無線傳感網(wǎng)絡(luò)各類路由協(xié)議仿真 1. 實(shí)驗(yàn)?zāi)康木W(wǎng)絡(luò)數(shù)據(jù)傳輸離不開路由協(xié)議,路由協(xié)議是其組網(wǎng)的基礎(chǔ),路由協(xié)議是無線傳感器網(wǎng)絡(luò)研究的重點(diǎn)之一,其主要的設(shè)計(jì)目標(biāo)是降低節(jié)點(diǎn)能量消耗,延長網(wǎng)絡(luò)的生命周期。本次實(shí)驗(yàn)將仿真各類無線傳感器網(wǎng)絡(luò)路由協(xié)議。2.實(shí)驗(yàn)要求爭取考慮全面,考慮到各因素對各類協(xié)議的影響,以提高無線傳感網(wǎng)絡(luò)的性能。3. 設(shè)計(jì)思想(1) Flooding 泛洪是一種傳統(tǒng)的路由技術(shù),不要求維護(hù)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),并進(jìn)行路由計(jì)算,接收到消息的節(jié)點(diǎn)以廣播形式轉(zhuǎn)發(fā)分組。對于自組織的傳感器網(wǎng)絡(luò),泛洪路由是一種較直接的實(shí)現(xiàn)方法,但消息的“內(nèi)爆”(implosion)和“重疊”(overlap)
2、是其固有的缺陷。為了克服這些缺陷,S.hedetniemi等人提出了Gossiping策略,節(jié)點(diǎn)隨機(jī)選取一個(gè)相鄰節(jié)點(diǎn)轉(zhuǎn)發(fā)它接收到的分組,而不是采用廣播形式。這種方法避免了消息的“內(nèi)爆”現(xiàn)象,但有可能增加端到端的傳輸延時(shí)。 Flooding路由協(xié)議中的內(nèi)爆和重疊問題(2) SPIN (sensor protocol for information via negotiation) SPIN是以數(shù)據(jù)為中心的自適應(yīng)路由協(xié)議,通過協(xié)商機(jī)制來解決泛洪算法中的“內(nèi)爆”和“重疊”問題。傳感器節(jié)點(diǎn)僅廣播采集數(shù)據(jù)的描述信息,當(dāng)有相應(yīng)的請求時(shí),才有目的地發(fā)送數(shù)據(jù)信息。SPIN協(xié)議中有3種類型的消息,即ADV,RE
3、Q和DATA。ADV用于新數(shù)據(jù)廣播。當(dāng)一個(gè)節(jié)點(diǎn)有數(shù)據(jù)可共享時(shí),它以廣播方式向外發(fā)送DATA數(shù)據(jù)包中的元數(shù)據(jù)。REQ用于請求發(fā)送數(shù)據(jù)。當(dāng)一個(gè)節(jié)點(diǎn)希望接收DATA數(shù)據(jù)包時(shí),發(fā)送REQ數(shù)據(jù)包。DATA包含附上元數(shù)據(jù)頭(meta一header)的實(shí)際數(shù)據(jù)包。SPIN協(xié)議有4種不同的形式: SPIN-PP:采用點(diǎn)到點(diǎn)的通信模式,并假定兩節(jié)點(diǎn)間的通信不受其他節(jié)點(diǎn)的干擾,分組不會丟失,功率沒有任何限制。要發(fā)送數(shù)據(jù)的節(jié)點(diǎn)通過ADV向它的相鄰節(jié)點(diǎn)廣播消息,感興趣的節(jié)點(diǎn)通過REQ發(fā)送請求,數(shù)據(jù)源向請求者發(fā)送數(shù)據(jù)。接收到數(shù)據(jù)的節(jié)點(diǎn)再向它的相鄰節(jié)點(diǎn)廣播ADV消息,如此重復(fù),使所有節(jié)點(diǎn)都有機(jī)會接收到任何數(shù)據(jù)。 SPIN
4、-EC:在SPIN-PP的基礎(chǔ)上考慮了節(jié)點(diǎn)的功耗,只有能夠順利完成所有任務(wù)且能量不低于設(shè)定閾值的節(jié)點(diǎn)才可參與數(shù)據(jù)交換。 SPIN-BC:設(shè)計(jì)了廣播信道,使所有在有效半徑內(nèi)的節(jié)點(diǎn)可以同時(shí)完成數(shù)據(jù)交換。為了防止產(chǎn)生重復(fù)的REQ請求,節(jié)點(diǎn)在聽到ADV消息以后,設(shè)定一個(gè)隨機(jī)定時(shí)器來控制REQ請求的發(fā)送,其他節(jié)點(diǎn)聽到該請求,主動放棄請求權(quán)利。 SPIN-RL:它是對SPIN-BC的完善,主要考慮如何恢復(fù)無線鏈路引入的分組差錯(cuò)與丟失。記錄ADV消息的相關(guān)狀態(tài),如果在確定時(shí)間間隔內(nèi)接收不到請求數(shù)據(jù),則發(fā)送重傳請求,重傳請求的次數(shù)有一定的限制。圖3.2表明了SPIN協(xié)議的路由建立與數(shù)據(jù)傳送。 SPIN協(xié)議的路
5、由建立與數(shù)據(jù)傳送基于數(shù)據(jù)描述的協(xié)商機(jī)制和能量自適應(yīng)機(jī)制的SP創(chuàng)協(xié)議能夠很好地解決傳統(tǒng)的Flooding協(xié)議所帶來的信息爆炸、信息重復(fù)和資源浪費(fèi)等問題。此外,由于協(xié)議中每個(gè)節(jié)點(diǎn)只需知道其單跳鄰居節(jié)點(diǎn)的信息,拓?fù)涓淖兂尸F(xiàn)本地化特征。SP州協(xié)議的缺點(diǎn)是數(shù)據(jù)廣告機(jī)制不能保證數(shù)據(jù)的可靠傳遞,如果對數(shù)據(jù)感興趣的節(jié)點(diǎn)遠(yuǎn)離源節(jié)點(diǎn)或者在源節(jié)點(diǎn)和目的節(jié)點(diǎn)中間的節(jié)點(diǎn)對數(shù)據(jù)不感興趣,那么數(shù)據(jù)就不可能被傳遞到目的地。因此,對于入侵發(fā)現(xiàn)等需要在定期間隔內(nèi)可靠傳遞數(shù)據(jù)的應(yīng)用系統(tǒng)來說,SP州并不是一個(gè)很好的選擇。(3) SAR (sequential assignment routing) 在選擇路徑時(shí),有序分配路由(SAR
6、)策略充分考慮了功耗、QoS和分組優(yōu)先權(quán)等特殊要求,采用局部路徑恢復(fù)和多路經(jīng)備份策略,避免節(jié)點(diǎn)或鏈路失敗時(shí)進(jìn)行路由重計(jì)算需要的過量計(jì)算開銷。為了在每個(gè)節(jié)點(diǎn)與sink節(jié)點(diǎn)間生成多條路經(jīng),需要維護(hù)多個(gè)樹結(jié)構(gòu),每個(gè)樹以落在sink節(jié)點(diǎn)有效傳輸半徑內(nèi)的節(jié)點(diǎn)為根向外生長,枝干的選擇需滿足一定QOS要求并要有一定的能量儲備。這一處理使大多數(shù)傳感器節(jié)點(diǎn)可能同時(shí)屬于多個(gè)樹,可任選其一將采集數(shù)據(jù)回傳到sink節(jié)點(diǎn)。(4) LEACH (low energy adaptive clustering hierarchy) LEACH是MIT的Chandrakasan等人為無線傳感器網(wǎng)絡(luò)設(shè)計(jì)的低功耗自適應(yīng)聚類路由算法
7、。與一般的平面多跳路由協(xié)議和靜態(tài)聚類算法相比,LEACH可以將網(wǎng)絡(luò)生命周期延長15%,主要通過隨機(jī)選擇聚類首領(lǐng),平均分擔(dān)中繼通信業(yè)務(wù)來實(shí)現(xiàn)。LEACH定義了“輪”(round)的概念,一輪由初始化和穩(wěn)定工作兩個(gè)階段組成。為了避免額外的處理開銷,穩(wěn)定態(tài)一般持續(xù)相對較長的時(shí)間。 如圖3.4所示:初始化階段穩(wěn)定工作階段時(shí)間 LEACH協(xié)議的時(shí)序圖在初始化階段,聚類首領(lǐng)是通過下面的機(jī)制產(chǎn)生的。傳感器節(jié)點(diǎn)生成0,1之間的隨機(jī)數(shù),如果大于閾值T,則選該節(jié)點(diǎn)為聚類首領(lǐng).T的計(jì)算方法如下: (3.1)其中p為節(jié)點(diǎn)中成為聚類首領(lǐng)的百分?jǐn)?shù),r是當(dāng)前的輪數(shù)。 當(dāng)簇頭選定之后,簇頭節(jié)點(diǎn)主動向網(wǎng)絡(luò)中節(jié)點(diǎn)廣播自己成為簇頭
8、的消息(ADV_CH)。接收到此消息的節(jié)點(diǎn),依據(jù)接收信號的強(qiáng)度,選擇它所要加入的簇,并發(fā)消息通知相應(yīng)的簇頭(JOIN_REQ)?;跁r(shí)分多址(Time Division Multiple Address,簡稱TDMA)的方式,簇頭節(jié)點(diǎn)為其中的每個(gè)成員分配通信時(shí)隙,并以廣播的形式通知所有的簇內(nèi)節(jié)點(diǎn)(ADVSCH)。這樣保證了簇內(nèi)每個(gè)節(jié)點(diǎn)在指定的傳輸時(shí)隙進(jìn)行數(shù)據(jù)傳輸,而在其他時(shí)間進(jìn)入休眠狀態(tài),減少了能量消耗。在穩(wěn)定工作階段,節(jié)點(diǎn)持續(xù)采集監(jiān)測數(shù)據(jù),在自身傳輸時(shí)隙到來時(shí)把監(jiān)測數(shù)據(jù)傳給簇頭節(jié)點(diǎn)(DATA),如圖3.5所示。簇頭節(jié)點(diǎn)對接收到數(shù)據(jù)進(jìn)行融合處理之后,發(fā)送到Sink節(jié)點(diǎn),這是一種減小通信業(yè)務(wù)量的
9、合理工作模式。持續(xù)一段時(shí)間以后,整個(gè)網(wǎng)絡(luò)進(jìn)入下一輪工作周期,重新選擇簇頭節(jié)點(diǎn)。 LEACH協(xié)議采用動態(tài)轉(zhuǎn)換簇頭的方法來平均網(wǎng)絡(luò)節(jié)點(diǎn)的能量消耗,使因能量耗盡而失效的節(jié)點(diǎn)呈隨機(jī)分布狀態(tài),因而與一般的多跳路由協(xié)議和靜態(tài)簇算法相比,LEACH可以將網(wǎng)絡(luò)生命周期延長15%。但是LEACH協(xié)議在每輪固定簇頭節(jié)點(diǎn)后在劃分簇的過程中,簇頭節(jié)點(diǎn)開銷較大。并且簇頭節(jié)點(diǎn)的選擇無法達(dá)到最優(yōu),有可能簇頭節(jié)點(diǎn)位于網(wǎng)絡(luò)的邊緣或者幾個(gè)簇頭節(jié)點(diǎn)相鄰,某些節(jié)點(diǎn)不得不傳輸較遠(yuǎn)的距離來與簇頭通信,這就導(dǎo)致了大量能量消耗。而且LEACH協(xié)議所有簇頭節(jié)點(diǎn)直接與Sink節(jié)點(diǎn)通信,采用連續(xù)數(shù)據(jù)發(fā)送模式和單跳路徑選擇模式,使得每輪中簇頭節(jié)點(diǎn)能
10、耗巨大,因此不適合在大規(guī)模的傳感器網(wǎng)絡(luò)中應(yīng)用。(5) TEEN (threshold sensitive energy efficient sensor network protocol) 依照應(yīng)用模式的不同,通??梢院唵蔚貙o線自組織網(wǎng)絡(luò)(包括傳感器網(wǎng)絡(luò)和Ad-hoc網(wǎng)絡(luò))分為主動(proactive)和響應(yīng)(reactive)兩種類型。主動型傳感器網(wǎng)絡(luò)持續(xù)監(jiān)測周圍的物質(zhì)現(xiàn)象,并以恒定速率發(fā)送監(jiān)測數(shù)據(jù);而響應(yīng)型傳感器網(wǎng)絡(luò)只是在被觀測變量發(fā)生突變時(shí)才傳送數(shù)據(jù)。相比之下,響應(yīng)型傳感器網(wǎng)絡(luò)更適合應(yīng)用在敏感時(shí)間的應(yīng)用中。TEEN和LEACH的實(shí)現(xiàn)機(jī)制非常相似,只是前者是響應(yīng)型的,而后者屬于主動型傳感
11、器網(wǎng)絡(luò)。在TEEN中定義了硬、軟兩個(gè)門限值,以確定是否需要發(fā)送監(jiān)測數(shù)據(jù)。當(dāng)監(jiān)測數(shù)據(jù)第一次超過設(shè)定的硬門限時(shí),節(jié)點(diǎn)用它作為新的硬門限,并在接著到來的時(shí)隙內(nèi)發(fā)送它。在接下來的過程中,如果監(jiān)測數(shù)據(jù)的變化幅度大于軟門限界定的范圍,則節(jié)點(diǎn)傳送最新采集的數(shù)據(jù),并將它設(shè)定為新的硬門限。通過調(diào)節(jié)軟門限值的大小,可以在監(jiān)測精度和系統(tǒng)能耗之間取得合理的平衡。圖3.6表示的是TEEN協(xié)議中由聚簇構(gòu)成的層次結(jié)構(gòu)。SinkHigh level cluster head ClusteringNormal sensor nodeLow level cluster headTEEN協(xié)議中由聚簇構(gòu)成的層次結(jié)構(gòu)TENE適用于實(shí)時(shí)
12、性要求較高的應(yīng)用場合,比如入侵警報(bào),爆炸預(yù)警等,用戶可以及時(shí)獲取感興趣的信息。而且用戶可以通過設(shè)置不同的軟門限方便地平衡監(jiān)測的準(zhǔn)確性與系統(tǒng)節(jié)能性兩項(xiàng)指標(biāo)。但是這個(gè)方案也有一些不足之處,例如門限值達(dá)不到,節(jié)點(diǎn)就永遠(yuǎn)不會和簇頭節(jié)點(diǎn)通信,用戶就無法從網(wǎng)絡(luò)得到任何數(shù)據(jù);沒有相應(yīng)的機(jī)制去區(qū)分那些沒有感應(yīng)到足夠大變化的節(jié)點(diǎn)和處于關(guān)閉狀態(tài)的節(jié)點(diǎn),所以TEEN協(xié)議不適合應(yīng)用在。(6) PEGAGIS (power-efficient gathering in sensor information system)PEGASIS由LEACH發(fā)展而來。它假定組成網(wǎng)絡(luò)的傳感器節(jié)點(diǎn)是同構(gòu)且靜止的。節(jié)點(diǎn)發(fā)送能量遞減的測試
13、信號,通過檢測應(yīng)答來確定離自己最近的相鄰節(jié)點(diǎn)。在收集數(shù)據(jù)前,首先利用貪心算法將網(wǎng)絡(luò)中的所有節(jié)點(diǎn)連接成一條單鏈。通過這種方式,網(wǎng)絡(luò)中的所有節(jié)點(diǎn)能夠了解彼此的位置關(guān)系,進(jìn)而每個(gè)節(jié)點(diǎn)依據(jù)自己的位置選擇所屬的聚類,聚類的首領(lǐng)向鏈的兩端發(fā)出收集數(shù)據(jù)的請求,數(shù)據(jù)從單鏈的兩個(gè)端點(diǎn)向首領(lǐng)流動。中間節(jié)點(diǎn)在傳遞數(shù)據(jù)前要執(zhí)行融合操作,最終由首領(lǐng)節(jié)點(diǎn)將結(jié)果數(shù)據(jù)傳送給Sink節(jié)點(diǎn)。因?yàn)镻EGASIS中每個(gè)節(jié)點(diǎn)都以最小功率發(fā)送數(shù)據(jù)分組,并有條件完成必要的數(shù)據(jù)融合,減小業(yè)務(wù)流量。因此,整個(gè)網(wǎng)絡(luò)的功耗較小。研究結(jié)果表明,PEGASIS支持的傳感器網(wǎng)絡(luò)的生命周期是LEACH的近兩倍。 4.實(shí)驗(yàn)器材與工具M(jìn)ATLAB5.程序源代
14、碼function x=animation_datasmall=5; medium=20; large=50;% Event_name Animated Color/on/off/toggle Size anim_def=. 'Init_Application', 0, 0 0 0 , small, . 'Packet_Sent', 1, 0 1 0 , small, . 'Packet_Received', 1, 0 1 0 , small, . 'Collided_Packet_Received', 0, 1 0 0 , sm
15、all, . 'Clock_Tick', 0, 0 0 0 , small, . 'Channel_Request', 0, 0 0 0 , small, . 'Channel_Idle_Check', 1, 1 0 0 , small, . 'Packet_Receive_Start', 0, 0 1 0 , small, . 'Packet_Receive_End', 0, 0 0 0 , small, . 'Packet_Transmit_Start', 1, 1 0 0 , medium,
16、. 'Packet_Transmit_End', 0, 0 1 0 , small;for i=1:length(anim_def) a=anim_defi; x(i)=struct('event', a1, 'animated', a2, 'color', a3, 'size', a4);endfunction application(S)% DO NOT edit simulator code (lines that begin with S;)S; persistent app_data S; global
17、ID tS; t, event, ID, data=get_event(S);S; topology, mote_IDs=prowler('GetTopologyInfo');S; ix=find(mote_IDs=ID);S; if strcmp(event, 'Init_Application') S; try memory=app_dataix; catch memory=; end, S; endS; switch eventcase 'Init_Application' signal_strength=1; if ID=1 % firs
18、t node starts flood Set_Clock(1000) end PrintMessage('i') case 'Packet_Sent' PrintMessage('s') case 'Packet_Received' % data.data % message % data.signal_strength % received signal strength if memory.send p=sim_params('get_app', 'P'); if isempty(p); p=
19、.5; end if rand<p Send_Packet(radiostream(data.data, memory.signal_strength); end memory.send=0; PrintMessage('r') endcase 'Collided_Packet_Received' % this is for debug purposes only case 'Clock_Tick' Send_Packet(radiostream('Message for 00111 from Golomb', memory
20、.signal_strength);case 'GuiInfoRequest' disp(sprintf('Memory Dump of mote ID# %d:n',ID); disp(memory) case 'Application_Stopped' % this event is called when simulation is stopped/suspended case 'Application_Finished' % this event is called when simulation is finished
21、otherwise error('Bad event name for application: ' event)endS; app_dataix=memory;function b=Send_Packet(data);global ID tradio=prowler('GetRadioName');b=feval(radio, 'Send_Packet', ID, data, t);function b=Set_Clock(alarm_time);global IDprowler('InsertEvents2Q', make_e
22、vent(alarm_time, 'Clock_Tick', ID);function PrintMessage(msg)global IDprowler('TextMessage', ID, msg)function LED(msg)global IDprowler('LED', ID, msg)function varargout=infotitle1='Application FLOOD1D'str1= 'This application illustrates the simple flooding algorit
23、hm.' . ''. 'The sender mote transmits a message. Each mote receiving the'. 'message retransmits it with probability p.' ;. 'The value of p can be set in the ''Application Parameters'''. 'window. The default value is p=0.5'. ''. '
24、;If p is too low, the flood dies out before every mote could'. 'receive the message. If p it too high, the message is'. 'retransmitted several times after every mote have received it,' ;. 'thus causing an unnecessarily high settling time.'. ''. 'The optimal va
25、lue of p highly depends on topology.'. ''. 'You can change the topology by editing the file FLOOD1D_TOPOLOGY.'. ''. 'See also FLOOD2D.'. ''if nargout=0 helpwin( title1, str1, 'Application Info')else varargout= title1, str1;endfunction param=params;
26、param(1).name='P' param(1).default=0.5;function topology,mote_IDs=topology(varargin);Nx=10; Ny=1; % number of points on the gridix=1;t=;distx=1;disty=5;X=1:distx:(Nx-1)*distx+1;Y=1:disty:(Ny-1)*disty+1;for i=X for j=Y t=t; i,j; endendtopology=t;mote_IDs=1:Nx*Ny; function x=animationpersisten
27、t anim_dataif isempty(anim_data) small=5; medium=20; large=50; % Event_name Animated Color/on/off/toggle Size anim_def=. 'Init_Application', 1, 0 0 0 , small, . 'Packet_Sent', 2, 1 0 0 , small, . 'Packet_Received', 3, 1 0 0 , small, . 'Collided_Packet_Received', 4, 1
28、0 0 , small, . 'Clock_Tick', 0, 0 0 0 , small, . 'Channel_Request', 0, 0 0 0 , small, . 'Channel_Idle_Check', 1, 1 0 0 , small, . 'Packet_Receive_Start', 0, 0 1 0 , small, . 'Packet_Receive_End', 0, 0 0 0 , small, . 'Packet_Transmit_Start', 1, 1 0 0 ,
29、medium, . 'Packet_Transmit_End', 1, 0 1 0 , small; for i=1:length(anim_def) a=anim_defi; if i=1 anim_data=struct('event', a1, 'animated', a2, 'color', a3, 'size', a4); else anim_data(i)=struct('event', a1, 'animated', a2, 'color', a3, &
30、#39;size', a4); end endendx=anim_data;function application(S)S; persistent app_data S; global ID tS; t, event, ID, data=get_event(S);S; topology, mote_IDs=prowler('GetTopologyInfo');S; ix=find(mote_IDs=ID);S; if strcmp(event, 'Init_Application') S; try memory=app_dataix; catch me
31、mory=; end, S; endS; SENDER_ID=sim_params('get_app', 'Start_Mote'); if isempty(SENDER_ID), SENDER_ID=1; endswitch eventcase 'Init_Application' signal_strength=1; memory=struct('send',1, 'signal_strength', signal_strength); if ID=SENDER_ID % this node starts fl
32、ood Set_Clock(1000) end PrintMessage('i') case 'Packet_Sent' memory.send=0; PrintMessage('s') case 'Packet_Received' % data.data % message % data.signal_strength % received signal strength if memory.send p=sim_params('get_app', 'P'); if isempty(p); p=.
33、3; end % p=0.3; % p is forced to 0.3 / Comment this line if you want to use it for optimization if rand<p Send_Packet(radiostream(data.data, memory.signal_strength); end memory.send=0; PrintMessage('r') endcase 'Collided_Packet_Received' % this is for debug purposes only case '
34、;Clock_Tick' Send_Packet(radiostream('this is the message', memory.signal_strength); case 'GuiInfoRequest' if isempty(memory) disp(sprintf('Memory Dump of mote ID# %d:n',ID); disp(memory) else disp(sprintf('No memory dump available for node %d.n',ID); end case
35、9;Application_Stopped' % this event is called when simulation is stopped/suspended case 'Application_Finished' % this event is called when simulation is finished otherwise error('Bad event name for application: ' event)endS; app_dataix=memory;S;function b=Send_Packet(data);global
36、 ID tradio=prowler('GetRadioName');b=feval(radio, 'Send_Packet', ID, data, t);function b=Set_Clock(alarm_time);global IDprowler('InsertEvents2Q', make_event(alarm_time, 'Clock_Tick', ID);function PrintMessage(msg)global IDprowler('TextMessage', ID, msg)functio
37、n varargout=infotitle1='Application FLOOD2D'str1= 'This application illustrates the flooding algorithm in 2D.' . ''. 'The sender mote transmits a message. Each mote receiving the'. 'message retransmits it with probability p.' ;. 'The value of p can be set
38、in the ''Application Parameters'''. 'window. The default value is p=0.5.'. ''. 'The starting node can also be selected (parameter Start_Mote).'. 'Try 1 to start from the lower left corner, and 55 to start from'. 'the center of the (10x10) grid.'. ''. 'If p is too low, the flood dies out before every mote could'. 'receive the message. If p it too high, the message is'. 'retransmitted several times after every mote have received it,' ;. 'thus causing an unnecessarily high settling time.'. '
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版小額貸款抵押合同資產(chǎn)評估及報(bào)告協(xié)議2篇
- 2025年度個(gè)人與公司租賃房屋修繕責(zé)任合同4篇
- 2025年度個(gè)人旅游規(guī)劃與導(dǎo)游服務(wù)合同2篇
- 2025版室外照明燈具廣告宣傳與品牌推廣合同3篇
- 2025年度煤炭行業(yè)綠色運(yùn)輸體系構(gòu)建合同4篇
- 2025標(biāo)準(zhǔn)新能源材料研發(fā)與采購合作協(xié)議3篇
- 2025年度生態(tài)環(huán)保瓷磚批量采購合作協(xié)議3篇
- 2025版醫(yī)療健康大數(shù)據(jù)合作開發(fā)合同3篇
- 個(gè)性化定制小區(qū)房產(chǎn)買賣合同(2024版)版B版
- 2025版國際貿(mào)易糾紛訴訟擔(dān)保委托服務(wù)協(xié)議3篇
- 五年級上冊寒假作業(yè)答案(人教版)
- 2025年山東浪潮集團(tuán)限公司招聘25人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年財(cái)政部會計(jì)法律法規(guī)答題活動題目及答案一
- 2025年江西省港口集團(tuán)招聘筆試參考題庫含答案解析
- (2024年)中國傳統(tǒng)文化介紹課件
- 液化氣安全檢查及整改方案
- 《冠心病》課件(完整版)
- 2024年云網(wǎng)安全應(yīng)知應(yīng)會考試題庫
- 公園保潔服務(wù)投標(biāo)方案
- 光伏電站項(xiàng)目合作開發(fā)合同協(xié)議書三方版
- 2024年秋季新滬教版九年級上冊化學(xué)課件 第2章 空氣與水資源第1節(jié) 空氣的組成
評論
0/150
提交評論