劉玉芝,石宇平,呂 洋,周 欣,李 穎
(石家莊鐵道大學 電器與電子工程學院,石家莊 050043)
ZPW-2000無絕緣移頻軌道電路是我國目前性能最先進、應用最廣泛的軌道電路,也是“高鐵走出去”的必備產品。軌道電路是保障列車正常運行的重要手段之一,軌道電路故障不僅影響行車效率,更關乎人的生命安全[1]。為保證軌道電路等信號設備的正常工作,鐵路信號工必須有過硬的專業知識和豐富的實踐經驗,為了加強業務技能,利用軌道電路實訓系統進行日常學習必不可少。但是,既有ZPW-2000軌道電路實訓系統電路故障的設置多依賴人工手動設置,如剪斷單條信號線、拔下某個繼電器等,故障設置過程繁瑣,需要有專人在設備旁進行故障設置操作;經常對線材、焊點、繼電器進行動作,可能會對設備器件造成不可逆轉的損壞,導致設備無法正常工作;人工設置故障還可能導致故障點設置不清晰、故障設置錯誤、設置的故障不具有可恢復性、設置故障時間長等[2];另外,設置故障與解決故障之間不具備獨立性,用戶在檢測設備故障時可能會受到故障設置狀態的干擾。而且隨著列車速度、密度的不斷變化,ZPW-2000等信號設備的故障類型不斷發生變化,故障練習的需求量大大增加,一些既有設備的故障設置方式、速度及故障設置數量已不能滿足現場需求,新型ZPW-2000軌道電路故障診斷系統的設計研發工作迫在眉睫。因此,在既有設備的基礎上進行改進,設計了一套新型ZPW-2000軌道電路故障診斷系統。
故障診斷系統的軟件選用Visio Basic語言,該開發語言具有強大的人機交互功能,可以快捷地創建Windows窗口,并具有代碼簡潔易懂、編程效率高和調試簡單等優點。單片機的控制信息(如故障選擇、執行修復等)由用戶在軟件系統中設置,并通過串口接收。設計要求繼電器執行完動作后,需采集繼電器接點的狀態并將信息反饋給用戶,即通過上位機發出控制指令,并實現下位機狀態信息的采集回傳和顯示。故障診斷系統軟件操作流程圖如圖1所示。

圖1 故障診斷系統軟件操作流程圖
故障診斷系統軟件界面主要設計了“設置”“修復”“多置”“復位”“接收”幾個按鈕,為了不影響用戶觀察電路,按鈕集中放在了界面的頂部。各按鈕的功能為:“設置”按鈕檢測到點擊事件后,執行的動作內容主要是打開計時時鐘及通信端口,將存儲在數組“gz(84)”中的文本發送至單片機主機,同時在Text2中顯示串口的狀態和文本的長度;“修復”按鈕被觸發后同樣執行打開串口操作,向單片機發送數據,控制繼電接點的開閉;點擊“多置”按鈕表明用戶可連續點擊多個故障點后進行一次設置即可,不必逐一設置,“多置”按鈕設計更加人性化,用戶可根據需求自主選擇設置方式;“復位”按鈕的程序為軟件的初始化程序,單擊后軟件恢復最初的上電狀態;設置“接收”按鈕是為了接收單片機傳回的數據,打開軟件后需先點擊一次“接收”按鈕,才能及時收到下位機的故障狀況。界面還預留了足夠空間,以便于后續開發過程中對設計進一步優化。
為方便用戶根據需求對局部電路進行故障設置的操作,電路圖被設為用戶界面的主背景。對比研究發現,PictureBox控件的功能要強于Image控件,它不僅可以作為其他控件的容器,而且當圖片框控件發生拖曳事件時,其中的CommandButton控件會隨著圖片框一起移動,不會錯位。所以本設計采用了PictureBox控件,將所需電路圖在AutoCAD中繪制好后,放在PictureBox控件中來實現背景界面的顯示,并根據軟件的功能考慮用戶界面和按鈕設置布局。
所有的故障點按鈕均設置在PictureBox中,按照電路故障點的實際位置設置故障點按鈕,當發生click事件時先檢查故障點按鈕的背景顏色,背景顏色為白色表示該按鈕未被選中,電路接點處于連通狀態;背景顏色為粉色表示該按鈕被選中,電路接點斷路。故障點按鈕執行程序流程圖如圖2所示。

圖2 故障點按鈕執行程序流程圖
故障點的設置是通過識別故障數組gz(84)中的值來實現的,數組的第一個值為“123(十六進制為0x7b)”是傳輸開始標志位,數組的最后一個值“125(十六進制為0x7d)”為傳輸結束標志位,中間的gz(1)~gz(83)為83個故障點的數據值。設置故障點時,系統程序在檢測完故障點按鈕背景顏色后要在故障數組中修改相應故障號碼的數據值,83路故障在故障數組中的初始值均為“126(十六進制為0x7e)”,當有故障時,將故障數組中對應的位置設置為故障號碼,83路故障數組對應的故障號碼為33~115(十六進制為0x21~0x73),比如:當第1路有故障時,gz(1)對應值為33;當第83路有故障時,gz(83)對應值為115。這樣每一路故障都有自己的故障號碼,程序讀起來更清楚,如果有數據丟失或錯位,也可以及時發現。當系統程序檢測到故障點按鈕背景顏色發生變化時,便會對“temp”數組變量進行更改,temp用文本框顯示,本系統軟件運用了InStr函數和Mid函數。InStr函數能在一長串字符string1中找到某一短串字符string2的首字符位置;Mid函數能夠在string字符串中截取一段固定長的字符串。這樣在當有故障點被取消選中,可以使用InStr函數找到故障號在temp字符串中的位置,并記為p,然后用Mid語句將temp的1~(p-1)位置的字符和(p+3)之后的字符組合起來,實現對故障號的刪除。
故障診斷系統軟件界面如圖3所示,該界面充分考慮用戶的使用體驗,盡量達到人性化設計。

圖3 故障診斷系統軟件界面圖
下位機主要分為3個部分,下位機主機、4個負責驅動(電子繼電器)的從機、4個負責數據采集(電子繼電器接點狀態)的從機。下位機主機負責與上位機進行通信,從上位機接收通過串口發送過來的故障數據,然后對數據進行處理,將故障數據推送給對應的電子繼電器,同時將采集回來的繼電器狀態數據發送給上位機;4個負責驅動的從機負責驅動電子繼電器,每個從機可驅動24個繼電器,接收到上位機軟件通過串口發送過來的數據后將相應的數據推送到P口,控制電子繼電器的通斷;4個負責數據采集的從機采集繼電器接點的狀態,上電后電子繼電器全為打落狀態,當繼電器吸起后電路斷開,模擬故障的產生,同時指示繼電器得電吸起的LED亮燈,采集LED前端電壓傳回單片機進行顯示。
本系統采用STC89C52RC型號的單片機來完成數據接收與繼電器驅動工作,采用C語言對單片機進行編程,在接收故障點數據時,采用主機接收然后分配至各個從機的方式。從VB傳過來的數據并不是直觀的故障號碼,而是故障號碼加32。當下位機接收到上位機傳輸過來的83路故障點的數組時,先對數組進行處理,每個數值減去32(十六進制中即為減去0x20)變成“易讀”的故障點后再進行相應的執行操作。由上位機發送過來的故障信號也可直接發送至分機進行故障處理,即將串口通信的TXD,RXD,GND接到每一個驅動從機上,對故障信號共同處理,同時執行,這樣則更加快捷。故障信號由單片機P口輸出,信號電流經過達林頓放大后輸出至電子繼電器線圈。在單片機與電子繼電器之間還設計了光電耦合電路,防止單片機損毀[3]。
上位機與單片機之間的通信是系統穩定可靠運行的重要環節。本設備采用RS232串口進行通信,該通信方式比較簡單,用戶可以根據編程對通信口進行操作(以便將來改進),通信協議由用戶程序控制。單片機采用TTL邏輯電平,RS232使用EIA-RS232C邏輯電平,而兩種高低電平的邏輯狀態規定正好相反,要想將計算機和單片機連接,必須用MAX232芯片在電路中進行電平和邏輯關系的轉換[4]。PC機與單片機之間點的連接關系如圖4所示。將MAX232芯片焊接在電路板前端,信號經過電平轉換后傳送給單片機,主要用到TXD,RXD和GND串口。

圖4 PC機與單片機之間點的連接關系
上位機和單片機進行通信時,首先分別對各自的串口進行初始化,確定串口工作方式,設定波特率(兩者應一致)、傳輸數據長度等,然后才開始數據傳輸。兩者之間的通信,采用VB軟件中的MSComm控件實現。VB提供了兩種處理通信問題的解決方式:事件驅動方式和查詢方式[5]。本設計主要使用事件驅動方式,當用戶有響應、觸發一個事件時,MSComm控件上的OnComm事件會捕獲這些變化并進入相應的事件處理函數,執行某些代碼。觸發OnComm事件可以是接收緩沖區收到的字符,也可以是CD或RTS線上發生的電平變化。
串口通信一次只能傳輸一個字節,而本設計需要傳輸的數組由長度為2個字節的85個數組成,為了使傳輸更穩定,不容易出現誤傳,于是編寫了一個send函數,實現了雙字節數據一個字節一個字節的傳輸。為了使上位機接收的數據值依然顯示為對應的故障號,規定接收到兩位數時進行一次輸出,故障號碼均設為兩位數(01到83)。這樣即可顯示出正確的故障號碼,而且下位機發送的可變值更少,占用的信息資源更少。
設計的新型軌道電路故障診斷系統,是在既有設備的基礎上進行的改進,增加了新型故障點,并通過在電路中特定位置加入電子繼電器的方式實現故障模擬與修復的自動化,即通過繼電器實現電路的自動斷開或閉合。實驗表明,該故障診斷系統可以實現ZPW-2000軌道電路故障模擬的集中控制和集中顯示,相較于以往的人工設置故障的方式不僅更加快捷,能極大地提高故障設置以及檢測修復的效率,而且能實現故障設置和故障檢測的分離,使用戶不受故障設置者的影響,判斷免受干擾;同時,故障設置成功后在上位機給出表示,可以讓用戶更快地掌握電路故障點的定位及修復方法。