崔 莉
鉤計(jì)劃自動(dòng)打印及其監(jiān)測系統(tǒng)的研究與開發(fā)
崔 莉*
主要提出鉤計(jì)劃打印及其監(jiān)控系統(tǒng)的總體設(shè)計(jì)思路,并詳細(xì)描述了系統(tǒng)設(shè)計(jì)方案,包括對傳送的鉤計(jì)劃內(nèi)容處理、自動(dòng)打印、監(jiān)控打印情況等功能的實(shí)現(xiàn)方法及過程。
編組站;鉤計(jì)劃;遠(yuǎn)程打印
鉤計(jì)劃打印及其監(jiān)測控制系統(tǒng)(以下簡稱鉤打監(jiān)控系統(tǒng))是編組站綜合自動(dòng)化系統(tǒng)(以下簡稱SAM)的重要組成部分。它的核心任務(wù)是控制SAM各鉤打點(diǎn)的鉤計(jì)劃打印,并實(shí)時(shí)監(jiān)測打印進(jìn)度和打印機(jī)狀態(tài),報(bào)告打印結(jié)果。新鉤打系統(tǒng)使用網(wǎng)絡(luò)打印機(jī)或網(wǎng)絡(luò)適配器驅(qū)動(dòng)普通打印機(jī),使用純軟件控制,不需要額外的硬件設(shè)備和專用網(wǎng)絡(luò),與第一代基于工控機(jī)傳輸和第二代基于嵌入式專用傳輸網(wǎng)關(guān)的鉤打系統(tǒng)相比,具有成本低、操作簡單、維護(hù)方便等優(yōu)點(diǎn),既簡化了設(shè)備,又使功能更完善、操作及維護(hù)更便捷,使得鉤計(jì)劃打印自動(dòng)化程度進(jìn)一步提高,更適合現(xiàn)代編組站的要求。
鉤打監(jiān)控系統(tǒng)是SAM的一個(gè)外圍系統(tǒng),通過松耦合方式與SAM連接。由SAM中的現(xiàn)車子系統(tǒng)通過FTP方式,將鉤計(jì)劃打印任務(wù)及打印內(nèi)容以文本形式傳輸?shù)奖镜?由監(jiān)控系統(tǒng)對其傳輸情況進(jìn)行實(shí)時(shí)監(jiān)測,及時(shí)對鉤計(jì)劃進(jìn)行解析,并在對應(yīng)工作點(diǎn)進(jìn)行打印,同時(shí)將各鉤打機(jī)的打印狀態(tài)呈現(xiàn)在監(jiān)測界面,并把打印結(jié)果反饋給SAM系統(tǒng)。該監(jiān)控系統(tǒng)是SAM系統(tǒng)、鉤計(jì)劃服務(wù)器與網(wǎng)絡(luò)打印機(jī)的緊密結(jié)合,實(shí)現(xiàn)了編組站中鉤計(jì)劃的遠(yuǎn)距離、多點(diǎn)傳輸和打印的需求。
判斷是否存在新的鉤計(jì)劃的依據(jù)是由線程不斷監(jiān)測指定文件夾中是否存在新傳送的文件,如果存在,就將其移動(dòng)到備份文件夾,并對其解析后分別寫入打印任務(wù)文件和鉤計(jì)劃內(nèi)容文件中。打印線程用輪詢方式掃描到打印任務(wù)后,先取打印機(jī)狀態(tài),如果打印機(jī)處于故障狀態(tài),則報(bào)警并寫日志;處于打印程序,則發(fā)送打印命令,并喚醒相應(yīng)讀取打印機(jī)狀態(tài)的線程,開始探測打印是否成功并寫日志,失敗則報(bào)警。打印成功并且沒有新的打印任務(wù)時(shí),掛起此線程。鉤打監(jiān)控系統(tǒng)處理流程如圖1所示,架構(gòu)示意圖如圖2所示。
圖1 鉤打監(jiān)控系統(tǒng)處理流程圖
圖2 系統(tǒng)架構(gòu)示意圖
系統(tǒng)按功能共劃分7大模塊,如圖3所示。
圖3 系統(tǒng)模塊結(jié)構(gòu)圖
1.新鉤計(jì)劃掃描模塊。不斷掃描存放新鉤計(jì)劃目錄,一旦發(fā)現(xiàn)新鉤計(jì)劃,即將其移動(dòng)到備份文件夾,發(fā)送收到鉤計(jì)劃的反饋信息并寫入日志文件。如收到多份鉤計(jì)劃,則以列表形式傳送給鉤計(jì)劃內(nèi)容解析模塊,逐份進(jìn)行處理。
2.鉤計(jì)劃內(nèi)容解析模塊。將收到的信息進(jìn)行解析,解析出該鉤計(jì)劃應(yīng)由哪些工作點(diǎn)打印,打印多少份,并把信息寫入相應(yīng)的打印任務(wù)列表,同時(shí)在界面顯示將要打印的任務(wù),以便計(jì)劃人員了解任務(wù)下達(dá)情況。
3.鉤計(jì)劃打印執(zhí)行模塊。系統(tǒng)采用多線程方式發(fā)送打印信息。當(dāng)系統(tǒng)檢測到有打印任務(wù)時(shí)喚醒相應(yīng)的線程,在不同打印機(jī)上執(zhí)行打印動(dòng)作,實(shí)現(xiàn)多點(diǎn)同時(shí)打印鉤計(jì)劃的目的。打印時(shí)喚醒打印機(jī)狀態(tài)監(jiān)測線程,調(diào)用Windows的API函數(shù)取對應(yīng)的打印機(jī)實(shí)時(shí)狀態(tài),并進(jìn)行最近3個(gè)狀態(tài)的記錄,將打印成功與否的信息記錄在日志文件中,打印異常的情況反饋給SAM系統(tǒng)并注明原因。
4.鉤計(jì)劃打印監(jiān)測模塊。監(jiān)測界面主要顯示鉤打機(jī)的基本信息和實(shí)時(shí)狀態(tài),包括啟用狀態(tài)、連接狀態(tài)和打印機(jī)正常、故障狀態(tài)(包括卡紙、缺紙、缺墨、輸出口滿、艙門打開等25種)。在打印鉤計(jì)劃任務(wù)時(shí),監(jiān)控界面同步顯示正在打印的鉤計(jì)劃的計(jì)劃號,及共打印幾份和當(dāng)前正在打印第幾份等信息。
5.鉤打機(jī)信息設(shè)置模塊。用戶可通過該模塊增加、修改、刪除要控制的打印機(jī)的基本信息,也是每次啟動(dòng)各打印機(jī)初始狀態(tài)的依據(jù)。
6.系統(tǒng)參數(shù)設(shè)置模塊。對一些程序判斷過程中使用的參數(shù)進(jìn)行設(shè)置,例如:缺紙、缺墨等待時(shí)間,新下達(dá)的鉤計(jì)劃存放文件夾的位置等。
7.鉤計(jì)劃信息查詢模塊。支持系統(tǒng)有關(guān)信息的查詢,主要以日志文件查詢?yōu)橹鳌?/p>
鉤打系統(tǒng)最大的難點(diǎn)是遠(yuǎn)程打印機(jī)的狀態(tài)控制。目前操作系統(tǒng)提供的打印機(jī)控制命令比較簡單,開發(fā)工具中提供的相應(yīng)函數(shù)功能單一,不能捕捉打印機(jī)的狀態(tài),打印機(jī)不支持對開發(fā)工具直接反饋結(jié)果的功能。經(jīng)過深入研究,發(fā)現(xiàn)Windows系統(tǒng)發(fā)送獲取打印機(jī)狀態(tài)命令時(shí),驅(qū)動(dòng)程序會將狀態(tài)存放在緩沖區(qū)中。利用這一特點(diǎn),本系統(tǒng)在開發(fā)工具中調(diào)用封裝在WinSpool包中的WinAPI函數(shù)Get-Printer,在緩沖區(qū)中將打印機(jī)傳回的狀態(tài)取回,再根據(jù)打印機(jī)狀態(tài)判斷鉤計(jì)劃打印成功與否。此函數(shù)傳入當(dāng)前打印機(jī)句柄,返回值是指針類型變量,打印機(jī)的狀態(tài)值是8位十六進(jìn)制碼,共反饋25種打印機(jī)狀態(tài)。
第2個(gè)難點(diǎn)是對系統(tǒng)可靠性的保證。由于捕獲的打印機(jī)狀態(tài)只能是當(dāng)前默認(rèn)打印機(jī)的狀態(tài),而鉤打監(jiān)控服務(wù)器必須同時(shí)掌握多臺打印機(jī)的狀態(tài)。如果采用單線程,只能以排隊(duì)的方式輪詢打印機(jī)狀態(tài),對每個(gè)打印機(jī)狀態(tài)的查詢間隔增大,很容易丟失。為解決這個(gè)問題,本系統(tǒng)使用多線程方式采用鎖機(jī)制對當(dāng)前打印機(jī)變量、打印機(jī)信息存儲文件等臨界資源進(jìn)行保護(hù)。但是線程個(gè)數(shù)制約了系統(tǒng)的執(zhí)行速度,所以系統(tǒng)只有在判斷出有打印任務(wù)時(shí)才啟動(dòng)線程,這樣既不影響運(yùn)行速度,又保證了打印機(jī)狀態(tài)獲取的完整性。
第3個(gè)難點(diǎn)是如何提供系統(tǒng)的容錯(cuò)能力。由于鉤打監(jiān)控器經(jīng)常處于自動(dòng)運(yùn)行狀態(tài),必須具備一定的容錯(cuò)能力,能夠處理掉電、斷網(wǎng)等突發(fā)事件。系統(tǒng)設(shè)計(jì)時(shí),在發(fā)送打印命令時(shí)采用單份打印方式,并在物理文件中記錄最近3個(gè)狀態(tài),以便系統(tǒng)重新啟動(dòng)后可以還原事故發(fā)生前的打印進(jìn)度。
隨著編組站綜合自動(dòng)化的發(fā)展,編組站自動(dòng)化水平不斷提高,鉤打自動(dòng)化水平也在不斷的更新和進(jìn)步。新鉤打監(jiān)控系統(tǒng)的設(shè)計(jì)優(yōu)勢關(guān)鍵在于設(shè)備的簡化,不再依賴專用設(shè)備,易于安裝、設(shè)置與使用,既可減少人工干預(yù),減輕工作人員的勞動(dòng)強(qiáng)度,避免人為錯(cuò)誤而產(chǎn)生的故障問題,又能減少設(shè)備投資,簡化維護(hù)難度。目前,新設(shè)計(jì)的鉤打監(jiān)控系統(tǒng)已經(jīng)在石家莊南等站進(jìn)行測試,得到了比較滿意的結(jié)果,將來還需要不斷地研究、開發(fā)、更新完善,使得其可以更加靈活、健壯,滿足更多的要求。
[1] 徐維民,李振清.編組站調(diào)車作業(yè)單傳輸系統(tǒng)∥編組站自動(dòng)化論文集[M].北京:中國鐵道出版社,1995.
This paper brought forward an overall design of hook plan printing and itsmonitoring system and gave a detailed description of system design,including realization methods and processes of such functions as content processing of hook plan,automatic printing,monitored printing.
Marshalling yard;Hook plan;Remote printing
*鐵道部信息技術(shù)中心 助理工程師,100844 北京
2011-01-05
(責(zé)任編輯:溫志紅)