我國石油天然氣行業的工作區大多地處荒漠野外,其工作參數的實時采集和監控傳輸一直是困擾油氣生產安全的難題。工作現場的傳感器收集到的數據經過信號處理放大、模數轉換傳給單片機系統的數據存儲器,單片機再把數據送回到主控室,再通過分析處理軟件對數據進行處理和動態管理。通常現場到主控室的距離在幾公里至幾十公里之間,怎樣把單片機所獲得的數據安全可靠的傳回主控室就顯的尤為重要。單片機輸出的都是TTL電平,只能傳數米;而并行數據傳輸對于超過10英尺的距離就不適合了。遠距離通信都使用串行通信。這種通信方式使用的數據線少,比并行傳輸的遠,在遠距離通信中可以節約通信成本。傳統的方法不但傳輸距離受限制,而且誤碼率較高。本人通過實驗,提出了一種遠距離傳輸方案,傳輸距離遠,誤碼率低,大大提高了傳輸效率。
1 通信系統設計
RS-232、RS-422與RS-485都是串行數據接口標準。RS-232采取不平衡傳輸方式,發送電平與接收電平的差僅為2V至3V左右,其共模抑制能力差,傳送距離最大約為15米。只能是點對點通訊,且傳輸速率低,只適合本地設備之間的通信。RS-422定義了一種平衡通信接口,將傳輸速率提高到10Mb/s,傳輸距離延長到4000英尺,并允許在一條平衡總線上連接最多10個接收器。它是一種單機發送、多機接收的單向、平衡傳輸規范。而RS-485標準在RS-422基礎上,增加了多點、雙向通信能力,同時增加了發送器的驅動能力和沖突保護特性,擴展了總線共模范圍。
圖1 RS-485通信系統結構圖
2 CRC校驗
CRC校驗又稱循環冗余碼校驗。它是利用除法及余數的原理來作錯誤偵測的。實際應用時,發送裝置計算出CRC值并隨數據一同發送給接收裝置,接收裝置對收到的數據重新計算CRC并與收到的CRC相比較,若兩個CRC值不同,則說明數據通訊出現錯誤。由于這種方法取得校驗碼的方式具有很強的信息覆蓋能力,所以它是一種效率極高的錯誤校驗法。
2.1 CRC編碼的算法
設編碼前的原始信息多項式為P(x),P(x)的最高冪次加1等于k;選定的生成多項式為G(x),G(x)的最高冪次等于r;CRC多項式為R(x);編碼后的帶CRC的信息多項式為T(x)。
發送方編碼方法:將P(x)乘以 (即對應的二進制碼序列左移r位),再除以G(x),所得余式即為R(x)。用公式表示為T(x)=xrP(x)+R(x)。
接收方解碼方法:將T(x)除以G(x),如果余數為0,則說明傳輸中無錯誤發生,否則說明傳輸有誤。
但對于單片機中的通信口,都只使用異步通信方式,由硬件只能完成奇偶校驗,不能由硬件實現CRC編譯碼、信息打包和零位插入/刪除,即不能實現諸如SDLC的協議。但在許多情況下,需要采用這種異步通信方式,而且要求有高的差錯控制能力,這就需要用軟件實現類似SDLC的規程,以便使用ARQ方式實現差錯控制和利用停止--等待方式實現流量控制。其中,最重要的就是用軟件實現CRC檢錯碼的編碼和譯碼。
2 .2 CRC檢錯碼的軟件實現
假定在異步通信方式下利用CRC檢錯碼和ARQ方式實現差錯控制,利用停止--等待方式實現流控制,采用點對點通信方式.此時,就能以SDLC協議類似的方法實現信息傳送.
圖2 信息幀格式
圖2為組成信息幀格式。其中,信息長度表示信息的字節數,信息就是欲傳送的數據字節內容,FCS為幀校驗序列,那么發送方發送一幀信息的流程圖如圖3所示
用軟件實現的CRC算法,其主要優點是突出了一個‘快’字,為了提高校驗速度,把參數表和應用程序一起寫入單片機的EPROM 內,當進行CRC校驗時,對需要發送的每一字節,按上述的方法進行計算,就可得到該字節的校驗值。從而提高了速度,較好地克服了,異步傳輔中校驗和發送時間很不匹配的矛盾。
3 HDB3編解碼
由于距離遠,再加上信道干擾和外部干擾,就連糾錯碼本身也可能出錯,故在本實驗中又采取了HDB3編碼。HDB3碼是串行數據傳輸的一種重要編碼方式。和最常用的NRZ碼相比,HDB3具有很多優點,例如:消除了NRZ碼的直流成分,具有時鐘恢復更好的抗干擾性能,這使它更適合于長距離信道傳輸。
3.1單極性不歸零碼到HDB3碼的變換規則
① 先把代碼中的l交替地變換為傳輸碼中的+l,-l,+l,-l,⋯.如變換后代碼序列連“0”的個數小于4時,此時就是HDB3碼。
②當 連“0”的個數大于或等于4時,將第4個“0”改為與前一非“0”(±1)符號同極性的“V”符號。
③ 為了使“V”符號相鄰交替,相鄰“V”之間非“0”(±1)符號的個數為偶數時,再將4個“0”的第一個“0”變為“B”,“B”的符號與前一非“0”(±1)相反(即保證后面“V”與“B”符號相同),并讓后面的非“0”(±1)符號從“V”符號開始交替變化。
3.2 DS2153Q應用設計
DS2153Q是Dallas公司生產的T1/E1收發芯片。該芯片能完成NRZ碼和HDB3碼間的相互轉換。而且在片內集成了接受NRZ碼的數據時鐘恢復電路。因而更利于后級接收電路。片內D/A能夠實現G.703標準的輸出波形,適用于75Ω和120Ω特性阻抗的雙絞線,并且具有完善的數據流狀態監測功能,可以實時指示數據流的傳輸狀況。
圖4是該碼制轉換器的結構框圖。單片機外圍的 µP監控電路IMP813L的作用是提高碼制轉換器的抗干擾能力和可靠性。其中,DS2153Q的并行數據/地址線與單片機的PO口相連,片選信號選用單片機的P2.0口,單片機的讀寫信號與DS2153Q的讀寫信號相連,同時DS2153Q的,兩個中斷申請線與單片機的INTO和INT1相連,這樣DS2153Q可以通過中斷方式及時得知單片機自身的工作狀態,從而實現單片機對DS2153Q的控制和狀態監控。該碼制轉換器選用IMP813L作為µp監控電路,以實現可靠地上電復位和看門狗控制。
圖4 NRZ-HDB3碼制轉換器結構圖
圖5所示是該系統中單片機的控制流程圖。
4 中繼器
該電路通過光電隔離使信號在加強前后隔離開來,不僅使信號能可靠傳輸,更加強了系統的抗干擾能力。圖中RS-485發送接收器的發送控制端(DE)和接收控制端(RE)短接在一起,RS-485輸入開路,或已終端匹配但沒有驅動的情況下,U1和U2將使其接收器輸出(R)為高電平,而該端通過光耦控制另一端發送接收控制器的公共端。使發送接收控制器均處于接收狀態。一旦某一接收端有數據輸入,就通過光耦控制另一發送接收控制器輸出,這樣就使得信號傳輸得以繼續。
圖6 光電隔離中繼器
5 組網布線
RS-485支持128個節點,因此多節點構成網絡。網絡拓撲采用終端匹配的總線型結構。本系統選用屏蔽雙絞線。在構建網絡時,應注意如下幾點:
1)從總線到每個節點的引出線長度應盡量短;
2)應注意總線特性阻抗的連續性;
3)對高阻型共模干擾,必須要有一條低阻的信號地;當共模干擾源內阻較低時,會在接地線上形成較大的環路電流,影響正常通信。可采取以下措施:a.如果干擾源內阻不是非常小,可以在接地線上加限流電阻以限制干擾電流。b.采用浮地技術,隔斷接地環路。c.采用隔離接口。
以上只是對低頻干擾有保護作用,對于頻率很高的瞬態干擾就無能為力了。高頻瞬態干擾可以采用以下方法加以保護:1.隔離保護方法;2.旁路保護方法。
6 結論
本方法經過實驗驗證,在遠距離的情況下,提高了信號傳輸質量, 能夠保證信號穩定可靠的傳輸,而不出現誤碼或者通信中斷等情況。該研究成果不僅可以用于油氣管線現場數據的采集傳輸,而且同樣也能應用于一般的工業控制現場,成本低,現場布線組網也簡單。