遠(yuǎn)程通信技術(shù)在計(jì)算機(jī)監(jiān)控系統(tǒng)中的應(yīng)用
遠(yuǎn)程通信技術(shù)在計(jì)算機(jī)監(jiān)控系統(tǒng)中的應(yīng)用
在工業(yè)生產(chǎn)過(guò)程中,通常要求計(jì)算機(jī)控制系統(tǒng)完成數(shù)據(jù)的采集、遠(yuǎn)程傳輸、處理及儲(chǔ)存等工作。然而,目前有些工業(yè)控制機(jī)系統(tǒng)或集散型計(jì)算機(jī)控制系統(tǒng)不具備遠(yuǎn)程通信的功能。因此,對(duì)于遠(yuǎn)在幾十公里以外的生產(chǎn)現(xiàn)場(chǎng)(如油田采油、集輸過(guò)程),難于達(dá)到領(lǐng)導(dǎo)管理層可視現(xiàn)場(chǎng)生產(chǎn)狀況進(jìn)行決策的現(xiàn)代化生產(chǎn)水平。其主要原因有:①?gòu)纳a(chǎn)現(xiàn)場(chǎng)鋪設(shè)電纜至信息管理中心,造價(jià)太高;②由于遠(yuǎn)程通信涉及到上、下位機(jī)通信協(xié)議的設(shè)置、傳輸線(xiàn)路的連接及故障的檢測(cè)、實(shí)時(shí)數(shù)據(jù)文件的產(chǎn)生與傳送及保存、刪除等,要求計(jì)算機(jī)監(jiān)控系統(tǒng)管理軟件具有高可靠性和堅(jiān)固性,否則在數(shù)據(jù)傳輸過(guò)程中主機(jī)易出故障而導(dǎo)致整個(gè)系統(tǒng)崩潰。
一、遠(yuǎn)程通信的基本內(nèi)容
基于上述原因,本文利用調(diào)制解調(diào)器和電話(huà)線(xiàn)構(gòu)成撥號(hào)網(wǎng)絡(luò),以實(shí)現(xiàn)遠(yuǎn)程通信功能的基本硬件條件(如圖1所示)。然而,在遠(yuǎn)程數(shù)據(jù)傳送與處理過(guò)程中,應(yīng)該考慮到以下幾個(gè)方面:
圖1 上、下微機(jī)遠(yuǎn)程通信示意圖
(1)下位機(jī)(生產(chǎn)現(xiàn)場(chǎng)的計(jì)算機(jī))需定時(shí)產(chǎn)生1個(gè)檢測(cè)、控制系統(tǒng)動(dòng)態(tài)參數(shù)的數(shù)據(jù)文本文件,并經(jīng)過(guò)一段時(shí)間(如30s)將用新產(chǎn)生的數(shù)據(jù)文件覆蓋舊的文件;
(2)遠(yuǎn)程數(shù)據(jù)傳送軟件應(yīng)根據(jù)要求定時(shí)累加和保存下位機(jī)產(chǎn)生的數(shù)據(jù)文件,在確定傳輸成功后,刪除舊文件,以避免數(shù)據(jù)丟失、重疊或占用大量的存儲(chǔ)空間;
(3)上位機(jī)(廠部信息中心的計(jì)算機(jī))與下位機(jī)都安裝調(diào)制解調(diào)器,通過(guò)調(diào)制解調(diào)器將累加的數(shù)據(jù)文件定時(shí)地從下位機(jī)上載至上位機(jī)。上位機(jī)是管理層局域網(wǎng)的1個(gè)服務(wù)器,裝有Windows NT Server網(wǎng)絡(luò)操作系統(tǒng);
(4)文件傳送到上位機(jī)時(shí),能自動(dòng)累加在上次傳送的文件之后,以供數(shù)據(jù)庫(kù)管理軟件讀取和處理;
(5)在文件傳輸過(guò)程中,能檢測(cè)傳送線(xiàn)路連接是否正常,并將檢測(cè)信息顯示在主窗體的界面上。如果出現(xiàn)問(wèn)題必須能馬上斷開(kāi)連接,準(zhǔn)備累加文件和等待下一次撥號(hào)連接;
(6)文件傳輸軟件與系統(tǒng)監(jiān)控軟件同時(shí)在Windows95下運(yùn)行。因此,在文件傳輸過(guò)程中,不能影響系統(tǒng)監(jiān)控程序的正常運(yùn)行;
(7)上位機(jī)數(shù)據(jù)庫(kù)(遠(yuǎn)程數(shù)據(jù)庫(kù))應(yīng)能自動(dòng)打開(kāi)傳送文件,輸入并保存數(shù)據(jù)文件,以供工程師和管理人員隨時(shí)查閱;
(8)上位機(jī)管理系統(tǒng)應(yīng)能對(duì)遠(yuǎn)程數(shù)據(jù)進(jìn)行實(shí)時(shí)處理并維護(hù)數(shù)據(jù)庫(kù)各種功能的實(shí)現(xiàn)。
根據(jù)以上對(duì)文件傳輸軟件的要求,本文采用Visual Basic可視化編程語(yǔ)言進(jìn)行程序設(shè)計(jì),并利用VB中的ActiveX控件,通過(guò)撥號(hào)網(wǎng)絡(luò)與遠(yuǎn)程主機(jī)實(shí)現(xiàn)連接,由FTP文件傳輸協(xié)議進(jìn)行文件的上載。對(duì)上位機(jī)數(shù)據(jù)庫(kù)管理軟件,采用可視化編程語(yǔ)言Delphi4.0編寫(xiě),實(shí)現(xiàn)了遠(yuǎn)程數(shù)據(jù)傳送及數(shù)據(jù)庫(kù)建立與管理技術(shù)的應(yīng)用。
二、文件傳輸軟件設(shè)計(jì)方案的確定
1、程序設(shè)計(jì)的基本思想
利用VB下的Internet Transfer控件進(jìn)行文件傳輸。在程序中,通過(guò)撥號(hào)網(wǎng)絡(luò)服務(wù)撥號(hào)連接到上位機(jī)服務(wù)器并登錄網(wǎng)絡(luò)。在上位機(jī)的Windows NT操作系統(tǒng)中安裝FTP網(wǎng)絡(luò)服務(wù)器程序來(lái)接收下位機(jī)的FTP服務(wù)請(qǐng)求,由下位機(jī)控制上載整個(gè)文件,文件的傳送是在相關(guān)的FTP協(xié)議控制下實(shí)現(xiàn)的,安全性、準(zhǔn)確性比較高。用FTP的SEND命令,當(dāng)文件傳送到服務(wù)器時(shí)會(huì)自動(dòng)累加到文件結(jié)尾處。因此,程序設(shè)計(jì)的基本思路是:
(1)利用VB的集成開(kāi)發(fā)環(huán)境與其豐富的“可視化”控件完成應(yīng)用程序中Windows風(fēng)格的界面;
(2)利用Mscomm控件進(jìn)行撥號(hào)連接;
(3)利用Internet Transfer控件進(jìn)行文件傳輸;
(4)定時(shí)傳送、定時(shí)累加文件的功能用VB的定時(shí)器Timer控件實(shí)現(xiàn)。
2、建立FTP文件傳輸協(xié)議的連接
在使用FTP協(xié)議時(shí),首先要建立起控制連接。這就要用到服務(wù)器的*端口號(hào)21,客戶(hù)控制進(jìn)程在本地申請(qǐng)得到1個(gè)隨機(jī)分配的本地端口,用此端口號(hào)就可以和服務(wù)器的*端口號(hào)21建立一個(gè)相關(guān)(一個(gè)相關(guān)包括5項(xiàng)內(nèi)容:協(xié)議、本地地址、本地端口、遠(yuǎn)地地址、遠(yuǎn)地端口)。這樣就建立了控制連接。由于建立數(shù)據(jù)連接要由服務(wù)器提出申請(qǐng),但是在控制連接的條件下客戶(hù)機(jī)發(fā)出數(shù)據(jù)請(qǐng)求的命令時(shí)服務(wù)器才會(huì)發(fā)出這個(gè)申請(qǐng)。服務(wù)器收到來(lái)自客戶(hù)機(jī)控制進(jìn)程的數(shù)據(jù)請(qǐng)求命令后,首先生成1個(gè)傳輸子程序。傳輸子程序再去申請(qǐng)1個(gè)端口號(hào)形成自己的半相關(guān),這個(gè)端口號(hào)一般使用保留斷口號(hào)20。此外,因?yàn)檫€需要客戶(hù)機(jī)的半相關(guān)才能形成一個(gè)相關(guān),而客戶(hù)機(jī)的半相關(guān)還是服務(wù)器傳輸進(jìn)程要申請(qǐng)建立數(shù)據(jù)連接的對(duì)象。這個(gè)半相關(guān)是從客戶(hù)控制進(jìn)程那里得來(lái)的。這是由于服務(wù)器數(shù)據(jù)傳輸子程序已經(jīng)申請(qǐng)了1個(gè)新端口,客戶(hù)機(jī)傳輸進(jìn)程就不需要申請(qǐng)新的端口了。服務(wù)器傳輸進(jìn)程就利用由控制進(jìn)程轉(zhuǎn)過(guò)來(lái)的客戶(hù)地址和端口建立起一個(gè)相關(guān),從而具備了向客戶(hù)機(jī)申請(qǐng)數(shù)據(jù)連接的條件。因此,客戶(hù)機(jī)的“協(xié)議、地址、端口號(hào)”這一半相關(guān),分別和服務(wù)器的控制端口、傳輸形成的二個(gè)半相關(guān)成了二個(gè)*不同的相關(guān),用以建立控制連接和數(shù)據(jù)連接。這個(gè)過(guò)程和相關(guān)的形成如圖2所示。
圖2 FTP二個(gè)連接及二個(gè)半相關(guān)
三、遠(yuǎn)程文件傳輸程序的設(shè)計(jì)
1、創(chuàng)建應(yīng)用程序的窗體
窗體是VB應(yīng)用程序的1個(gè)基本平臺(tái),幾乎所有的控件都要添加在窗體上,而大多數(shù)的應(yīng)用程序也是從窗體開(kāi)始的。本程序由3個(gè)窗體組成:主窗體(mainform)、屬性設(shè)置窗體(frmproperties)和傳送過(guò)程窗體(frmcancel)。在創(chuàng)建VB的新工程時(shí),系統(tǒng)自動(dòng)在工程中添加1個(gè)窗體Form1。改變Form1的“名稱(chēng)”屬性為“mainform”,將它作為程序的主窗體。利用窗體編輯器和屬性編輯器對(duì)窗體的屬性進(jìn)行更改以確定窗體的狀態(tài)與行為。
為實(shí)現(xiàn)應(yīng)用程序的各種功能,要在窗體上添加各種控件。主窗體如圖3所示。
圖3 主窗體界面
添加的主要控件有:SSTab控件:命令按鈕控件(CommandButton)、文本框控件(TextBox)、選擇鈕控件(OptionButton)、狀態(tài)條控件(StatusBar)、定時(shí)器控件(Timer)、串行通信控件(Mscomm)、網(wǎng)絡(luò)傳輸控件(Internet Transfer)。
傳輸過(guò)程窗體較簡(jiǎn)單,只有1個(gè)文本控件來(lái)顯示提示,還有1個(gè)用來(lái)中斷本次傳輸過(guò)程的按鈕。
2、程序中主要控件的使用
(1)定時(shí)器的應(yīng)用
每個(gè)定時(shí)器都必須依附在窗體上,但是它在運(yùn)行時(shí)是不可見(jiàn)的。定時(shí)器最主要的二個(gè)屬性是Enabled和Interval。在“遠(yuǎn)程文件傳輸程序”中,由于要完成“自動(dòng)文件傳輸”的功能,總共用了6個(gè)定時(shí)器。它們?cè)诔绦蛑械淖饔萌缦拢?/p>
定時(shí)器StandardTimer被設(shè)置成1個(gè)標(biāo)準(zhǔn)的計(jì)時(shí)器,Interval屬性設(shè)置為60000ms,即標(biāo)準(zhǔn)的1min。由于定時(shí)器的時(shí)間間隔最多為65535ms,而程序中文件的累加、自動(dòng)撥號(hào)、自動(dòng)登錄傳送等功能均在分鐘級(jí)以上,所以在StandardTimer的Timer事件中再設(shè)置1個(gè)分鐘計(jì)數(shù)器——全局變量Minutes。每次StandardTimer產(chǎn)生Timer事件時(shí),處理Minutes自加,并根據(jù)要求啟動(dòng)文件的累加、自動(dòng)撥號(hào)、自動(dòng)登錄傳送等定時(shí)開(kāi)始的工作。
(2)Mscomm控件
Mscomm控件提供了一系列標(biāo)準(zhǔn)通信命令的使用界面。使用它可以建立與串行端口的連接,通過(guò)串行端口連接到其它通信設(shè)備(例如調(diào)制解調(diào)器),發(fā)出命令,交換數(shù)據(jù),并監(jiān)視和響應(yīng)串行連接中發(fā)生的事件和錯(cuò)誤。利用Mscomm控件控制調(diào)制解調(diào)器撥號(hào)連接上位機(jī)進(jìn)行通信。
正確地設(shè)置屬性之后,編寫(xiě)OnComm事件的處理代碼是至關(guān)重要的。CommEvent屬性返回最近發(fā)生的通信事件和錯(cuò)誤的代碼值。依據(jù)不同的CommEvent屬性值進(jìn)行不同的處理。主要的處理如下:
當(dāng)發(fā)生錯(cuò)誤時(shí),無(wú)論是手動(dòng)還是自動(dòng)傳送狀態(tài),都要進(jìn)行以下幾步操作:①顯示錯(cuò)誤信息;②斷開(kāi)Internet控件的FTP連接(Intel.Close);③向端口輸出掛線(xiàn)命令“ATH0”(Mscomm1.OutPut=“ATH0”);④設(shè)PortOpen屬性為False,關(guān)閉端口(Mscomm1.PortOpen=“False”);⑤等待下一次的撥號(hào)。
當(dāng)自動(dòng)撥號(hào)成功連接時(shí)(在接收的字符中檢測(cè)到連接成功的回報(bào)碼),啟動(dòng)自動(dòng)傳送定時(shí)器AutoSendTimer,準(zhǔn)備建立網(wǎng)絡(luò)的FTP連接。
(3)Internet Transfer控件
Internet Transfer控件支持超文本傳輸協(xié)議(HTTP)和文件傳輸協(xié)議(FTP),它們是Internet網(wǎng)上使用二種協(xié)議。使用HTTP協(xié)議,可以連接信息網(wǎng)(World Wide Web)服務(wù)器,以檢索HTML文檔。使用FTP協(xié)議可以在FTP服務(wù)器上登錄,以下載和加載文件。在此,利用文件傳輸協(xié)議FTP 來(lái)上載文件,并完成以下幾方面的工作:①設(shè)置控件的屬性;②在程序中用Execute方法來(lái)執(zhí)行對(duì)遠(yuǎn)程服務(wù)器的請(qǐng)求;③在StateChanged事件中,處理連接中的狀態(tài)和錯(cuò)誤,當(dāng)返回值為12時(shí),說(shuō)明文件上載成功,在自動(dòng)和手動(dòng)傳送二種不同情況下,各自進(jìn)行不同的處理,也存在相同的任務(wù),如刪除下位機(jī)上用于傳送的舊文件,準(zhǔn)備累加新的數(shù)據(jù)文件;關(guān)閉FTP文件服務(wù)的連接和串行接口。
3、遠(yuǎn)程文件傳輸軟件的主要功能
(1)該軟件在Windows95下,與系統(tǒng)監(jiān)控軟件同時(shí)運(yùn)行,定時(shí)自動(dòng)撥號(hào)連接和自動(dòng)傳送文件。
(2)可進(jìn)行自動(dòng)和手動(dòng)二種方式的文件傳輸。在數(shù)據(jù)文件的傳送過(guò)程中,從主窗體上可顯示狀態(tài)信息;
(3)單擊主窗體的“端口設(shè)置”按鈕會(huì)彈出“屬性”窗體,用戶(hù)可以對(duì)串行端口的參數(shù)進(jìn)行設(shè)置;
(4)可按用戶(hù)的要求定時(shí)進(jìn)行數(shù)據(jù)文件的累加和傳送;
(5)主窗體上,用戶(hù)可以對(duì)如下內(nèi)容進(jìn)行輸入設(shè)置,即:①自動(dòng)和手動(dòng)的選擇;②服務(wù)器IP地址;③被傳送的文件路徑;④傳送時(shí)間間隔(用1個(gè)全局變量來(lái)保存)
(6)對(duì)上述用戶(hù)的設(shè)置(包括對(duì)串行端口的設(shè)置),每當(dāng)用戶(hù)重新設(shè)置時(shí),程序都用注冊(cè)表操作函數(shù)SaveSetting將它們保存在Windows操作系統(tǒng)的注冊(cè)表中。在下一次使用應(yīng)用程序時(shí),主窗體載入引發(fā)的Form_load事件中,用注冊(cè)表操作函數(shù)GetSetting將存儲(chǔ)的值取回,恢復(fù)用戶(hù)上次結(jié)束應(yīng)用程序前的設(shè)置值。
四、Delphi數(shù)據(jù)庫(kù)應(yīng)用程序的設(shè)計(jì)
利用Delphi的客戶(hù)/服務(wù)器功能,可以在本地?cái)?shù)據(jù)庫(kù)上或遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器上開(kāi)發(fā)客戶(hù)/服務(wù)器模式的應(yīng)用程序。Delphi的一個(gè)強(qiáng)有力的功能是可以將基于本地桌面數(shù)據(jù)庫(kù)系統(tǒng)的應(yīng)用程序很容易地修改成客戶(hù)/服務(wù)器模式的應(yīng)用。1個(gè)Delphi數(shù)據(jù)庫(kù)應(yīng)用程序訪(fǎng)問(wèn)的是本地?cái)?shù)據(jù)庫(kù)還是遠(yuǎn)程SQL數(shù)據(jù)庫(kù)服務(wù)器上的數(shù)據(jù)庫(kù),這對(duì)于最終用戶(hù)是*透明的,即數(shù)據(jù)庫(kù)的物理位置對(duì)最終用戶(hù)是透明的。當(dāng)數(shù)據(jù)庫(kù)的物理位置發(fā)生變化時(shí),用戶(hù)界面不必隨之變化。
1、遠(yuǎn)程數(shù)據(jù)庫(kù)的程序設(shè)計(jì)
程序要求建立服務(wù)器端數(shù)據(jù)庫(kù),自動(dòng)輸入現(xiàn)場(chǎng)上傳的數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的處理、保存、修改及查詢(xún)功能。程序調(diào)用Delphi4.0中的可視組件,并使用Object Pascal編寫(xiě)程序代碼。
程序分為3個(gè)模塊:程序主窗體、數(shù)據(jù)的自動(dòng)插入及文件刪除和數(shù)據(jù)查詢(xún)。主窗體(mainform)起到樞紐的作用,既可以觀察數(shù)據(jù)庫(kù)的狀態(tài),又可以調(diào)用另2個(gè)模塊。數(shù)據(jù)的自動(dòng)輸入及文件刪除模塊(form3)為最主要的模塊,它實(shí)現(xiàn)了文本文件的自動(dòng)打開(kāi)和輸入、多組數(shù)據(jù)的輸入、文本文件的刪除和數(shù)據(jù)庫(kù)的編輯與儲(chǔ)存。查詢(xún)模塊(Form1)提供了查詢(xún)功能,在編輯框內(nèi)輸入格式的日期就可以顯示該時(shí)間所存儲(chǔ)的數(shù)據(jù)。程序流程圖如圖4所示。
圖4 遠(yuǎn)程數(shù)據(jù)庫(kù)程序框圖
2、數(shù)據(jù)庫(kù)應(yīng)用程序主窗體
程序的主窗體實(shí)現(xiàn)數(shù)據(jù)庫(kù)的顯示以及調(diào)用數(shù)據(jù)輸入和查詢(xún)模塊。它是由3個(gè)TSpeedButton、TDatasource、TTable和TDBGrid組成,如圖5所示。
圖5 數(shù)據(jù)庫(kù)應(yīng)用程序主窗體
3、讀入文本文件中的數(shù)據(jù)及舊文件的刪除
為了實(shí)現(xiàn)對(duì)文本文件中數(shù)據(jù)的讀入功能,使用Dialogs標(biāo)簽頁(yè)中的TOpendialog組件,并設(shè)置它的默認(rèn)目錄為C:\bishe。同時(shí),在窗體中放上2個(gè)TMemo組件和幾個(gè)TSpeedButton組件,把TMemo的屬性“lines”設(shè)置為空。
(1)數(shù)據(jù)的插入、修改及刪除
在窗體上放上TDBNavigator及19個(gè)TDBEdit控件,并設(shè)置TDBNavigator和TDBEidt的Datasource屬性為MainForm.Datasourcel,設(shè)置TDBEidt的DataField屬性為相應(yīng)的字段名。其功能實(shí)現(xiàn)如圖6所示。
圖6 數(shù)據(jù)讀入、保存及文件刪除示意圖
(2)查詢(xún)功能的實(shí)現(xiàn)
由于數(shù)據(jù)庫(kù)預(yù)設(shè)的主鍵為“時(shí)間”,所以,通過(guò)輸入對(duì)比主鍵(時(shí)間)的值,聯(lián)合使用Findkey和Gotonearest方法,可以實(shí)現(xiàn)查詢(xún)功能。程序運(yùn)行過(guò)程如圖7所示。
圖7 數(shù)據(jù)查詢(xún)功能示意圖
(3)程序的擴(kuò)充修改
首先,在Delphi的Object Inspector中打開(kāi)Bishe工程。修改所有Database Name、Table Name屬性為空,且Active屬性為false。然后,打開(kāi)Database Desktop,打開(kāi)名為Bishe的表格。使用Restructure修改表格,添加字段名、數(shù)據(jù)類(lèi)型、數(shù)據(jù)長(zhǎng)度。存儲(chǔ)后退出。
在Form1和Form3中添加相應(yīng)數(shù)目的TDBEidt,并仿照原來(lái)的屬性修改,同時(shí),修改所有Database Name的屬性為DefaultDD,Table Name屬性為Bishe,且Active屬性為true。在Form3的原代碼中添入代碼:DBEidti.text=Memol.lines[1];
五、結(jié)束語(yǔ)
在工業(yè)生產(chǎn)過(guò)程中,對(duì)于生產(chǎn)現(xiàn)場(chǎng)與管理層之間相距較遠(yuǎn)的情況,遠(yuǎn)程數(shù)據(jù)傳送技術(shù)的應(yīng)用具有十分重要的意義。本文對(duì)上、下位機(jī)進(jìn)行相應(yīng)參數(shù)的設(shè)定并配置調(diào)制解調(diào)器,利用電話(huà)線(xiàn)構(gòu)成計(jì)算機(jī)遠(yuǎn)程自動(dòng)撥號(hào)網(wǎng)絡(luò)。采用VB語(yǔ)言編制傳輸軟件,實(shí)現(xiàn)了遠(yuǎn)程數(shù)據(jù)傳送。上位機(jī)采用DELPHI4.0語(yǔ)言編程,數(shù)據(jù)庫(kù)采用PARADOX格式,具有可修改、可擴(kuò)充功能。該軟件實(shí)現(xiàn)了文本文件中的多組數(shù)據(jù)自動(dòng)讀入、數(shù)據(jù)格式化、數(shù)據(jù)自動(dòng)寫(xiě)入數(shù)據(jù)庫(kù)的功能,并可對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)自動(dòng)查詢(xún)以及對(duì)舊文本文件進(jìn)行刪除。由于考慮到現(xiàn)場(chǎng)的實(shí)際應(yīng)用情況,該軟件具有較高的可靠性和堅(jiān)固性。本文將其應(yīng)用在油田聯(lián)合站計(jì)算機(jī)監(jiān)控系統(tǒng)中,將現(xiàn)場(chǎng)生產(chǎn)過(guò)程的檢測(cè)數(shù)據(jù)及時(shí)地上報(bào)管理層,使廠部領(lǐng)導(dǎo)迅速掌握生產(chǎn)情況并進(jìn)行合理的決策,為實(shí)現(xiàn)油田生產(chǎn)自動(dòng)化管理做了必要的準(zhǔn)備。
該軟件可適用于奔騰以上的PC機(jī)及服務(wù)器,操作系統(tǒng)為Windows95/98/NT的環(huán)境。