劉玉芝,石宇平,呂 洋,周 欣,李 穎
(石家莊鐵道大學(xué) 電器與電子工程學(xué)院,石家莊 050043)
ZPW-2000無(wú)絕緣移頻軌道電路是我國(guó)目前性能最先進(jìn)、應(yīng)用最廣泛的軌道電路,也是“高鐵走出去”的必備產(chǎn)品。軌道電路是保障列車(chē)正常運(yùn)行的重要手段之一,軌道電路故障不僅影響行車(chē)效率,更關(guān)乎人的生命安全[1]。為保證軌道電路等信號(hào)設(shè)備的正常工作,鐵路信號(hào)工必須有過(guò)硬的專(zhuān)業(yè)知識(shí)和豐富的實(shí)踐經(jīng)驗(yàn),為了加強(qiáng)業(yè)務(wù)技能,利用軌道電路實(shí)訓(xùn)系統(tǒng)進(jìn)行日常學(xué)習(xí)必不可少。但是,既有ZPW-2000軌道電路實(shí)訓(xùn)系統(tǒng)電路故障的設(shè)置多依賴(lài)人工手動(dòng)設(shè)置,如剪斷單條信號(hào)線、拔下某個(gè)繼電器等,故障設(shè)置過(guò)程繁瑣,需要有專(zhuān)人在設(shè)備旁進(jìn)行故障設(shè)置操作;經(jīng)常對(duì)線材、焊點(diǎn)、繼電器進(jìn)行動(dòng)作,可能會(huì)對(duì)設(shè)備器件造成不可逆轉(zhuǎn)的損壞,導(dǎo)致設(shè)備無(wú)法正常工作;人工設(shè)置故障還可能導(dǎo)致故障點(diǎn)設(shè)置不清晰、故障設(shè)置錯(cuò)誤、設(shè)置的故障不具有可恢復(fù)性、設(shè)置故障時(shí)間長(zhǎng)等[2];另外,設(shè)置故障與解決故障之間不具備獨(dú)立性,用戶(hù)在檢測(cè)設(shè)備故障時(shí)可能會(huì)受到故障設(shè)置狀態(tài)的干擾。而且隨著列車(chē)速度、密度的不斷變化,ZPW-2000等信號(hào)設(shè)備的故障類(lèi)型不斷發(fā)生變化,故障練習(xí)的需求量大大增加,一些既有設(shè)備的故障設(shè)置方式、速度及故障設(shè)置數(shù)量已不能滿(mǎn)足現(xiàn)場(chǎng)需求,新型ZPW-2000軌道電路故障診斷系統(tǒng)的設(shè)計(jì)研發(fā)工作迫在眉睫。因此,在既有設(shè)備的基礎(chǔ)上進(jìn)行改進(jìn),設(shè)計(jì)了一套新型ZPW-2000軌道電路故障診斷系統(tǒng)。
故障診斷系統(tǒng)的軟件選用Visio Basic語(yǔ)言,該開(kāi)發(fā)語(yǔ)言具有強(qiáng)大的人機(jī)交互功能,可以快捷地創(chuàng)建Windows窗口,并具有代碼簡(jiǎn)潔易懂、編程效率高和調(diào)試簡(jiǎn)單等優(yōu)點(diǎn)。單片機(jī)的控制信息(如故障選擇、執(zhí)行修復(fù)等)由用戶(hù)在軟件系統(tǒng)中設(shè)置,并通過(guò)串口接收。設(shè)計(jì)要求繼電器執(zhí)行完動(dòng)作后,需采集繼電器接點(diǎn)的狀態(tài)并將信息反饋給用戶(hù),即通過(guò)上位機(jī)發(fā)出控制指令,并實(shí)現(xiàn)下位機(jī)狀態(tài)信息的采集回傳和顯示。故障診斷系統(tǒng)軟件操作流程圖如圖1所示。
圖1 故障診斷系統(tǒng)軟件操作流程圖
故障診斷系統(tǒng)軟件界面主要設(shè)計(jì)了“設(shè)置”“修復(fù)”“多置”“復(fù)位”“接收”幾個(gè)按鈕,為了不影響用戶(hù)觀察電路,按鈕集中放在了界面的頂部。各按鈕的功能為:“設(shè)置”按鈕檢測(cè)到點(diǎn)擊事件后,執(zhí)行的動(dòng)作內(nèi)容主要是打開(kāi)計(jì)時(shí)時(shí)鐘及通信端口,將存儲(chǔ)在數(shù)組“gz(84)”中的文本發(fā)送至單片機(jī)主機(jī),同時(shí)在Text2中顯示串口的狀態(tài)和文本的長(zhǎng)度;“修復(fù)”按鈕被觸發(fā)后同樣執(zhí)行打開(kāi)串口操作,向單片機(jī)發(fā)送數(shù)據(jù),控制繼電接點(diǎn)的開(kāi)閉;點(diǎn)擊“多置”按鈕表明用戶(hù)可連續(xù)點(diǎn)擊多個(gè)故障點(diǎn)后進(jìn)行一次設(shè)置即可,不必逐一設(shè)置,“多置”按鈕設(shè)計(jì)更加人性化,用戶(hù)可根據(jù)需求自主選擇設(shè)置方式;“復(fù)位”按鈕的程序?yàn)檐浖某跏蓟绦?,單擊后軟件恢?fù)最初的上電狀態(tài);設(shè)置“接收”按鈕是為了接收單片機(jī)傳回的數(shù)據(jù),打開(kāi)軟件后需先點(diǎn)擊一次“接收”按鈕,才能及時(shí)收到下位機(jī)的故障狀況。界面還預(yù)留了足夠空間,以便于后續(xù)開(kāi)發(fā)過(guò)程中對(duì)設(shè)計(jì)進(jìn)一步優(yōu)化。
為方便用戶(hù)根據(jù)需求對(duì)局部電路進(jìn)行故障設(shè)置的操作,電路圖被設(shè)為用戶(hù)界面的主背景。對(duì)比研究發(fā)現(xiàn),PictureBox控件的功能要強(qiáng)于Image控件,它不僅可以作為其他控件的容器,而且當(dāng)圖片框控件發(fā)生拖曳事件時(shí),其中的CommandButton控件會(huì)隨著圖片框一起移動(dòng),不會(huì)錯(cuò)位。所以本設(shè)計(jì)采用了PictureBox控件,將所需電路圖在AutoCAD中繪制好后,放在PictureBox控件中來(lái)實(shí)現(xiàn)背景界面的顯示,并根據(jù)軟件的功能考慮用戶(hù)界面和按鈕設(shè)置布局。
所有的故障點(diǎn)按鈕均設(shè)置在PictureBox中,按照電路故障點(diǎn)的實(shí)際位置設(shè)置故障點(diǎn)按鈕,當(dāng)發(fā)生click事件時(shí)先檢查故障點(diǎn)按鈕的背景顏色,背景顏色為白色表示該按鈕未被選中,電路接點(diǎn)處于連通狀態(tài);背景顏色為粉色表示該按鈕被選中,電路接點(diǎn)斷路。故障點(diǎn)按鈕執(zhí)行程序流程圖如圖2所示。
圖2 故障點(diǎn)按鈕執(zhí)行程序流程圖
故障點(diǎn)的設(shè)置是通過(guò)識(shí)別故障數(shù)組gz(84)中的值來(lái)實(shí)現(xiàn)的,數(shù)組的第一個(gè)值為“123(十六進(jìn)制為0x7b)”是傳輸開(kāi)始標(biāo)志位,數(shù)組的最后一個(gè)值“125(十六進(jìn)制為0x7d)”為傳輸結(jié)束標(biāo)志位,中間的gz(1)~gz(83)為83個(gè)故障點(diǎn)的數(shù)據(jù)值。設(shè)置故障點(diǎn)時(shí),系統(tǒng)程序在檢測(cè)完故障點(diǎn)按鈕背景顏色后要在故障數(shù)組中修改相應(yīng)故障號(hào)碼的數(shù)據(jù)值,83路故障在故障數(shù)組中的初始值均為“126(十六進(jìn)制為0x7e)”,當(dāng)有故障時(shí),將故障數(shù)組中對(duì)應(yīng)的位置設(shè)置為故障號(hào)碼,83路故障數(shù)組對(duì)應(yīng)的故障號(hào)碼為33~115(十六進(jìn)制為0x21~0x73),比如:當(dāng)?shù)?路有故障時(shí),gz(1)對(duì)應(yīng)值為33;當(dāng)?shù)?3路有故障時(shí),gz(83)對(duì)應(yīng)值為115。這樣每一路故障都有自己的故障號(hào)碼,程序讀起來(lái)更清楚,如果有數(shù)據(jù)丟失或錯(cuò)位,也可以及時(shí)發(fā)現(xiàn)。當(dāng)系統(tǒng)程序檢測(cè)到故障點(diǎn)按鈕背景顏色發(fā)生變化時(shí),便會(huì)對(duì)“temp”數(shù)組變量進(jìn)行更改,temp用文本框顯示,本系統(tǒng)軟件運(yùn)用了InStr函數(shù)和Mid函數(shù)。InStr函數(shù)能在一長(zhǎng)串字符string1中找到某一短串字符string2的首字符位置;Mid函數(shù)能夠在string字符串中截取一段固定長(zhǎng)的字符串。這樣在當(dāng)有故障點(diǎn)被取消選中,可以使用InStr函數(shù)找到故障號(hào)在temp字符串中的位置,并記為p,然后用Mid語(yǔ)句將temp的1~(p-1)位置的字符和(p+3)之后的字符組合起來(lái),實(shí)現(xiàn)對(duì)故障號(hào)的刪除。
故障診斷系統(tǒng)軟件界面如圖3所示,該界面充分考慮用戶(hù)的使用體驗(yàn),盡量達(dá)到人性化設(shè)計(jì)。
圖3 故障診斷系統(tǒng)軟件界面圖
下位機(jī)主要分為3個(gè)部分,下位機(jī)主機(jī)、4個(gè)負(fù)責(zé)驅(qū)動(dòng)(電子繼電器)的從機(jī)、4個(gè)負(fù)責(zé)數(shù)據(jù)采集(電子繼電器接點(diǎn)狀態(tài))的從機(jī)。下位機(jī)主機(jī)負(fù)責(zé)與上位機(jī)進(jìn)行通信,從上位機(jī)接收通過(guò)串口發(fā)送過(guò)來(lái)的故障數(shù)據(jù),然后對(duì)數(shù)據(jù)進(jìn)行處理,將故障數(shù)據(jù)推送給對(duì)應(yīng)的電子繼電器,同時(shí)將采集回來(lái)的繼電器狀態(tài)數(shù)據(jù)發(fā)送給上位機(jī);4個(gè)負(fù)責(zé)驅(qū)動(dòng)的從機(jī)負(fù)責(zé)驅(qū)動(dòng)電子繼電器,每個(gè)從機(jī)可驅(qū)動(dòng)24個(gè)繼電器,接收到上位機(jī)軟件通過(guò)串口發(fā)送過(guò)來(lái)的數(shù)據(jù)后將相應(yīng)的數(shù)據(jù)推送到P口,控制電子繼電器的通斷;4個(gè)負(fù)責(zé)數(shù)據(jù)采集的從機(jī)采集繼電器接點(diǎn)的狀態(tài),上電后電子繼電器全為打落狀態(tài),當(dāng)繼電器吸起后電路斷開(kāi),模擬故障的產(chǎn)生,同時(shí)指示繼電器得電吸起的LED亮燈,采集LED前端電壓傳回單片機(jī)進(jìn)行顯示。
本系統(tǒng)采用STC89C52RC型號(hào)的單片機(jī)來(lái)完成數(shù)據(jù)接收與繼電器驅(qū)動(dòng)工作,采用C語(yǔ)言對(duì)單片機(jī)進(jìn)行編程,在接收故障點(diǎn)數(shù)據(jù)時(shí),采用主機(jī)接收然后分配至各個(gè)從機(jī)的方式。從VB傳過(guò)來(lái)的數(shù)據(jù)并不是直觀的故障號(hào)碼,而是故障號(hào)碼加32。當(dāng)下位機(jī)接收到上位機(jī)傳輸過(guò)來(lái)的83路故障點(diǎn)的數(shù)組時(shí),先對(duì)數(shù)組進(jìn)行處理,每個(gè)數(shù)值減去32(十六進(jìn)制中即為減去0x20)變成“易讀”的故障點(diǎn)后再進(jìn)行相應(yīng)的執(zhí)行操作。由上位機(jī)發(fā)送過(guò)來(lái)的故障信號(hào)也可直接發(fā)送至分機(jī)進(jìn)行故障處理,即將串口通信的TXD,RXD,GND接到每一個(gè)驅(qū)動(dòng)從機(jī)上,對(duì)故障信號(hào)共同處理,同時(shí)執(zhí)行,這樣則更加快捷。故障信號(hào)由單片機(jī)P口輸出,信號(hào)電流經(jīng)過(guò)達(dá)林頓放大后輸出至電子繼電器線圈。在單片機(jī)與電子繼電器之間還設(shè)計(jì)了光電耦合電路,防止單片機(jī)損毀[3]。
上位機(jī)與單片機(jī)之間的通信是系統(tǒng)穩(wěn)定可靠運(yùn)行的重要環(huán)節(jié)。本設(shè)備采用RS232串口進(jìn)行通信,該通信方式比較簡(jiǎn)單,用戶(hù)可以根據(jù)編程對(duì)通信口進(jìn)行操作(以便將來(lái)改進(jìn)),通信協(xié)議由用戶(hù)程序控制。單片機(jī)采用TTL邏輯電平,RS232使用EIA-RS232C邏輯電平,而兩種高低電平的邏輯狀態(tài)規(guī)定正好相反,要想將計(jì)算機(jī)和單片機(jī)連接,必須用MAX232芯片在電路中進(jìn)行電平和邏輯關(guān)系的轉(zhuǎn)換[4]。PC機(jī)與單片機(jī)之間點(diǎn)的連接關(guān)系如圖4所示。將MAX232芯片焊接在電路板前端,信號(hào)經(jīng)過(guò)電平轉(zhuǎn)換后傳送給單片機(jī),主要用到TXD,RXD和GND串口。
圖4 PC機(jī)與單片機(jī)之間點(diǎn)的連接關(guān)系
上位機(jī)和單片機(jī)進(jìn)行通信時(shí),首先分別對(duì)各自的串口進(jìn)行初始化,確定串口工作方式,設(shè)定波特率(兩者應(yīng)一致)、傳輸數(shù)據(jù)長(zhǎng)度等,然后才開(kāi)始數(shù)據(jù)傳輸。兩者之間的通信,采用VB軟件中的MSComm控件實(shí)現(xiàn)。VB提供了兩種處理通信問(wèn)題的解決方式:事件驅(qū)動(dòng)方式和查詢(xún)方式[5]。本設(shè)計(jì)主要使用事件驅(qū)動(dòng)方式,當(dāng)用戶(hù)有響應(yīng)、觸發(fā)一個(gè)事件時(shí),MSComm控件上的OnComm事件會(huì)捕獲這些變化并進(jìn)入相應(yīng)的事件處理函數(shù),執(zhí)行某些代碼。觸發(fā)OnComm事件可以是接收緩沖區(qū)收到的字符,也可以是CD或RTS線上發(fā)生的電平變化。
串口通信一次只能傳輸一個(gè)字節(jié),而本設(shè)計(jì)需要傳輸?shù)臄?shù)組由長(zhǎng)度為2個(gè)字節(jié)的85個(gè)數(shù)組成,為了使傳輸更穩(wěn)定,不容易出現(xiàn)誤傳,于是編寫(xiě)了一個(gè)send函數(shù),實(shí)現(xiàn)了雙字節(jié)數(shù)據(jù)一個(gè)字節(jié)一個(gè)字節(jié)的傳輸。為了使上位機(jī)接收的數(shù)據(jù)值依然顯示為對(duì)應(yīng)的故障號(hào),規(guī)定接收到兩位數(shù)時(shí)進(jìn)行一次輸出,故障號(hào)碼均設(shè)為兩位數(shù)(01到83)。這樣即可顯示出正確的故障號(hào)碼,而且下位機(jī)發(fā)送的可變值更少,占用的信息資源更少。
設(shè)計(jì)的新型軌道電路故障診斷系統(tǒng),是在既有設(shè)備的基礎(chǔ)上進(jìn)行的改進(jìn),增加了新型故障點(diǎn),并通過(guò)在電路中特定位置加入電子繼電器的方式實(shí)現(xiàn)故障模擬與修復(fù)的自動(dòng)化,即通過(guò)繼電器實(shí)現(xiàn)電路的自動(dòng)斷開(kāi)或閉合。實(shí)驗(yàn)表明,該故障診斷系統(tǒng)可以實(shí)現(xiàn)ZPW-2000軌道電路故障模擬的集中控制和集中顯示,相較于以往的人工設(shè)置故障的方式不僅更加快捷,能極大地提高故障設(shè)置以及檢測(cè)修復(fù)的效率,而且能實(shí)現(xiàn)故障設(shè)置和故障檢測(cè)的分離,使用戶(hù)不受故障設(shè)置者的影響,判斷免受干擾;同時(shí),故障設(shè)置成功后在上位機(jī)給出表示,可以讓用戶(hù)更快地掌握電路故障點(diǎn)的定位及修復(fù)方法。