您现在的位置:机电论文网>> 应用案例>> 正文内容

高等级公路收费与监控系统设计与软件实现

作者: 来源: 发布时间:2006/1/17 20:00:41  点击数:4325

论文摘要】详细论述了公路监控和收费系统的组成,在充分考虑系统的可靠性、可移植性和升级性基础上,建立了两级数据库系统,实现了基于Socket和Internet的公路监控收费系统,可适应于各种等级路、桥梁收费站,并可以与远程监控中心联网。


随着我国经济的快速发展,社会车辆日益增多,因此我国普遍实行贷款修路,收费还贷制度。原有的手工收费系统存在着许多弊端,而收费站的收费情况直接影响到还贷的能力和业主的经济利益。以计算机网络为基础的公路收费与监控系统,不仅最大限度地防止各种营私舞弊现象,有效制止收费过程中的漏征、作弊行为,并且大幅度提高普通公路收费过程和财务管理的自动化程度,提高工作效率和服务质量,为管理决策提供有力支持。
  但是目前目前运行的高等级公路监控收费系统的开放性、可靠性不高,对各种可能出现的问题考虑不周全,在实用暴露出很多问题或不能适应目前形势的发展,需要进一步完善和改进。为此,作者在参考已有系统的基础上,设计研制了一套较为全面的收费监控系统。
1 软件设计目标及技术要求
  通常在等级公路上的收费方式为人工判别车型,人工收费,计算机打票( 也可以按要求使用IC卡、 非接触卡等),并对收费数据进行统计管理;CCTV系统辅助监督的收费方式。
  考虑到收费站的实际情况(人员计算机水平低,灰尘大等特点),我们在软件的设计上注重软件的公正、精确、简便、可靠性;并能做到应征不漏,收费准确,可有效的防止员工的作弊行为,作到作弊可查,查必有据。在软件设计中注重了以下几个方面:
  1)可靠性:由于收费站存在的大量灰尘容易导致设备损坏或接触不良,因此本系统充分考虑到磁盘介质损坏可能对数据产生的影响和系统崩溃对数据产生的影响,建立了两级数据库---车道计算机数据库和服务器数据库。车道控制计算机首先将收费数据、设备状态、事故日志等数据信息存入本地硬盘上的数据库,再将其上传到服务器。当服务器或网络出现故障时,车道计算机可以独立工作,将收费数据等信息保存在本地数据库;待故障消除后,车道控制计算机调取故障时以及故障之后的数据,上传服务器,从而保证收费数据的完整性。

2)开放性:系统具备良好的开放性和兼容性,整个系统易于升级、易于维护。本系统车道数量可以灵活配置,适用于任意数量车道的收费站系统。便于联网,组建省地级监控中心。
  3)高效性:保证车辆通过收费车道的高效率和业务快速处理的能力。对于车道控制计算机众多外围设备自动控制,减轻了收费人员负担,提高了工作效率。
  基于以上思想,我们采用C++ Builder作为开发工具,SQL Server 7.0作为服务器数据库,车道控制计算机数据库采用C++ Builder自带的Paradox。
2 系统的组成及主要功能
收费监控系统主要由收费计算机系统、CCTV监视系统、内部对讲系统和辅助系统等子系统组成。下面分别描述各个子系统的主要功能。
2.1 闭路监视系统
  闭路监视系统是相对独立的系统,只是和收费系统存在某些关联(如收费数据叠加、抓拍、硬盘录象等)。整个闭路监视系统可以划分收费亭监视、车道监视、广场监视等几个部分。
2.2 辅助系统
  辅助系统是指确保收费系统正常运行的配套系统,包括内部对讲、电力供给、设备保护等多个方面。
2.3 收费系统
  收费系统基本上包括车道收费控制系统、收费站管理系统两大部分,其拓扑结构如图1所示。

 


图1 收费系统拓扑结构原理图

  收费站计算机与车道计算机组成局域网,采用客户机/服务器模式。根据车道到收费站的距离远近,车道和收费站之间采用光纤或双绞线连接。
2.3.1 车道收费子系统
  车道收费子系统是整个收费的前端,如图2所示。主要包括车道计算机、交通控制等设备,通过车道收费控制软件,实现这些设备有机的整合。具有安全管理、车型判断、收费管理、设备控制(车道灯、挡车器、测流线圈、金额显示、语音报价、字符叠加)、设备状态检测、数据传输控制、数据存储等功能。能够快速、准确地完成各种收费业务,杜绝收费过程的舞弊行为,同时保证车辆的通行高效率。

 


图2 停车收费车道设备布置原理图

  车道收费系统按照收费工作逻辑流程,集中控制所有的车道设备。车辆到来时,车道控制机接受收费员的操作,显示收费金额,并进行语音报价,同时通过字符叠加卡将金额叠加到监视图像上供监控人员参考;收费完成后,挡车器升起,车辆通行;车辆通过测流线圈后,栏杆自动放下。对免费车、月票车及特殊情况自动抓拍图像,并将图像数据上传到站服务器。

车道收费系统采用基于Socket的数据传输技术,能够动态监测网络通信的工作状态,使车道收费系统的运行具有很强的独立性,实现网络工作环境和单机工作环境的动态切换。切换过程对操作人员是隐含的,不会影响车道收费系统的正常运行,保证车道的最大工作效率。当管理站计算机系统出现故障或车道和收费站之间通信线路出现故障时,车道收费系统可以立即检测到故障的出现,停止数据上传,将收费数据储存在车道计算机;当故障排除后,车道收费系统可以自动恢复数据上传。
2.3.2 服务器
  服务器主要进行数据的存储和收费数据处理:在数据库中编制触发器和预定义存储过程,当收费数据写入数据库或者对数据进行修改、删除时,数据库的触发器会自动更新有关统计数据(如日收费统计、班收费统计、车型分类收费统计、收费员收费统计等),从而保证收费数据的完整性和一致性。
2.3.3 通信机
  我们借鉴了软件工程中Agent的概念,在服务器和车道控制计算机之间建立一个“代理”层,该软件可以运行在任意一台的计算机上,即通信机。根据收费站的规模,也可以运行在数据库服务器或管理计算机中。
  车道计算机、通信机之间通过传输层协议连接。传输层有两种通信协议:TCP/IP和UDP。 采用TCP通信时,通信双方需建立连接,通信过程中有应答和重发机制来保证所有通信数据都正确到达。采用UDP通信时,不需要建立连接,也没有应答帧,而且可以广播发送,实时性较高,但缺点是发送方不能确认通信数据是否正确到达目的地。因此,我们必须根据具体要传输的信息来采用相应的传输方式。 在本系统中,实时性不是主要因素,所以我们采用TCP/IP协议来保证数据的可靠到达。
  通信机的主要功能是数据库的操作、数据的传输控制及应答,即:
  a、通信机通过ADO(或ODBC)和服务器数据库相连接,进行收费数据的数据库写入工作。
  b、接收车道计算机收费人员登录信息包和收费流水数据,并将其写入收费数据库中,并返回相应应答信息。
  c、通信线路故障后,计算机自动记录,并向管理人员报警提示,人工排除故障,系统恢复后,自动从收费车道计算机调取数据,保证数据的完整性。这样基于TCP/IP协议建立了多层分布式数据库的软连接。
  d、代理可以迁移到系统任意一台计算机中, 自动将新IP地址发布到各个车道的计算机。
  当收费车道与收费站之间出现长时间的通信故障时,可以通过车道收费软件提供的数据导出功能将车道数据库中的收费数据写入软件盘后,在管理站将数据导入数据库中。
2.3.4收费管理系统
  收费站管理系统具有收费监视、收费工班管理、用户管理、收费数据管理、系统维护、站点管理、报表打印等功能。
3 系统软件实现
  本系统是在按照面对对象,基于组件、数据库开发的,拥有全面的错误捕捉和异常处理机制,因此具有更好的稳定性和可扩展性。
3.1 收费计算机和通信机
  在收费计算机和通信机之间,我们采用了TCP/IP协议,TCP建立连接时采用客户/服务器模式,主动发起连接的进程叫做客户,被动等待连接建立的进程叫做服务器。在本系统中,收费计算机做为发起连接方,成为客户,通信机为服务器。
3.1.1 动态组件
  TCP是面向连接的,因而可提供可靠的、按序传送数据的服务,它提供双向的的连接,即全双工。在收费站,由于环境恶劣,可能会网络故障导致TCP连接中断,或由于通信机维护中断连接。为了故障消除后能自动恢复TCP连接,减少监控人员维护量,采用了动态组件技术,自动检测连接的状态,并给监控人员一定提示。
if( Client->Active == false)
//定义为 TClientSocket * Client
{ HW_SENDTIME++;
if(HW_SENDTIME%20 == 0)
//每隔一段时间尝试重新连接
{ HW_SENDTIME = 0;
Client->Close();
delete Client; Client = NULL;
Client = new TClientSocket(this); //新建组件
Client->ClientType = ctNonBlocking;
Client->Address = sIpaddr; //通信机IP地址
Client->Port = atoi(sPort); //通信机端口号
Client->OnDisconnect = ClientDisconnect;
//映射Disconnect事件
Client->OnRead = ClientRead;
//映射Read事件
Client->OnError = ClientError;
// 映射错误处理事件
try{
Client->Open();
}
catch(...){
Client->Close();
}
} }
else{ ………; } //网络连通,上传数据
  通过动态TClientSocket组件的建立,网络连通和中断切换过程对操作人员是隐含的。不会影响车道收费系统的正常运行,网络正常后自动恢复上传数据功能,保证了车道的最大工作效率。
3.1.2 TCP报文的构成
  应用层的报文传送到运输层,加上TCP的首部,构成了TCP的数据传送单位,称为报文段。在发送时,TCP的报文段作为IP数据报的数据,加上首部后,成为IP数据报。在接收时,IP数据报将其首部去除后交给运输层,得到TCP报文段。再去掉其首部,得到应用层所需的报文。
  一个TCP报文问为首部和数据两部分,TCP报文段首部的前20个字节是固定的,后面有4N字节是可有可无的选项,因此TCP首部的最小长度是20字节,加上IP数据报的首部后至少有40个字节。如果TCP的数据段只有一个字节,那么网络的利用率就不会超过1/41。反之,如果TCP报文段非常长,那么在IP层传输时就可能要分解成多个短数据报片,在目的站还要将收到的各个数据报短片装配成原来的TCP报文段,加上出错时还要重传,加大了系统开销。一般认为,数据段应尽可能大些,只要在IP层不再分片就行。TCP缺省的数据段长度是536字节,因此我们在发送TCP报文时,要控制数据长度在这个范围之内,同时包含尽可能多的信息。比如我们在收费流水数据包中包含车道设备状态字节,这样我们就可以在监控室了解设备运行状态。

在本系统中,存在着多种数据包,如收费人员登录、收费流水、收费标准、通信机转移等。为此我们定义了多种数据类型。
  我们定义的TCP报文的数据段由两部分构成,报头(TPACKETHEAD)和数据(PacketData)。报头是格式是固定的,用PacketType来区分不同的包类型。其定义如下:
//Packet = PACKETHEAD+ PacketData
typedef struct
{ char tag[2]; //version 0x453b
int PacketLen; //包长
char PacketType; //包类型
int trytimes; //重传次数
char sIpaddr[20]; //通信机地址
char sRet[2];
//标志,OK通信机写入数据库成功、ER写入失败
}TPACKETHEAD;
  这里以收费流水数据为例,说明PacketData结构。
typedef struct //流水帐数据结构
{ char LSH[13]; //流水帐号
char CXDM[3]; //车型代码
int je; //金额
char FJDW[11]; //车辆吨位
char SKRQ[20]; //收款日期
char SKSJ[20]; //收款时间
char GH[11]; //工号
char SKY[21]; //收款员
char CDH[4]; //车道号
char BH[2]; //班号
int CG; //冲岗标记
int MF; //免费标记
int YP; //月票标记
char TICKETNO[9]; //票据号
char devicestate; //设备状态
}TLsz;
3.1.3 数据包的抽象
  面对对象程序设计的本质是把数据和处理数据的过程当成一个整体——对象。C++本身就是面对对象的语言,能将各种数学模型封装成对象,因此具有更好的稳定性和扩展性。在本系统的实现过程中,由于存在着多种数据包,为此,我们抽象出数据包的基本共性,形成数据包的基类TpacketBase。
class TPacketBase
{ private:
TPACKETHEAD * pHead;
char *pBuf; //发送缓冲区
public:
int Sendpdate (void); //发送数据包
int Readpdate (void); //接收数据包
int pTypeExcute (int pType);
//按pType类型执行相关工作
};
  各数据包类以此为基类,实现数据包的发送和接收工作,并扩充了自己的成员变量和成员函数。以流水帐数据包为例。
Class Tlszpak : public TpacketBase
{private:
TLsz lsz;
public:
int Getlocaldate (void); //取本地数据
int Fillpacket (void); //填充数据报
};
  其他类型的数据包,如登录、收费标准等的实现与流水帐数据包类似。
3.2 管理工作站
  随着Internet的普及、城域网和广域网的发展,对监控提出了更多的要求。目前要求建立地区监控中心或者省级远程监控中心,由于各个收费站监控收费系统承包商的开发语言各不相同,基于商业利益的考虑又不会开放源代码,对监控中心的管理带来麻烦。因此,解决问题的最佳途径,就是遵循“开放系统”最大限度保护用户原有硬软件投资的原则,走开放系统结构(OSA)。即新上的项目一定要符合OSA标准;原有的项目,通过转换或改造接入开放系统。
对于管理工作站的软件,我们建立了基于INTERNET收费管理系统,采用C++Builder的ActiveForm技术开发,给本地监控和远程管理带来许多鲜明的特点和优点,其软件模块划分如图3所示。

图3
图3 收费管理软件模块划分

  这种方式的主要优点是:同时可以在一台客户机上完成多种客户机的功能;界面统一,使用和培训相对容易便于实现多个收费站的统一管理;采用INTERNET浏览器操作方式,自动下载最新版本,便于升级。
4 结束语
  本文论述了高等级公路监控和收费系统的组成、软件开发和实现方法。整个系统涉及到测控技术、计算机网络技术和数据库技术,充分考虑了系统的可靠性、可移植性和升级性,建立了基于Socket和Internet的公路监控收费系统,可适应于各种等级路、桥梁收费站,并可以与远程监控中心联网。本系统已经成功应用于多个收费站,取得了良好的效果。

参考文献:

1 谢希仁. 计算机网络[M]. 电子工业出版社,1999
2 刘华,等. Borland C++ Builder 程序设计[M] . 清华大学出版社,2001
3 王小华、刘美林 高速公路监控系统设计与实现.工业控制计算机[J],2002(10) 

更多
字体:【】-【】-【】【关闭此页

上一篇:全自动瓦楞纸板贴面机质量控制要点'   下一篇:利用IEC61131-3和PLCop'


特别声明:机电之家(http://www.jdzj.com )所共享的机电类资料,机电论文、机电类文章、机电企业类管理制度、机电类软件都来自网上收集,其版权归作者本人所有,如果有任何侵犯您权益的地方,请联系我们,我们将马上进行处理。购买的论文都出自原创,保证作者的原创的版权的转让,任何纠纷由法律解决。