管道

管道

管道是用管子、管子聯接件和閥門等聯接成的用於輸送氣體、液體或帶固體顆粒的流體的裝置。通常,流體經鼓風機壓縮機鍋爐等增壓後,從管道的高壓處流向低壓處,也可利用流體自身的壓力或重力輸送。管道的用途很廣泛,主要用在給水、排水、供熱、供煤氣、長距離輸送石油和天然氣、農業灌溉、水力工程和各種工業裝置中。

基本介紹

  • 中文名:管道
  • 外文名:Conduit
  • 別稱:管路
  • 用途:各行各業
  • 主要領域:農業灌溉、水力工程
  • 材質 :金屬 非金屬
管道簡介,管道分類,考慮因素,相關連線,相關介紹,

管道簡介

管道是指用管子、管子聯接件和閥門等聯接成的用於輸送氣體、液體或帶固體顆粒的流體的裝置。通常,流體經鼓風機、壓縮機鍋爐等增壓後,從管道的高壓處流向低壓處,也可利用流體自身的壓力或重力輸送。管道的用途很廣泛,主要用在給水、排水、供熱、供煤氣、長距離輸送石油天然氣、農業灌溉、水力工程和各種工業裝置中。
管道
英文原義:PipingSymbol
中文釋義:鍵盤字元|(典型101鍵鍵盤的Enter鍵上面反斜槓的上檔字元)
註解:經常用來將某個命令或程式的輸出提供給另一個命令或程式。例如,history|grepmcopy(用history命令)將.bash_history檔案的內容傳送到grep程式,以搜尋字元串“mcopy”。
Linux進程間通信的幾種主要手段。其中管道和有名管道是最早的進程間通信機制之一,管道可用於具有親緣關係進程間的通信,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關係進程間的通信。認清管道和有名管道的讀寫規則是在程式中套用它們的關鍵。

管道分類

1、按材料分類:金屬管道和非金屬管道。
2、按設計壓力分類:真空管道、低壓管道、高壓管道、超高壓管道。
3、按輸送溫度分類:低溫管道、常溫管道、中溫和高溫管道。
4、按輸送介質分類:給排水管道、壓縮空氣管道、氫氣管道、氧氣管道、乙炔管道、熱力管道、燃氣管道、燃油管道、劇毒流體管道、有毒流體管道、酸鹼管道、鍋爐管道、製冷管道、淨化純氣管道、純水管道。

考慮因素

管道-管徑的確定當流體的流量已知時,管徑的大小取決於允許的流速或允許的摩擦阻力(壓力降)。流速大時管徑小,但壓力降值增大。因此,流速大時可以節省管道基建投資,但泵和壓縮機等動力設備的運行能耗費用增大。此外,如果流速過大,還有可能帶來一些其他不利的因素。因此管徑應根據建設投資、運行費用和其他技術因素綜合考慮決定。
管道-管道的聯接管子、管子聯接件、閥門和設備上的進出接管間的聯接方法,由流體的性質、壓力溫度以及管子的材質、尺寸和安裝場所等因素決定,主要有螺紋聯接、法蘭聯接、承插聯接和焊接等4種方法:①螺紋聯接:主要適用於小直徑管道。聯接時,一般要在螺紋聯接部分纏上氟塑膠密封帶或塗上厚、繞上麻絲等密封材料,以防止泄漏。在1.6兆帕以上壓力時,一般在管子端面加墊片密封。這種聯接方法簡單,可以拆卸重裝,但須在管道的適當地方安裝活接頭,以便於拆裝。②法蘭聯接:適用的直徑範圍較大。聯接時根據流體的性質、壓力和溫度選用不同的法蘭和密封墊片,利用螺栓夾緊墊片保持密封。在需要經常拆裝的管段處和管道與設備相聯接的地方大都採用法蘭聯接。③承插聯接:用於鑄鐵管、混凝土管、陶土管及其聯接件之間的聯接,只適用於在低壓常溫條件下工作的給水、排水和煤氣管道。聯接時,一般在承插口的槽內先填入麻絲、棉線或石棉繩,然後再用石棉水泥等材料填實,還可在承插口內填入橡膠密封環,使其具有較好的柔性,容許管子有少量的移動。④焊接聯接:這種聯接的強度和密封性最好,適用於各種管道,省工省料,但拆卸時必須切斷管子和管子聯接件。
管道-管道的敷設城市裡的給水、排水、供熱、供煤氣的管道的幹線和長距離的輸油輸氣管道大多敷設在地下,而工廠里的工藝管道為便於操作和維修多敷設在地上。管道的通行、支承、坡度與排液排氣、補償、保溫與加熱、防腐與清洗、識別與塗漆和安全等,無論對於地上敷設還是地下敷設都是重要的問題。
通行問題
地面上的管道應儘量避免與道路、鐵路和航道交叉。在不能避免交叉時,交叉處跨越的高度也應能使行人和車船安全通過。地下的管道一般沿道路敷設,各種管道之間保持適當的距離,以便安裝和維修;供熱管道的表面有保溫層,敷設在地溝或保護管內,應避免被土壓壞和使管子能膨脹移動。
支承問題
管道可能承受許多種外力的作用,包括本身的重量(管子、閥門、管子聯接件、保溫層和管內流體的重量)、流體的壓力作用在管端的推力、風雪載荷、土壤壓力、熱脹冷縮引起的熱應力、振動載荷和地震災害等。為了保證管道的強度剛度,必須設定各種支(吊)架,如活動支架、固定支架、導向支架和彈簧支架等。支架的設定根據管道的直徑、材質、管子壁厚和載荷等條件決定。固定支架用來分段控制管道的熱伸長,使膨脹節均勻工作。導向支架使管子僅作軸向移動。
坡度和排液排氣
為了排除凝結水,蒸汽和其他含水的氣體管道應有一定的坡度,一般不小於千分之二。對於利用重力流動的地下排水管道,坡度不小於千分之五。蒸汽或其他含水的氣體管道在最低點設定排水管或疏水閥,某些氣體管道還設有氣水分離器,以便及時排去水液,防止管內產生水擊和阻礙氣體流動。給水或其他液體管道在最高點設有排氣裝置,排除積存在管道內的空氣或其他氣體,以防止氣阻造成運行失常。
補償問題
管道如不能自由地伸縮,就會產生巨大的附加應力。因此,在溫度變化較大的管道和需要有自由位移的常溫管道上,需要設定膨脹節,使管道的伸縮得到補償而消除附加應力的影響。
保溫和加熱
對於蒸汽管道、高溫管道、低溫管道以及有防燙、防凍要求的管道,需要用保溫材料包覆在管道外面,防止管內熱(冷)量的損失或產生凍結。對於某些高凝固點的液體管道,為防止液體太粘或凝固而影響輸送,還需要加熱和保溫。常用的保溫材料有水泥珍珠岩、玻璃棉棉和石棉硅藻土等。
防腐和清洗
為防止土壤的侵蝕,地下金屬管道表面應塗防鏽漆或焦油、瀝青等防腐塗料,或用浸漬瀝青的玻璃布和麻布等包覆。埋在腐蝕性較強的低電阻土壤中的管道須設定陰極保護裝置,防止腐蝕。地面上的鋼鐵管道為防止大氣腐蝕,在表面上塗覆以各種防鏽漆。各種管道在使用前都應清洗乾淨,某些管道還應定期清洗內部。為了清洗方便,在管道上設定有過濾器或吹洗清掃孔。在長距離輸送石油天然氣的管道上,須用清掃器定期清除管內積存的污物,為此要設定專用的傳送和接收清掃器的裝置。
識別塗漆
當管道種類較多時,為了便於操作和維修,在管道表面上塗以規定顏色的油漆,以資識別。例如,蒸汽管道用紅色,壓縮空氣管道用淺藍色等。
安全問題
為了保證管道安全運行和發生事故時及時制止事故擴大,除在管道上裝設檢測控制儀表安全閥外,對某些重要管道還採取特殊安全措施,如在煤氣管道和長距離輸送石油和天然氣的管道上裝設事故泄壓閥或緊急截斷閥。它們在發生災害性事故時能自動及時地停止輸送,以減少災害損失。

相關連線

管道(二):Linux作業系統中的概念

相關介紹

管道關鍵概念
管道是Linux支持的最初UnixIPC形式之一,具有以下特點:管道是半雙工的,數據只能向一個方向流動;需要雙方通信時,需要建立起兩個管道;只能用於父子進程或者兄弟進程之間(具有親緣關係的進程);單獨構成一種獨立的檔案系統:管道對於管道兩端的進程而言,就是一個檔案,但它不是普通的檔案,它不屬於某種檔案系統,而是自立門戶,單獨構成一種檔案系統,並且只存在與記憶體中。數據的讀出和寫入:一個進程向管道中寫的內容被管道另一端的進程讀出。寫入的內容每次都添加在管道緩衝區的末尾,並且每次都是從緩衝區的頭部讀出數據。
1 管道的實現機制
管道就是指用於連線一個讀進程和一個寫進程,以實現它們之間通信的已分享檔案,又稱pipe檔案。Linux中實現了兩種管道,一種是無名管道,一種是命名管道。無名管道沒有磁碟節點,它僅作為一個記憶體對象存在,用完後就銷毀了。因為沒有檔案名稱和路徑,也沒有磁碟節點,因此無名管道沒有顯式的打開過程,實際上它是在創建時就自動打開的,並且生成記憶體inode節點、dentry目錄項對象和兩個檔案結構對象(一個讀操作、一個寫操作),其記憶體對象和普通檔案的一致,所以讀寫操作使用的是同樣的檔案接口,當然讀寫函式是專用的。因為無名管道不能顯式打開,因此只能由父子進程之間、兄弟進程之間或者其他有親緣關係並且都繼承了祖先進程的管道檔案對象的兩個進程間通信使用。命名管道是有檔案名稱和磁碟i節點的,因此可由任意兩個或多個進程間通信使用,它的使用方法和普通檔案類似,都遵循打開、讀、寫、關閉這樣的過程,但是讀寫的內部實現和普通檔案不同,而和無名管道一樣。
2 無名管道的工作方式
管道以先進先出方式保存一定數量的數據。使用管道的時候一個進程從管道的一端寫,另一個進程從管道的另一端讀。在主進程中利用fork()函式創建一個子進程,這樣父子進程同時擁有對同一管道的讀寫句柄,因為管道沒有提供鎖定的保護機制,所以必須決定數據的流動方向,然後在相應進程中關閉不需要的句柄。這樣,就可以使用read()和write()函式來對它進行讀寫操作了。使用無名管道進行進程間通信的步驟概述如下:
①創建所需的管道;
②生成(多個)子進程;
③關閉/複製檔案描述符,使之與相應的管道末端相聯繫;
④關閉不需要的管道末端;
⑤進行通信活動;
⑥關閉所有剩餘的打開檔案描述符
⑦等待子進程結束。
由於read()函式和write()函式對管道操作自身帶有阻塞作用,能夠保證一個進程必須先進行寫操作,然後另外的進程才能進行讀操作,從而實現父子進程的同步。
2.2 無名管道的建立和使用
2.2.1 管道的創建pipe函式
#include<unistd.h>intpipe(intfd[2])
函式的參數中有兩個檔案描述符:fd[0]用於管道的read端,fd[1]用於管道的write端。創建成功則返回值0,否則返回-1值。
2.2.2 寫管道write函式
ret=write(fd[1],buf,n)
若管道已滿,則被阻塞,直到管道另一端read將已進人管道的數據取走為止。
2.2.3 讀管道read函式ret=read(fd[0],buf,n)
若管道為空,且寫端檔案描述字未關閉,則被阻塞。若管道寫端已關閉,則返回0。若管道不為空,分兩種情況:(設管道中實際有m個位元組),如n>=m,則讀m個;如果n<m則讀取n個。實際讀取的數目作為read的返回值。
2.2.4 關閉管道close函式
關閉寫端則導致讀端read調用返回0;關閉讀端,則導致寫端write調用返回-1,errno被設為EPIPE,在寫端write函式退出前,進程還會收到SIGPIPE信號(默認處理是終止進程,該信號可以被捕捉)。
2.2.5 檔案描述符的複製dup2
intdup2(intfdl,intfd2);
複製檔案描述符fdl到fd2。fd2可以是空閒的檔案描述符,如果fd2是已打開檔案,則關閉fd2;如果fd1不是有效的描述符,則不關閉fd2,調用失敗。
2.3 關於無名管道需要注意的幾個問題
①管道是半雙工方式,數據只能單向傳輸。如果要在兩個進程之間相互傳送數據,就要建立兩條管道。
②pipe()調用必須在調用fork()以前進行,否則子進程將無法繼承檔案描述符。
③使用無名管道互相連線的任意進程必須位於一個相關的進程家族裡。因為管道必須受到核心的限制,所以如果進程沒有在管道創建者的家族裡面,則該進程將無法訪問管道。
3 命名管道
在Linux系統中,可以識別命名管道檔案。例如:$ls-lfilenameprw-r--r--lrootroot0sep2719:40filename|filename檔案名稱後跟著一個“|”符號表明該檔案是管道檔案。
3.1 命名管道的工作方式
無名管道套用的一個重大限制是只能用於具有親緣關係的進程間通信,在命名管道提出後,該限制得到了克服。命名管道提供一個路徑名與之關聯,以FIFO的檔案形式存在於檔案系統中。這樣,即使與FIFO的創建進程不存在親緣關係的進程,只要可以訪問該路徑,就能夠彼此通過FIFO相互通信。因此,通過FIFO,不相關的進程也能交換數據。FIFO管道的打開方式與普通管道有所不同,普通管道包括兩個檔案數據結構:對應的VFS索引節點以及共享數據頁,在進程每次運行時都會創建一次,而FIFO是一直存在的,需要用戶打開和關閉。Linux必須處理讀進程先於寫進程打開管道、讀進程在寫進程寫入數據之前讀入這兩種情況。除此之外,FIFO管道的使用方式與普通管道完全相同,都使用相同的數據結構和操作。
3.2 FIFO檔案的創建
命名管道的創建有兩種常見的方法:在shell提示符下使用mknod命令或在程式中使用mknod()系統調用。
3.2.1 shell命令行方式
shell命令行方式如下
$mknodfilenamep
$mkfifoa=rwfilename
這兩個命令行均可創建FIFO檔案filename。mkfifo提供了直接改變檔案讀寫許可權的功能。mknod創建的檔案通過chmod可以改變許可權。其中參數p表示所建立的節點,即特殊檔案的類型為命名管道。
4 管道的不足
管道提供了從一種進程向另一種進程傳輸數據的有效方法,但是,管道還是存在一些不足:
①因為讀數據的同時也將數據從管道移去,因此管道不能用來對多個接受者廣播數據。
②如果一個管道有多個讀進程,那么寫進程不能傳送數據到指定的讀進程。同樣,如果有多個寫進程,那么沒有方法來判別是它們中的哪一個傳送的數據。

相關詞條

熱門詞條

聯絡我們