• 官方微信

    CA800二维码微平台 大视野

  • 工控头条

    CA800二维码工控头条App

当前位置:自动化网>自动化文库>应用案例>GPS电子定位导航系统

GPS电子定位导航系统

发布时间:2013-01-07 来源:中国自动化网 类型:应用案例 人浏览
分享到:
关键字:

导读:

1 引言目前,GPS全球定位系统已经得到广泛的应用,在很多领域都可以看见GPS系统的应用。但是这些常见的产品都是经过封装和测试,并组装成一体机的最终产品。这样的产品可以满足其市场定位时设定的功能需求,但是,这样...

1  引言
目前,GPS全球定位系统已经得到广泛的应用,在很多领域都可以看见GPS系统的应用。但是这些常见的产品都是经过封装和测试,并组装成一体机的最终产品。这样的产品可以满足其市场定位时设定的功能需求,但是,这样的成型的产品并不适合自行研发的自动化系统:一、这样的系统一般封装程度比较高,无法将上位机系统和下位机系统简单分离,无法将GPS定位模块与PCB板和控制模块简单分离,这样就使得自行研发的系统不能简单使用市场上现有的产品实现其功能;二、由于现有产品都是集成了上位机系统并进行了封装,这样使得其现有产品的价格包含了上位机系统和电子地图部分,这样会使整个自行设计的系统成本提高。基于以上理由,需要设计了一套符合系统需求的GPS电子定位导航系统。

2  系统需求分析与总体设计
GPS系统原名全球卫星定位系统,顾名思义其最主要的功能是定位,由此功能而衍生的其他应用和功能也已经为人们所熟知,比如导航功能,现在汽车上应用GPS导航产品已经非常常见,而该GPS定位系统现在只需要基本的定位和导航功能。虽然只有两个最基本的功能,但是对其定位精度要求是在10m以内。
该GPS电子定位导航系统是要嵌入其他自动化系统中的,所以,整个系统虽然也分上位机系统和下位机系统,但是下位机系统要求体积比较小并且容易安装和调试。整个系统组成框图如图1所示:

3  系统硬件设计
3.1  单片机控制器模块
本系统采用STC12C5A60S2单片机作为主控芯片,STC12C5A60S2单片机中包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时/计数器、UART串口、串口2、I/O接口、PCA、看门狗、片内R/C振荡器和外部振荡电路等模块。STC12C5A60S2系列单片机[1]几乎包含了数据采集和控制中所需的所有单元模块,可称得上一个片上系统。最小系统电路如图2所示:

3.2  GPS卫星定位器
该系统采用GS-87卫星定位模块[2]进行定位。数据帧信息包括:模块定位状态(A表示已定位,V表示未定位),模块所在地的经纬度信息。该模块采用外置天线,体积小,6个引脚,容易集成在电路中。正常工作时,采用4.3V电压供电,通过单片机串口2(P1.2和P1.3管脚连接GPS模块的TXD和RXD管脚)读取GPS数据信息。设置波特率为9600,并通过单片机串口1(P3.0和P3.1管脚)将数据发送至控制中心的上位机。控制中心上位机部分借助电子地图,显示当时的定位点,并能够指出相应的到达路径。GS-87卫星定位模块外围电路如图3所示。

4  系统软件设计
4.1  软件需求分析
本系统的上位机亦即软件部分主要功能包括:
1. 接收并处理从下位机上传的数据。
2. 利用SQL Server 2005软件和Visual Studio 2008软件,将处理完的存入数据库,并在需要的时候,按一定的存取逻辑,将数据库中的数据取出。
3. 通过Google Map API实现电子地图功能。
4. 实现定位和导航功能。
根据以上所列功能,可以确定上位机软件分为三个部分:一、数据库部分;二、电子地图网页部分;三、WinForm程序部分。
4.2  数据库设计
数据库软件使用SQL Server 2005。根据已知的需求,建立2个第三范式数据库表,Setting表和GPS表。Setting表记录各种基础信息,这些信息一般一旦建立就不再更改,而且数据表也很少发生变动。GPS表记录GPS信息,此表字段要少于setting表字段,但是数据表记录会经常增加,致使数据表大小发生改变。这两个表的建立字段如图4和图5所示:


4.3  电子地图网页程序设计
电子地图选用Google Map API V2版本[3]。在电子地图网页的脚本元素中加入load()函数,具体代码如下:
function load() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.addControl(new GOverviewMapControl());
    map.enableDoubleClickZoom();
    map.enableScrollWheelZoom();
    map.setCenter(new GLatLng(46.46712430, 124.85207140),10);GEvent.addListener(map,"singlerightclick",function(a,b,overlay) {if (overlay) {
         if (overlay instanceof GMarker) {
              GEvent.trigger(overlay, "SingleRightClick",a);
                    }  }  });
      GEvent.addListener(map,"click",function(overlay,point) {
        contextmenu.style.visibility="hidden";
            if(point) {
window.external.GetMousePointByScript(point.lng(),point.lat());
                    }   });  }   }
在这个函数里,需要加入了3个GMap控件和双击和滚轮改变大小,并且用setCenter方法初始化地图。
在函数的最后,加入了单击和右击事件以实现特定的功能。当右击电子地图时,会判断右键点击的是不是标注点,若是标注点就弹出右键菜单,否则不做任何反应。当左键点击电子地图时,鼠标点击处的经纬度信息传回WinForm程序,并在WinForm程序中显示出来。
接下来,就要实现导航和标注这两个功能。首先在脚本里添加2个基本功能函数,AddMarker()和Navigate()。AddMarker函数中最重要的脚本语句是var marker = new GMarker(point, myicon)和map.addOverlay(marker)。第一句是建立标注对象,地二句是将标注显示在电子地图上。Navigate函数最重要的脚本语句是
var directions = new GDirections(map)和directions.load("from:"+lat1+","+lng1+"to:"+lat2+","+ lng2)。第一句是建立导航类对象,第二句根据传入参数进行导航。网页中还有一个功能是信息框功能,其中脚本语句是map.openInfoWindowHtml(point,tabs)这条语句的功能是在指定点打开信息框。
这三个函数是基本功能函数,其他需要的功能都是在这些基本功能的基础上进行开发的。
4.4  WinForm程序设计
在WinForm程序中,需要考虑预期的所有功能的具体实现和整个软件界面的布局等等。
从功能上来说,首先要实现从数据库中读取数据。为此,编写一个读取数据库的函数dataSelect函数[4],程序代码如下:
public DataTable dataSelect(string selectStr){
   SqlDataAdapter sda=new SqlDataAdapter(selectStr, conn);
    SqlCommandBuilder scb=new SqlCommandBuilder
(sda);
    DataSet ds = new DataSet();
    sda.Fill(ds);
    return ds.Tables[0];    }
在这个程序中,主要查询的数据库表就是前面数据库设计中建立的GPS表,各种查询的最终目的就是通过各种查询逻辑将符合要求的GPS经纬度信息查询出来,并在电子地图上标注出来。
这时,就需要上文提到的AddMarker()函数了,通过调用这个函数,可以在电子地图上任意经纬度点实现标注。而另一个主要功能就是导航,这里要实现的导航非常简单,就是从一个固定点到另一个标注点之间的导航。可以将上文提到的导航函数Navigate()中的一个点的经纬度固定,另一个点的经纬度进行赋值,这样就可以实现预期的功能了。除此以外,还需要对每一个标注点的基本信息进行说明,要实现这个功能,需要上文说到的信息框函数,利用这个函数,可以在电子地图的任意标注点上打开一个信息框,并且在信息框中显示标注点要显示的各种相关信息。
在这里需要注意的是,要实现上述所有的功能,即在WinForm程序中直接控制网页中的脚本函数,那么需要在窗口构造函数中加入一条语句:_browser.ObjectForScripting=this,这样才能将网页中的脚本与WinForm中的程序连接起来,以实现预期的功能,否则,网页中的脚本不会响应Winform中的事件和函数。
4.5  程序界面及验证测试
整个程序完成后,默认的程序打开界面如图6示。

在此程序界面中,主要的功能是通过在数据库中检索出所查点的经纬度信息,并将这些点标注在电子地图上,如图7所示。并且,可以右击某一标注点,打开右键菜单,如图7所示。

在右键菜单中,选择点击菜单中的功能,即可实现某一功能。若点击导航功能,就可以得到一条导航的路线,如图8所示。还可以在右键菜单中选择显示点信息,或者直接点击标注点,这样就可以得到关于这个标注点的信息框,如图8所示。

这样,就实现了预期的电子地图的功能,即标注与导航。但为了测试其定位准确性,我们使用达恒公司ProMark_200型号的专业GPS测量仪进行验证测试。这款测量仪的实时精度随使用模式的不同而不同,精度范围为1cm~50cm。通过使用测量仪进行实测,并且与现有的电子地图进行比对发现,此电子地图的精度在3~8m左右,符合我们预期的设计指标。

5  结束语
这个系统只是一个简单的实例,如果在实际的应用中若有其他的功能上的需求可以在这个系统的基础上进行功能上的扩充和性能上的改进。而且这个系统也可以根据需要,预留出一些接口并将上位机软件的功能封装成DLL文件,与某些大型的自动化系统相集成,以达到本系统研发的初衷和目的。

参考文献:
[1] 蔡美琴,张为民,何金儿等.MCS-51系列单片机系统及其应用[M].2版.北京:高等教育出版社,2004.
[2] 王建敏,王天文.多模块GPS系统集成应用及精度分析[J].辽宁工程技术大学学报,2011,(1):46-49.
[3] 江宽,龚小鹏.Google API开发详解:Google Maps与Google Earth双剑合璧(第2版)[M].电子工业出版社,2010.
[4] 王小科,王军.C#开发实战1200例(第二卷)[M].清华大学出版社,2011.

作者简介:关学忠(19-),男,教授,研究方向:基于神经网络的控制及故障诊断技术。

本文地址:本文地址: http://www.ca800.com/apply/d_1nrutga2l2etv_1.html

拷贝地址

上一篇:多功能电力仪表在配电系统中应用

下一篇:无人值守换热站监控系统

免责声明:本文仅代表作者个人观点,与中国自动化网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容!