- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
车载GPS定位监控系统中信号的分析与处理
引言
随着汽车在日常生产和生活中起的作用越来越突出,如何实现各类车辆的有效指挥、协调控制和管理已经成为交通运输和安全管理部门面临的一个重要问题。为了满足提高运输效率和安全保障的需要,对车辆定位监控系统的研究也日趋迫切。
车载GPS定位监控系统是GSM全球数字蜂窝移动通信技术和GIS地理信息技术、GPS全球卫星定位技术以及计算机网络技术相融合研制开发出来的软件技术。它是通过安装在车辆上的GPS接收机(即车载机)接收卫星信号,监控中心的通信控制器从GPS接收机输出的信号中提取所需要的位置、速度和时间信息,结合车辆身份等信息形成数据报,然后通过无线信道发往控制中心;控制中心的主站接收子站发送的数据,处理接收信息通过短消息的方式逐次直接发送给每一台车载机。最后,将车辆的具体数据和状态在监控中心的电子地图上显示出来。
本文讨论的就是从接收机输出的信号中提取所需要的位置、速度和时间信息的方法,以及中心处理信息后发送命令集的实现过程。
GPS车载机的通信协议
车载机与监控中心之间的通信方式均以中心发送命令,车载机应答的方式进行,所以我们对车载机GPS信号的分析与处理必须完全依据车载GPS接收机与监控中心的通信协议来进行,下面是GPS车载机通信协议的部分内容。
车载机返回信息
一般信息:
*XX,YYYYYYYYYY,V1,HHMMSS,S,latitude,D,longitu de,G,speed,direction,DDMMYY,vehicle_status#
确认信息:
*XX,YYYYYYYYYY,V4,CMD,hhmmss,HHMMSS,S,latitu de,D,longitude,G,speed,direction,DDM MYY,vehicle_status#
区分一般信息和确认信息的方法是看车载机传回来的信息中是否包含"V4",判断返回信息是否有效的方法是看回传信息中是否包含"HQ(制造商名称)"。
其中:‘*’表示命令头;‘XX’表示制造商名称;‘,’表示分隔符;‘YYYYYYYYYY’表示车载机序列号;‘CMD’表示被确认的中心命令;‘hhmmss’表示被确认命令中的时间值;‘HHMMSS’表示车载机时间;‘S’表示数据有效位;‘latitude’表示纬度;‘D’表示纬度标志;‘longitude’表示经度;‘G’表示经度标志;‘speed ’表示速度;‘direction’表示方位角;‘DDMMYY’表示日/月/年;‘vehicle_status ’表示车辆状态。
车载机返回GPS信息模式有两种,一是返回最近的有效的GPS信息;二是返回最新的GPS信息。
中心发送命令结构和命令集
中心发送命令结构是:*XX,YYYYYYYYYY,CMD,HHMMSS,PARA1,PARA2,...#
在编写中心发送指令时必需按照这个格式来写,下面列出其中的七个中心发送命令。
定位监控命令D1:该指令要求车载机以interval为时间间隔,回传count次定位信息。
自动监控设置命令S17:该指令完成对自动监控参数的设置。
参数设置指令S12:该指令仅用于对S17命令的开关控制。
设置监控中心短信号码S2:车载机收到指令后将立即向新的监控中心发送确认信息。
通话设置指令S13:phone_flag的bit0=0时允许打出,bit1=0时允许接听。
清楚报警指令R7:车载机收到命令后将清除掉所有报警信息。
冷启动指令R1:车载机收到命令后将执行冷启动复位,所有状态参数全部清零。
通信软件的设计与实现
GPS信号与监控中心之间的通信大致分成两个步骤:一是GPS接收机(即车载机)接收卫星信号,监控中心的通信控制器从GPS接收机输出的信号中提取所需要的位置、速度和时间等数据信息;二是监控中心将分析出的数据信息通过短消息的方式发送命令给每一台车载机。具体步骤如下:
function IsValidMsg(Str: String): Boolean;{判断消息是否有效}
function IsConfgMsg(Str: String): Boolean; {区分一般信息和确认信息}
procedure ResoleGprsV(RecvGprs: String);{处理接受信息}
procedure ResoleGprsV1(RecvGprs: String);{处理一般信息 (V1)}
procedure ResoleGprsV4(RecvGprs: String);{处理确认信息(V4)}
function Direc(sr: String): String;{车辆行驶方向}
function HexCng(Rhex: String): String;{十六进制数转换为二进制数}
function HandleCarStatus(ArrBin: array of String): String;{处理车辆状态}
function ChangeTel(sTel: String): String;{}
function StrToHex(sStr: String): String;
procedure SendSms(Tel, Other: String; iCmdID, iSendType: Integer;
CarID: String = ''){中心发送命令集}
作者:叶敦范,刘敏 中国地质大学 来源:电子产品世界