? 工控远程智能终端的双网络选路方案--技术天地

工控遠程智能終端的雙網絡選路方案

 2009/6/10    

        工控智能終端的一個重要應用就是GPRS無線數據業務。GPRS無線數據通信因其無需鋪設線路,組網方便,覆蓋面廣等特點,在無人職守,遠程監控,電力調度等場合具有廣泛的應用。因此,英創公司的嵌入式主板作為工控終端,除了具有至少一個以太網接口外,基本上都提供了對GPRS模塊的支持,以方便客戶通過GPRS進行數據通訊。

 

        GPRS數據通訊的應用通常可分為兩類:一、客戶端/服務器應用模式,二、無線網關應用模式。英創公司網站文章《GPRS/CDMA應用方案》對這兩種模式進行了詳細的說明,本文將討論一種特殊的應用模式:工控終端作為客戶端,通過GPRS與互聯網上的遠端服務器連接,同時通過企業內部網與基于企業網的數據中心相連,如圖。

 

        在上圖中工控終端為ARM9主板EM9160,EM9160通過以太網與基于企業網的數據中心相連接,通過GPRS與基于互聯網的數據中心相連,在此應用中基于互聯網數據中心的IP和基于企業網的數據中心的IP相對于EM9160的網絡參數來說均為外網的IP,要實現同時相連的目的就需要在ARM9 主板EM9160上實現自動選路的功能,也就是說根據不同的數據中心IP選擇走不同的網絡:GPRS連接的互聯網或者以太網連接的企業網。以下介紹將詳細介紹實現自動選路的方法。

 

        為了讓數據缺省是通過GPRS發送到遠端服務器,需要把EM9160以太網默認的網關設為空,當把該網關設為空時,系統路由表中就沒有能夠到達遠端網絡的路徑了,當GPRS成功撥號上網后,操作系統會動態的在路由表中增加一條路由記錄,此時通過telnet登錄到EM9160上,輸入route print命令將系統路由表打印出來,如圖。

 

        其中的Interface是EM9160通過GPRS連接到互聯網時,分配給本地的IP地址, Interface與GatewayAddress相同,表示這是條直連網段路由記錄,Destination和Netmask為0.0.0.0,說明這是系統缺省路由,這條路由記錄的意思是:當要發送的數據包的IP地址不在系統的路由記錄中時,系統會將該數據包通過10.14.71.10這個接口直接發送出去,這個接口會將數據交付到下一個路由器處理。圖2中所示的路由記錄作為系統缺省路由記錄,發往外網的數據都將通過10.14.71.10這個接口發送出去,即通過GPRS發送。

 

        為了讓到指定IP的數據可以通過以太網傳輸,只需要在路由表中添加一條靜態路由記錄,比如想通過以太網連接的遠端服務器IP為10.2.55.21,本地以太網網關為192.168.201.19,則只需要通過route命令增加一條路由記錄:

        route -p ADD 10.2.55.21 MASK 255.255.255.255 192.168.201.19 if 2

 

        從路由表可以看到,除了通過GPRS的缺省路由外,還多了一條目標主機地址為10.2.55.21的路由記錄,這條路由記錄的意思是:當要發送的數據包的IP地址為10.2.55.21時,系統會將數據包通過192.168.201.210這個接口發送到192.168.201.19這個地址。其中192.168.201.210為本機以太網口IP,192.168.201.19為本地局域網與外網連接的網關。這樣客戶就能夠控制要發送的數據是通過以太,還是通過GPRS到達遠端主機了,實現了雙網絡選路的方法。

 

        在程序中可通過CreatProcess來調用route程序,如下:

 

        PROCESS_INFORMATION procInfo;

        TCHAR szCmdLine[100];

        _stprintf( szCmdLine ,_T('-p ADD 10.2.55.21 MASK 255.255.255.255 192.168.201.19 if 2') );

        if( !CreateProcess( _T('route.exe'), szCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, NULL, &procInfo ) ) 

                TRACE( _T(' \nCreateProcess failure!' )); 

 

        另一種情況是EM9160在GPRS應用上做客戶端,在以太網應用上做服務器端,一遠端客戶機通過以太網來訪問EM9160。對于這種情況,當EM9160作為服務器接收到遠端客戶機的連接請求時,將得到遠端客戶機IP,此時仍需要通過route來增加一條路由記錄到本地路由表中,才能正確與遠端客戶機建立連接,實現方法與前述相同。