高速公路收费系统设计与实现
第1章绪论
1.1高速公路收费系统概述
高速公路收费系统实现了半自动和ETC两种收费方式,可选用IC卡、磁票、二维条卡作为通行券,支持现金、预付卡、储值卡等支付方式;各级可以实现监控下级的操作异常事件;实时监测出入口车道的设备状态;各级系统可以自动统计交通量、通告量曲线图;实现了对路费、通行券、票据、设备等的严格管理,杜绝舞弊行为;提供独特的专家分析系统等。系统组成:·系统采用先进的C/S三层体系·通过广域网实现各级间互联软件特点:·符合我国现有国情·适用范围广·开放的收费系统·可定义的业务流程·友好的人机界面·安全可靠的性能高速公路收费系统系统概述:高速公路收费系统实现了半自动和ETC两种收费方式,可选用IC卡、磁票、二维条卡作为通行券,支持现金、预付卡、储值卡等支付方式;各级可以实现监控下级的操作异常事件;实时监测出入口车道的设备状态;各级系统可以自动统计交通量、通告量曲线图;实现了对路费、通行券、票据、设备等的严格管理,杜绝舞弊行为;提供独特的专家分析系统等。
1.2数据传输系统开发的背景
随着我国经济的快速发展,社会车辆日益增多,因此我国普遍实行贷款修路,收费还贷制度。原有的手工收费系统存在着许多弊端,而收费站的收费情况直接影响到还贷的能力和业主的经济利益。以计算机网络为基础的公路收费与监控系统,不仅最大限度地防止各种营私舞弊现象,有效制止收费过程中的漏征、作弊行为,并且大幅度提高普通公路收费过程和财务管理的自动化程度,提高工作效率和服务质量,为管理决策提供有力支持。但是目前运行的高等级公路监控收费系统的开放性、可靠性不高,对各种可能出现的问题考虑不周全,在实用暴露出很多问题或不能适应目前形势的发展,需要进一步完善和改进。为此,我在参考已有系统的基础上,设计研制了一套较为全面的收费监控系统。
1.3数据传输系统设计的目标
通常在等级公路上的收费方式为人工判别车型,人工收费,计算机打票(也可以按要求使用IC卡、非接触卡等),并对收费数据进行统计管理;CCTV系统辅助监督的收费方式。考虑到收费站的实际情况(人员计算机水平低,灰尘大等特点),我们在软件的设计上注重软件的公正、精确、简便、可靠性;并能做到应征不漏,收费准确,可有效的防止员工的作弊行为,作到作弊可查,查必有据。在软件设计中注重了以下几个方面:
1)可靠性:由于收费站存在的大量灰尘容易导致设备损坏或接触不良,因此本系统充分考虑到磁盘介质损坏可能对数据产生的影响和系统崩溃对数据产生的影响,建立了两级数据库---车道计算机数据库和服务器数据库。车道控制计算机首先将收费数据、设备状态、事故日志等数据信息存入本地硬盘上的数据库,再将其上传到服务器。当服务器或网络出现故障时,车道计算机可以独立工作,将收费数据等信息保存在本地数据库;待故障消除后,车道控制计算机调取故障时以及故障之后的数据,上传服务器,从而保证收费数据的完整性。
2)开放性:系统具备良好的开放性和兼容性,整个系统易于升级、易于维护。本系统车道数量可以灵活配置,适用于任意数量车道的收费站系统。便于联网,组建省地级监控中心。
3)高效性:保证车辆通过收费车道的高效率和业务快速处理的能力。对于车道控制计算机众多外围设备自动控制,减轻了收费人员负担,提高了工作效率。
基于以上思想,我们采用C++Builder作为开发工具,SQLServer7.0作为服务器数据库,车道控制计算机数据库采用C++Builder自带的Paradox。
第2章系统的组成及主要功能
收费监控系统主要由收费计算机系统、CCTV监视系统、内部对讲系统和辅助系统等子系统组成。下面分别描述各个子系统的主要功能。
2.1闭路监视系统
闭路监视系统是相对独立的系统,只是和收费系统存在某些关联(如收费数据叠加、抓拍、硬盘录象等)。整个闭路监视系统可以划分收费亭监视、车道监视、广场监视等几个部分。
2.2辅助系统
辅助系统是指确保收费系统正常运行的配套系统,包括内部对讲、电力供给、设备保护等多个方面。
2.3收费系统
收费系统基本上包括车道收费控制系统、收费站管理系统两大部分,其拓扑结构如图1所示。
收费站计算机与车道计算机组成局域网,采用客户机/服务器模式。根据车道到收费站的距离远近,车道和收费站之间采用光纤或双绞线连接。
2.3.1车道收费子系统
车道收费子系统是整个收费的前端,如图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章数据库应用
数据库系统的组成、全局结构和数据存取结构。
数据库系统体系结构。简要讨论集中式和客户机-服务器(C/S)结构的数据库系统体系结构,本书专门讨论这两种结构的数据库应用系统实现实例。
数据库应用系统的简单结构、数据库引擎、开发数据库应用系统所需的技术背景和开发任务以及开发数据库应用系统需要考虑的问题。
3.1数据库系统的组成和全局结构
数据库系统(databasesystem,DBS)是采用了数据库技术的计算机系统。DBS是以信息处理为核心的计算机系统,信息的存取是系统工作的枢纽,它是一个可运行的,按照数据库技术存储、维护和向应用系统提供数据支持的系统,是由数据库、硬件、软件和数据库用户组成的有机集合体。
3.1.1数据库系统的组成
任何数据库系统都由数据库(DB)、硬件、软件和数据库用户组成。
数据库是与企业具体的业务应用有关的全部数据的集合。从数据库的用途来看,数据库可分为以下两类:
物理数据库物理数据库是业务应用数据的集合,是业务应用数据库的主体。
描述数据库描述数据库又可称为数据字典或元数据库,用来描述和存储各业务应用数据库的数据结构及其定义。
硬件包括中央处理器、内存、外存、输入输出(I/O)设备等硬件设备。数据库系统特别关注内存、外存、I/O存取速度、可支持的终端数、性能稳定性、网络的支持能力、存储设备的扩充能力以及数据存取通道的能力等。不同的数据库系统对硬件的要求不同,应根据具体应用选择适当的硬件设备。
软件包括数据库管理系统(DBMS)、操作系统(OS)、数据库引擎和应用开发支撑环境等程序。DBMS是DBS的核心,需要在OS的支持下才能工作。数据库引擎是数据库应用程序和数据库交互的中间驱动程序。应用程序是数据库终端用户用来实现业务的操作界面,是提高生产效率必不可少的程序。应用开发支撑环境是数据库应用程序开发者能够以低成本、高效率开发出数据库应用程序的高效、多功能、集成的交互式程序设计系统。目前,典型的数据库应用开发环境有Delphi、C++Builder、PowerBuilder、VisualBasic、VisualC++、JBuilder、C#Builder以及.NET开发环境等。
数据库用户就是与DBS交互的用户,按照与系统交互方式的不同,可分为如下4类:
数据库管理员(DBA):负责定义和修改数据库结构,负责DBS的正常运行,承担创建、监控和维护数据库的责任。
专业用户:数据库设计过程中使用专用的数据库查询语言操作数据的数据库设计专业人士,例如系统分析员。
应用程序员:使用应用开发环境和数据操作语言开发应用程序的程序员。
终端用户:使用应用程序完成具体业务应用工作的人员。通常又将这类用户称为“软件最终用户”。
3.1.2数据库系统的全局结构
从数据库系统的组成来考虑各组成模块之间的关系,数据库系统全局结构如图?3-1
3.1.3DBMS的工作模式和用户存取数据的过程
DBMS是DBS中对数据进行管理的软件系统,是DBS的核心组成部分。在DBS中对数据库的一切操作(数据定义、查询、更新和各种控制)都是通过DBMS进行的。DBMS的工作模式如图3-2所示。
图3-3是用户存取数据库的示意图。用户对数据库进行操作是由DBMS把操作请求从应用程序带到外模式、模式、内模式,进而通过OS操作磁盘中的数据。同时,DBMS为应用程序的请求在内存中开辟一个数据库的系统缓冲区,用于数据传输和格式转换。
3.2数据库系统体系结构
根据计算机的系统结构,DBS可分为集中式、客户机-服务器式、并行式和分布式4种。本章重点讨论集中式和客户机-服务器式数据库应用系统的开发技术。
3.2.1集中式DBS
集中式DBS运行在单个计算机系统中,与其他计算机系统没有联系。通常也将集中式DBS称为单机DBS。集中式DBS中的数据库、DBMS和应用程序等组成部分都运行在一个计算机系统中,不同机器之间不能共享数据。
计算机系统有单用户系统和多用户系统两种,因此,可将集中式DBS分为单用户和主从式两种类型。微型计算机和工作站都属于单用户系统,单用户集中式DBS的结构如图3-4所示。通常说的桌面DBS是单用户DBS的典型应用模式。单用户DBS由一个用户独占使用,无数据共享能力。
图3-4单用户集中式DBS
主从式结构是指一个主机带多个终端的多用户结构。在这种结构的DBS中,应用程序、DBMS、数据库等都集中存放在主机上,所有任务都由主机来完成,各个用户通过主机的终端并发地存取数据库,共享数据资源。主从集中式DBS的结构如图1-5所示。主从式结构的优点是简单,数据易于管理和维护。缺点是能够支持的终端数目有限,由于所有任务都由主机完成,主机的性能是DBS的瓶颈。
应用较为广泛的集中式数据库管理系统有Paradox、dBASE、Access、VisualFoxPro等。集中式DBS的应用目前主要是在小型数据管理和信息处理业务中。本书将讨论基于Paradox的数据库应用系统项目的开发实例。
3.2.2客户机-服务器结构DBS
客户机-服务器结构DBS通常简写为C/S结构DBS。C/S结构DBS是随着计算机网络技术的发展和应用产生的。C/S结构的关键在于功能的分布,DBS的一些功能在客户端(前端)执行,另一些功能在服务器端(后端)执行。C/S结构DBS的体系结构如图3-6所示。在C/S结构DBS中,服务器专门用来执行DBMS功能、管理数据库以及完成分配在后端的功能。应用程序和应用开发工具等则安装在客户机上,支持用户的应用。服务器和客户机之间通过网络连接,并通过数据库引擎接口实现相互之间的通信。
在C/S结构中,客户端的用户请求被传送到数据库服务器,数据库服务器进行处理后只将结果返回给用户,从而减少了网络上的数据传输量,提高了系统性能、吞吐量和负载能力。同时,C/S结构的DBS具有更多的开放性、可扩展性和可移植性,能够跨平台运行。
通常将C/S结构的DBS称为两层结构的C/S系统。如果在客户端和数据库服务器之间增加应用服务器(或其他中间服务程序),则两层C/S结构演化成多层的C/S结构,例如B/S结
构的DBS就是典型的三层C/S结构。
C/S结构DBS是目前应用比较广泛的DBS类型之一。应用较为广泛的C/S结构数据库管理系统有Oracle、DB2、Sybase、MSSQLServer等,这些数据库管理系统都能够支持大型的数据应用业务。本书将讨论基于MSSQLServer的两层C/S结构数据库应用系统项目的开发实例。
3.3开发数据库应用系统
以数据库为基础的信息系统通常称为数据库应用系统,它一般具有信息采集、加工、抽取和传播等功能,是实现业务应用的数据库系统。开发数据库应用系统需要对其基本结构、所需的技术背景、开发任务和需要考虑的问题有所了解。
3.3.1数据库应用系统的简单结构
如果抛开DBS中的硬件和操作系统组成部件,就可以采用如图3-7所示的简单结构描述数据库应用系统。从图3-7中可以看出,数据库应用系统由应用程序端、中间件和数据库端三部分组成。
图3-7数据库应用系统的简单结构
中间件通常由数据库管理系统或应用程序开发环境提供商提供给开发用户使用。中间件是应用程序和数据库之间进行交流的必需通道。设计数据库应用系统时,不需要自己编写,但必须要了解中间驱动的运作原理和使用方法。数据库应用系统中采用的数据库类型和开发环境不同,可使用的中间驱动也可能不同。
如果数据库应用系统使用服务器类型的数据库,应用程序必须要通过数据库服务器(数据库管理系统)才能存取数据库。如果使用的是文件类型的数据库,应用程序可直接存取数据库。数据库服务器由专门的数据库管理系统提供商提供,设计数据库系统时,不需要自己编写,但必须要了解数据库管理系统的运作原理及其提供的数据库开发能力。数据库的设计和实现是开发数据库应用系统的核心工作。
不同的数据库应用系统由于其业务要求和运行环境不同,用于存取和管理数据库中存储的信息的应用程序也不同,这是终端用户使用数据库应用系统必不可少的操作界面。如果数据库应用系统离开了应用程序,终端用户无法直接操作数据库,完成信息管理工作。
3.3.2数据库引擎
数据库引擎是数据库应用程序与数据库(或数据库服务器)进行交互的接口,负责提交、处理数据库访问请求并返回处理结果。通常,数据库应用程序开发环境都会提供相应的数据库引擎及其开发组件,也可以这样说,在客户端,数据库引擎是由一系列用于进行数据库访问的数据结构和基于这些数据结构的方法(或函数库)组成。
从服务器端响应和处理数据库请求的方式来看数据库引擎有两种基本的体系结构,分别是多进程数据库引擎(见图3-8)和单进程多线程数据库引擎(见图3-9)。
图3-8多进程数据库引擎运行结构图
图3-9单进程多线程数据库引擎运行结构图
单进程多线程数据库引擎。这种数据库引擎的优点是:占用资源比较少,成本低,在比较低的配置下也能发挥较好的性能。其特征是:在一个处理进程内创建多个线程来响应多个数据库访问请求。具备比较好的可移植性,但低配置不能支持太多用户数。单进程多线程数据库引擎的代表是SQLServer2000。
3.3.3开发数据库应用系统的技术背景和任务
从DBS的组成、体系结构和数据库应用系统简单结构的讨论可知,开发数据库应用系统需要有如下一些技术背景:
应掌握数据库设计的基本理论知识,了解数据库系统的体系结构、数据库的分析建模技术、数据库的体系结构、完整性约束和数据库规范理论等。
应掌握一种桌面数据库和服务器数据库管理系统的应用技术,了解数据库管理系统提供的数据库管理和设计支持能力。
熟悉一种能够支持数据库应用程序开发的开发环境,包括相应的程序设计语言、数据结构、算法分析和应用程序架构技术等知识。
了解开发环境提供的数据库存取技术和所提供的数据库引擎。
了解软件设计和开发过程的一些基本知识,如个体软件过程、团队软件过程和软件工程等。了解应用程序的分发技术和分发工具,即如何制作应用程序的安装程序以及如何在用户环境中实施数据库应用系统。
开发数据库应用系统的任务是:充分利用上述基础知识和技能,设计实现业务要求的数据库,设计终端用户操作数据库数据的应用程序,在用户环境中实施数据库应用系统以供用户完成业务工作,提高用户的生产率。
3.3.4开发数据库应用系统需要考虑的问题
开发数据库应用系统和开发其他应用系统一样,需要根据用户的业务需求确定数据库应用系统的运行环境和开发环境等。从技术角度看,通常,开发数据库应用系统需要考虑以下问题。a.确定数据库应用系统的运行环境,选择合适的DBS体系结构
开发数据库应用系统的首要问题是根据业务要求确定数据库应用系统的运行环境,选择合适的DBS体系结构。如果用户只需要在单机上工作,且需要管理的数据量很小,则应选择单用户结构的数据库应用系统;如果用户的业务需要在局域网环境中同时由不同工作人员完成,则应选择C/S结构的数据库应用系统;如果业务需要在远程机器上完成,则可能需要选择B/S结构的数据库应用系统。
选择不同的体系结构将决定后续的数据库应用系统开发问题,如确定系统开发环境等。同时,开发不同体系结构的应用系统,其开发技术复杂度也不一样,实现的技术也有所不同。b.基于数据库应用系统的运行环境和体系结构确定数据库
所有数据库都提供了存储和检索信息的能力,但不同数据库提供的附加功能则有所不同,主要表现在以下方面:
不同数据库提供的数据安全保证机制不同。
有的数据库基于文件锁定机制保证多用户并发操作,有的数据库则采用事务并发控制机制,后者比前者效率高很多,占用的资源也相对较大。
不同的数据库描述数据字典(或元数据)的技术不同,提供的数据字典获取和管理技术也不同。
不同数据库对数据完整性的保证措施和程度不同。有的数据库只能保证基本的实体完整性约
束(主码)和参照完整性约束,而有的数据库则能够提供较全面的完整性保证技术。
根据不同DBS体系结构中应用程序存取数据库的方式,数据库可分为本地数据库和远程数据库两种类型。集中式数据库应用系统使用本地数据库,而C/S结构的数据库应用系统则需要使用远程数据库服务器。本地数据库的典型代表是Paradox、dBASE、VisualFoxPro和Access等。远程数据库服务器的典型代表是Oracle、DB2、Sybase、MSSQLServer等。选择数据库时需要考虑数据库将要存储的数据量、存取数据库的最大用户数和数据库的效率要求这些问题。就存储量而言,本地数据库的存储量比远程数据库服务器小很多。就多用户问题而言,本地数据库也能够支持多用户同时存取数据库,但采用基于文件的锁定技术来控制并发操作;远程数据库服务器是专为多用户并发存取数据库而设计的,采用基于事务的技术控制并发操作,因而提供了更为复杂的多用户支持。就数据处理能力而言,远程数据库服务器的能力比本地数据库强大很多。
同时,选择数据库时还应考虑用户是否有移植数据库的需求。如果需要移植数据库,则开发时需要牺牲部分高效的SQL功能以获得最佳的移植方式,例如遵循不同数据库公用的SQL集进行SQL程序开发等。
第4章系统软件实现
本系统是在按照面对对象,基于组件、数据库开发的,拥有全面的错误捕捉和异常处理机制,因此具有更好的稳定性和可扩展性。
4.1收费计算机和通信机
在收费计算机和通信机之间,我们采用了TCP/IP协议,TCP建立连接时采用客户/服务器模式,主动发起连接的进程叫做客户,被动等待连接建立的进程叫做服务器。在本系统中,
收费计算机做为发起连接方,成为客户,通信机为服务器。
4.1.1动态组件
TCP是面向连接的,因而可提供可靠的、按序传送数据的服务,它提供双向的的连接,即全双工。在收费站,由于环境恶劣,可能会网络故障导致TCP连接中断,或由于通信机维护中断连接。为了故障消除后能自动恢复TCP连接,减少监控人员维护量,采用了动态组件技术,自动检测连接的状态,并给监控人员一定提示。
if(Client->Active==false)
//定义为TClientSocket*Client
{HW_SENDTIME++;
if(HW_SENDTIME%20==0)
//每隔一段时间尝试重新连接
{HW_SENDTIME=0;
Client->Close();
deleteClient;Client=NULL;
Client=newTClientSocket(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组件的建立,网络连通和中断切换过程对操作人员是隐含的。不会影响车道收费系统的正常运行,网络正常后自动恢复上传数据功能,保证了车道的最大工作效率。
4.1.2TCP报文的构成
应用层的报文传送到运输层,加上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+PacketDatatypedefstruct
{chartag[2];//version0x453bintPacketLen;//包长
charPacketType;//包类型inttrytimes;//重传次数
charsIpaddr[20];//通信机地址charsRet[2];
//标志,OK通信机写入数据库成功、ER写入失败}TPACKETHEAD;
这里以收费流水数据为例,说明PacketData结构。typedefstruct//流水帐数据结构{charLSH[13];//流水帐号charCXDM[3];//车型代码intje;//金额
charFJDW[11];//车辆吨位charSKRQ[20];//收款日期charSKSJ[20];//收款时间charGH[11];//工号charSKY[21];//收款员charCDH[4];//车道号charBH[2];//班号intCG;//冲岗标记intMF;//免费标记intYP;//月票标记
charTICKETNO[9];//票据号chardevicestate;//设备状态}TLsz;
4.1.3数据包的抽象
面对对象程序设计的本质是把数据和处理数据的过程当成一个整体——对象。C++本身就是面对对象的语言,能将各种数学模型封装成对象,因此具有更好的稳定性和扩展性。在本系统的实现过程中,由于存在着多种数据包,为此,我们抽象出数据包的基本共性,形成数据包的基类TpacketBase。
classTPacketBase{private:
TPACKETHEAD*pHead;char*pBuf;//发送缓冲区public:
intSendpdate(void);//发送数据包intReadpdate(void);//接收数据包intpTypeExcute(intpType);//按pType类型执行相关工作};
各数据包类以此为基类,实现数据包的发送和接收工作,并扩充了自己的成员变量和成员函数。以流水帐数据包为例。
ClassTlszpak:publicTpacketBase{private:TLszlsz;public:
intGetlocaldate(void);//取本地数据intFillpacket(void);//填充数据报};
其他类型的数据包,如登录、收费标准等的实现与流水帐数据包类似。4.2管理工作站
随着Internet的普及、城域网和广域网的发展,对监控提出了更多的要求。目前要求建立地区监控中心或者省级远程监控中心,由于各个收费站监控收费系统承包商的开发语言各不相同,基于商业利益的考虑又不会开放源代码,对监控中心的管理带来麻烦。因此,解决问题的最佳途径,就是遵循“开放系统”最大限度保护用户原有硬软件投资的原则,走开放系统结构(OSA)。即新上的项目一定要符合OSA标准;原有的项目,通过转换或改造接入开放系统。
对于管理工作站的软件,我们建立了基于INTERNET收费管理系统,采用C++Builder的ActiveForm技术开发,给本地监控和远程管理带来许多鲜明的特点和优点,其软件模块划分如图3所示。
这种方式的主要优点是:同时可以在一台客户机上完成多种客户机的功能;界面统一,
使用和培训相对容易便于实现多个收费站的统一管理;采用INTERNET浏览器操作方式,自动下载最新版本,便于升级。a.收费监视
本系统运行于图像处理工作站上。工作站的显示器配置于操作台上,用于监视和显示车道设备工作状况以及收费员操作情况。系统主要功能如下:1)动态实时显示收费车道状态,其中包括:l收费员姓名l车道号l天棚信号状态(红色“×”或绿色“↓”)l通行灯状态l自动栏杆机的状态l收费员判定的车型车类l通信线路正常/故障2)显示最近抓拍的车道特殊处理图像。3)接收矩阵的输出,实时显示摄像机采集的一路视频信号。4)任意摄像机间的切换和广场摄像机的变倍变焦操作。5)图像查询打印功能l随时来查询车道软件所捕获的所有图像。可以输入的条件有:时间如年月日,地点如车道,人员如收费员,或者是以上条件的组合l打印图像。查到所需图像以后,可以打印。b.数据查询
1)入口车道过车记录查询l以卡编号为关键字查询l以入口车道编号为关键字查询l以时间段为关键字查询l以收费员编号为关键字查询l以收费员班次为关键字查询l以卡编号为关键字查询l以车型为关键字查询l以费额为关键字查询l以上条件之间的相互组合为关键字查询2)出口车道过车记录查询l以卡编号为关键字查询l以出口车道编号为关键字查询l以时间段为关键字查询l以收费员编号为关键字查询l以收费员班次为关键字查询l以卡编号为关键字查询l以车型为关键字查询l以费额为关键字查询l以上条件之间的相互组合为关键字查询c.统计报表打印预览及打印模块包括以下统计报表:l高速公路收费员班次报表(入口)
l高速公路收费员当班特殊处理明细表(入口)l高速公路收费员当班明细表(入口)l高速公路收费员当班特殊处理明细表(入口)l高速公路收费员当班明细表(出口)l高速公路收费站班次汇总表(入口)l高速公路收费站班次汇总表(出口)l高速公路收费站通行费收入日报表l高速公路收费站通行费收入月报表l高速公路收费站通行费收入年报表l高速公路收费站入口车道特殊处理明细日报表l高速公路收费站出口车道特殊处理明细日报表l高速公路收费站交通流量日报表l高速公路收费站交通流量月报表l高速公路收费站交通流量年报表l高速公路收费站交通流量OD日报表l高速公路收费站交通流量OD月报表l高速公路收费站交通流量OD年报表l高速公路收费站交通流量日分析表l高速公路收费站交通流量月分析表l高速公路收费站交通流量年分析表d.系统管理模块l收费员信息编辑l费率信息编辑l收费站信息编辑l车道信息编辑l车型车类信息编辑e.工班清帐管理系统
结帐管理系统由以下模块组成:l管理人员登录模块l收费员工班管理模块l收费员当班数据录入模块l数据查询统计模块1)管理人员登录模块l系统对管理人员的认证l人员登录名称,口令添加l人员登录名称,口令修改l人员登录名称,口令删除2)收费员工班管理模块l收费员工班分配l收费员工班调整l收费员工班查询
3)收费员当班数据录入模块
录入内容:收费员班次,编号,姓名,通行卡实缴数,通行费实缴数,定额票据金额,废票上缴数1,废票上缴数2,值机员编号,执行录入操作的时间(由服务器时间自动获得),备注等。
4)数据查询统计模块l按照收费员姓名查询l按照收费员编号查询l按照收费员班次查询l按照值机员编号查询l按照执行录入操作的时间段查询l按照以上条件组合查询根据查询结果,自动统计出:l通行卡实缴数总和l通行卡实缴数总和l定额票适用张数总和l定额票据金额总和l废票上缴数1总和l废票上缴数2总和IC卡管理系统日常报表:l高速公路收费站入口通行卡发放日统计l高速公路收费站入口通行卡发放月统计l高速公路收费站入口通行卡发放年统计l高速公路收费站出口通行卡回收日统计l高速公路收费站出口通行卡回收月统计l高速公路收费站出口通行卡回收年统计IC卡管理系统主要数据库表结构:
通行卡调入表含义字段名类型调入时间IntimeDatetime卡号IcknInt相关人员编号Managern
Int通行卡调出表含义
字段名类型调出时间OuttimeDatetime卡号
Ickn
Int相关人员编号ManagernInt通行卡坏卡回收表含义
字段名类型坏卡回收时间GetintimeDatetime坏卡卡号BknInt收费员编号TollernInt收费员班次ClassTinyint车道号CarroadTinyint注释
Note
Char相关人员编号
ManagernInt字段宽度844字段宽度844字段宽度84411204序号123
序号123
序号1234567
通行卡坏卡上缴表含义
字段名坏卡上缴时间Putuptime坏卡卡号Bkn注释
Note
上缴值班员工号Managern通行卡日库存记录表含义
字段名库存统计日期Sdate正常卡库存数量Stockn发放通行卡数量Pn回收通行卡数量Gn调入通行卡数量Inn调出通行卡数量Outn恢复通行卡数量Hfn库存坏卡数量Stockbk坏卡回收数量Getinbk坏卡上缴数量Putupbk库存维护数量Stockchange通行卡恢复记录表含义
字段名恢复时间Gettime卡号
Ickn相关收费员工号Tollern班次
Class入库方式
Stocktype入口车道原始过车记录含义字段名卡网络编号RCardNetwork卡编号RCardID入口网络编号EntryNetWork入口站编号EntryStation入口车道编号EntryLane入口日期时间EntryTime入口统计日期EntryDate入口收费员编号EntryOperator入口收费员班次EntryShift车型RvehicleClass改型前车型RPvehicleClass费额Toll
类型字段宽度Datetime8Int4Char20Int4类型字段宽度Datetime8Int4Int4Int4Int4Int4Int4Int4Int4Int4Int4类型字段宽度Datetime8Int4Int4Tinyint1Tinyint1类型
字段宽度Smallint2int
4Smallint2Smallint2Tinyint1Datetime8Tinyint1int4Tinyint1Tinyint1Tinyint1Smallint2序号1234
序号[1**********]11
序号12345
序号[**************]
纪录类型OD分类车型保留RRecordTypeRODSpecificationReservedTinyintTinyintSmallint112141516
出口车道原始收费记录含义卡网络编号卡编号入口网络编号入口站编号入口车道编号入口日期及时间入口统计日期入口收费员编号入口收费员班次入口车型出口网络编号出口站编号出口车道编号出口日期及时间出口统计日期出口收费员编号出口收费员班次车型改型前车型总费额设备状态业主网络编号业主编号业主分帐额记录类型标识站OD分类车型仲裁车型仲裁管理员编号保留字段车道费率表含义
入口网络编号入口站编号入口站名
出口网络编号
字段名CardNetworkCardIDEntryNetworkEntrySttionEntryLaneEntryTimeEntryDateEntryOperatorEntryShiftRVehicleClassExitNetworkExitStationExitLaneExitTimeExitDateExitOperatorExitShiftVehicleClassPVehicleClassTotalTollDeviceStatusOwnerNetworkOwnerIDOwnerTollRecordTypeFlagStationsRODSpecificationJudgetypeJudgeIDReserved字段名
EntryNetworkEntryStation
EntryStationnameExitNetwork类型字段宽度Smallint2Int
4Smallint2Smallint2Tinyint1DateTime8Tinyint1Int4Tinyint1Tinyint1Smallint2Smallint2Tinyint1DateTime8Tinyint1Int4Tinyint1Tinyint1Tinyint1Smallint2Smallint2Smallint2Tinyint1Smallint2Tinyint1Long8Tinyint1Tinyint1Int
4Smallint2类型字段宽度Smallint2Smallint2Varchar(20)Smallint
2序号[***********][***********][**************]
序号1234
出口站名标志站车型总费额收费站名表含义
收费站编码收费站名称
ExitstationnameFlagStationsVehicleClassTotalTollVarchar(20)Int
SmallintSmallint
4226789
字段名StationIDStationName类型字段宽度Int4Varchar(20)序号12
每班收费员下班填报数据表含义
统计日期收费员班次收费员编号收费员姓名通行卡实缴数通行费实缴数定额票适用张数定额票据金额废票上缴数废票上缴数值机员编号
执行录入操作的时间备注
字段名DateShift
OperatomumOperarorNameData11Data21Data31Data32Data41Data42
SurveillantnumTimeRemark类型TinyintTinyintInt
Varchar(8)SmallintInt
SmallintInt
SmallintSmallintInt
DatetimeChar
字段宽度[1**********]20序号[**************]13
4.2.1用户登录模块
收费站计算机系统软件一律采用窗口界面系统,值班管理员在绝大多数情况下只需使用鼠标器在屏幕显示的任意一个菜单上双击即可选中该功能,并使计算机完成一系列控制、显示、打印等操作。计算机在系统登录时检查操作人员身份密码,以确认其是否有权力使用该项功能。
某高速路收费系统设计了美观大方,操作方便的用户登录界面、主界面、车辆收费界面,典型界面如下图:
图4.1用户登录界面
4.2.2主界面模块
图4.2
4.2.3用户管理模块
主界面
4.2.3用户管理界面
图4.4用户管理界面
4.2.4车辆收费模块
图4.4车辆收费界面
第5章收费系统服务器维护与管理
收费站的服务器非正常关机之后便发生故障,系统无法启动,造成全所收费当班结账工作无法正常进行。经过技术人员的检查,确认为服务器的硬盘损坏而造成系统的无法工作。后虽经多方面的不懈努力,恢复系统的工作,但是仍有部分历史数据由于客观条件所限终究无法恢复,造成了一些无法挽回的损失。不禁使人认识到这样一个问题的重要性,如何更好的保护好我们的收费系统服务器,减少故障的发生;如何有效地保护收费数据,把此类故障造成的损失减小到最小。5.1事件的初步分析
服务器故障,虽说是个偶然突发事件,但有它的必然发生性。首先,监控室人员对机房环境保持不佳以及技术人员对服务器维护重视程度不够,应该是导致本次事件的直接原因。从现场拆下的服务器来看,机箱内部充满了灰尘和异物,电路板上也是尘迹斑斑。通过测定,主硬盘的电路控制部分已经损坏,镜像硬盘上系统重要文件错误丢失无法使用,从系统的日志分析,早在一周以前,备份磁盘镜像就已经断开……等等,这些都充分表明,该服务器很长一段时间没有受到足够的重视,最终不幸发生系统的崩溃,数据的丢失。
其次,服务器配置上的不尽合理客观上加大此类事件发生的几率。某收费服务器采用的是惠普LC3PC服务器,配以微软WindowsNTserver4.O作为操作系统,采用微软SQLServer7.0作为数据库平台。由于NTServer对系统内存的最低要求是32M,加上服务器上运行的SQL数据库系统和其他后台服务程序,并进行软件RAIDl磁盘镜像,更是需要很大的系统资源,而该服务器的内存总量仅为64M,除去以上所述资源占用以外,真正留给数据服务使用的内存资源已是所剩无几。系统在内存不足之时,会采用虚拟内存进行补充,利用硬盘空间作为进行数据交换和读取,随着高速公路的车辆通行数的不断增加,服务器的负荷也明显增大,磁盘读取数据也越发频繁,时间长了,必然加速设备的损坏,缩短硬盘的使用寿命。
5.2.1加强收费服务器的日常维护某站的事件,给了各位高速公路的工程维护人员敲响了警钟,如何更加切实有效的做好系统的维护保养工作,确保设备的稳定运行,将是大家面临的重要问题。
5.2.2定期做好服务器的清洁工作
由于客观条件等因素的限制,目前高速公路收费系统站级服务器均同所里监控室在一起,并无采用专门收费系统机房放置。由于平时监控室内人员进出较为频繁,长此以往,势必造成服务器内的灰尘堆积,机内均为精密电子元件,这样的运行环境对硬件的损坏很大。
因此,很有必要定期(建议大约2个月)对服务器进行一次停机清洁,这对延长内部的元器件使用寿命很有帮助。
5.2.3做好紧急修复磁盘和系统启动盘
目前我们的收费系统服务器采用微软公司的WindowsNTserver作为操作系统,在安装WindowsNTServer时准备一张l.44MB的3.5”软盘,用于创建紧急修复盘。紧急修复盘上保存了修复系统所需的数据,当系统文件因故被损坏时,可协助管理员修复丢失或损坏的WindowsNT文件,并恢复Registry(登录),包括了安全账户管理(SAM)数据库、安全信息、磁盘配置信息、软件Registry项以及其他系统信息,使WindowsNT能够正常启动。因为WindowsNTServer采用NTFS磁盘文件系统,一旦出现故障,使用系统紧急修复盘,可以十分便利的访问系统分区,读取其中的文件,这对我们恢复系统十分有利。利用系统恢复盘,使得工程技术人员能够从像磁盘中获得了许多原先系统的资料,如用户信息,备份日志等,挽回了损失。
5.2.4定期检测磁盘,察看系统的日志文件
在让NT操作系统捕获重要的软硬件信息后,可以用EventView查看这些信息,跟踪服务器运行情况。因此定期察看系统的日志是很有必要的;服务器的硬盘频繁进行数据的读写,有时会因为异常断电或外部震动等因素使硬盘产生坏点,如果能定期检查硬盘,察看系统的日志,及时发现错误,就能减少系统崩溃或数据丢失情况;在发现硬盘有坏点的情况下,可以进行扫描修复,以确保数据安全,延长硬盘的使用寿命。
5.2.5做好数据库的备份工作
数据库是信息系统的心脏,是信息资源开发和利用的基础。目前的服务器都已采用磁盘镜像的方式进行全盘数据备份,尽管此次,建立一套策略和方法,定期做好SQL数据库文件的单独备份,还是显得十分的必要,尤其在数据文件遭遇不幸的时候,能够尽快的恢复,减小损失。需要特别重视的是数据库内的各种结构表、重要存储过程以及各种参数、原始拆帐数据等,一旦出现意外,能够在最短的时间内给予恢复。
5.2.6做好病毒的防治工作
随着软件开放性和网络技术的不断普及和发展同时,也给了计算机病毒提供了十分便利的传播途径;在高速公路专网内,服务器之间以及服务器同工作站之间大量的文档、结构化或非结构化的收费数据、统计数据通过网络来传输和处理,这种频繁和大规模的文件、数据交换为病毒传播大开便利这门;目前,高速公路收费系统已实现全路段的联网收费,一旦遭遇病毒入侵,势必引起全线收费数据的破坏,后果将不堪设想。因此,定期进行服务器、工作站间的病毒检测是一件十分必要和关键的步骤。例如:2003蠕虫王(Worm.netkiUer2003),正是利用SQLServer数据库系统的漏洞,采用“缓冲区溢出”技术,进行网络感染与攻击,从而对网络和服务器造成严重危害,导致网络严重阻塞,甚至造成SQLServer服务器的全面瘫痪。2002年,就曾经因此让全球网络接近瘫痪6小时。因此,在做好病毒的防治工作时,还必须充分运用网络杀毒软件、防火墙以及入侵检测等多种手段,才能够有效预防并清除危害。
5.3数据管理模式的分析和比较
如前所述,某服务器故障虽说是由多方因素引发的——人为疏忽,硬件配置不合理等都直接或者间接的导致了此次故障的发生。从某站的事件中,我们也充分认识到了加强日常维护保养工作的重要性。可是,仅仅如此吗?在高速公路管理系统的不断建设发展的今天,在经济发达、交通量较大的路段管理地区,都已提出要求降低运行成本,提高经济效益。这些
新的需求,都要求我们的系统管理和建设者需要思考新的管理方式和系统结构。这正是我们下文所要阐述的观点:从管理模式的角度,结合泉港服务器事件,根据实际的功能需求,对目前所采用的沿用多年的数据管理模式进行分析讨论,我们大胆提出:收费系统应该改变当前的数据管理模式,采用一种新型的数据管理——集中式管理,从而使得高速公路收费管理更加规范的进行,真正最大限度的避免此类事件今后不再发生。
5.3.1现有某高速公路的收费管理模式
目前,某高速公路收费系统采用多年传统使用的分中心一站一车道的分散管理模式。即由收费站系统、收费分中心系统、省中心拆帐系统共同组成,分为三级管理模式:收费站—分中心一省中心,具体的网络拓扑图如图1所示:
其中车道与收费站之间组成星形结构的局域网,收费站与收费分中心之间、收费分中心与收费拆帐中心之间租用专用速率64Kb/s的DDN线路进行通讯。5.3.2现有数据管理模式的优缺点
优点:
a)对网络的依赖性小,网络不通时,收费站级系统的业务处理正常进行;
b)业务操作不面向大型数据库,系统运行的效率较高;
缺点:
a)系统配置相对烦琐,维护量较大。由于整个路段收费站的系统维护工作由所辖分中心技术人员负责,而每个收费站远离分中心,因无形中加大了系统的维护量;
b)增加了系统配置的开支;
c)维持两端相应数据的一致性占用了一定的系统资源;
d)对收费站机房环境的要求很高,容易出现人为的服务器故障如关机、断电等。也正是上述的这些不足,为泉港的服务器故障埋下了隐患,这不能不引起我们的思考——有没有更好数据管理方式,可以减少故障发生。
5.3.3数据集中管理模式的定义和特点
所谓数据集中管理一就是结合各路段管理范围的特点,采用弱化原收费模式收费站功能,加强收费分中心、总中心的管理功能,集中在收费分中心、拆帐中心进行收劳业务管理的新型管理方式。它的核心,就是利用计算机软件、网络技术及相关设备对某个路段的收费数据进行集中处理,有效地保证计算机主机上所有数据的完整性、可靠性、稳定性,有利于收费业务的规范化管理。具体地说,在某高速公路收费系统中,利用监控分中心的收费服务器,在分中心的直接监督下对各个收费车道、收费站进行收费业务数据的采集和处理以及管理和统计,而不通过收费站服务器。因此,数据管理模式分二级,省拆帐中心——分中心,网络拓扑图如图2所示:
其中收费分中心与收费站、收费拆帐总中心与收费分中心之间利用高速公路建成的专用通信网进行通讯。
集中管理又有哪些特点呢,正如我们上面提到的,具体的从上面的网络图,很容易看出:采用了集中数据管理模式,优缺点如下:
优点
a)采用了集中数据管理,使得只在分中心设置一台服务器:每个收费站不设服务器作为系统的一个使用终端,从而降低了成本。
b)服务器管理简单,便于维护,大大减少了分中心技术人员的维护工作量。
c)数据的安全性好,由于采用集中式管理,减少了当中的许多环节,最大限度避免了其他因素造成的破坏。
缺点
a)由于需要对各站进行数据处理,对服务器的处理能力和运行速度等要求较传统方式有很大提高。
b)当某些主要设备出现故障时,影响的范围要广一些,因此对网络可靠性、稳定性要求较高。
5.4集中管理模式的可行性分析
5.4.1网络可靠性分析
从集中管理的定义以及上述的图示,可以很容易的知道,想要实现数据的集中(部分集中)管理,最重要的前提条件便是需要一个快速、稳定、安全的通讯线路,将各类的数据上传至分中心和中心服务器。这样的要求,在高速公路通讯网络建立以前是很难满足和实现的,因此也无法试行集中管理。随着高速公路建设的不断深入,网络通信模式将由原先租用DDN专线方式转为基于光纤传输的SDH同步数字通信方式;对于收费数据的传输采用SDH2M带宽,大大满足收费业务数据传送需求。光纤通信具有如下特点:
a)频带宽,具有很大的传输容量,主干网的速率达到2.5Gb/s,本地网速率也可达2Mb/s,可以满足各类数据的传输要求;
b)通信质量好,不受外界电磁干扰;
c)通信距离可长可短,符合高速公路通信业务分布特点。因此,稳定可靠的高速公路光纤专用通信网为实现数据集中管理模式创造了必要条件;
5.4.2服务器系统软硬件平台
当前的企业服务器主要分作两大类,其中一类是以IBM、HP等公司为代表的小型计算机服务器,如IBMRS/5000M80,M85小型机,另一类便是目前正在使用的以普通的PC为基础的PC服务器。小型机虽性能较PC服务器强,但同样价格也高出甚多。采用数据集中管理模式后,对拆帐中心、分中心的服务器处理能力和运行速度及可靠性要求很高,首先应能满足整个路段各收费站的各种业务需求,在充分考虑功能需求的基础上,对所需设备的主频、内存、存储空间、传输率及可靠性等方面进行具体分析,并通过模拟实际的使用环境
对设备的处理能力、数据吞吐量等作详细地计算后才能确定选用服务器类型,且莫一味的追求高性能,造成投资浪费。同样考虑到今后的车流量等数据的增加,还应留有一定的富余量,避免出现设备与应用问可能出现的“大马拉小车”、“小马拉大车”的问题,避免设备购置的盲目性。
随着高速公路路网的不断形成,联网收费系统对计算机网络安全性和可靠性的要求较高,因此对于服务器操作系统和数据库的选用也非常重要。目前服务器最为普遍采用的操作系统有WindowsNT、Unix、Linix等。按照中心和分中心服务器的设计要求和作用,应首要从系统的安全性和稳定性方面人手考虑,建议优先采用以Unix为核心的操作系统。同样当前可采用的数据库软件平台众多,如:SQLServer、ORACLE、SYBASE、INFORMIX和INGRES、DB2等,各有所长,建议选用的原则应从以下几个方面人手:支持客户/服务器体系结构;支持高性能的并发控制和联机事务处理;支持主要网际互连协义(TCP/IP、APPC等)和局域网协议(如TCP/IP、SPX/IPX);支持SQL标准;考虑安全性、灾难恢复和事务完整性;具有良好的可移植性和可扩展性;支持大量的第三方产品,能满足不断发展中的各类业务要求;支持Cluster系统,并能自动实现任务均衡和任务切换;支持SMP系统;至少支持PowerBuilder、Delphi、MicrosoftVisualC++等RAIDG开发工具,具备完善的Intemet开发工具以及确保系统升级时可移植性等等。
5.4.3冗余独立磁盘阵列RAID等安全措施
采用数据集中管理模式,对设备的安全、稳定性方面的要求特别高,应充分考虑服务器的冗余备份问题。建议同时采用双机热备份服务器和磁盘阵列方式,当前很多服务器无须磁盘阵列柜就可构成磁盘阵列,磁盘阵列内置于主机中,如HP6000高档服务器,将数据库系统和应用系统放在阵列磁盘上,这样相当于有了双重硬件防护。确保在硬盘损坏时,磁盘阵列起作用,当主机出现除硬盘外的故障时启动备机,确保收费业务的不间断运行。
高速公路收费系统设计与实现
第1章绪论
1.1高速公路收费系统概述
高速公路收费系统实现了半自动和ETC两种收费方式,可选用IC卡、磁票、二维条卡作为通行券,支持现金、预付卡、储值卡等支付方式;各级可以实现监控下级的操作异常事件;实时监测出入口车道的设备状态;各级系统可以自动统计交通量、通告量曲线图;实现了对路费、通行券、票据、设备等的严格管理,杜绝舞弊行为;提供独特的专家分析系统等。系统组成:·系统采用先进的C/S三层体系·通过广域网实现各级间互联软件特点:·符合我国现有国情·适用范围广·开放的收费系统·可定义的业务流程·友好的人机界面·安全可靠的性能高速公路收费系统系统概述:高速公路收费系统实现了半自动和ETC两种收费方式,可选用IC卡、磁票、二维条卡作为通行券,支持现金、预付卡、储值卡等支付方式;各级可以实现监控下级的操作异常事件;实时监测出入口车道的设备状态;各级系统可以自动统计交通量、通告量曲线图;实现了对路费、通行券、票据、设备等的严格管理,杜绝舞弊行为;提供独特的专家分析系统等。
1.2数据传输系统开发的背景
随着我国经济的快速发展,社会车辆日益增多,因此我国普遍实行贷款修路,收费还贷制度。原有的手工收费系统存在着许多弊端,而收费站的收费情况直接影响到还贷的能力和业主的经济利益。以计算机网络为基础的公路收费与监控系统,不仅最大限度地防止各种营私舞弊现象,有效制止收费过程中的漏征、作弊行为,并且大幅度提高普通公路收费过程和财务管理的自动化程度,提高工作效率和服务质量,为管理决策提供有力支持。但是目前运行的高等级公路监控收费系统的开放性、可靠性不高,对各种可能出现的问题考虑不周全,在实用暴露出很多问题或不能适应目前形势的发展,需要进一步完善和改进。为此,我在参考已有系统的基础上,设计研制了一套较为全面的收费监控系统。
1.3数据传输系统设计的目标
通常在等级公路上的收费方式为人工判别车型,人工收费,计算机打票(也可以按要求使用IC卡、非接触卡等),并对收费数据进行统计管理;CCTV系统辅助监督的收费方式。考虑到收费站的实际情况(人员计算机水平低,灰尘大等特点),我们在软件的设计上注重软件的公正、精确、简便、可靠性;并能做到应征不漏,收费准确,可有效的防止员工的作弊行为,作到作弊可查,查必有据。在软件设计中注重了以下几个方面:
1)可靠性:由于收费站存在的大量灰尘容易导致设备损坏或接触不良,因此本系统充分考虑到磁盘介质损坏可能对数据产生的影响和系统崩溃对数据产生的影响,建立了两级数据库---车道计算机数据库和服务器数据库。车道控制计算机首先将收费数据、设备状态、事故日志等数据信息存入本地硬盘上的数据库,再将其上传到服务器。当服务器或网络出现故障时,车道计算机可以独立工作,将收费数据等信息保存在本地数据库;待故障消除后,车道控制计算机调取故障时以及故障之后的数据,上传服务器,从而保证收费数据的完整性。
2)开放性:系统具备良好的开放性和兼容性,整个系统易于升级、易于维护。本系统车道数量可以灵活配置,适用于任意数量车道的收费站系统。便于联网,组建省地级监控中心。
3)高效性:保证车辆通过收费车道的高效率和业务快速处理的能力。对于车道控制计算机众多外围设备自动控制,减轻了收费人员负担,提高了工作效率。
基于以上思想,我们采用C++Builder作为开发工具,SQLServer7.0作为服务器数据库,车道控制计算机数据库采用C++Builder自带的Paradox。
第2章系统的组成及主要功能
收费监控系统主要由收费计算机系统、CCTV监视系统、内部对讲系统和辅助系统等子系统组成。下面分别描述各个子系统的主要功能。
2.1闭路监视系统
闭路监视系统是相对独立的系统,只是和收费系统存在某些关联(如收费数据叠加、抓拍、硬盘录象等)。整个闭路监视系统可以划分收费亭监视、车道监视、广场监视等几个部分。
2.2辅助系统
辅助系统是指确保收费系统正常运行的配套系统,包括内部对讲、电力供给、设备保护等多个方面。
2.3收费系统
收费系统基本上包括车道收费控制系统、收费站管理系统两大部分,其拓扑结构如图1所示。
收费站计算机与车道计算机组成局域网,采用客户机/服务器模式。根据车道到收费站的距离远近,车道和收费站之间采用光纤或双绞线连接。
2.3.1车道收费子系统
车道收费子系统是整个收费的前端,如图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章数据库应用
数据库系统的组成、全局结构和数据存取结构。
数据库系统体系结构。简要讨论集中式和客户机-服务器(C/S)结构的数据库系统体系结构,本书专门讨论这两种结构的数据库应用系统实现实例。
数据库应用系统的简单结构、数据库引擎、开发数据库应用系统所需的技术背景和开发任务以及开发数据库应用系统需要考虑的问题。
3.1数据库系统的组成和全局结构
数据库系统(databasesystem,DBS)是采用了数据库技术的计算机系统。DBS是以信息处理为核心的计算机系统,信息的存取是系统工作的枢纽,它是一个可运行的,按照数据库技术存储、维护和向应用系统提供数据支持的系统,是由数据库、硬件、软件和数据库用户组成的有机集合体。
3.1.1数据库系统的组成
任何数据库系统都由数据库(DB)、硬件、软件和数据库用户组成。
数据库是与企业具体的业务应用有关的全部数据的集合。从数据库的用途来看,数据库可分为以下两类:
物理数据库物理数据库是业务应用数据的集合,是业务应用数据库的主体。
描述数据库描述数据库又可称为数据字典或元数据库,用来描述和存储各业务应用数据库的数据结构及其定义。
硬件包括中央处理器、内存、外存、输入输出(I/O)设备等硬件设备。数据库系统特别关注内存、外存、I/O存取速度、可支持的终端数、性能稳定性、网络的支持能力、存储设备的扩充能力以及数据存取通道的能力等。不同的数据库系统对硬件的要求不同,应根据具体应用选择适当的硬件设备。
软件包括数据库管理系统(DBMS)、操作系统(OS)、数据库引擎和应用开发支撑环境等程序。DBMS是DBS的核心,需要在OS的支持下才能工作。数据库引擎是数据库应用程序和数据库交互的中间驱动程序。应用程序是数据库终端用户用来实现业务的操作界面,是提高生产效率必不可少的程序。应用开发支撑环境是数据库应用程序开发者能够以低成本、高效率开发出数据库应用程序的高效、多功能、集成的交互式程序设计系统。目前,典型的数据库应用开发环境有Delphi、C++Builder、PowerBuilder、VisualBasic、VisualC++、JBuilder、C#Builder以及.NET开发环境等。
数据库用户就是与DBS交互的用户,按照与系统交互方式的不同,可分为如下4类:
数据库管理员(DBA):负责定义和修改数据库结构,负责DBS的正常运行,承担创建、监控和维护数据库的责任。
专业用户:数据库设计过程中使用专用的数据库查询语言操作数据的数据库设计专业人士,例如系统分析员。
应用程序员:使用应用开发环境和数据操作语言开发应用程序的程序员。
终端用户:使用应用程序完成具体业务应用工作的人员。通常又将这类用户称为“软件最终用户”。
3.1.2数据库系统的全局结构
从数据库系统的组成来考虑各组成模块之间的关系,数据库系统全局结构如图?3-1
3.1.3DBMS的工作模式和用户存取数据的过程
DBMS是DBS中对数据进行管理的软件系统,是DBS的核心组成部分。在DBS中对数据库的一切操作(数据定义、查询、更新和各种控制)都是通过DBMS进行的。DBMS的工作模式如图3-2所示。
图3-3是用户存取数据库的示意图。用户对数据库进行操作是由DBMS把操作请求从应用程序带到外模式、模式、内模式,进而通过OS操作磁盘中的数据。同时,DBMS为应用程序的请求在内存中开辟一个数据库的系统缓冲区,用于数据传输和格式转换。
3.2数据库系统体系结构
根据计算机的系统结构,DBS可分为集中式、客户机-服务器式、并行式和分布式4种。本章重点讨论集中式和客户机-服务器式数据库应用系统的开发技术。
3.2.1集中式DBS
集中式DBS运行在单个计算机系统中,与其他计算机系统没有联系。通常也将集中式DBS称为单机DBS。集中式DBS中的数据库、DBMS和应用程序等组成部分都运行在一个计算机系统中,不同机器之间不能共享数据。
计算机系统有单用户系统和多用户系统两种,因此,可将集中式DBS分为单用户和主从式两种类型。微型计算机和工作站都属于单用户系统,单用户集中式DBS的结构如图3-4所示。通常说的桌面DBS是单用户DBS的典型应用模式。单用户DBS由一个用户独占使用,无数据共享能力。
图3-4单用户集中式DBS
主从式结构是指一个主机带多个终端的多用户结构。在这种结构的DBS中,应用程序、DBMS、数据库等都集中存放在主机上,所有任务都由主机来完成,各个用户通过主机的终端并发地存取数据库,共享数据资源。主从集中式DBS的结构如图1-5所示。主从式结构的优点是简单,数据易于管理和维护。缺点是能够支持的终端数目有限,由于所有任务都由主机完成,主机的性能是DBS的瓶颈。
应用较为广泛的集中式数据库管理系统有Paradox、dBASE、Access、VisualFoxPro等。集中式DBS的应用目前主要是在小型数据管理和信息处理业务中。本书将讨论基于Paradox的数据库应用系统项目的开发实例。
3.2.2客户机-服务器结构DBS
客户机-服务器结构DBS通常简写为C/S结构DBS。C/S结构DBS是随着计算机网络技术的发展和应用产生的。C/S结构的关键在于功能的分布,DBS的一些功能在客户端(前端)执行,另一些功能在服务器端(后端)执行。C/S结构DBS的体系结构如图3-6所示。在C/S结构DBS中,服务器专门用来执行DBMS功能、管理数据库以及完成分配在后端的功能。应用程序和应用开发工具等则安装在客户机上,支持用户的应用。服务器和客户机之间通过网络连接,并通过数据库引擎接口实现相互之间的通信。
在C/S结构中,客户端的用户请求被传送到数据库服务器,数据库服务器进行处理后只将结果返回给用户,从而减少了网络上的数据传输量,提高了系统性能、吞吐量和负载能力。同时,C/S结构的DBS具有更多的开放性、可扩展性和可移植性,能够跨平台运行。
通常将C/S结构的DBS称为两层结构的C/S系统。如果在客户端和数据库服务器之间增加应用服务器(或其他中间服务程序),则两层C/S结构演化成多层的C/S结构,例如B/S结
构的DBS就是典型的三层C/S结构。
C/S结构DBS是目前应用比较广泛的DBS类型之一。应用较为广泛的C/S结构数据库管理系统有Oracle、DB2、Sybase、MSSQLServer等,这些数据库管理系统都能够支持大型的数据应用业务。本书将讨论基于MSSQLServer的两层C/S结构数据库应用系统项目的开发实例。
3.3开发数据库应用系统
以数据库为基础的信息系统通常称为数据库应用系统,它一般具有信息采集、加工、抽取和传播等功能,是实现业务应用的数据库系统。开发数据库应用系统需要对其基本结构、所需的技术背景、开发任务和需要考虑的问题有所了解。
3.3.1数据库应用系统的简单结构
如果抛开DBS中的硬件和操作系统组成部件,就可以采用如图3-7所示的简单结构描述数据库应用系统。从图3-7中可以看出,数据库应用系统由应用程序端、中间件和数据库端三部分组成。
图3-7数据库应用系统的简单结构
中间件通常由数据库管理系统或应用程序开发环境提供商提供给开发用户使用。中间件是应用程序和数据库之间进行交流的必需通道。设计数据库应用系统时,不需要自己编写,但必须要了解中间驱动的运作原理和使用方法。数据库应用系统中采用的数据库类型和开发环境不同,可使用的中间驱动也可能不同。
如果数据库应用系统使用服务器类型的数据库,应用程序必须要通过数据库服务器(数据库管理系统)才能存取数据库。如果使用的是文件类型的数据库,应用程序可直接存取数据库。数据库服务器由专门的数据库管理系统提供商提供,设计数据库系统时,不需要自己编写,但必须要了解数据库管理系统的运作原理及其提供的数据库开发能力。数据库的设计和实现是开发数据库应用系统的核心工作。
不同的数据库应用系统由于其业务要求和运行环境不同,用于存取和管理数据库中存储的信息的应用程序也不同,这是终端用户使用数据库应用系统必不可少的操作界面。如果数据库应用系统离开了应用程序,终端用户无法直接操作数据库,完成信息管理工作。
3.3.2数据库引擎
数据库引擎是数据库应用程序与数据库(或数据库服务器)进行交互的接口,负责提交、处理数据库访问请求并返回处理结果。通常,数据库应用程序开发环境都会提供相应的数据库引擎及其开发组件,也可以这样说,在客户端,数据库引擎是由一系列用于进行数据库访问的数据结构和基于这些数据结构的方法(或函数库)组成。
从服务器端响应和处理数据库请求的方式来看数据库引擎有两种基本的体系结构,分别是多进程数据库引擎(见图3-8)和单进程多线程数据库引擎(见图3-9)。
图3-8多进程数据库引擎运行结构图
图3-9单进程多线程数据库引擎运行结构图
单进程多线程数据库引擎。这种数据库引擎的优点是:占用资源比较少,成本低,在比较低的配置下也能发挥较好的性能。其特征是:在一个处理进程内创建多个线程来响应多个数据库访问请求。具备比较好的可移植性,但低配置不能支持太多用户数。单进程多线程数据库引擎的代表是SQLServer2000。
3.3.3开发数据库应用系统的技术背景和任务
从DBS的组成、体系结构和数据库应用系统简单结构的讨论可知,开发数据库应用系统需要有如下一些技术背景:
应掌握数据库设计的基本理论知识,了解数据库系统的体系结构、数据库的分析建模技术、数据库的体系结构、完整性约束和数据库规范理论等。
应掌握一种桌面数据库和服务器数据库管理系统的应用技术,了解数据库管理系统提供的数据库管理和设计支持能力。
熟悉一种能够支持数据库应用程序开发的开发环境,包括相应的程序设计语言、数据结构、算法分析和应用程序架构技术等知识。
了解开发环境提供的数据库存取技术和所提供的数据库引擎。
了解软件设计和开发过程的一些基本知识,如个体软件过程、团队软件过程和软件工程等。了解应用程序的分发技术和分发工具,即如何制作应用程序的安装程序以及如何在用户环境中实施数据库应用系统。
开发数据库应用系统的任务是:充分利用上述基础知识和技能,设计实现业务要求的数据库,设计终端用户操作数据库数据的应用程序,在用户环境中实施数据库应用系统以供用户完成业务工作,提高用户的生产率。
3.3.4开发数据库应用系统需要考虑的问题
开发数据库应用系统和开发其他应用系统一样,需要根据用户的业务需求确定数据库应用系统的运行环境和开发环境等。从技术角度看,通常,开发数据库应用系统需要考虑以下问题。a.确定数据库应用系统的运行环境,选择合适的DBS体系结构
开发数据库应用系统的首要问题是根据业务要求确定数据库应用系统的运行环境,选择合适的DBS体系结构。如果用户只需要在单机上工作,且需要管理的数据量很小,则应选择单用户结构的数据库应用系统;如果用户的业务需要在局域网环境中同时由不同工作人员完成,则应选择C/S结构的数据库应用系统;如果业务需要在远程机器上完成,则可能需要选择B/S结构的数据库应用系统。
选择不同的体系结构将决定后续的数据库应用系统开发问题,如确定系统开发环境等。同时,开发不同体系结构的应用系统,其开发技术复杂度也不一样,实现的技术也有所不同。b.基于数据库应用系统的运行环境和体系结构确定数据库
所有数据库都提供了存储和检索信息的能力,但不同数据库提供的附加功能则有所不同,主要表现在以下方面:
不同数据库提供的数据安全保证机制不同。
有的数据库基于文件锁定机制保证多用户并发操作,有的数据库则采用事务并发控制机制,后者比前者效率高很多,占用的资源也相对较大。
不同的数据库描述数据字典(或元数据)的技术不同,提供的数据字典获取和管理技术也不同。
不同数据库对数据完整性的保证措施和程度不同。有的数据库只能保证基本的实体完整性约
束(主码)和参照完整性约束,而有的数据库则能够提供较全面的完整性保证技术。
根据不同DBS体系结构中应用程序存取数据库的方式,数据库可分为本地数据库和远程数据库两种类型。集中式数据库应用系统使用本地数据库,而C/S结构的数据库应用系统则需要使用远程数据库服务器。本地数据库的典型代表是Paradox、dBASE、VisualFoxPro和Access等。远程数据库服务器的典型代表是Oracle、DB2、Sybase、MSSQLServer等。选择数据库时需要考虑数据库将要存储的数据量、存取数据库的最大用户数和数据库的效率要求这些问题。就存储量而言,本地数据库的存储量比远程数据库服务器小很多。就多用户问题而言,本地数据库也能够支持多用户同时存取数据库,但采用基于文件的锁定技术来控制并发操作;远程数据库服务器是专为多用户并发存取数据库而设计的,采用基于事务的技术控制并发操作,因而提供了更为复杂的多用户支持。就数据处理能力而言,远程数据库服务器的能力比本地数据库强大很多。
同时,选择数据库时还应考虑用户是否有移植数据库的需求。如果需要移植数据库,则开发时需要牺牲部分高效的SQL功能以获得最佳的移植方式,例如遵循不同数据库公用的SQL集进行SQL程序开发等。
第4章系统软件实现
本系统是在按照面对对象,基于组件、数据库开发的,拥有全面的错误捕捉和异常处理机制,因此具有更好的稳定性和可扩展性。
4.1收费计算机和通信机
在收费计算机和通信机之间,我们采用了TCP/IP协议,TCP建立连接时采用客户/服务器模式,主动发起连接的进程叫做客户,被动等待连接建立的进程叫做服务器。在本系统中,
收费计算机做为发起连接方,成为客户,通信机为服务器。
4.1.1动态组件
TCP是面向连接的,因而可提供可靠的、按序传送数据的服务,它提供双向的的连接,即全双工。在收费站,由于环境恶劣,可能会网络故障导致TCP连接中断,或由于通信机维护中断连接。为了故障消除后能自动恢复TCP连接,减少监控人员维护量,采用了动态组件技术,自动检测连接的状态,并给监控人员一定提示。
if(Client->Active==false)
//定义为TClientSocket*Client
{HW_SENDTIME++;
if(HW_SENDTIME%20==0)
//每隔一段时间尝试重新连接
{HW_SENDTIME=0;
Client->Close();
deleteClient;Client=NULL;
Client=newTClientSocket(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组件的建立,网络连通和中断切换过程对操作人员是隐含的。不会影响车道收费系统的正常运行,网络正常后自动恢复上传数据功能,保证了车道的最大工作效率。
4.1.2TCP报文的构成
应用层的报文传送到运输层,加上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+PacketDatatypedefstruct
{chartag[2];//version0x453bintPacketLen;//包长
charPacketType;//包类型inttrytimes;//重传次数
charsIpaddr[20];//通信机地址charsRet[2];
//标志,OK通信机写入数据库成功、ER写入失败}TPACKETHEAD;
这里以收费流水数据为例,说明PacketData结构。typedefstruct//流水帐数据结构{charLSH[13];//流水帐号charCXDM[3];//车型代码intje;//金额
charFJDW[11];//车辆吨位charSKRQ[20];//收款日期charSKSJ[20];//收款时间charGH[11];//工号charSKY[21];//收款员charCDH[4];//车道号charBH[2];//班号intCG;//冲岗标记intMF;//免费标记intYP;//月票标记
charTICKETNO[9];//票据号chardevicestate;//设备状态}TLsz;
4.1.3数据包的抽象
面对对象程序设计的本质是把数据和处理数据的过程当成一个整体——对象。C++本身就是面对对象的语言,能将各种数学模型封装成对象,因此具有更好的稳定性和扩展性。在本系统的实现过程中,由于存在着多种数据包,为此,我们抽象出数据包的基本共性,形成数据包的基类TpacketBase。
classTPacketBase{private:
TPACKETHEAD*pHead;char*pBuf;//发送缓冲区public:
intSendpdate(void);//发送数据包intReadpdate(void);//接收数据包intpTypeExcute(intpType);//按pType类型执行相关工作};
各数据包类以此为基类,实现数据包的发送和接收工作,并扩充了自己的成员变量和成员函数。以流水帐数据包为例。
ClassTlszpak:publicTpacketBase{private:TLszlsz;public:
intGetlocaldate(void);//取本地数据intFillpacket(void);//填充数据报};
其他类型的数据包,如登录、收费标准等的实现与流水帐数据包类似。4.2管理工作站
随着Internet的普及、城域网和广域网的发展,对监控提出了更多的要求。目前要求建立地区监控中心或者省级远程监控中心,由于各个收费站监控收费系统承包商的开发语言各不相同,基于商业利益的考虑又不会开放源代码,对监控中心的管理带来麻烦。因此,解决问题的最佳途径,就是遵循“开放系统”最大限度保护用户原有硬软件投资的原则,走开放系统结构(OSA)。即新上的项目一定要符合OSA标准;原有的项目,通过转换或改造接入开放系统。
对于管理工作站的软件,我们建立了基于INTERNET收费管理系统,采用C++Builder的ActiveForm技术开发,给本地监控和远程管理带来许多鲜明的特点和优点,其软件模块划分如图3所示。
这种方式的主要优点是:同时可以在一台客户机上完成多种客户机的功能;界面统一,
使用和培训相对容易便于实现多个收费站的统一管理;采用INTERNET浏览器操作方式,自动下载最新版本,便于升级。a.收费监视
本系统运行于图像处理工作站上。工作站的显示器配置于操作台上,用于监视和显示车道设备工作状况以及收费员操作情况。系统主要功能如下:1)动态实时显示收费车道状态,其中包括:l收费员姓名l车道号l天棚信号状态(红色“×”或绿色“↓”)l通行灯状态l自动栏杆机的状态l收费员判定的车型车类l通信线路正常/故障2)显示最近抓拍的车道特殊处理图像。3)接收矩阵的输出,实时显示摄像机采集的一路视频信号。4)任意摄像机间的切换和广场摄像机的变倍变焦操作。5)图像查询打印功能l随时来查询车道软件所捕获的所有图像。可以输入的条件有:时间如年月日,地点如车道,人员如收费员,或者是以上条件的组合l打印图像。查到所需图像以后,可以打印。b.数据查询
1)入口车道过车记录查询l以卡编号为关键字查询l以入口车道编号为关键字查询l以时间段为关键字查询l以收费员编号为关键字查询l以收费员班次为关键字查询l以卡编号为关键字查询l以车型为关键字查询l以费额为关键字查询l以上条件之间的相互组合为关键字查询2)出口车道过车记录查询l以卡编号为关键字查询l以出口车道编号为关键字查询l以时间段为关键字查询l以收费员编号为关键字查询l以收费员班次为关键字查询l以卡编号为关键字查询l以车型为关键字查询l以费额为关键字查询l以上条件之间的相互组合为关键字查询c.统计报表打印预览及打印模块包括以下统计报表:l高速公路收费员班次报表(入口)
l高速公路收费员当班特殊处理明细表(入口)l高速公路收费员当班明细表(入口)l高速公路收费员当班特殊处理明细表(入口)l高速公路收费员当班明细表(出口)l高速公路收费站班次汇总表(入口)l高速公路收费站班次汇总表(出口)l高速公路收费站通行费收入日报表l高速公路收费站通行费收入月报表l高速公路收费站通行费收入年报表l高速公路收费站入口车道特殊处理明细日报表l高速公路收费站出口车道特殊处理明细日报表l高速公路收费站交通流量日报表l高速公路收费站交通流量月报表l高速公路收费站交通流量年报表l高速公路收费站交通流量OD日报表l高速公路收费站交通流量OD月报表l高速公路收费站交通流量OD年报表l高速公路收费站交通流量日分析表l高速公路收费站交通流量月分析表l高速公路收费站交通流量年分析表d.系统管理模块l收费员信息编辑l费率信息编辑l收费站信息编辑l车道信息编辑l车型车类信息编辑e.工班清帐管理系统
结帐管理系统由以下模块组成:l管理人员登录模块l收费员工班管理模块l收费员当班数据录入模块l数据查询统计模块1)管理人员登录模块l系统对管理人员的认证l人员登录名称,口令添加l人员登录名称,口令修改l人员登录名称,口令删除2)收费员工班管理模块l收费员工班分配l收费员工班调整l收费员工班查询
3)收费员当班数据录入模块
录入内容:收费员班次,编号,姓名,通行卡实缴数,通行费实缴数,定额票据金额,废票上缴数1,废票上缴数2,值机员编号,执行录入操作的时间(由服务器时间自动获得),备注等。
4)数据查询统计模块l按照收费员姓名查询l按照收费员编号查询l按照收费员班次查询l按照值机员编号查询l按照执行录入操作的时间段查询l按照以上条件组合查询根据查询结果,自动统计出:l通行卡实缴数总和l通行卡实缴数总和l定额票适用张数总和l定额票据金额总和l废票上缴数1总和l废票上缴数2总和IC卡管理系统日常报表:l高速公路收费站入口通行卡发放日统计l高速公路收费站入口通行卡发放月统计l高速公路收费站入口通行卡发放年统计l高速公路收费站出口通行卡回收日统计l高速公路收费站出口通行卡回收月统计l高速公路收费站出口通行卡回收年统计IC卡管理系统主要数据库表结构:
通行卡调入表含义字段名类型调入时间IntimeDatetime卡号IcknInt相关人员编号Managern
Int通行卡调出表含义
字段名类型调出时间OuttimeDatetime卡号
Ickn
Int相关人员编号ManagernInt通行卡坏卡回收表含义
字段名类型坏卡回收时间GetintimeDatetime坏卡卡号BknInt收费员编号TollernInt收费员班次ClassTinyint车道号CarroadTinyint注释
Note
Char相关人员编号
ManagernInt字段宽度844字段宽度844字段宽度84411204序号123
序号123
序号1234567
通行卡坏卡上缴表含义
字段名坏卡上缴时间Putuptime坏卡卡号Bkn注释
Note
上缴值班员工号Managern通行卡日库存记录表含义
字段名库存统计日期Sdate正常卡库存数量Stockn发放通行卡数量Pn回收通行卡数量Gn调入通行卡数量Inn调出通行卡数量Outn恢复通行卡数量Hfn库存坏卡数量Stockbk坏卡回收数量Getinbk坏卡上缴数量Putupbk库存维护数量Stockchange通行卡恢复记录表含义
字段名恢复时间Gettime卡号
Ickn相关收费员工号Tollern班次
Class入库方式
Stocktype入口车道原始过车记录含义字段名卡网络编号RCardNetwork卡编号RCardID入口网络编号EntryNetWork入口站编号EntryStation入口车道编号EntryLane入口日期时间EntryTime入口统计日期EntryDate入口收费员编号EntryOperator入口收费员班次EntryShift车型RvehicleClass改型前车型RPvehicleClass费额Toll
类型字段宽度Datetime8Int4Char20Int4类型字段宽度Datetime8Int4Int4Int4Int4Int4Int4Int4Int4Int4Int4类型字段宽度Datetime8Int4Int4Tinyint1Tinyint1类型
字段宽度Smallint2int
4Smallint2Smallint2Tinyint1Datetime8Tinyint1int4Tinyint1Tinyint1Tinyint1Smallint2序号1234
序号[1**********]11
序号12345
序号[**************]
纪录类型OD分类车型保留RRecordTypeRODSpecificationReservedTinyintTinyintSmallint112141516
出口车道原始收费记录含义卡网络编号卡编号入口网络编号入口站编号入口车道编号入口日期及时间入口统计日期入口收费员编号入口收费员班次入口车型出口网络编号出口站编号出口车道编号出口日期及时间出口统计日期出口收费员编号出口收费员班次车型改型前车型总费额设备状态业主网络编号业主编号业主分帐额记录类型标识站OD分类车型仲裁车型仲裁管理员编号保留字段车道费率表含义
入口网络编号入口站编号入口站名
出口网络编号
字段名CardNetworkCardIDEntryNetworkEntrySttionEntryLaneEntryTimeEntryDateEntryOperatorEntryShiftRVehicleClassExitNetworkExitStationExitLaneExitTimeExitDateExitOperatorExitShiftVehicleClassPVehicleClassTotalTollDeviceStatusOwnerNetworkOwnerIDOwnerTollRecordTypeFlagStationsRODSpecificationJudgetypeJudgeIDReserved字段名
EntryNetworkEntryStation
EntryStationnameExitNetwork类型字段宽度Smallint2Int
4Smallint2Smallint2Tinyint1DateTime8Tinyint1Int4Tinyint1Tinyint1Smallint2Smallint2Tinyint1DateTime8Tinyint1Int4Tinyint1Tinyint1Tinyint1Smallint2Smallint2Smallint2Tinyint1Smallint2Tinyint1Long8Tinyint1Tinyint1Int
4Smallint2类型字段宽度Smallint2Smallint2Varchar(20)Smallint
2序号[***********][***********][**************]
序号1234
出口站名标志站车型总费额收费站名表含义
收费站编码收费站名称
ExitstationnameFlagStationsVehicleClassTotalTollVarchar(20)Int
SmallintSmallint
4226789
字段名StationIDStationName类型字段宽度Int4Varchar(20)序号12
每班收费员下班填报数据表含义
统计日期收费员班次收费员编号收费员姓名通行卡实缴数通行费实缴数定额票适用张数定额票据金额废票上缴数废票上缴数值机员编号
执行录入操作的时间备注
字段名DateShift
OperatomumOperarorNameData11Data21Data31Data32Data41Data42
SurveillantnumTimeRemark类型TinyintTinyintInt
Varchar(8)SmallintInt
SmallintInt
SmallintSmallintInt
DatetimeChar
字段宽度[1**********]20序号[**************]13
4.2.1用户登录模块
收费站计算机系统软件一律采用窗口界面系统,值班管理员在绝大多数情况下只需使用鼠标器在屏幕显示的任意一个菜单上双击即可选中该功能,并使计算机完成一系列控制、显示、打印等操作。计算机在系统登录时检查操作人员身份密码,以确认其是否有权力使用该项功能。
某高速路收费系统设计了美观大方,操作方便的用户登录界面、主界面、车辆收费界面,典型界面如下图:
图4.1用户登录界面
4.2.2主界面模块
图4.2
4.2.3用户管理模块
主界面
4.2.3用户管理界面
图4.4用户管理界面
4.2.4车辆收费模块
图4.4车辆收费界面
第5章收费系统服务器维护与管理
收费站的服务器非正常关机之后便发生故障,系统无法启动,造成全所收费当班结账工作无法正常进行。经过技术人员的检查,确认为服务器的硬盘损坏而造成系统的无法工作。后虽经多方面的不懈努力,恢复系统的工作,但是仍有部分历史数据由于客观条件所限终究无法恢复,造成了一些无法挽回的损失。不禁使人认识到这样一个问题的重要性,如何更好的保护好我们的收费系统服务器,减少故障的发生;如何有效地保护收费数据,把此类故障造成的损失减小到最小。5.1事件的初步分析
服务器故障,虽说是个偶然突发事件,但有它的必然发生性。首先,监控室人员对机房环境保持不佳以及技术人员对服务器维护重视程度不够,应该是导致本次事件的直接原因。从现场拆下的服务器来看,机箱内部充满了灰尘和异物,电路板上也是尘迹斑斑。通过测定,主硬盘的电路控制部分已经损坏,镜像硬盘上系统重要文件错误丢失无法使用,从系统的日志分析,早在一周以前,备份磁盘镜像就已经断开……等等,这些都充分表明,该服务器很长一段时间没有受到足够的重视,最终不幸发生系统的崩溃,数据的丢失。
其次,服务器配置上的不尽合理客观上加大此类事件发生的几率。某收费服务器采用的是惠普LC3PC服务器,配以微软WindowsNTserver4.O作为操作系统,采用微软SQLServer7.0作为数据库平台。由于NTServer对系统内存的最低要求是32M,加上服务器上运行的SQL数据库系统和其他后台服务程序,并进行软件RAIDl磁盘镜像,更是需要很大的系统资源,而该服务器的内存总量仅为64M,除去以上所述资源占用以外,真正留给数据服务使用的内存资源已是所剩无几。系统在内存不足之时,会采用虚拟内存进行补充,利用硬盘空间作为进行数据交换和读取,随着高速公路的车辆通行数的不断增加,服务器的负荷也明显增大,磁盘读取数据也越发频繁,时间长了,必然加速设备的损坏,缩短硬盘的使用寿命。
5.2.1加强收费服务器的日常维护某站的事件,给了各位高速公路的工程维护人员敲响了警钟,如何更加切实有效的做好系统的维护保养工作,确保设备的稳定运行,将是大家面临的重要问题。
5.2.2定期做好服务器的清洁工作
由于客观条件等因素的限制,目前高速公路收费系统站级服务器均同所里监控室在一起,并无采用专门收费系统机房放置。由于平时监控室内人员进出较为频繁,长此以往,势必造成服务器内的灰尘堆积,机内均为精密电子元件,这样的运行环境对硬件的损坏很大。
因此,很有必要定期(建议大约2个月)对服务器进行一次停机清洁,这对延长内部的元器件使用寿命很有帮助。
5.2.3做好紧急修复磁盘和系统启动盘
目前我们的收费系统服务器采用微软公司的WindowsNTserver作为操作系统,在安装WindowsNTServer时准备一张l.44MB的3.5”软盘,用于创建紧急修复盘。紧急修复盘上保存了修复系统所需的数据,当系统文件因故被损坏时,可协助管理员修复丢失或损坏的WindowsNT文件,并恢复Registry(登录),包括了安全账户管理(SAM)数据库、安全信息、磁盘配置信息、软件Registry项以及其他系统信息,使WindowsNT能够正常启动。因为WindowsNTServer采用NTFS磁盘文件系统,一旦出现故障,使用系统紧急修复盘,可以十分便利的访问系统分区,读取其中的文件,这对我们恢复系统十分有利。利用系统恢复盘,使得工程技术人员能够从像磁盘中获得了许多原先系统的资料,如用户信息,备份日志等,挽回了损失。
5.2.4定期检测磁盘,察看系统的日志文件
在让NT操作系统捕获重要的软硬件信息后,可以用EventView查看这些信息,跟踪服务器运行情况。因此定期察看系统的日志是很有必要的;服务器的硬盘频繁进行数据的读写,有时会因为异常断电或外部震动等因素使硬盘产生坏点,如果能定期检查硬盘,察看系统的日志,及时发现错误,就能减少系统崩溃或数据丢失情况;在发现硬盘有坏点的情况下,可以进行扫描修复,以确保数据安全,延长硬盘的使用寿命。
5.2.5做好数据库的备份工作
数据库是信息系统的心脏,是信息资源开发和利用的基础。目前的服务器都已采用磁盘镜像的方式进行全盘数据备份,尽管此次,建立一套策略和方法,定期做好SQL数据库文件的单独备份,还是显得十分的必要,尤其在数据文件遭遇不幸的时候,能够尽快的恢复,减小损失。需要特别重视的是数据库内的各种结构表、重要存储过程以及各种参数、原始拆帐数据等,一旦出现意外,能够在最短的时间内给予恢复。
5.2.6做好病毒的防治工作
随着软件开放性和网络技术的不断普及和发展同时,也给了计算机病毒提供了十分便利的传播途径;在高速公路专网内,服务器之间以及服务器同工作站之间大量的文档、结构化或非结构化的收费数据、统计数据通过网络来传输和处理,这种频繁和大规模的文件、数据交换为病毒传播大开便利这门;目前,高速公路收费系统已实现全路段的联网收费,一旦遭遇病毒入侵,势必引起全线收费数据的破坏,后果将不堪设想。因此,定期进行服务器、工作站间的病毒检测是一件十分必要和关键的步骤。例如:2003蠕虫王(Worm.netkiUer2003),正是利用SQLServer数据库系统的漏洞,采用“缓冲区溢出”技术,进行网络感染与攻击,从而对网络和服务器造成严重危害,导致网络严重阻塞,甚至造成SQLServer服务器的全面瘫痪。2002年,就曾经因此让全球网络接近瘫痪6小时。因此,在做好病毒的防治工作时,还必须充分运用网络杀毒软件、防火墙以及入侵检测等多种手段,才能够有效预防并清除危害。
5.3数据管理模式的分析和比较
如前所述,某服务器故障虽说是由多方因素引发的——人为疏忽,硬件配置不合理等都直接或者间接的导致了此次故障的发生。从某站的事件中,我们也充分认识到了加强日常维护保养工作的重要性。可是,仅仅如此吗?在高速公路管理系统的不断建设发展的今天,在经济发达、交通量较大的路段管理地区,都已提出要求降低运行成本,提高经济效益。这些
新的需求,都要求我们的系统管理和建设者需要思考新的管理方式和系统结构。这正是我们下文所要阐述的观点:从管理模式的角度,结合泉港服务器事件,根据实际的功能需求,对目前所采用的沿用多年的数据管理模式进行分析讨论,我们大胆提出:收费系统应该改变当前的数据管理模式,采用一种新型的数据管理——集中式管理,从而使得高速公路收费管理更加规范的进行,真正最大限度的避免此类事件今后不再发生。
5.3.1现有某高速公路的收费管理模式
目前,某高速公路收费系统采用多年传统使用的分中心一站一车道的分散管理模式。即由收费站系统、收费分中心系统、省中心拆帐系统共同组成,分为三级管理模式:收费站—分中心一省中心,具体的网络拓扑图如图1所示:
其中车道与收费站之间组成星形结构的局域网,收费站与收费分中心之间、收费分中心与收费拆帐中心之间租用专用速率64Kb/s的DDN线路进行通讯。5.3.2现有数据管理模式的优缺点
优点:
a)对网络的依赖性小,网络不通时,收费站级系统的业务处理正常进行;
b)业务操作不面向大型数据库,系统运行的效率较高;
缺点:
a)系统配置相对烦琐,维护量较大。由于整个路段收费站的系统维护工作由所辖分中心技术人员负责,而每个收费站远离分中心,因无形中加大了系统的维护量;
b)增加了系统配置的开支;
c)维持两端相应数据的一致性占用了一定的系统资源;
d)对收费站机房环境的要求很高,容易出现人为的服务器故障如关机、断电等。也正是上述的这些不足,为泉港的服务器故障埋下了隐患,这不能不引起我们的思考——有没有更好数据管理方式,可以减少故障发生。
5.3.3数据集中管理模式的定义和特点
所谓数据集中管理一就是结合各路段管理范围的特点,采用弱化原收费模式收费站功能,加强收费分中心、总中心的管理功能,集中在收费分中心、拆帐中心进行收劳业务管理的新型管理方式。它的核心,就是利用计算机软件、网络技术及相关设备对某个路段的收费数据进行集中处理,有效地保证计算机主机上所有数据的完整性、可靠性、稳定性,有利于收费业务的规范化管理。具体地说,在某高速公路收费系统中,利用监控分中心的收费服务器,在分中心的直接监督下对各个收费车道、收费站进行收费业务数据的采集和处理以及管理和统计,而不通过收费站服务器。因此,数据管理模式分二级,省拆帐中心——分中心,网络拓扑图如图2所示:
其中收费分中心与收费站、收费拆帐总中心与收费分中心之间利用高速公路建成的专用通信网进行通讯。
集中管理又有哪些特点呢,正如我们上面提到的,具体的从上面的网络图,很容易看出:采用了集中数据管理模式,优缺点如下:
优点
a)采用了集中数据管理,使得只在分中心设置一台服务器:每个收费站不设服务器作为系统的一个使用终端,从而降低了成本。
b)服务器管理简单,便于维护,大大减少了分中心技术人员的维护工作量。
c)数据的安全性好,由于采用集中式管理,减少了当中的许多环节,最大限度避免了其他因素造成的破坏。
缺点
a)由于需要对各站进行数据处理,对服务器的处理能力和运行速度等要求较传统方式有很大提高。
b)当某些主要设备出现故障时,影响的范围要广一些,因此对网络可靠性、稳定性要求较高。
5.4集中管理模式的可行性分析
5.4.1网络可靠性分析
从集中管理的定义以及上述的图示,可以很容易的知道,想要实现数据的集中(部分集中)管理,最重要的前提条件便是需要一个快速、稳定、安全的通讯线路,将各类的数据上传至分中心和中心服务器。这样的要求,在高速公路通讯网络建立以前是很难满足和实现的,因此也无法试行集中管理。随着高速公路建设的不断深入,网络通信模式将由原先租用DDN专线方式转为基于光纤传输的SDH同步数字通信方式;对于收费数据的传输采用SDH2M带宽,大大满足收费业务数据传送需求。光纤通信具有如下特点:
a)频带宽,具有很大的传输容量,主干网的速率达到2.5Gb/s,本地网速率也可达2Mb/s,可以满足各类数据的传输要求;
b)通信质量好,不受外界电磁干扰;
c)通信距离可长可短,符合高速公路通信业务分布特点。因此,稳定可靠的高速公路光纤专用通信网为实现数据集中管理模式创造了必要条件;
5.4.2服务器系统软硬件平台
当前的企业服务器主要分作两大类,其中一类是以IBM、HP等公司为代表的小型计算机服务器,如IBMRS/5000M80,M85小型机,另一类便是目前正在使用的以普通的PC为基础的PC服务器。小型机虽性能较PC服务器强,但同样价格也高出甚多。采用数据集中管理模式后,对拆帐中心、分中心的服务器处理能力和运行速度及可靠性要求很高,首先应能满足整个路段各收费站的各种业务需求,在充分考虑功能需求的基础上,对所需设备的主频、内存、存储空间、传输率及可靠性等方面进行具体分析,并通过模拟实际的使用环境
对设备的处理能力、数据吞吐量等作详细地计算后才能确定选用服务器类型,且莫一味的追求高性能,造成投资浪费。同样考虑到今后的车流量等数据的增加,还应留有一定的富余量,避免出现设备与应用问可能出现的“大马拉小车”、“小马拉大车”的问题,避免设备购置的盲目性。
随着高速公路路网的不断形成,联网收费系统对计算机网络安全性和可靠性的要求较高,因此对于服务器操作系统和数据库的选用也非常重要。目前服务器最为普遍采用的操作系统有WindowsNT、Unix、Linix等。按照中心和分中心服务器的设计要求和作用,应首要从系统的安全性和稳定性方面人手考虑,建议优先采用以Unix为核心的操作系统。同样当前可采用的数据库软件平台众多,如:SQLServer、ORACLE、SYBASE、INFORMIX和INGRES、DB2等,各有所长,建议选用的原则应从以下几个方面人手:支持客户/服务器体系结构;支持高性能的并发控制和联机事务处理;支持主要网际互连协义(TCP/IP、APPC等)和局域网协议(如TCP/IP、SPX/IPX);支持SQL标准;考虑安全性、灾难恢复和事务完整性;具有良好的可移植性和可扩展性;支持大量的第三方产品,能满足不断发展中的各类业务要求;支持Cluster系统,并能自动实现任务均衡和任务切换;支持SMP系统;至少支持PowerBuilder、Delphi、MicrosoftVisualC++等RAIDG开发工具,具备完善的Intemet开发工具以及确保系统升级时可移植性等等。
5.4.3冗余独立磁盘阵列RAID等安全措施
采用数据集中管理模式,对设备的安全、稳定性方面的要求特别高,应充分考虑服务器的冗余备份问题。建议同时采用双机热备份服务器和磁盘阵列方式,当前很多服务器无须磁盘阵列柜就可构成磁盘阵列,磁盘阵列内置于主机中,如HP6000高档服务器,将数据库系统和应用系统放在阵列磁盘上,这样相当于有了双重硬件防护。确保在硬盘损坏时,磁盘阵列起作用,当主机出现除硬盘外的故障时启动备机,确保收费业务的不间断运行。