• IIANews微官网
    扫描二维码 进入微官网
    IIANews微信
    扫描二维码 关注微信
    移动客户端
  • English
IMS2024中国智能制造发展论坛线下报名
技术

车载GPS定位监控系统中信号的分析与处理

  2009年04月03日  

  为了满足提高运输效率和安全保障的需要,对车辆定位监控系统的研究也日趋迫切。随着汽车在日常生产和生活中起的作用越来越突出,如何实现各类车辆的有效指挥、协调控制和管理已经成为交通运输和安全管理部门面临的一个重要问题。

  车载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 = ''){中心发送命令集}

 从车载机接收的GPS信号中判断返回的信息是否有效,如果无效则直接丢弃,如果有效,则确认是一般信息还是确定信息,再接收处理一般信息或确定信息。

  区分一般信息和确认信息的依据是参数字符串是否包含“V4”。

Result := False;{初始返回结果}
Result := pos(‘V4’, Str) > 0;{如果str包含“V4”,就返回true,否则false}
判断是否返回有效的信息的依据是参数字符串是否包含"*HQ"。
Result := False; {初始返回结果}
Result := pos('*HQ',Str) > 0;{如果str包含“ *HQ”,就返回true,否则false}

  一般信息的标志是V1。车载回传的一般信息中包含的参数有车载序列号、移动电话号码、车牌号、时间、经纬度、速度、方位 、日期。

//获取车载序列号(同样的方法可以获取移动电话号码、车牌号、时间)
sCarNo := copy(RecvGprs, iPos + 4, 10);
//获取纬度(同样的方法可以获得经度)
sLatitude := copy(RecvGprs, iPos + 3, 9);
sLatitude := FloatToStr( StrToFloat(copy(sLatitude, 1, 2)) +StrToFloat(copy(sLatitude, 3, 7)) / 60 );
//获取南纬和北纬(同样的方法可以获得东西经)
iPos := pos(',S,', RecvGprs); {查找",S,"在RecvGprs 的位置}
if iPos > 0 then; {如果RecvGprs 包含',S ,' 就执行下面语句}
sNS := ‘南纬’
else begin
iPos := pos(‘,N,’, RecvGprs); {查找“,N,”
在RecvGprs 的位置}
sNS :=‘北纬’;
end;

//获取速度、方位 、日期
sSpeed := copy(RecvGprs, iPos + 3, 6);{获取速度}
sDirection := copy(RecvGprs, iPos + 10, 3);{获取方位}
sDate := copy(RecvGprs, iPos + 14, 6); {获取日期}
if Pos('.', sSpeed) <= 0 then{判断sSpeed 是否包含'.',如果包含就执行下面语句}
begin
sSpeed := copy(RecvGprs, iPos + 3, 3); {获取
速度}
sDirection := copy(RecvGprs, iPos + 7, 3); {获
取方位}
sDate := copy(RecvGprs, iPos + 11, 6); {获取
日期}
end;

//数据转换
sSpeed := FormatFloat('0.00' ,StrToFloat(sSpeed) * 1.852);{行驶速度转换}
sSceond := copy(sTime, 5, 2);{时间转换}
if StrToInt(sSceond) < 60 then{时间转换('YYYY-MM-DD HH:MM:SS'表示为:年月日时分秒}
sDate := FormatDateTime('YYYY-MM-DD HH:MM:SS', IncHour(StrToDateTime('20' +copy(sDate, 5, 2) + '-' + copy(sDate, 3, 2) + '-' + copy(sDate, 1, 2) +' ' + copy(sTime, 1, 2) + ':' + copy(sTime, 3, 2) + ':'+ copy(sTime, 5, 2)), 8))
else begin
sDate := FormatDateTime('YYYY-MM-DD HH:MM:SS', IncHour(StrToDateTime('20' +
copy(sDate, 5, 2) + '-' + copy(sDate, 3, 2) + '-' + copy(sDate, 1, 2) +' ' + copy(sTime, 1, 2) + ':' + copy(sTime, 3, 2) + ':'+ '00'), 8));
sDate := FormatDateTime('YYYY-MM-DD HH:MM:SS',
IncMinute(StrToDateTime(sDate), + 1));
end;

 确认信息的标志是V4。车载回传的确认信息中包含车辆行驶方位和车辆状态。

  处理一般信息中获取的方位信息,由字符类型转换为整型数据,根据数据所在范围确定车辆的行驶方位,小于22.5或大于337.5为正北方向,大于22.5小于67.5为东北方向,大于67.5小于112.5为正东方向,依此类推确认车辆的行驶方向。

  处理一般信息中获取的车辆状态,由字符类型转换为二进制数字符串,把二进制数据的每一位存进数组,每一位对应表一中的一个车辆状态。

//获取车辆状态
iPos := Pos('#', RecvGprs);
sCarStatus := copy(RecvGprs, iPos - 8, 8)
//转换为二进制数字符串
sBin := '';
for I := 1 to 8 do
sBin := sBin + HexCng(copy(sCarStatus, I, 1));
//把二进制数据的每一位存进数组
for I := 0 to 31 do
ArrBin[I] := copy(sBin, I + 1, 1);
sCarStatuText := HandleCarStatus(ArrBin);{车辆状态}

  监控中心根据每一台车载机传回的信息内容发送不同的命令。发送命令程序需严格按照中心发送命令集规定的的格式来写,下面列举其中的几条命令:

//该指令要求车载机以sInterval为时间间隔,回传sCount次定位信息。
sRightStr := '*HQ,0000000000,D1,' + sTime + ',' +sInterval + ',' + sCount + '#'
//车载机接到这条指令后将清除掉所有报警信息。
sRightStr := '*HQ,0000000000,R7,' + sTime + '#';
if eBox(PChar('真的要解除对车辆【‘+CarID+’】报警吗?'),‘提示’, MB_YESNO + MB_DEFBUTTON2) = IDNO then Exit;

  这里的CarID指车载机序列号。

//车载机收到这条命令将会启动断油断电。
sRightStr := '*HQ,0000000000,S20,' + sTime + ',1,3,10,3,5,5#';
if eBox(PChar('真的要对车辆【'+CarID+'】断油断电吗?'),'提示', MB_YESNO + MB_DEFBUTTON2) = IDNO then Exit;

  结语

  目前,车载GPS定位监控系统已经被各运输公司使用在出租车、客车以及大型车队上,该软件技术很好的实现了对车辆位置、状态的监控和调度管理。

  随着GPS应用领域的扩大,车载GPS导航定位监控软件的系统的功能也将随着导航、通信等需求而不断的增多和完善。GPS车载机通信协议会根据GPS车载机产品的功能升级而不断升级,增加新的命令,相应的软件系统也要增加新的指令,本系统的设计将易于这些升级维护工作的进行。

最新视频
为自动化未来而生:魏德米勒SNAP IN鼠笼式联接技术   
“EurekaCloud”自动仿真数控程序   
魏德米勒30周年
剑维软件-重构传统人机界面(HMI)
《边缘计算助推IT/OT融合,加速共享数字计划》白皮书
施耐德电气:中压配电和电网自动化
大族机器人
专题报道
第三届EESA储能展
第三届EESA储能展为加快适应储能规模化发展的步伐,促进储能行业进一步良性发展,共促新能源产业的融合,第三届EESA储能展将于2024年9月2-4日在国家会展中心(上海)举办。
企业通讯
图尔克智能数据解决方案
图尔克智能数据解决方案

资源保护、可持续发展和工业数字化转型是机器和设备制造商以及像图尔克这样的自动化专家和解决方案提供商同样关注的三大趋势。在

魏德米勒开放式自动化平台u-OS
魏德米勒开放式自动化平台u-OS

作为工业物联网领域的重要供应商,魏德米勒持续为客户提供专业的数字化解决方案,产品广泛应用于各种行业,满足工业环境下的各种

在线会议
热门标签

社区

ABB 菲尼克斯电气 威图 三菱电机社区 西门子社区 罗克韦尔自动化社区 恩德斯豪斯自动化
施耐德电气 图尔克 伊玛 欧姆龙 巴鲁夫 魏德米勒 唯恩电气
西克 堡盟 ifm 纳博特斯克 万可 凯本隆 山洋电气
施迈赛 皮尔磁 菲力尔 浩亭 劳易测 伦茨 英威腾
海格电气 威琅电气 VEGA 康耐视 item 仙工智能 KUKA
ODU 雄克社区 天机机器人 倍福 MiR 海康机器人 优傲机器人
SRT软体机器人 灵动科技 科尔摩根 快仓智能 ATI 艾利特机器人 安歌科技
大族机器人 奥托尼克斯 研祥金码 雷尼绍 Nidec CT FDT 威强电
霍尼韦尔 迦智科技 Basler社区 史陶比尔连接器 湾测 节卡机器人 研祥智能
Baidu
map