孫誠,王雪梅,張艷紅
(第二炮兵工程學院陜西西安710025)
由于部隊禁止使用USB接口、MiniSD卡、內(nèi)存卡等方便的數(shù)據(jù)傳輸通信載體,導彈測試數(shù)據(jù)都是通過測試設(shè)備直接送給打印機進行打印而得到的,而打印機接收到的數(shù)據(jù)必須要通過打印并口傳送,因此獲取測試計算機的并口數(shù)據(jù)是解決導彈測試數(shù)據(jù)信息化建設(shè)管理的關(guān)鍵問題之一。研究從測試計算機并口獲取數(shù)據(jù)的方法,不但可以為從測試計算機并口獲取數(shù)據(jù)做準備,而且可以提高測試數(shù)據(jù)存儲的速度,實現(xiàn)對老式導彈武器裝備的性能進行及時地監(jiān)控、調(diào)用和跟蹤處理以及預警等。
IEEE委員會在1994年3月公布了新的IEEEl284并行接口標準,對打印機口的5種工作模式逐個進行了定義。這5種模式分別是:Centronies兼容模式(也叫標準SPP模式)、字節(jié)(Byte)傳輸模式、半字節(jié)(Nibble)傳輸模式、增強型并行端口(EPP)模式和擴展功能型端口(ECP)模式。其中,SPP模式是默認傳輸模式,數(shù)據(jù)只能正向傳輸,速率達到150 kb/s。打印機是計算機系統(tǒng)的基本輸出設(shè)備之一,PC機通過并行口實現(xiàn)對打印機的控制,為保證打印機正常工作,PC機與打印機之間建立了嚴格的通信協(xié)議。連接打印機的并行口通常工作在Centronics兼容模式,其他4種模式對并行口引腳定義與該模式完全兼容[1]。
并行打印接口有3組信號,分別存放在3組寄存器中:
1)數(shù)據(jù)信號,存放于數(shù)據(jù)寄存器中,占8個引腳,傳輸字符數(shù)據(jù)(包括控制字符)代碼。數(shù)據(jù)寄存器占用的端口地址是0x378。
2)狀態(tài)信號,存放于狀態(tài)寄存器中,占5個引腳,用于向微機傳輸打印機的當前狀態(tài)。其中,回執(zhí)(/ACK)信號表示打印機將數(shù)據(jù)取入緩沖存儲器。打印機忙碌(BUSY)信號有效時表示打印機不能接收數(shù)據(jù),通常為以下幾種情況:①數(shù)據(jù)輸入時;②打印機動作期間;③脫機狀態(tài);④打印機出錯。無打印紙(PE)信號表示打印機缺紙;打印機在線(ON-LINE)信號有效表示打印機加電啟動;打印機出錯(/ERROR)信號為打印機向微機發(fā)送的報錯信號。狀態(tài)寄存器占用的端口地址是0x379。
3)控制信號,存放于控制寄存器中,占4個引腳,傳輸微機發(fā)向打印機的控制信號。其中,數(shù)據(jù)選通(/STROBE)信號為讀脈沖信號,加到打印機去能把數(shù)據(jù)線上代碼置入打印機的緩沖存儲器。選擇輸入(SELECT)信號,該信號有效時,打印機才能接受數(shù)據(jù)線上的數(shù)據(jù)和控制信號。自動輸紙(AUTO FEED)信號有效時,當向打印機輸送“回車”代碼,則向前輸紙一行。打印機初始化(/INIT)信號為打印機初始化信號,可使打印機控制器復位,打印機緩沖器清零,該信號應(yīng)為一脈沖信號。控制寄存器占用的端口地址是0x37A。
打印機并口工作時序如圖1所示,其主要信號有STROBE信號(數(shù)據(jù)選通信號)、BUSY(數(shù)據(jù)總線繁忙信號)、ACK(應(yīng)答信號)和DATA(數(shù)據(jù)信號,共8條并行I/O線組成)。每當STROBE信號的下降沿出現(xiàn)時,表示并行總線上數(shù)據(jù)處于有效狀態(tài),可以從總線上讀取數(shù)據(jù);BUSY為高電平則表示打印機正“忙”,禁止接收數(shù)據(jù),需等待,當打印機取走數(shù)據(jù)并處理完畢后,BUSY被置低電平,表示數(shù)據(jù)總線空閑可以進行下一次數(shù)據(jù)傳送;在BUSY被置為低電平的同時打印機輸出應(yīng)答脈沖ACK,通知主機可以再次上傳數(shù)據(jù)。根據(jù)以上分析,若要捕獲并行總線上的數(shù)據(jù)只需要不斷檢測STROBE信號,當它出現(xiàn)下降沿并且此時BUSY為低電平時,可以采集并行總線上的數(shù)據(jù),完畢后向計算機反饋ACK信號,通知計算機接收數(shù)據(jù)完畢,則計算機繼續(xù)執(zhí)行發(fā)送任務(wù),打印機等待STROBE信號的下一個下降沿出現(xiàn)。如此循環(huán)往復即可實現(xiàn)批量數(shù)據(jù)接收[2]。
圖1 針式打印機并口工作時序Fig.1 Dot matrix printer parallel port work timing
打印機是一種輸出設(shè)備,一般使用并行接口接收數(shù)據(jù)。任何設(shè)備具有標準并行接口即可向打印機送出數(shù)據(jù),執(zhí)行打印操作。為從打印機并行接口讀出打印數(shù)據(jù),必須實現(xiàn)一個模擬打印機的信號接口,按照信號時序的要求,根據(jù)收到的控制信號接收數(shù)據(jù),并要求發(fā)出相應(yīng)的狀態(tài)信號。
從打印機時序圖分析后發(fā)現(xiàn),直接通過硬件控制BUSY、ACK和STROBE這3個信號采集打印機并行口的數(shù)據(jù)并不困難,但由于該打印機還擔負其他工作,所以需要保證在采集數(shù)據(jù)的同時不影響原有系統(tǒng)正常工作,即在獲取數(shù)據(jù)的同時還不能夠影響打印機正常工作,因此就不能用取消打印機、簡單采取硬件模擬打印機接收數(shù)據(jù)的方式捕獲數(shù)據(jù)。鑒于此,數(shù)據(jù)采集系統(tǒng)要求在并口數(shù)據(jù)傳輸過程中采集數(shù)據(jù),而且采集后并不影響原有控制信號和數(shù)據(jù)的傳輸,從而保證輸出到打印機的數(shù)據(jù)流不被改變,不影響打印機正常工作,其原理如圖2所示。
由于采集數(shù)據(jù)時涉及到兩個不同系統(tǒng)的連接問題,可能出現(xiàn)阻抗不匹配、信號干擾衰減過重等現(xiàn)象,所以在接口處要加上一定的隔離保護和驅(qū)動緩沖電路,防止兩個系統(tǒng)之間出現(xiàn)相互影響,導致原有設(shè)備不能正常運轉(zhuǎn)的情況發(fā)生。
圖2 并口數(shù)據(jù)采集原理圖Fig.2 Parallel data acquisition schematic
采用光電隔離電路的方式好處在于不僅可以從并行總線上旁路獲取數(shù)據(jù),而且通過一定的驅(qū)動電路,避免了打印總線上數(shù)據(jù)信號的衰減,保證原有打印系統(tǒng)正常工作,對連接設(shè)備端口也起到保護作用。
光電隔離電路的作用是在電隔離的情況下,以光為媒介傳送信號,對輸入和輸出電路進行隔離,因而能有效地抑制系統(tǒng)噪聲,消除接地回路的干擾,避免現(xiàn)場的各種靜電和浪涌信號對其造成的損害。
光電隔離電路采用高速光耦6N137,其內(nèi)部結(jié)構(gòu)原理如圖3所示。
圖36 N137內(nèi)部結(jié)構(gòu)原理圖Fig.3 6N137 internal structure diagram
在6N137的輸入端接入計算機USB+5 V電源,和510電阻構(gòu)成回路,將電信號轉(zhuǎn)換成光信號,完成光電轉(zhuǎn)換第一步,在6N137輸出端接入數(shù)據(jù)采集系統(tǒng)的+5 V電源,以及一個10 kΩ的上拉電阻,完成光信號到電信號的轉(zhuǎn)換,從而使兩個系統(tǒng)完全被隔離,不會相互影響,保護硬件接口安全。
驅(qū)動緩沖芯片選擇74HC245,該芯片不僅能起到緩沖作用,還可以增強驅(qū)動能力,避免數(shù)據(jù)分流后信號衰減,導致打印機和CPU均無法獲取正確數(shù)據(jù)[3-4]。
通過光電隔離和驅(qū)動緩沖電路,就能在不影響計算機傳送到打印機數(shù)據(jù)的前提下,實現(xiàn)旁路數(shù)據(jù)采集功能,并且采取光電隔離措施可以充分保護設(shè)備口。
目前,利用計算機并口進行數(shù)據(jù)采集已得到廣泛應(yīng)用,在Windows98操作系統(tǒng)下可以很容易對硬件進行訪問和控制,但在WindowsXP操作系統(tǒng)下為了提高系統(tǒng)的穩(wěn)定性,對硬件端口的訪問作了嚴格的控制。為了對并口進行讀寫,Windows XP操作系統(tǒng)仍然保留了-inp()及-outp()函數(shù),采用SPP時序進行通信時就必須采用操作系統(tǒng)的中斷技術(shù)。圖4為單片機從并口線上采集數(shù)據(jù)程序的流程圖,程序由主程序和中斷程序構(gòu)成[5-6]。
中斷程序代碼:
在調(diào)試過程中,用PC機對樣本數(shù)據(jù)進行發(fā)送,本系統(tǒng)進行采集接收,結(jié)果令人滿意。由于并口數(shù)據(jù)采集應(yīng)用中斷方式工作,因此它具有非常好的實時響應(yīng)性。下一步將該系統(tǒng)與時裝進行對接,以完成測試數(shù)據(jù)的接收。
[1]Axelson J.并行端口大全[M].那怡超,譯.北京:中國電力出版社,2001.
[2]張利.PC打印口的原理及應(yīng)用開發(fā)[M].北京:清華大學出版社,1999.
[3]謝庭軍,劉少君,黃道平.EPP模式下的并口與FPGA的高速數(shù)據(jù)通信[J].控制工程.2008(4):440-442.
XIE Ting-jun,LIU Shao-jun,HUANG Dao-ping.High speed data communication between FPGA and parallel interface in EPP mode[J].Control Engineering of China,2008(4):440-442.
[4]Dhanajay.V.Gadre.并行端口編程[M].韓永彬,袁潮,譯.北京:中國電力出版社,2000.
[5]馬忠梅.單片機的C語言應(yīng)用程序設(shè)計[M].3版.北京:北京航空航天大學出版社,2005.
[6]張現(xiàn)勇.VisualC++并口通訊技術(shù)與工程實踐[M]北京:人民郵電出版社,2002.