摘要:本文結合光電計時儀實例,介紹了PC104串口通信原理及其在工程中的實踐應用。本文同時提出了一種簡單、有效的串口通信方式,并簡要說明了相關的通信軟件的設計。
關鍵詞:PC104 ; 串口通信;光電計時儀 SOC
引言:
目前最為先進的嵌入式工業(yè)計算機PCl04,以其優(yōu)良的品質、高可靠性及模塊化的特點,而被廣泛應用于工業(yè)控制、航空航天、軍事、醫(yī)療、智能儀器儀表等領域。PC104中的MSM486SV模塊是一個基于PC/104而成的高可靠性、高集成度的ALL-IN-ONE CPU模塊;它在PC/104的標準尺寸上集成了計算機的所有功能(包括SVGA和LCD接口);板上除了包含標準PC的一般接口,還為適應嵌入式的應用,而對MSM486SV單板進行一系列附加特性設計,使得板上功能更為完善。
光電計時儀是我們研制的一種適用于惡劣環(huán)境下測量某一時刻及測量時間間隔的專用設備,由于PC104中的MSM486SV模塊的優(yōu)越性能,我們選用其作為光電計時儀的控制計算機。在實際運行中為實現上位PC機與PC104之間進行數據交換,我們采用串行通信的通信方式。串行通信具有使用方便、傳輸可靠、信號線數量少等優(yōu)點,因而它在傳輸數據量不大、要求速度不高而傳輸距離較遠的通信場合得到廣泛的應用。本文結合光電計時儀實例,介紹了PC104串口通信在工程中的應用。
1. 串口通信的基本原理
串行端口的基本功能是實現CPU和串行設備間的編碼轉換,當數據從CPU經過串行端口發(fā)送出去時,字節(jié)數據轉換為串行的位;在接收數據時,串行的位被轉換為字節(jié)數據。PC系列及其兼容機為了實現串行通訊,都配置了一個大規(guī)模集成通訊組件————-通用異步接收發(fā)送器(簡稱UART);UART 有一系列的內部寄存器,通過這些內部寄存器操作來實現通訊功能。
對于可編程的異步串行通信芯片UART,我們可根據協議的要求對其進行初始化。初始化后,當要發(fā)送一個數據字符時,如果UART發(fā)送保持寄存器為空,可用CPU的輸入輸出指令把該數據輸出到UART的發(fā)送保持寄存器。UART按初始化時設置的要求,把相應的起始位,奇偶位和停止位加到來自CPU的8位數據上,然后按設置的波特率把這個二進制位串發(fā)送到串行通信線上;同樣UART能自動從通信線上接收串行數據,并取出有效的數據位,然后轉換成數據字符存入接收數據寄存器。
2. 利用串口實現遠程控制
在儀表、工控領域,采用嵌入式PC是自動化設備和測量裝置開發(fā)的一個方向。嵌入式PC裝置安裝在設備中,一般安裝很少的外設甚至不需安裝鍵盤、顯示器、軟驅等外設;當需要更新、交換其中的應用程序和數據文件時,常規(guī)方法是將嵌入式PC從設備上拆下來,再利用外掛鍵盤、顯示器和軟驅來進行文件管理,實際操作起來十分不便。注意到嵌入式PC上一般帶有串口、并口和USB口等通訊接口,我們可以利用上述通訊接口外接一臺普通的PC機,采用客戶機/服務器模式和仿真終端來進行嵌入式PC裝置的文件更新和管理?;谶@種想法,本文論述了在某型光電計時儀的設計中利用串口來實現遠程連接/調試功能的兩種方法,一種是將PC機的外設定向為嵌入式PC104的外設,另一種是將嵌入式PC104的物理驅動器鏡像為PC機的驅動器,具體方法如下:
方法1:仿真終端模式
MSM486SV模塊在系統(tǒng)BIOS中特別安裝了512K 的“遠程連接/調試”擴展。我們可以重新定向"顯示""鍵盤""硬盤"或"軟驅"。這樣,當我們將MSM486SV通過串行口與一臺計算機(HOST)相連后(如圖1),即使MSM486SV上沒有連接任何外設,我們仍然可以對MSM486SV進行操作。首先我們在HOST上運行"REMHOST.EXE"實用程序,然后我們對指定的"HOST"的外設重新定向,這樣"HOST"上的"鍵盤""顯示器"或"軟驅"就變成了MSM486SV的外設,接下來,我們就可以對MSM486SV進行調試或程序更新了。這一點對那些“黑”模式的現場嵌入式應用有特殊意義——————我們只要一臺“筆記本"作為HOST即可。
方法2:驅動器鏡像模式
應用DOS6.22的intersever功能來實現遠程連接/調試。 PC104作為服務器,PC機作為客戶端。
步驟如下:
1. 將PC104通過串行口與PC機相連(如圖1);
2. 兩臺計算機均在DOS同一版本下啟動;
3.在服務器端:在AutoExec中啟動intersve.exe;
4. 在客戶端:啟動interlink.exe;
5. 如果聯機正確,Dos操作系統(tǒng)自動將sever(服務器)中的物理驅動器鏡像到客戶端,比如服務器中的C盤,被映射到客戶端的G盤,這時在客戶端操作G盤就是對服務器的C盤進行操作。
在應用中,PC104如果沒有任何外設,但卻需要現場操作調試,方法1無疑是最佳選擇。
在我們研制的光電計時儀中,PC104接有矩陣鍵盤和顯示屏,沒有安裝軟驅。平時PC104單獨進行工作控制,當我們需要改寫模擬電子硬盤上用戶程序時,我們可以利用串口來實現。在此情況下,上述兩種方法都可以使用。但第二種方法就相對簡單一些,它不用設置BIOS和裝載REMHOST.EXE,只需要一張DOS最小系統(tǒng)的啟動盤即可。
3.利用串口傳送文件
光電計時儀在完成測量工作后,需要及時地將測量結果上傳到上位機,以便進行實時處理和判斷。在測量文件比較?。?K左右)、傳輸距離短的情況下,串口通信是最佳的傳輸方式,我們在測量程序中設計了一種簡單的文件發(fā)送程序來實現這種功能。我們將主控室的計算機作為上位機接收文件,將系統(tǒng)的PC104計算機作為下位機發(fā)送文件,采用雙向通信方式;串行通訊的波特率為4800BPS、8位數據位、1個停止位,采用奇校驗的方法。
3.1 下位機(PC104)文件發(fā)送的軟件程序設計
軟件程序設計采用C語言,運行環(huán)境為DOS6.22平臺系統(tǒng),它的可讀性好,并且能夠方便可行的移植到其他平臺。
在DOS系統(tǒng)下有好多種的串口編程方法,結合實際,我們采用直接讀寫UART內部寄存器的方法,通過使用C語言提供的基本輸入輸出函數inportb (),outportb ()實現了PC104模塊的異步串行通信。對于串口連接,我們采用了最簡單的三線制連法。對于無硬件握手信號的處理,我們采用了一種比較簡單的方法進行軟件握手,即在發(fā)送一組數據字符前,先發(fā)送一個聯絡信號(約定字符),然后等待對方的應答信號,在收到對方的應答信號后,就認為對方在最近一段時間內是準備好的;在此之后的發(fā)送就總是認為對方是準備好的。這種方法簡單可行,缺點是波特率不能設置過高:因為必須確保對方能及時的處理掉發(fā)送出去的字符。但是對我們只有1K左右文件的傳輸,即使在波特率為4800時,也不會耗時很長。程序流程如圖2所示。
3.2 上位機(PC機)接收的軟件程序設計
上位PC機工作在Windows下,我們采用Visual C++6.0語言編程。在Windows下用Visual C++ 6.0開發(fā)串行通信程序時主要有兩種方法:① 利用Visual C++ 6.0提供的MSComm控件來編程;② 利用專門的Windows的SDK提供的API函數來編程。利用MSComm控件實現串口通信的編程方法原理上比較簡單,容易實現,但編程的靈活性較差,傳輸速率受到限制;利用API函數實現串口通信的編程方法功能強大,靈活性好,但原理比較復雜,需要編程人員對硬件的工作原理有深入的了解。實際應用時為了滿足大容量數據傳輸的需要以及增加系統(tǒng)的靈活性,我們采用第二種方法。程序流程圖如圖3所示。
在32位的Windows系統(tǒng)中,串口和其他通信設備是作為文件處理的。串口的打開、關閉,讀取和寫入所用的函數與操作文件的函數完全一致。這方面的文獻和教材很多,在這里我們就不再敘述。
4 串口的硬件設計
目前較為常用的串口有9針串口(DB9)和25針串口(DB25),當通信距離較近時(<12m),適合采用電纜線直接連接標準RS232端口。若距離較遠,則需附加調制解調器(MODEM)。最為簡單且常用的是采用3線制RXD、TXD、GND軟握手的零MODEM 方式,即將PC機和PC104的發(fā)送數據線TXD與接收數據RXD交叉連接,二者的地線GND直接相連(如圖4所示),采用軟件握手方式 ,其它信號線(如握手信號線)均不使用。這樣既可以實現預定的任務,又可以簡化電路設計、節(jié)約成本。
結束語:本文較全面介紹了PC104的串口通信原理在光電計時儀中的應用,主要闡述了利用串口進行文件發(fā)送的程序設計的方法。光電計時儀的運行實踐證明了利用串口改寫模擬電子盤上的用戶程序的方法方便可行;同時表明用本文中提及的串口程序來傳送文件方法簡單、效果穩(wěn)定。這種方法也可以廣泛應用在其它傳輸文件小、波特率要求不高的場合。