一种传送仿真数据的通信系统的制作方法

文档序号:7724678阅读:145来源:国知局
专利名称:一种传送仿真数据的通信系统的制作方法
技术领域
本发明涉及一种通信系统,特别是关于一种适用于测控系统中传送仿真数据的通信系统。
背景技术
测控领域的通信系统和普通局域网或广域网的通信系统是有所区别的,首先测控领域的客户端是可以预知和可以控制的,其次测控领域的通信系统对实时性有一定要求, 特别是数据量比较小的测控数据,比如温度、压力、流量等数据的传送一般对响应速度有较高的要求。随着测控领域的不断发展,测控系统所实现的功能也越来越强,为了提高测控系统的可靠性,在测控系统中一般都增加了对控制对象或执行器的仿真功能,测控系统中仿真功能的加入对通信系统也提出了特殊要求。一般通用通信系统进行数据传输时没有数据状态识别功能,在数据传输中通信系统不清楚哪些数据是状态数据,哪些数据是非状态数据,数据状态识别的工作一般交由通信系统更高一级去处理。采用通用通信系统进行数据传输时,为了适应状态数据和非状态数据,通信往往采用多种通信协议。有时为了简化通信系统则把所有的数据状态都变成单一数据状态,但如果把所有的数据都转化为非状态数据会降低通信系统的功能;如果把所有的数据都转化为状态数据会增加通信系统的开销,增加通信系统处理数据的负担,使通信效率变低。而且一般通用型通信系统不包括有针对性的进程控制和监视功能,进程控制和监视的工作往往交由其它系统完成,这增加了整个系统的复杂度。测控领域通信系统数据通信的重点是保证数据的安全性与完整性,客户端与服务器端之间的数据通信更强调测控数据命令和仿真数据命令处理的效率。处理仿真命令有独占资源的性质并且比较消耗资源,并需要尽量避免仿真进程被其它进程干扰,特别在每个客户端单个进程使用计算服务资源时。当通信系统出现暂态线路故障时,客户端可能无法再次请求仿真服务,因为这时客户端的标识已经被记录,由于每个客户单个进程使用计算服务资源的特征,服务器端可能认为同一客户端进行了二次请求,从而拒绝客户端的请求, 而服务器端也可能正在等待客户端收到仿真数据的应答,该客户端已经进入无限等待状态,无法与服务器端通信。

发明内容
针对上述问题,本发明的目的是提供一种采用同构应答方式进行数据通信,并且具有数据识别功能、数据完整性和安全性检测功能、超时定时提醒功能以及外部进程启动与监视功能的用于测控系统中传送仿真数据的通信系统。为实现上述目的,本发明采取以下技术方案一种传送仿真数据的通信系统,其特征在于它包括若干客户端和一服务器端;所述服务器端包括一监视模块、一数据状态识别模块、一非状态数据接收模块、一状态数据接收模块、一通信子进程模块和一仿真服务处理模块;所述监视模块包括一完整性检测模块、一安全性检测模块和一外部进程监视模块;所述客户端发送测控数据或仿真数据到所述服务器端,所述服务器端将接收到的数据发送到所述监视模块,所述监视模块依次通过其内的所述完整性检测模块和安全性检测模块对数据进行完整性检测和安全性检测;如果客户端是合法客户,则把数据发送给所述数据状态识别模块;否则回到所述客户端;所述数据状态识别模块对数据进行解析,如果识别得到是非状态数据,则通过所述非状态数据接收模块将数据传给共享数据交换区,完成测控数据的通信;如果识别得到的数据是状态数据,则通过所述状态数据接收模块启动所述通信子进程模块,进入所述仿真服务处理模块对数据进行处理,并将处理结果送入共享数据交换区,由通信子进程将仿真结果发送给所述客户端,完成仿真数据的通信。所述客户端设置有一个控制与所述服务器端通信时间的定时器,所述服务器端设置有一个用于监视与客户端通信时间的定时器,以及另一个对仿真进程的执行时间进行控制的定时器。数据传送的格式采用四元组数据STATE、ID、CMD和XML,所述四元组数据以键值对的形式封装在“ H ”大括号中,根据STATE的内容将通信的数据分为状态数据和非状态数据,非状态数据由一个总通信进程进行处理,状态数据则以每客户单一进程的方式进行处理。所述完整性检测模块是通过所述四元组的“ {} ”大括号是否匹配进行完整性检测。本发明由于采取以上技术方案,其具有以下优点1、本发明由于采用数据状态识别模块根据STATE对所要传输的状态数据和非状态数据进行识别,使不同的客户端请求对应不同的服务进程,从而兼顾到了服务响应速度和服务所提供的功能。2、本发明由于采用安全检测模块可以确保每个客户端单个进程使用计算服务资源,以便仿真服务进程不会重复地运行,从而保证了仿真服务的质量和响应时间。3、本发明由于采用外部进程监视模块, 为数据通信与外部进程提供了一个可以主动监控仿真进程的接口,以便通信系统可以触发仿真进程,了解仿真服务进程运行情况,并及时获取仿真服务的结果。4、本发明由于设置有定时器,可以有效解决通信无限等待的问题。5、本发明采用四元组数据格式以及同构应答的通信握手方式,极大简化了通信过程中的命令响应方式与数据提取的工作,而数据的XML 项的表示方式不仅方便了数据值的处理,同时也增强了数据表示的可扩展性。6、本发明的四元组的数据以键值对的形式封装在“ {} ”大括号中,由于有许多方法可以直接处理上述形式的列表,例如JSON规范或PYTHON中列表数据类型,所以可以简化通信的数据处理,同时通过匹配大括号对可以方便地传输超长数据,也简化了超长数据的处理过程。因此,本发明可以广泛应用于测控领域传送仿真数据的通信系统中。


图1是本发明通信系统的总体结构示意图;图2是本发明客户端和服务器端的数据处理流程图;图3是本发明安全性验证流程图;图4是本发明的创建通信子进程和命令解析流程图;图5是本发明仿真命令处理流程图。
具体实施方式
下面结合附图和实施例对本发明进行详细的描述。如图1所示,本发明的通信系统包括若干客户端1和一服务器端2。本发明的服务器端2包括一监视模块3、一数据状态识别模块4、一非状态数据接收模块5、一状态数据接收模块6、一通信子进程模块7和一仿真服务处理模块8。其中,监视模块3包括一完整性检测模块31、一安全性检测模块32和一外部进程监视模块33。为了保证客户端1和服务器端2正确的通信连接,本发明的通信系统在数据通信发起之前首先要对客户端1和服务器端2进行数据的初始化连接设置,初始化连接设置完成之后,客户端1根据具体需求发送测控数据或仿真数据到服务器端2,服务器端2接收到数据后,监视模块3的完整性检测模块31完成数据完整性检测。如果数据的大括号是不匹配的,则进入数据监听状态,查看是否有新的数据到达,如果数据的大括号是匹配的,则把数据发送到安全性检测模块32进行安全性检测,并提取数据的命令项。检测得知客户端1 是合法客户后,数据状态识别模块4接收数据之后则对数据的命令项STATE进行解析,根据 STATE来判断数据的状态,如果判断得知是非状态数据则把非状态数据发送到非状态数据接收模块5直接将接收到的数据传给共享数据交换区,其它的应用系统从共享缓存区取出测控数据,从而完成测控数据的通信;如果判断得知是状态数据,则把状态数据传送给状态数据接收模块6,启动通信子进程模块7,进入仿真服务处理模块8对数据进行处理,同时进入外部进程监视模块33以监视仿真进程的运行状态。当仿真任务完成之后通信子进程会从共享数据区取出仿真处理结果,然后发送给客户端1,从而完成仿真数据的通信。上述实施例中,本发明的通信系统还设置有三个定时器9、10、11,其中一个定时器 9设置在客户端1,可以对服务器端2的响应时间进行设置,负责监视和服务器端2的通信是否超时,如果长时间接收不到服务器端2的回应,则定时器9显示超时,则客户端1强制退出对服务器端2的数据处理结果的无限等待,客户端1重新发送数据命令请求。另外两个定时器10、11设置在服务器端2,其中一个定时器10用于监视和客户端1的通信是否超时,另外一个定时器11负责监视服务器端2的外部进程的运行情况,主要是对仿真进程的执行时间进行设置,如果仿真进程长时间运行,则定时器11显示超时,服务器端2强行终止运行时间过长的仿真任务,并强行结束外部进程的运行。如图2所示,下面进一步说明客户端1和服务器端2的数据传输和处理过程,其具体过程为1、客户端1的数据传输和处理过程为1)客户端1对数据进行初始化连接设置客户端1完成数据采集和处理并根据需要发出通信命令,在发起数据通信之前首先要进行初始化连接设置,发起初始连接请求,初始化连接设置的目的是方便和底层协议建立联系并为底层协议指明数据的目的地和端口,本发明进行初始化连接的目的是为和服务器端2匹配好相应的参数,为数据的发送和接收设置好相应的数据缓存区,由于底层协议和操作系统的不同,可以选择不同的方法进行初始化连接设置。由于本发明是具有针对性的数据传输,因此把测控数据定义为非状态数据而把与仿真有关的数据定义为状态数据,相应地,本发明设置有测控数据缓存区和仿真数据缓存区,测控数据缓存区用于收、发测控数据,仿真数据缓存区用于收、发仿真数据。测控数据缓存区的大小是固定的,因为测控数据类型与数量基本是固定的,而仿真数据缓存区是一种动态交换缓存区,当数据过大时可以将部分仿真数据映射到非易失存储介质中,比如固体盘或硬盘中,这样可以保证接收或发送超长数据。仿真数据缓存区由通信子进程负责管理, 每个通信子进程都有属于自己专有的仿真数据缓存区,客户端1将定期检查数据缓存区的状态,当发送数据缓存区填满后将触发数据发送的过程,而当接收数据缓存区填满后会触发接收数据的过程。本发明定义数据进行初始化连接的命令为{STATE 〃 . · · 〃,ID 〃 . · · 〃,CMD 〃 beginConnect 〃,XML 〃 . · · 〃 },其对应的四元组的解释为{状态标签〃...",标识〃...〃,命令〃初始化连接〃,数据〃 ..."}。本发明以测控数据连接为实施例对数据进行初始化连接的命令为{STATE “ 0 〃,ID “测控点 1 “,CMD “ beginConnect “, XML “ <nodes><node id = “I" Xtemperature>315<temperatureXunit>Celsi us</unit></node></nodes>" },上述初始化连接的命令中,STATE表示数据的状态,其中0表示非状态数据,1表示为状态数据,此处为0则为非状态数据;ID表示客户标识,其作用类似于用户名,但有时还可以包含客户性质与位置信息,CMD表示通信命令,beginConnect命令表示初始化连接命令,XML表示数据项,后面XML格式的数据表示测控点1的温度是315摄氏度。对于仿真数据的初始化连接只在客户端1启动时触发运行一次即可,因为服务器端2可以注册该客户并保留着该客户的连接,所以该客户只要仿真缓存区满就可以随时与服务器端通信系统通信,不用再次发送初始化连接命令。2)客户端1验证相关的通信命令对数据初始化设置完成以后,客户端1开始验证服务器端2发回的相关非状态数据命令或状态数据命令的格式是否正确,主要是验证四元组数据格式中的各项是否匹配, 由于对于所传数据的说明是通过XML中的子元素定义的,由于XML的描述性很强,服务器端又有与命令项对应的schema (格式定义),schema是针对XML数据格式的定义与说明,所以可以较容易地验证所传数据格式是否正确。3)数据发送和接收当客户端1和服务器端2完成初始化连接设置后,当发送数据缓冲区满时,则把数据缓冲区的数据发送到服务器端2,监视模块3对数据接收状况进行监听,判断是否有已经处理完的非状态数据,同时监听服务器端2的仿真任务的回应是否已经到达。这两个监听过程异步执行,以确保客户端1的其它进程不会因此受到影响。当监视模块3监听到服务器端2有数据到达时,服务器端2进行数据接收,客户端 1和服务器端2之间的数据握手是采用同构应答的方式,即发送与接收的数据中四元组的前3个是一致的,数据是否同构是指数据包的主要键是否都相同,其中主要键是指数据列表中的前3个键,当发送与接收的数据包是非同构时则属于出错状态,如果发生错误则对错误进行处理,如果没有发生错误则将XML中的数据交由其它应用进程处理,整个客户端1 的数据通信过程完成,例如上述实施例中测控点1,send命令所对应的接收数据包的格式应有如下形式{STATE 〃 0〃,ID 〃 测控点 1〃,CMD “ send",XML 〃 .··〃,···}。
最后面的省略号表示数据包的其它项,四元组的数据格式除了 4个常规键以外还可以扩展,不同命令可以有不同的扩展键,即可以扩展成η元组,η元组中的其它项起到辅助通信或辅助数据描述的作用。这一扩展方式不仅可以应用于数据接收数据包的定义,也可用于发送数据包的定义,这种机制增强了整个通信系统的可扩展性和适应性。2、服务器端2的数据传输和处理过程为1)验证接收到的数据是否完整在完成类似客户端1对数据初始化连接设置后,客户端1将测控数据或仿真数据发送至服务器端2,服务器端2完成数据接收,监视模块3监听到有数据到达时,完整性检测模块31完成对数据完整性验证,验证所接收到的数据格式是否正确,其具体过程如下首先对接收到的数据包进行字符处理,去掉不需要的通信用控制字符,并将某些转义字符恢复成原意判断大括号是否匹配,如果不匹配则进入数据接收监听状态,监听是否有新的数据,如果数据匹配则把数据发送到安全性检测模块32对数据进行安全性检测。上述实施例中,在对数据发送或接收时采用大括号配对的方法,因为有时需要发送或接收的数据较长,在一个数据包中放不下,需要对长数据进行切割,封装成多包数据分别发送和接收,大括号配对是指对长数据的发送或接收,如果左侧的“ {”数量等于右侧“},, 的数量,则可以认为数据包发送或接收完毕,以保证数据包的列表格式的完整性,如果在原始的发送数据中存在大括号则需要在发送时把大括号转义为其它字符。2)验证接收到的数据是否是合法用户如果验证数据是完整的,则把数据传输到安全性检测模块32验证客户端1的登陆请求是否合法,非状态数据和状态数据的完整性和安全性验证的过程是基本一致,本发明以状态数据为实施例说明状态数据的安全性验证过程,其过程如下如图3所示,验证客户端1是否合法,也就是验证四元组数据中的ID是否已经注册,如果没有注册或客户端1的验证码不符合要求则视为非法客户端。接受到数据包时,如果确认客户端ι是合法用户之后,提取数据包中的命令项(CMD的键值)判断是否是登录请求,如果是登录请求,则在登录注册表中检查该用户是否已经登录,如果已经登录则发出拒绝登录响应,如果客户端1是初次登录,则要在登录表中对客户端信息进行注册,如果不是登陆请求则转入其它命令项进行处理。本发明的通信方式是每个客户单进程方式,不允许客户多次登录,由于登录表所记录的信息量非常精简,所以被放到内存中以提高登录客户的验证速度。上述实施例中,客户端1的验证码和客户端的ID事先写在数据库中,验证码在初始化连接过程中才使用,写在XML键值中,数据库的形式可以是关系型数据库、XML文件、文本文件等多种形式,其主要作用是保存客户信息。数据库的维护不由通信系统负责,而由应用系统负责,通信系统为应用系统的检索请求保留接口。3)创建和启动通信子进程数据状态识别模块4根据四元组STATE键的情况判断数据是非状态型数据还是状态型数据。如果判断得知是非状态型数据则直接发送给非状态数据接收模块5将接收到的数据传给共享数据交换区从而完成测控数据的通信。如果判断得知是状态型数据,状态型数据接收模块6接收状态数据,启动通信子进程模块7,启动仿真服务处理模块8,完成仿真任务的命令处理过程。
如图4所示,本发明可以根据客户标识对通信进程活动列表进行检索,以判断当前请求的客户端通信进程是否已经创立。如果未建立则创建一个新的进程来响应客户端1 的通信请求,创建完成后启动上述进程,然后返回到数据接收监听状态,通信子进程模块7主要是监听否有状态数据到达,每一个子进程都对应着某一具体的客户端,如果有状态数据到达启动通信子进程,接收数据并解析数据包中的命令项,然后转到相应的仿真命令处理过程,最后将处理仿真结果发送给客户端1,随后再次进入监听状态。每个通信子进程都独立地运行,互不干扰,这样也保证了数据的独立性。如果出现在客户端1发出强制终止连接命令、通信过程检测出错误、响应超时这三种情况则终止通信子进程。上述实施例中,服务器端2的数据通信实际上依靠多个通信进程,能够发起或创立其它通信进程的进程称为总通信进程,该进程也负责非状态数据的通信。由于客户端1 的测控数据相对仿真数据来说数量较多,以这种类似主从式的无状态通信可以极大减少服务器端的通信负载,而测控数据的单向通信较多的特点又保证这种方式不会降低测控系统的整体功能。其它通信进程对总通信进程的关系也比较密切,对接收数据的监控由总通信进程负责,在创立其他进程后总通信进程会把接收数据的监听功能部分地移交给由它所创立的通信子进程,这样可以为状态数据的通信建立一个针对某一客户的专用通道,以保证仿真数据的结果可以较快地传输给客户端,满足某些仿真实时性的要求。4)对仿真命令进行处理,完成仿真任务如图5所示,本发明以完成基本仿真任务的最小命令集为实例说明仿真数据处理的过程。仿真服务处理模块8启动仿真进程,从仿真进程共享数据区获取仿真参数,运行仿真进程,仿真任务完成之后,从仿真进程共享数据区获取仿真结果,完成仿真任务,同时将用户标识从活动列表中删除,以便客户端可以再次启动新的仿真进程。在仿真进程运行过程中,外部进程监视模块33监视仿真进程,如果定时器11显示仿真进程超时,则强制终止仿真进程,使得相应的通信进程也强制性终止。本发明分别以一个非状态数据的通信过程和状态数据的通信过程为实施例客户端1和服务器端2的数据数据通信过程。非状态数据的通信过程客户端1发送初始化连接设置命令{STATE 〃 0〃,ID:"测控点 1〃 ,CMD, “ beginConnect 〃,XML:〃 password" }
服务器端1发送初始化连接设置命令{STATE “ 0“ ,ID “测控点 1〃 , CMD, “ beginConnect" , XML “ pass" }客户端1发送测控数据{STATE "0",ID:"测控点 1",CMD, "send", XML:"
<nodes>
〈node id=〃测控点 1〃>
<temperature>315<temperatureXunit>Celsius</unit> </node>
</nodes>〃}服务器端2接收测控数据{STATE “ 0“ ,ID “测控点 1〃 , CMD, “ send" , XML “ recieved" }状态数据的通信过程客户端1发送初始化连接设置命令{STATE 〃 1 〃,ID “仿真终端 2 〃,CMD, “ beginConnect “, XML “ password" }服务器端2发送发送初始化连接设置命令{STATE 〃 1",ID: 〃仿真终端 2" ,CMD, “ beginConnect",XML:" pass" }客户端1发送仿真数据命令
{STATE 〃1〃,ID:〃仿真终端 2〃,CMD, "simulate〃,XML: "} <model>
用XML的方式描述仿真模型
〈/model〉"}服务器端2启动仿真数据处理
{STATE 〃1〃,ID:〃仿真终端 2〃,CMD, "simulate〃,XML: 〃} <result>
用XML的方式描述仿真输出结果
</result>〃} 上述实施例中,仿真命令包括saveScene,restoreScene禾口 s imulate,其含义分别为保存仿真环境,恢复仿真环境和启动仿真进程。仿真环境是指客户端1输入的仿真数据,仿真数据往往是一些物理对象的数学模型及参数,为了方便以后还可以使用该模型,使用savekene命令可以将其保存在数据库中,在需要的时候使用restoreScene命令可以将其恢复,simulate命令可以启动仿真进程,并将仿真的结果发送给客户端1。simulate命令与其他命令处理方式最大的不同是异步性,其它命令过程是非异步执行的,主要是由于仿真过程较长,为了尽快响应客户端1的其它服务请求,在启动仿真之后应立即返回通信进程,然后再定期监视仿真服务是否结束。如果仿真任务结束则从共享缓存区取出仿真结果,然后发送给客户端1。异步启动仿真进程的另外一个优点是通信进程和仿真进程的耦合性非常小,两者只通过共享缓存区交换数据。所以不同厂商的仿真应用进程可以很容易地和本通信系统结合起来组成系统。综上所述,本发明采用在单一上层通信协议中通过对数据状态进行识别,非状态数据的通信采用共享通信进程的方式实现,当通信结束之后随即返回监听状态,这种方式非常适合测控数据较多的情况,服务器端2不必为每种测控数据保持连接和状态信息;而状态数据的通信采用创建即保持的方式实现,单次通信的完结并不会使进程销毁,也就是创建的通信进程还保留着,虽然这种方法耗费资源,但提高通信的响应速度,这在实时仿真时是非常重要的。上述各实施例仅用于说明本发明,其中各部件的结构和实施方法都是可以有所变化的,在本发明技术方案的基础上,凡根据本发明原理对个别步骤和配比进行的改进和等同变换,均不应排除在本发明的保护范围之外。
权利要求
1.一种传送仿真数据的通信系统,其特征在于它包括若干客户端和一服务器端;所述服务器端包括一监视模块、一数据状态识别模块、一非状态数据接收模块、一状态数据接收模块、一通信子进程模块和一仿真服务处理模块;所述监视模块包括一完整性检测模块、 一安全性检测模块和一外部进程监视模块;所述客户端发送测控数据或仿真数据到所述服务器端,所述服务器端将接收到的数据发送到所述监视模块,所述监视模块依次通过其内的所述完整性检测模块和安全性检测模块对数据进行完整性检测和安全性检测;如果客户端是合法客户,则把数据发送给所述数据状态识别模块;否则回到所述客户端;所述数据状态识别模块对数据进行解析,如果识别得到是非状态数据,则通过所述非状态数据接收模块将数据传给共享数据交换区,完成测控数据的通信;如果识别得到的数据是状态数据,则通过所述状态数据接收模块启动所述通信子进程模块,进入所述仿真服务处理模块对数据进行处理,并将处理结果送入共享数据交换区,由通信子进程将仿真结果发送给所述客户端,完成仿真数据的通信。
2.如权利要求1所述的一种传送仿真数据的通信系统,其特征在于所述客户端设置有一个控制与所述服务器端通信时间的定时器,所述服务器端设置有一个用于监视与客户端通信时间的定时器,以及另一个对仿真进程的执行时间进行控制的定时器。
3.如权利要求1或2所述的一种传送仿真数据的通信系统,其特征在于数据传送的格式采用四元组数据STATE、ID、CMD和XML,所述四元组数据以键值对的形式封装在“ {} ” 大括号中,根据STATE的内容将通信的数据分为状态数据和非状态数据,非状态数据由一个总通信进程进行处理,状态数据则以每客户单一进程的方式进行处理。
4.如权利要求3所述的一种传送仿真数据的通信系统,其特征在于所述完整性检测模块是通过所述四元组的“ {} ”大括号是否匹配进行完整性检测。
全文摘要
本发明涉及一种传送仿真数据的通信系统,它包括若干客户端和一服务器端;服务器端包括监视模块、数据状态识别模块、非状态数据接收模块、状态数据接收模块、通信子进程模块和仿真服务处理模块;客户端发送数据到服务器端,服务器端将接收到的数据发送到监视模块,监视模块对数据进行检测;如果客户端是合法客户,则把数据发送给数据状态识别模块;否则回到客户端;数据状态识别模块对数据进行解析,如果是非状态数据,则通过非状态数据接收模块将数据传给共享数据交换区;如果是状态数据,则通过状态数据接收模块启动通信子进程模块,进入仿真服务处理模块对数据进行处理,并将处理结果送入共享数据交换区,由通信子进程将仿真结果发送给客户端。本发明可以广泛应用于测控领域中传送仿真数据的通信系统中。
文档编号H04L29/08GK102325156SQ20111019720
公开日2012年1月18日 申请日期2011年7月14日 优先权日2011年7月14日
发明者张敬尊, 王郁昕, 黄静华 申请人:北京联合大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1