您当前所在的位置是:首页 > 资讯 > 技术应用 > 正文

今天是: 12月14日 星期五

新型定位在路灯扼制讯息协议里的运用

2011-09-09 09:57:23中国照明招标网

  1人工的管理模式已经不适合路灯管理的要求,建设一个完善的路灯监控通信系统,不仅要满足现在的业务管理需求,还要考虑到今后的信息处理增长及其技术升级的适应性。近年来无线传输技术有了很大的进步,其中GPRS技术在工业界受到了广泛关注。GPRS是在现有的GSM系统上发展出来的一种新的分组数据承载业务。它具有一次性投入低、安装简便、使用费较低、抗干扰能力较强且具有向GPRS无线分组、2.5G宽带业务平滑过渡等诸多优点。目前,我国几乎所有城市已经开通GSM/GPRS业务,这是今后远程监控系统所采用的主流传输资源,也是路灯监控系统通信方式很好的选择。

  路灯监控系统的结构如1所示,路灯终端经过GPRS网络和INTERNET网络与监控中心进行通信,在这过程中,需进行通信的连接,该系统自行设计通信协议,以达到路灯监控通信的特定要求。

  2系统通信协议的设计

  在路灯监控通信系统中,上层软件和底层硬件通过指令数据包来进行通信,在国际上有很多通信规约,但不免存在复杂和技术落后的问题。该系统路灯配电箱控制器GPRS模块路灯监控中心移动通信中心INTERNET网络GPR网络采用自定义的通信协议,保证系统的安全和稳定,实现路灯监控通信。

  2.1指令数据包格式

  68 45 04 ID_low ID_high Type D_low D_high Data verify end指令数据包结构说明:前三字节68、45、04表示国家地区编号,其中68表示中国,45表示广西,04表示梧州市;ID_low表示GPRS数据收发模块在某市编号的低字节,长度1字节;ID_high表示GPRS数据收发模块在某市编号的高字节,长度1字节;68、45、04、ID_low、ID_high组成GPRS数据收发模块的总编号;Type表示指令类型,长度1字节;D_low表示指令数据的低字节,长度1字节;D_high表示指令数据的高字节,长度1字节;Data表示要发送或接收的指令数据,根据需要来进行长度设计;Verify表示校验字节,是除了校验字节外所有数据字节异或后的结果,长度1字节;End表示包尾,设置为一固定值0x03;Type表示的指令类型主要有以下几种:(1)登录包:Type的值为0x01,登录包是GPRS数据收发模块第一次连接上层软件发送的数据包。(2)心跳包:Type的值为0x02,心跳包是GPRS数据收发模块为了与上层软件一直保持TCP连接的数据包,为了防止GPRS网络由于GPRS数据收发模块连上GPRS网络后太久不发数据而断开它们之间的连接,因此设置GPRS数据收发模块在一固定时间内向上层软件发一次心跳包,通过发送心跳包也可以知道GPRS数据收发模块是否已经和GPRS网络断开。(3)电压电流数据查询请求包:Type的值为0x03,电压电流数据查询请求包是上层软件向底层硬件去查询当前控制点的电压电流值。(4)回路状态请求包:Type的值为0x04,回路状态请求包是上层软件向底层硬件去查询控制点回路的开关状态。(5)时间列表请求包:Type的值为0x05,时间列表请求包是上层软件向底层硬件去查询控制点设置的开关灯时间。(6)时间列表下载包:Type的值为0x06,时间列表下载包是上层软件向下层硬件下载设置好的开关灯时间。

  (7)回路控制包:Type的值为0x07,回路控制包是上层软件向底层硬件发送要控制回路开或关的指令包。

  2.2指令数据包分解

  上层软件接收到GPRS数据收发模块发送的数据后,要辨别指令数据包,然后根据相应的指令执行对应的处理程序,分解数据包的流程图如2.

  3系统通信的关键技术

  3.1通信系统的实现

  通信系统在TCP/IP协议的基础上,封装上自定义的协议进行通信。由于使用TCP/IP协议,监控中心与GPRS模块之间通信首先要分配两个IP地址,GPRS模块在通电后主动去连接GPRS网络,移动中心给GPRS分配一个IP地址。GPRS模块得到IP地址后通过移动中心经INTERNET网络主动去连接监控中心主机,连接成功后,监控中心就可以和GPRS模块进行通信了。由于监控中心与GPRS模块之间的通信要经过INTERNET网络和GPRS网络,所以这两个网络只要有一个不正常将影响监控中心与GPRS模块间的通信。为了保证路灯能正常开关灯,本系统的控制器设置一个系统时钟,监控中心只要根据时间请求数据包和时间列表下载下传的时间列表,控制器就能根据本身的系统时钟来进行开关灯动作。这大大减少了对通信网络的依赖,从而减少了不能亮灯的次数。

  3.2通信重发机制

  本系统通过GPRS网络来实现指令数据的收发,但通过GPRS网络来传输数据的丢包率比较高。

  系统上层软件使用TCP协议与GPRS数据收发模块进行通信,TCP(传输控制协议)是一个可靠的端对端面向连接的协议,能可靠地传送和接收两个应用程序间的数据,并保证数据不会丢失。上层软件和GPRS数据收发模块的通信虽然使用TCP协议,但指令数据在传输过程中要经过GPRS网络和INTERNET网络,加上GPRS数据收发模块的数据传输不稳定性,GPRS网络不能像局域网那样可保证数据在传输过程中不会丢失,本系统采取在上层软件通过重发机制来减少上层软件向GPRS数据收发模块发送指令数据的丢包率。另外GPRS数据收发模块在和GPRS网络断开时,上层软件并不一定都能收到网络断开消息。本系统的重发机制除了有重发功能外,上层软件通过向GPRS数据收发模块连续发送指令数据的次数来判断GPRS数据收发模块是否和上层软件断开网络连接。

  考虑到GPRS数据收发模块和控制板的处理速度,上层软件在向一个GPRS数据收发模块发指令数据时,两条指令数据间的时间间隔不能太短,重发机制也可处理这个问题。重发机制在向一个GPRS数据收发模块发送指令数据后系统会记下该GPRS数据收发模块的编号,每次发送指令都会判断在本次发送周期内该GPRS数据收发模块是否已发送过,如已发送过则把该指令数据留到下一次发送周期。通过该方法来确保在一次发送周期内只向一个GPRS数据收发模块发送数据。该方法避免了因为向同一个GPRS数据收发模块连续发送指令数据导致GPRS网络堵塞或由于硬件运算速度慢而导致的硬件死机或丢失数据问题。系统的重发机制通过自己建立的缓冲池来保存指令数据,使用类似队列方式来发送指令数据,每发一次指令数据会记下指令数据的发送次数。重发机制的流程图如3,其中T为队列里指令数据最大发送次数。

  3.3通信系统安全

  任何一个系统必须考虑安全性,在路灯通信系统中,一个是要考虑系统通信的安全性,另外就是要考虑系统运行的安全性。为了确保系统运行的速度,第一种情况我们采用异或并在数据结尾加上特定的结束符的方式进行校验,在路灯监控系统中已经够用,这个过程在分解数据包的时候进行实现。

  第二种情况是路灯运行的安全性,包括开灯时间、电流电压等情况,这些是根据监控点返回的状态判断是否安全,并进行报警。

  4系统通信关键技术的实现

  4.1重发机制的实现

  先定义全局变量:Send_View:TListView,Send_View用于保存发次的指令数据,T_Send为要发送指令的定时器。

  procedure F_Main.T_SendTimer(Sender:TObject);var Item:TListItem;NowSend,MaxItemCount,SendCount,i:integer;AfterSend_StrL:TStringList;begin if指令数据包>0 then begin AfterSend_StrL:=TStringList.Create;MaxItemCount:= Send_View.Items.Count;NowSend:=0; //发送第一行while MaxItemCount>NowSend do begin Item:=Send_View.Items.Item;inc(NowSend);SendCount:=strtoint(Item.SubItems.Strings<2 >);//发送次数if发送次数小于最大发送次数then begin for i:=0 to AfterSend_StrL.Count-1 do begin if Item.Caption=AfterSend_StrL.Strings then Break;end;if i>AfterSend_StrL.Count-1 then begin Item.SubItems.Strings<2>:=inttostr(strtoint(Item.SubItems.Strings<2>)+1);//发送指令数据次数加1.

  发送指令数据。

  添加已发送指令数据的GPRS编号。

  end;end;else发送次数大于最大发送次数,认为是GPRS掉线。

  begin删除队列中的指令数据。

  处理GPRS掉线。

  end;AfterSend_StrL.Free;end;

  4.2接收与分解数据包

  Procedure TF_Main.S_SocketClientRead(Sender:TObject;Socket: TCustomWinSocket);var RecStr:String;RecStrLen,i:integer;PacketEnd:char;Verify,Vrf,Vrf_temp,PacketType:Byte;begin RecStr:=Socket.ReceiveText;RecStrLen:=Length(RecStr);PacketEnd:=copy(RecStr,RecStrLen,1)<1>;//取最后1字节数据。

  If取的字节数据=0x03 then begin Verify:=ord(copy(RecStr,RecStrLen-1,1)< 1>);//取校验字节。

  Vrf:=$0;for i:=0 to recStrLen-3 do取除校验字节外所有数据字节进行异或。

  begin Vrf_temp:=ord(RecStr);Vrf:=Vrf xor Vrf_temp;end;Vrf:=Vrf xor $03; //和包尾进行异或。

  If异或结果=校验字节then begin //取数据包类型。

  if PacketType=$01 then begin //处理登录包。

  end;if PacketType=$02 then begin //处理心跳包。

  end;if PacketType=$03 then begin //处理电压电流数据。

  end;if PacketType=$04 then begin //处理返回的回路状态数据。

  end;if PacketType=$05 then begin //处理返回的时间列表数据。

  end;

  5结语

  本文创新点就是根据路灯监控的特殊要求设计自定义的通信协议,程序具有很强的抗干扰性,结构清晰,便于扩充修改和维护,并且考虑了协议的重发机制和安全性,可靠性得到保障。从实际运行情况看,系统稳定可靠。同时为进一步对各种远程监控通信系统的研究提供了良好的基础。

  1. 业界紧急照亮体系简析
  2. 海外新型式照亮构建建设探讨...

相关文章

推荐文章国内资讯国际资讯人物访谈企业新闻市场分析产品资讯