席小衛,陳荻茜,蘇 喆,田銘繁
(蘭州理工大學技術工程學院,蘭州 730200)
現階段,控制系統的功能逐漸增加,內部構造日益復雜,通常以工控機為上位機,以單片機為下位機,處于被控對象的地層,借助PC機完成數據采集與分析工作。由于PC機和單片機之間需要完成數據傳輸,這時需要多個RS232串口的支持,本文針對串口通信的設計進行分析和研究。
串口通信主要通過ASCII碼進行傳輸,采用地線進行接收和發送,通信段在一條線路中發送信息,可在另一條線路中進行接收。其中,波特率、數據位、奇偶校驗位等參數十分關鍵。
(1)波特率。可對通信速度進行反應,與時鐘的周期相同,但與距離呈反比,只有相似儀器中才可使用這一參數。
(2)數據位。可對通信數據進行體現,通常標準為5、7、8位,發送信息與標準值之間具有一定關聯。標準碼由7或者8位組成,在單包中最后一位是停止位,在定時時可通過傳輸線進行數據傳輸,因此設備時鐘不同。在通信時設備之間很難做到同步傳輸,因此差異性相對較小,此時可發揮停止位的作用,對傳輸進行約束,停止位的數量應得當,不可過多或者過少,以適當的位數保障數據的傳輸率。
(3)奇偶校驗位。該項參數可對串口通信的正誤率進行檢驗,主要方式為高、低、奇、偶等類型,在奇偶校驗的過程中,數據最末位便是校驗位;對于設備來說,對位的狀態進行掌握,可有效判斷數據傳輸是否受到其他設備的干擾。
在該系統中,主要采用“一主多從”的總線連接方式,與總線特征相結合,將兩個120的電阻分別連接在兩側,芯片類型為MAX485,在驅動器中最多可帶128個單片機,因此通信數量不可超過128個。
在數據傳輸過程中,單片機通常采用中斷方式,在初始化時,SM2的數值為1,工作方式為3,波特率為9600。通信協議為:
(1)PC機將地址信息傳輸給單片機,由接收端對信息進行查詢。
(2)當單片機接收到PC機傳輸來的信息后,即可執行程序,使串口通信中斷,與自身現有的地址進行對比,當地址與自身設定的地址相同時,單片機即可將應答信號發送出來,使SM2的數值為0,反之則中斷返回。
(3)當PC機接收到地址信息,并將應答信號傳輸后,即可將開始數據發送出去,如若未接收到正確的應答信號,則需要繼續發送地址。當單片機收到數據后,即可執行相應指令。
(4)當單片機接收到PC機傳輸的信息后,即可開啟通信中斷程序,當單片機對數據進行順利接收后,即可將應答信號傳輸給PC機[1]。
在單片機通信過程中,采用多機通信控制位SM2實現主機與從機之間的相互通信,對于IBM PC機來說,其內部采用INS8250型的芯片,不具有單片機多機控制位的相應功能,但是可通過上述流程進行軟件處理,使該芯片具有單片機控制位SM2。與INS8250單片機相比,采用INS8250單片機多機通信控制位,單片機發送的11位數據幀格式,將二者的幀格式進行對比,如下所示:PC機與單片機在起始位、停止位以及中間D0到D7均相互對應,只有PC機的奇偶位與TB8相互對應。從上述數據可知,第1行為屬于INS850可發送11位數據幀格式,與第2行為相比,第一位均未起始位,最后一位均為停止位,只有第9位的含義有所不同,即PC機為奇偶位,單片機為TB8,因此如若在INS8520中對奇偶位中的TB8功能進行校驗,則可實現PC與多個單片機相互通信的目標。在應用過程中,對PC軟件進行編程時,可對INS8250進行編程,使奇偶位具備TB8的功能,也就是在發送地址時,可強制奇偶位為1,在發送數據時,可強制奇偶位為0,進而實現相互通信[2]。
通過對INS8250進行分析可知,其內部具有10個寄存器,其中D0和D1代表的是數據位長、D2代表的是停止位長、D3到D5代表的是奇偶檢驗選擇、D6代表的是中止位、D7代表的是除數標志。當D7的數值為0時,說明是正常尋址;當D7的數值為1時,說明對除數寄存器進行訪問;當D6的數值為0時,說明處于正常發送狀態;當D6的數值為1時,說明正常發送終止,在串行輸出端方面,當Sout為0時,D5和D3三者均代表著通信數據的奇偶校驗規則;D3可代表校驗位的有無,D4可代表校驗的奇偶性[3];D5代表的是將發送方的奇偶性,通過數據傳輸的方式,放入附加位中告知接收方;當D5、D3和D4的數值均為1時,在D7發送數據時,可在D7與停止符之間附加一個0的標志,可對以往奇偶性進行校驗。當D3、D4和D5的數值均為1時,可在D7與停止符之間附加一個1的標志。簡單來將,當D3、D4和D5的數值均為1時,原本奇偶校驗位始終為1,當D2的數值為0時,則只有一位和半停止位;當D2的數值為1時,當數據位的長度為5時,代表一半均為停止位;當數據位長為6—8時,則有兩位停止位。D0和D1均為傳輸數據位的長度,當二者的數值為0時,規定數據位應為5;當D1的數值為0,D0的數值為1時,此時數據位應為6。事實上,可采用以下三條語句對INS8250進行編程,對串口通信中的11位數據幀進行定義,奇偶位為1,即:
Mov al,2bh//INS8250線路控制寄存器,數據位為8,停止位位長為1,奇偶位為1;
Mov dx,3fbh//INS8250線路寄存器端口地址為3fb;
Out dx,al
通過上述編程,可使PC向單片機通信傳輸時的相互通信創造有利條件,使TB8的數值為1,充分滿足串口通信傳輸需求。
綜上所述,通過本文分析,在多機串口通信過程中,可實現PC和單片機之間的相互通信,有效節省二者傳輸中的無效時間,使系統傳輸的實時性得到顯著提升,在更多場合得到廣泛應用。