摘 要:通過串口通訊的方式,研究一個封閉內(nèi)網(wǎng)與危險外網(wǎng)連接的方法,利用現(xiàn)有條件實現(xiàn)了封閉內(nèi)網(wǎng)與外界通訊的需求,保證了封閉內(nèi)網(wǎng)計算機及網(wǎng)絡的安全。
關鍵詞:串口通訊;封閉內(nèi)網(wǎng);安全
DOI:10.16640/j.cnki.37-1222/t.2018.22.107
本鋼二冷軋廠酸軋生產(chǎn)線,生產(chǎn)操作使用的計算機及網(wǎng)絡稱為一級系統(tǒng),一級系統(tǒng)并沒有配備遠程查看生產(chǎn)畫面、PLC程序等功能,計算機是win2000操作系統(tǒng),雖然滿足生產(chǎn)要求,但是整個系統(tǒng)非常脆弱,極易受到病毒感染,因此一級系統(tǒng)禁止插入USB存儲設備、禁止連接其他內(nèi)部網(wǎng)絡,更是禁止連接外部網(wǎng)絡。在這樣一個全封閉的網(wǎng)絡下很難與外界聯(lián)系。
在夜晚和節(jié)假日期間設備發(fā)生故障時,負責設備維護工作的點檢員要快速和盡可能多的掌握生產(chǎn)現(xiàn)場的相關信息,以利于故障響應、排查和處理,而系統(tǒng)本身的脆弱和制度又決定了要放棄通過外網(wǎng)遠程協(xié)助這樣直接的方式來。有沒有既能保證內(nèi)部系統(tǒng)安全,又能使封閉內(nèi)網(wǎng)與外界進行聯(lián)系的方法呢?這就是本文將要描述的一種方式:以串口通訊實現(xiàn)封閉內(nèi)網(wǎng)與外界通訊的方法。
1 系統(tǒng)的構成和安全的實現(xiàn)
系統(tǒng)由三個部分組成:服務端、中轉端和客戶端。服務端是指:運行在封閉內(nèi)網(wǎng)某一臺計算機上的一個程序,用來采集數(shù)據(jù)并通過串口向中轉端發(fā)送。中轉端是指:運行在可以聯(lián)網(wǎng)的計算機上的一個程序,用來將服務端發(fā)送的數(shù)據(jù)通過網(wǎng)絡轉發(fā)到客戶端,同時也可以將客戶端發(fā)送的指令轉發(fā)到服務端,由于我廠局域網(wǎng)限制,對外網(wǎng)訪問僅限于收發(fā)電子郵件,因此中轉端與客戶端的通信是通過電子郵箱中轉??蛻舳耸侵福涸谑謾C或者家用計算機中運行的程序,用來查看數(shù)據(jù)或者發(fā)送指令,服務端和中轉端是要通過編程實現(xiàn),而客戶端僅需要下載安裝郵箱管理軟件即可。
由于封閉內(nèi)網(wǎng)與存在風險局域網(wǎng)的兩臺計算機是通過串口通訊,它們之間發(fā)送的僅僅是字符數(shù)據(jù),這就實現(xiàn)了兩個網(wǎng)絡物理上的隔離,從而保證了安全,同時也實現(xiàn)了數(shù)據(jù)的交換。
2 串口協(xié)議與編程環(huán)境
由于RS-232是計算機上普遍存在的串行接口,因此本系統(tǒng)采用的就是RS-232串口通訊,用一條串口數(shù)據(jù)線將服務端和中轉端的兩個計算機連接起來。在串口通訊之前要設置好相同的參數(shù),因為本系統(tǒng)全部用來傳送字符數(shù)據(jù),傳輸速度越快越好,受限于計算機硬件,本系統(tǒng)串口設置的波特率是115200bps,數(shù)據(jù)位是8位,奇偶校驗無,停止位為1。本系統(tǒng)中的兩個程序都是運行在Windows環(huán)境中,而基于Windows的開發(fā)工具也很多,比如VB、VC、Delphi等,因為Delphi簡單、高效,同時其包含可視組件類庫VCL,方便程序的開發(fā),本系統(tǒng)采用的是Turbo Delphi。
3 串口通訊程序的編程實現(xiàn)
Delphi的優(yōu)勢在于其包含的眾多控件,使得用Delphi編制一個串口通訊和郵件收發(fā)的程序非常容易,這里串口通訊使用一個第三方控件,串口通訊用到的主要代碼如下:
ComPort1:=TComPort.Create(self);//創(chuàng)建一個ComPort1對象
ComPort1.Port:='COM1';//設定COM端口名稱
ComPort1.BaudRate:=br115200;//設置波特率
ComPort1.DataBits:=dbEight;//設置數(shù)據(jù)位
Comport1.StopBits:=cport.sbOneStopBit;//設置停止位
Comport1.Parity.Bits:=prNone;//設置奇偶校驗
ComPort1.Open;//打開端口
//現(xiàn)在就可以向串口發(fā)送數(shù)據(jù)
ComPort1.WriteStr('數(shù)據(jù)');
//在ComPort1RxChar事件讀取字符數(shù)據(jù)
ComPort1.ReadStr(st,Count);
//在使用完端口后關閉端口
ComPort1.Close;
//程序退出時釋放資源
ComPort1.Free
服務端程序不停的讀取串口數(shù)據(jù)以及現(xiàn)場數(shù)據(jù),收到特定指令字符時或者現(xiàn)場數(shù)據(jù)滿足特定條件后,收集信息并向中轉端發(fā)送,中轉端接收到完整信息后將信息以一封電子郵件的方式發(fā)送到特定郵箱??蛻舳司褪且粋€郵件客戶端,在手機上就可以查看或發(fā)送指令。
4 應用實例
兩種用法,一種是服務端監(jiān)測關鍵數(shù)據(jù),當條件滿足時觸發(fā)主動發(fā)送數(shù)據(jù)。另一種是客戶端發(fā)送特定指令,服務端收到指令后收集并發(fā)送數(shù)據(jù)。例如:故障停機是我最關心的事件,因此我編制的程序將軋機停機作為觸發(fā)條件,當服務端監(jiān)測到軋機停機超過10分鐘,就會將關鍵的數(shù)據(jù)轉發(fā)出來。當我覺得有必要查看一下報警信息時,我再發(fā)送一條含有特定指令的郵件,等待一分鐘左右,我在手機中就可以查看到最新的報警信息,以此做下一步分析。
5 結論
使用本文所描述的使用串口通訊的方式連接一個封閉內(nèi)網(wǎng)與危險外網(wǎng)的方法,既滿足了封閉內(nèi)網(wǎng)與外界通訊的需求,又保證了內(nèi)網(wǎng)計算機及網(wǎng)絡的安全,同時這也是一個幾乎零成本的方法,可以用在很多特殊的地方。
參考文獻:
[1]鄭彪,汪秉文.串口通信在工業(yè)控制中的應用[J].自動化儀表,
2002,23(04):58-59.
[2]羅小平.Delphi精要[M].北京:電子工業(yè)出版社,2004.
[3]黃軍.Delphi串口通信編程[M].北京:人民郵電出版社,2001.
作者簡介:孫吉平(1983-),男,遼寧本溪人,本科,助理工程師,研究方向:自動化。