技术天地

工控远程智能终端的双网络选路方案    发布时间: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来增加一条路由记录到本地路由表中,才能正确与远端客户机建立连接,实现方法与前述相同。

Go Top