在目前單片機組成的嵌入式控制系統中,所謂的多機通信是指上位機與下位機之間的主從模式的通信,一個單片機系統為主機, n 個應用系統為從機,從機之間不能進行通信. 目前單片機通信存在通信網路模式簡單,數據的通信速率低,沒有容錯技術等缺點.
MCS-51 單片機串列介面SBUF ,由SCON 控制為用於多機通信的工作方式2 ,3. 當SM2 = 1 ,出現兩種情況:接收到第9 位數據為1 時,數據才裝入SBUF ,並置RI = 1 ,向CPU 發出中斷請求;如果接收到第9 位數據為0 時,則不發生中斷,信息被丟失. 若SM2 = 0 ,則接收到的第9 位數據無論是0 還是1 ,都產生RI = 1 中斷標誌,接收到的數據裝入SBUF 中. 多機通信過程安排如下:
1) 使所有的從機SM2 = 1 ,處於接收地址狀態;
2) 主機發一幀地址信息,從機接收到地址幀后,將與本從機的地址進行比較. 是本機,使SM2 = 0 ,地址不符合的從機,保持SM2 = 1 ,退出本次通信;
3) 主機發送的數據或命令,以第九位為0 表示. 主從模式的多機通信的拓撲結構,主機的RXD 與所有從機的TXD 端相連,而主機的TXD 與所有的從機的RXD 端連接,如圖1 所示.
圖1 主從多機通信拓撲結構
1 網路結構的改進
主從模式的多機通信在拓撲結構中,主機只有一個且固定不變,從機是多個,它們之間不能通信.在新的多機通信網路中,沒有真正的主機和從機之分,所有的結點都是平權的. 匯流排也是兩條,一根作為主機發送信息,從機接收;另一根是從機發送信息,主機接收. 每一個結點的機器既是從機,又是潛在的主機. 非主動通信狀態時,為從機狀態. 需要通信時,改變連線的接法,並使自己變為主機狀態. 主機狀態:它的TXD 端與所有從機的RXD 連接,它的RXD 與所有從機的TXD 連接,以便發送從機地址,與從機建立通信聯繫,完成交流信息的目的. 本次通信完畢后,自動降為從機狀態,並且線路的連接方式也變成從機連接. 從機狀態:它的TXD 與所有從機的TXD 連載一條匯流排上,連接到主機的RXD 端,它的RXD 連接到主機的TXD.其拓撲結構如圖2 所示.
圖2 多機串列通信拓撲結構
說明:1) 任一個結點機器,不主動通信時,處於從機狀態,要求通信時,躍遷為主機狀態. 行使主機通信形式和權利;
2) 結點機器的TXD ,RXD 與匯流排的連接有兩種方式:主機連接、從機連接. 由機器的狀態來決定,也就是說,連接方式與機器的狀態相適應,受機器狀態的控制.
邏輯電路介面式連接:用三態門74HC126. 非門用74HC04 實現連接轉換功能. 用P1. 0 控制三態門,當P1. 0 = 0 時,其TXD 接主機的RXD ,它的RXD 接主機的TXD ,結點成為從機狀態;當P1. 0 = 1 時,其TXD 連接所有從機的RXD ,它的RXD 連接所有從機TXD ,該結點成為主機狀態. 連接變換電路圖如圖3 所示.
圖3 由三態門構成多機串列通信智能連接電路
多機通信協議: 1) 在初始化或複位時,每個結點都使P1. 0 = 0 ,SM2 = 1 ,處於只接收地址幀(串列幀的第9 位為1) ,對數據幀(串列口的第9 位為0) 則不做響應的從機狀態.
2) 需要通信的結點機器,檢測到匯流排空時,置SM2 = 0 ,P1. 0 = 1 ,躍遷為主機狀態,發送一個地址幀,其中含8 位地址數據,第9 位為標誌位.
3) 當從機接收到主機發來的地址幀后,將所接收的地址與本機地址相比較,若地址與本機地址相符,便使SM2 = 0 ,以便接收主機后發來的數據P命令,對於地址不相符合的從機,仍保持SM2 = 1 狀態,故不能接收主機隨後發來的數據信息.
4) 主機發送數據或控制指令,其數據幀第9 位置0 ,表示發送的是數據.
5) 當主機改為與另外從機聯繫時,可再發出地址幀來尋找其它從機. 而先前被定址過的從機在分析出主機是對其它從機定址時,恢復其SM2 = 1 ,等待主機的再一次定址. 主機也可以通過發送一個複位指令,使所有從機處於等待定址狀態.
6) 通信結束后,置P1. 0 為0 ,SM2 位為1 ,退回到從機狀態.
2 RS485 匯流排改善通道
RS485 串列介面和傳統的RS232 串列介面相比有以下特點:RS485 的電氣特性:邏輯“1”以兩線間的電壓差為+ 2~ + 6 V 表示,邏輯“0”以兩線間的電壓差為- 2~ - 6 V 表示. 介面信號電平比RS232C 低. 不易損壞介面電路的晶元,且該電平信號與TTL電平兼容,可方便的TTL 電路連接. RS485 的數據最高傳輸速率為10Mbps. RS485 介面是採用平衡驅動器、差分接收器的組合,抗共模干擾能力強,即抗雜訊干擾性好.RS485 介面的最大傳輸距離為1219.5 m(標準值) ,實際上可達3000 m. RS485 介面在匯流排上允許連接多達128 個接收器,即具有多站能力,這樣用戶利用單一的RS485 介面方便的建立起設備網路. 因RS485 介面具有上述優點,使其得到廣泛的應用.
半雙工通信:採用一對平衡差分信號線,R 為TTL/CMOS 接收端;RE 為其使能端,低電平有效. D 為TTL/CMOS 的發送端,DE為其使能端,高電平有效. A 、B 為一對平衡線,RS485 通過它來接收和發送信號. 每個埠的RS485 收發器的接收使能端接低電平,保證端RS485 匯流排上的數據都能通過RS485 的接收驅動器,送到每個終端的微處理器的串列輸入口;RS485 收發器的發送使能端由每個終端的并行口控制,每個終端在需要發送數據時,才使發送使能拉高,將數據通過RS485 的發送驅動器,送到RS485匯流排上,如圖4 所示.
圖4 基於RS - 485 匯流排的單片機多機通信原理圖
RS485 實現全雙工通信:採用兩對平衡差分信號線, R 為TTL/CMOS 接收端;RE為其使能端,低電平有效. D 為TTL/CMOS的發送端,DE 為其使能端,高電平有效. A 、B 為一對平衡線,RS485 通過它來接收和發送信號. 匯流排採用RS - 485 模式,用MAX88 完成收發功能. 如距離較遠時,在中途進行接收並放大.多機通信網路電路如圖5 所示.
圖5 基於RS - 485 匯流排的單片機多機通信原理圖
多機競爭匯流排的問題:在通信系統中,有多個單片機同時要求通信時,就出現多主爭用匯流排問題. 解決的方法:
1) 通信過程中,設有啟始和結束標誌符,如果通信正在進行,除正在通信的結點外,其它所有的結點置為從機狀態;
2) 在測量匯流排是空狀態之後,才允許請求通信的機器由從機狀態升為主機狀態;
3) 聯絡從機過程中,五次不成,就退出本次通信. 避免無效通信佔用過長的時間,影響通信質量.
3 容錯技術
在單片機組成的嵌入式控制系統中,利用單片機的串列口,可實現單機對單機的通信、或者實現一個主機與多台從機的通信,利用MODEN 實現遠距離的信息傳輸. 基於RS485 匯流排可實現網路化自由通信. 但單片機多用在工業控制現場,其通信受到各種各樣的干擾信號的干擾,由於單片機的內存及操作系統不允許裝載複雜的通信容錯程序. 針對單片機通信的特點,介紹一種簡單可行的差錯糾錯的編碼方法:
單片機串列通信以8 位數據或九位,一個啟始位,一個停止位的通信模型. 通信數據量不會太大等特點. 採用混合糾錯檢錯的方法. 首先採用Hamming(7 ,4) 模型編碼. 即在7 位編碼中,其中4 位是有效數據,3 位是冗餘校驗碼. 設D3 D2 D1 D0 是4 位有效數據, P2 P1 P0 是3 位校驗碼,將D3 D2 D1 D0 分成三組, P2 , P1 , P0 分別是3 組的校驗位, G2 G1 G0 為檢錯信息,當G2 G1 G0 = 000時,傳送沒有錯. G2 G1 G0 的值就指明7 位編碼中第i 位傳錯,對該位求反,即可完成糾錯. (7 ,4) 校驗碼的格式,見表1 :
D3 D2 D1 P2 D0 P1 P0 . 7 位(7 ,4) D3 D2 D1 P2 D0 P1 P0 校驗碼分成三組:
第一組:檢錯信息G0 ,含有: D3 、D1 、D0 、P0 ,其中: P0 = D3⊕D1⊕D0 , G0 = P0⊕D3⊕D1⊕D0 .
第二組:檢錯信息G1 ,含有: D3 、D2 、D0 、P1 ,其中: P1 = D3⊕D2⊕D0 , G1 = P1⊕D3⊕D2⊕D0 .
第三組:檢錯信息G2 ,含有: D3 、D2 、D1 、P2 ,其中: P2 = D3⊕D2⊕D1 , G2 = P2⊕D3⊕D2⊕D1 .
單片機在發送數據前,先按漢明編碼格式,把要發送的數據變成漢明碼,即8 位編碼中,有4 位數據. 所以一個位元組有效數據分成低4 位、高4 位,然後編成漢明碼后,發送到縮機. 接收機收到數據后,對數據進行差錯和糾錯. 即首先計算出G2 G1 G0 檢錯信息字的值,由信息檢錯字知道那一位出錯,對該位求反,即可完全糾錯. 錯位與信息字G2 G1 G0 的關係見表2.
B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
D3 | D2 | D1 | P2 | D0 | P1 | P0 |
G2 G1 G0 | 出錯位 | 求反糾錯 |
000 | 正確 | |
001 | P0 | -P0 |
010 | P1 | -P1 |
011 | D0 | -D0 |
100 | P2 | -P2 |
101 | D1 | -D1 |
110 | D2 | -D2 |
111 | D3 | -D3 |
[admin via 研發互助社區 ] 單片機多機通信網路改進及數據通信容錯技術已經有2364次圍觀
http://cocdig.com/docs/show-post-42320.html