謝子馨
(湖北大學,湖北 武漢 430062)
計算機通信是指計算機與外部設備或計算機與計算機之間的信息交換。通信一般分為串行通信和并行通信。串行通信最顯著的優點就是信號線較少,可以兩根線并行同步發送數據和接收數據,常用于遠距離傳輸[1]。本文介紹計算機常用的串口通信接口RS-232,RS-422/RS-485,分析了接口的特點,并對常用的通信協議——Modbus的特點進行分析,給出改進方向。
RS-232接口標準是現階段非常普及的串行通信接口的一種標準,是美國電子工業協會(Electronic Industry Association,EIA)聯合通信工業協會(Telecommunications Industry Association,TIA)制定的串行通信標準EIA/TIA-232的簡稱[2]。
RS-232起源于為遠程通信連接數據終端設備(Data Terminal Equipment,DTE)以及常見的數據通信設備(Data Communications Equipment,DCE)制定的標準。RS-232標準中所提到的“發送”和“接收”,都是站在DTE立場上,而不是站在DCE的立場上定義的。
在TXD和RXD上,邏輯1(MARK)為-3~-15 V;邏輯 0(SPACE)為 +3~ +15 V。在 RTS、CTS、DSR及DTR等控制線上,信號有效是正電壓+3~+15 V;信號無效是負電壓-3~-15 V。實際工作時,應保證電平的絕對值在3~15 V[3]。
RS-232總線標準指定了25腳的DB25連接器,包括一個主通道和一個輔助通道。
RS-232接口標準中,最常用的編碼格式是異步起停格式(Asynchronous Start-stop)。
波特率是指每一秒鐘設備間傳送的比特數(bit/s)。RS-232有一系列波特率標準,常用的有2 400 b/s、4 800 b/s及9 600 b/s等。
奇偶校驗Parity主要用于數據準確性檢驗。傳輸過程中通常都會設定奇偶性校驗。具體地,如果設定為偶校驗,奇偶校驗位所處位置的傳送數字位中“1”的個數就是偶數;如果設定為奇校驗,相應位置的“1”的個數就是奇數。
停止位主要是用于接受信號方硬件重同步。
盡管設置波特率和停止位可以解決多數應用的問題,但是會受限于接收方過載的情況,此時必須采用握手。握手分為3種,軟件握手、硬件握手及Xmodem握手。其中,硬件握手需要用到5個針腳RTS/CTS、DTR/DSR、DCD、RTS/CTS和 DTR/DSR一起工作,一個作為輸出,另一個作為輸入。Xmodem握手通常使用在Modem通信中,也叫XModem文件傳輸協議,現在應用較少。
RS-232雖然是常用的一種串行通信接口標準,但仍存在幾點不足[3-4]。
(1)接口的信號容易造成接口電路芯片位置的損壞,且與TTL電平不兼容。
(2)傳輸速率較低,異步傳輸時一般為9 600 b/s,或者115 200 b/s。
(3)傳輸距離較短,且通信距離會受到相應的電容約束。
考慮到RS-232串口標準存在的局限性問題,產生了RS-485/422接口。RS-422標準全稱是“平衡電壓數字接口電路的電氣特性”,隨后出現了更高級的RS-485。相對于RS-232,RS-485/422接口可以進行多機通信,允許一條總線上可以連接多達32個設備,甚至可以達到256個設備。
RS-422有4根信號線,兩根發送(Y、Z)、兩根接收(A、B),可以同時收和發(全雙工)。
RS-485有2根信號線,發送和接收都是A和B,不能夠同時收和發(半雙工)。
RS-485的電氣特性驅動器至少能輸出電壓1.5 V(終端電阻的大小與所用雙絞線的參數有關)。
RS-232、RS-422及RS-485串口通信協議如表1所示。

表1 串口通信協議比較
RS-233和RS-485只定義了串行總線標準,主要是電氣標準、機械結構以及基本數據鏈路格式等,但沒有具體的數據協議。
Modbus允許多個(約240個)設備連接在同一個網絡上進行通信,標準的Modbus信息幀格式為起始,信息,功能,數據,校驗,結束。傳輸模式有兩種,ASCII(American Standard Code for Information Interchange)和 RTU(Remote Terminal Unit)模式[5]。ASCII模式的主要優點是發送的兩個字符之間間隔時間可以達到1 s。RTU模式中,兩個16進制字符包含在一個8位的信息字節中。起始位至少要靜默3.5倍的字符時間[6]。
(1)Modbus不支持大型二進制對象數據,只能支持有限的數據類型。
(2)速率較低,無法要求設備“報告異常”。
(3)Modbus協議并沒有足夠的加密,相應功能碼濫用[6]。
(4)Modbus由于只能在單條數據鏈路上處理少量有限地址,因此極大程度上限制了連接到主控站點的有效設備數量。
(5)對于各個節點,Modbus并沒有標準化方法匹配數據對象的描述信息。
(6)Modbus的傳輸避免了傳輸過程中存在的緩沖區漏洞的問題,因此對于通信是一定、連續的限制。
3.3.1 安全性
首先,從源頭開始控制,從Modbus系統的需求設計、開發實現及內部測試和部署等階段,全生命周期地介入安全手段,融入安全設計、安全編碼以及安全測試等技術。
其次,異常行為檢測。針對Modbus系統,要分析其存在的各種操作行為,依據“主體,地點,時間,訪問方式,操作,客體”等行為描述成一個六元組模型;然后分析其行為是否屬于異常,并決定采取記錄或者報警等措施。
再次,Modbus的安全審計就是對協議數據進行深度解碼分析,記錄操作的時間、地點、操作者及操作行為等關鍵信息,實現對Modbus系統的安全審計日志記錄和審計功能,從而提供安全事件爆發后的事后追查能力。
最后,使用入侵防御和防火墻等網絡安全設備。
3.3.2 接 線
由于某些廠家正、負極混亂,通信前要確認線路正常:從站線接好,用萬用表量線間電壓。
3.3.3 信號源
信號源的問題通常是信號衰減或者有干擾源。Modbus通信的理論距離是1 200 m,距離越長,信號衰減越厲害,加上有一些電纜質量較差,衰減更厲害。
3.3.4 通信地址
對于地址偏移,有時會發現第三方設備給的地址表和讀取的不一致,甚至無法讀出,可以嘗試往前或往后讀一位。
對于讀取數量,有些設備寄存器較小,讀太多會通信錯誤;還有一些設備,主站讀取數量必須與從站一致。
對于從站并聯,通常相同設備可以采用并聯的方式,最后通過一根電纜接到主站通信卡上。
對于主從站數據不一致,有時發現通信正常,但是數據與從站數據不一致,除檢查地址偏移問題外,還要檢查數據格式是否正確。
對于數據轉換,通信中,經常為了提高精度,從站設備數據會乘以10或者100,所以通信后,主站顯示時需要相應地除以10或者100。
隨著工業化與信息化進程的不斷交叉融合,計算機串口通信應用越來越廣泛,本文給出了常用的計算機串行接口標準RS-232和RS-485的發展過程,指出了各自的優缺點,并分析了常用的應用層Modbus協議,給出了詳細的數據通信格式,分析了Modbus協議的不足,指出了改進的方向。