摘 要
由于网际网络的盛行,很多应用程序于设计时,大都已采用分布式的理念来增进执行效能。然而由于分布式架构中计算机分散于各处,使用计算机愈多,则计算机间所需之传输线路也要愈多且复杂。但因GSM系统已被普遍使用于每天之远程传输,这提供分布式计算机系统一个无线传输的环境。本论文提出一以GSM系统为骨干的分布式远程监控系统以汽车系统为一个测试范例,此系统可分为三大部分:第一部分为传感器所收集到的资料,以简讯方式透过GSM系统送到简讯中心,第二部分为简讯中心将所收到的资料经处理后送到监控中心,第三部分为监控中心由简讯中心所送来的资料知道汽车状态,并可对该汽车驾驶的一些行为提出建议。藉由此提出之架构来验证GSM系统之远程监控之可行性,并可结合GIS系统来将汽车位置显示于电子地图上,以达监控之目的。
Distributed Wireless Remote Monitoring System
Jui-Fa Chen+, Wei-Chuan Lin*, Chi-Ming Chung+, Kun-Hsiao Tsai+
+Department of Information Engineering, TamKang University
+E-mail: alpha@mail.tku.edu.tw
*Department of International Business, Tak-Ming College,
*E-mail: wayne@mail.takming.edu.tw
ABSTRACT
With the popularity of the network, many applications have been designed to be a distributed system. The more distance for communication, the more lines for communication are needed. As the GSM has been widely used in our daily life for tele-communication, it can also be applied to the distributed system for wireless communication. This paper proposes a distributed wireless remote monitoring system based on the GSM system and takes the car system as a test case. This proposed system is divided into three parts. The first is that the data collected from the sensor such as GPS is sent by the short message of GSM to the GSM provider. The second is that the GSM provider processes the data sent by the short message of GSM and sends the process result to the monitoring center. The third is that the monitoring center can know the car status through the data sending from the GSM provider and give advises to the car driver. With the help of this proposed architecture, a distributed remote monitoring environment on GSM system is verified. In addition, the monitoring center can combine with the GIS to display the car location in a electronic map.
Key words: GSM, GPS, GIS, monitoring center, short message
1. 绪论
进行分布式监控系统的研究,往往会联想到利用拥有高速数据传输率的固接式网络来完成,但固接式网络其缺乏机动性的缺点,对于动态的对象而言,实无法胜任。因此,使用无线通信的技术,也就显得势在必行。GSM领导着全球数字式无线通讯系统的标准,至今全世界已有超过1.7亿的GSM使用者,其数据传输率虽不及固接式网络来的快速,但良好的机动性与克服长距离使用困难的缺点,无疑对于动态的分布式远程监控系统,提供了一良好的选择。
此研究的目的在于监控远程动态对象的实时状况,透过「传感器」将细微的行为模式,利用GSM传回到控制中心做监控。一方面处理资料遗漏的问题,将最立即而正确的资料送出。另一方面,在资料的传送上,我们藉由有必要才传的不定时传输方式,节省成本并降低网络拥塞的问题。本系统主要由三个部份所组成,分别为『动态对象系统』、『简讯系统』及『监控中心系统』。「动态对象」泛指具有移动性的物体而言。整个系统首先由『动态对象系统』端之「传感器系统」取得侦测的资料,经「数据处理系统」计算、处理,判断是否将资料送出,若是,则将资料经由GSM简讯的方式,传送至电信公司的「简讯中心」存放。『监控中心系统』则是透过TCP/IP通讯协议取回资料,与「显示系统」结合,供使用者观看;若是紧急事件,则透过「警告系统」,与系统管理者联络。
在本论文中,第二节将回顾相关文献,第三节将介绍整个系统的架构;第四节为系统实作,藉车子为实例说明整个架构的流程;第五节为结论与建议。
2. 文献回顾
本章中,兹就以往相关的研究作一摘述,并分析本研究与其相同与相异之处做一比较。
「新竹市公车动态信息系统功能更新及调度管理系统之开发」为交通部运输研究所与国立交通大学运输研究中心合作,于1998年8月发表之专题研究报告(Wu 98)。系统架构主要由四个部份组成,分别是安装于新竹客运市区公车的GPS讯号接收定位子系统、控制中心与基地及各车辆间的通讯子系统、位于新竹客运总公司的控制子系统、以及传送至民众家中与位于路旁站牌的信息显示子系统。卫星定位信息由公车接之后,经由公车上的无线电传至基地台(交大),而基地台所收到的定位信息分接成三路讯号,一路传到监视器上,一路经由数据专线传至新竹客运,这些定位信息在竹客加入排班信息(将公车车号转或公车路号)后再经由数据专线传至振道有线电视公司,然后再将讯号送至有线电视之客户端,而有关语音部分,无线电采双频方式,也就是声音与定位讯号分开传送,让控制中心人员可以与公车驾驶立即沟通而不影响定位信息的传送,而完整的系统架构图可由图2-1所示。
图2-1 新竹公车信息系统流程图
(图片来源「新竹市公车动态信息系统功能更新及调度管理系统之开发」,交通部运输研究所,1998年8月)
其它如交通部运输研究所于1998年10月所发表的「台北市示范性公车动态信息显示系统使用状况调查」等文献(Lin 98),系统架构大致上没有太大的差异,与本研究(图1-1)比较后,其系统架构图如图2-2所示:
图2-2 文献系统架构图
无线电系统适合用于短距离(如市区内)的传输上,但对于长距离的传输则无法配合,其无法双工的传输方式,对于多台的监控对象,无法同时传输资料,势必造成一定的困扰。另一方面,频道的申请有限且不易,亦有被香肠族盖台的风险,到至传出的资料错误或遗失。再者,文献中仅采用GPS传回的资料,因此仅能就位置、速度作控制,对于对象内较细微的行为模式则无从得知。
3. 系统架构
系统主要由三个部份所组成,分别为『动态对象系统』、『简讯系统』及『监控中心系统』(Silberschatz 95)。
图3-1 完整系统架构图
在图3-1中,系统由『动态对象系统』端之「Sensor System」取得侦测的资料,经「Data Processing System」处理并储存至「Database」中,同时,将资料送至「Dead Reckoning System」及「Critical Event System」中,判断是否将需资料送出,若是,则将资料经由GSM简讯的方式,传送至电信公司的「简讯系统中心」存放。此时,『监控中心系统』端的「Receiver」透过TCP/IP至「简讯系统中心」取回资料,储存并交付「Dead Reckoning System」与「Critical Event System」判断,然后与「Display System」结合(Devine 86),供使用者观看;若是紧急事件,则透过「Alert」,与系统管理者联络,兹就各部份做细部的介绍。
3.1 动态对象系统(Moveable System)
『动态对象系统』(MobileWorld 99)可分成「Sensor System」、「Data Processing System」、「Dead Reckoning System」、「Critical Event System」及「Transmission System」五个部份。
3.1.1 Sensor System
「Sensor System」的目的在于收集sensors所侦测到的资料,然后送到「Data Processing System」处理。其中,sensors包括「全球卫星定位系统(Global Position System, GPS)」(Huang 99, Williamson 99, Dunstan 95)及对象本身的种种变化值。举车子当对象为例,sensors会侦测GPS位置、车辆方向、车辆速度、踩油门(引擎转速)、煞车,甚至于打开车门、引擎温度、下雨否及安全气囊是否弹开等数据,然后送到「Data Processing System」处理。
3.1.2 Data Processing System
「Data Processing System」处理、计算并储存「Sensor System」所传送过来的资料,分别送交「Dead Reckoning System」与「Critical System」处理,判断是否需要传送资料,以通知「监控中心系统」的系统进行更新。
3.1.3 Dead Reckoning System
3.1.3.1 基本理论
如果实际移动位置,符合前一次的Dead Reckoning Algorithm计算所预测的资料,为了降低通讯的频宽,因此将不传送此笔资料,否则将传送此资料,并通知『监控中心系统』移动对象已经更改行为模式。换句话说,这必须由『动态对象系统』端及『监控中心系统』端双方面去仿真对象下一个单位时间的变化,如果下一单位时间内「对象的实际变化」与「仿真的结果」相符,则不用送出资料。举汽车移动如下图3-2,汽车直线前进由时速0 公里加速,第30 秒时速到达80 公里,第6分钟时减速,6分10秒时速为60 公里,6分50秒开始煞车,第7分钟时完全停止。
此时我们并不用使用定时传送资料的方法,而仅需采取【加速度】有变化的时候,送出「时间」、「速度」及「加速度」等资料。在车子激活时,送出车子的加速度资料,并交由『动态对象系统』端及『监控中心系统』端双方面去仿真,等到第30秒时车子开始定速(加速度为0),则再次送出资料,从第30 秒到第6 分钟间,车子维持在时速80 公里(加速度为0),则都不用送出资料。因此,我们所必须送出资料的时间为0 min, 30 sec, 6 min, 6 min 10 sec及6 min 50 sec。(依第6分50秒所送出的资料可仿真第7 分钟时车辆将停止,因此第七分钟时不用再送出资料)
图3-2 汽车移动范例(一)
为了避免长时间没有传送资料,因此可以订定一固定周期,不论是否有更改Read Reckoning Algorithm,皆将资料传送,通知『监控中心系统』,对象尚且存活着。如上例中制订此「固定周期为5 分钟」为例,其结果如图3-3,我们所必须送出资料的时间为0 min, 30 sec,5 min 30 sec, 6 min, 6 min 10 sec及6 min 50 sec。第5 min 30 sec时,必须送出资料,即使速度并未变化。
图3-3 汽车移动范例(二)
若我们由「Sensor System」及GPS中,能预测对象将进入某种特殊的环境(如汽车进入隧道),则我们可要求对象在特殊的情况下传回资料(如汽车进入隧道前);而特殊的环境可能造成在规定的时间内无法传回资料(如一汽车进入隧道要10 分钟后才会出来,而规定固定周期为5 分钟内传回一笔资料),也能加入特殊的条件(如仿真到这地方时,将周期视情况做延长)来避免错误的发生。
3.1.3.2 何时送资料(Ⅰ)
如果Dead Reckoning计算的结果,不符合前一次的Dead Reckoning Algorithm,我们将选择一条新的Read Reckoning Algorithm,通知『监控中心系统』对象已经更改行为模式。那何时需要传送呢?当实际位置与预测位置相差超过K公尺时,我们将数据送出,亦即
|实际位置 - 预测位置│> K(m)
此处的K值,我们可视实际的状况作调整,若我们想正确的掌握行车的状况,且硬件方面能够配合(如GPS所抓回的值是否够准确),可将此K值降到几百公尺,甚至于几十公尺;若我们只是想了解车辆大约的位置,并降低传输的频率,则此K值为几公里,甚至于几十公里。
Procedure Exceed_Range()
Comment:
Car_Real_Longitude_Situation : 车子真实的水平(经度)位置
Car_Real_Latitude_Situation : 车子真实的垂直(纬度)位置
Car_Simulated_Longitude_Situation : 车子仿真的水平(经度)位置
Car_Simulated_Latitude_Situation : 车子仿真的垂直(纬度)位置
Allowable_Range : 车子可容许的误差范围,即上面的K值
Meter2Grid : 将公尺数转成经纬度坐标(常数)
Send_Data() : 将资料送出
BEGIN
IF [(Car_Real_Longitude_Situation-Car_Simulated_Longitude_Situation)2 + (Car_Real_Latitude_Situation-Car_Simulated_Latitude_Situation)2]1/2 > Allowable_Range * Meter2Grid THEN
Send_Data()
ENDIF
END.
3.1.3.3 计算下一位置
首先,在「动态对象系统」与「监控中心系统」端分别有一张一模一样的窗体,我们称它「GPS&Location Table」,如表3-1所示,里面有经度、纬度、限速、位置等数据。
表3-1 GPS&Location Table
其中,Longitude与Latitude用于「Dead Reckoning System」、Limit Speed用于「Critical Event System」中判断超速的部分、Location则用于『监控中心系统』端的「Display System」。
一开始我们由车上的GPS,就能知道我们位于那个位置,例#Longitude=121’0.4419E、#Latitude=24’52.1545N就可知道车子位于#No.1与#No.2间,此处利用「差分法」便可知车子位置与两点间位置的关系,再由下一次GPS所传回的值,便可知车子正向那个方向移动。例如我们已知车子向#No.2方向移动,那我们仿真的方式便是向#No.2做修正,当我们超过了#No.2,可知现在的位置已不在#No.1与#No.2间,此时我们便可以改向#No.3前进。
Procedure Computed_Next_Situation()
Comment:
Car_Pre_Longitude_Situation : 判断GPS&Location Table中的上一个水平位置(经度)。
Car_Pre_Latitude_Situation : 判断GPS&Location Table中的上一个垂直位置(纬度) 。
Car_Post_Longitude_Situation : 判断GPS&Location Table中的下一个水平位置(经度)。
Car_Post_Latitude_Situation : 判断GPS&Location Table中的下一个垂直位置(纬度) 。
Car_Simulated_Longitude_Situation : 用来记录车子现在的水平位置(经度) 。
Car_Simulated_Latitude_Situation : 用来记录车子现在的垂直位置(纬度) 。
C1: Car_Post_Longitude_Situation > Car_Simulated_Longitude_Situation AND Car_Pre_Longitude_Situation > Car_Simulated_Longitude_Situation
C2: Car_Post_Longitude_Situation < Car_Simulated_Longitude_Situation AND Car_Pre_Longitude_Situation < Car_Simulated_Longitude_Situation
C3: Car_Post_Latitude_Situation > Car_Simulated_Latitude_Situation AND Car_Pre_Latitude_Situation > Car_Simulated_Latitude_Situation
C4: Car_Post_Latitude_Situation < Car_Simulated_Latitude_Situation AND Car_Pre_Latitude_Situation < Car_Simulated_Latitude_Situation
X : 计算现在位置与下一点位置的经度差。
Y : 计算现在位置与下一点位置的纬度差。
Meter2Grid : 将公尺数转成经纬度坐标(常数)。
Car_Speed : 车辆速度。
Car_Acceleration : 车辆加速度。
PreUpdateTime : 上一个位置(现在)之时间。
NextTime : 下一个位置的时间。
Distance : 现在至下一个时间内所走的距离。
因为使用经纬度坐标记录车辆的位置,因此我们必须将距离转换成经纬度的距离差,并分解成经度(水平分量)与纬度(重直分量)坐标。
BEGIN
IF C1 OR C2 OR C3 OR C4 THEN
{Comment: 此IF叙述在判断Car Simulated Situation是否已超过Car Post Situation ,若已超过则将Car Post Situation}
Car_Pre_Longitude_Situation = Car_Post_Longitude_Situation
Car_Pre_Latitude_Situation = Car_Post_Latitude_Situation
Car_Post_Longitude_Situation = Car_Post_Longitude_Situation的下一点
Car_Post_Latitude_Situation = Car_Post_Latitude_Situation的下一点
ENDIF
X = Car_Post_Longitude_Situation