发明内容
本发明的技术目的就在于解决上述现有技术的缺陷,提供一种卫星测控过程执行任务状态的监控方法、监控系统及卫星测控系统,能够实时监测并调试卫星测控过程执行的任务,提高卫星测控效率。
作为本发明的第一个方面,提供一种卫星测控过程执行任务状态的监控方法,包括如下步骤:
S1:用户通过前端页面输入对一颗即将过境的卫星的要执行的一项或多项测控任务和测控开始时间;
S2:后端服务器根据测控开始时间创建定时器,定时器计时的同时对要执行的一项或多项测控任务进行编译并将编译后的测控任务存储在后端服务器的固定路径;
S3:当定时器到达测控开始时间时,后端服务器建立执行器和虚拟机对象;
S4:执行器从固定路径获取编译后的测控任务并将编译后的测控任务传输给虚拟机对象;
S5:虚拟机对象通过执行器接收前端页面的指令在一项或多项指定的测控任务后加入断点标识;
S6:执行器按顺序从虚拟机对象中获取一项测控任务,通过与卫星通信执行测控任务并获取执行任务的结果;
S7:当执行器获取到断点标识时,判断执行任务的结果;如果执行任务的结果正常,则返回步骤S6,执行器执行下一项测控任务;如果执行任务的结果不正常,则前端页面通过执行器将暂停任务、恢复任务或终止任务的指令发送给虚拟机对象;当虚拟机对象接收到暂停任务的指令时,向断点标识后加入暂停任务标识并指示执行器暂停执行测控任务;当虚拟机对象接收到恢复任务的指令时,向断点标识后加入恢复任务标识并指示执行器恢复执行测控任务,返回步骤S6,执行器执行下一项测控任务;当虚拟机对象接收到终止任务的指令时,向断点标识后加入终止任务标识并指示执行器终止执行所有任务。
进一步地,步骤S3中,所述后端服务器建立执行器和虚拟机对象的方法包括:在后端服务器内找到两个连接口,分别是第一连接口和第二连接口,建立执行器,该执行器通过第一连接口与前端页面连接,第二连接口与虚拟机对象连接;在后端服务器找到一个连接口,该连接口为第三连接口,建立虚拟机对象,该虚拟机对象通过第三连接口与执行器连接;其中,第一连接口为后端服务器的一个空闲端口,第三连接口为后端服务器的另一个空闲端口。
进一步地,所述执行器通过Websocket协议和前端页面连接;所述虚拟机对象通过JDI接口和执行器连接。
进一步地,步骤S6中,所述通过与卫星通信执行测控任务并获取执行任务的结果的方法包括:所述执行器根据测控任务通过卫星地面站的收发系统向卫星发送遥测指令并从卫星获取遥测数据,执行器向遥测系统发送遥测数据并接收遥测系统解析的卫星遥测状态信息,执行器将卫星遥测状态信息发送给前端页面。
进一步地,步骤S7中,所述判断执行任务的结果的方法包括:前端页面接收卫星遥测状态信息,所述卫星遥测状态信息包括多项遥测数值,前端页面将每项遥测数值与预定合理数值范围进行比对,如果遥测数值在预定合理数值范围内,则认为遥测数值正常;如果遥测数据超出预定合理数值范围,则认为遥测数值不正常并向用户报警、或提示用户判断该遥测数值是否正常。
进一步地,所述遥测状态信息的内容有卫星硬件状态信息、卫星软件状态信息、卫星记录的外接数据信息;所述遥测数值不少于3000项。
进一步地,步骤S6还包括:在执行器执行测控任务时,前端页面可通过执行器向虚拟机对象发出指令,向一项或多项尚未执行的测控任务后添加或删除断点标识。
作为本发明的第二个方面,提供一种卫星测控过程执行任务状态的监控系统,采用卫星测控过程执行任务状态的监控方法,包括:
一个或多个前端页面,用于向后端服务器发出任务指令;
后端服务器,通过网络和前端页面连接,包括定时器、执行器和虚拟机对象;所述定时器根据测控开始时间计时并编译要执行的一项或多项测控任务;所述执行器获取编译后的测控任务并传输给虚拟机对象,向虚拟机对象发送前端页面的任务指令,执行虚拟机对象提供测控任务、暂停任务、恢复任务和终止任务。
进一步地,所述定时器、执行器和虚拟机对象均为多个,一个定时器对应一个执行器和一个虚拟机对象并共同处理一颗即将过境的卫星的测控任务,多个定时器、多个执行器和多个虚拟机对象使得前端页面可向后端服务器预先输入多颗即将过境的卫星的要执行的测控任务和测控开始时间并使后端服务器可连续执行多颗卫星的测控任务。
作为本发明的第三个方面,提供一种卫星测控系统,包括所述的卫星测控过程执行任务状态的监控系统、收发系统和遥测系统;
所述收发系统、遥测系统和后端服务器均设置在卫星地面站;
所述收发系统与所述执行器连接,用于向卫星发送遥测指令并从卫星获取遥测数据;
所述遥测系统与执行器连接,用于解析遥测数据。
本发明的有益效果是:
本方案在后端服务器内建立了虚拟机对象,采用了JDI技术,使前端页面可以对后端服务器进行断点调试操作,能够实时监测并调试卫星测控过程执行的任务,提高卫星测控效率。
具体实施方式
以下对本发明的实施例进行详细说明,但是本发明可以由权利要求限定和覆盖的多种不同方式实施。
根据本发明的第一个实施方式,提供一种卫星测控过程执行任务状态的监控系统,如图1所示,包括:一个或多个前端页面1和后端服务器2。
图1中前端页面1只示出了一个,根据实际操作场景,可以设置多个前端页面1。前端页面1通过网络和后端服务器2连接,用于向后端服务器2发出任务指令,包括测控任务、测控开始时间、暂停任务、恢复任务、终止任务、断点标识任务。后端服务器2设置在卫星地面站,执行测控任务。前端页面1可以设置在卫星地面站,也可以设置在其他地方,只要能够通过网络连接控制后端服务器2即可。因此,在执行测控任务时,可以实现远程监控、无人值守。前端页面1为网页的模式,只要有一台电脑就能够打开前端页面1,不需要在专门的电脑上安装应用程序,方便、快捷、适应性强。前端页面1和后端服务器2基于B/S架构,通过网页就可以控制后端服务器的暂停、恢复和终止等。
后端服务器2包括定时器21、执行器22和虚拟机对象23。当前端页面1预先设置一颗卫星的测控任务和测控开始时间时,后端服务器2就会创建一个定时器21,当定时器21到达测控开始时间时,后端服务器2就会创建一个执行器22和一个虚拟机对象23,针对这颗卫星执行测控任务。定时器21根据测控开始时间计时并编译要执行的一项或多项测控任务。执行器22获取编译后的测控任务并传输给虚拟机对象23,向虚拟机对象23发送前端页面1的任务指令,执行虚拟机对象23提供测控任务、暂停任务、恢复任务和终止任务。
针对一颗卫星的一次过境的测控任务对应地用一个定时器21、一个执行器22和一个虚拟机对象23共同完成。图1中只示出了一个定时器21、一个执行器22和一个虚拟机对象23,实际应用中会预先设置多颗即将过境的卫星的测控任务和测控开始时间,因此实际操作中,后端服务器2的定时器21、执行器22和虚拟机对象23均为多个,一个定时器21对应一个执行器22和一个虚拟机对象23并共同处理一颗即将过境的卫星的测控任务,多个定时器21、多个执行器22和多个虚拟机对象23使得前端页面1可向后端服务器2预先输入多颗即将过境的卫星的要执行的测控任务和测控开始时间并使后端服务器2可连续执行多颗卫星的测控任务。
根据本发明的第二个实施方式,提供一种卫星测控过程执行任务状态的监测方法,采用第一个实施方式的卫星测控过程执行任务状态的监控系统,如图2所示,包括以下步骤:
S1:用户通过前端页面1输入对一颗即将过境的卫星的要执行的一项或多项测控任务和测控开始时间。
输入测控任务必须是针对即将过境的卫星,如果卫星已经过境或正在过境才输入测控任务,后端服务器2根本无法执行测控任务。后端服务器2要执行的测控任务主要是向卫星发送指令,让卫星回传相应的遥测数据。测控任务主要包括:获取卫星的姿势、卫星硬件设备的状态、卫星软件的状态、从卫星观测到的地球的状态、卫星的高度、角度等。用户输入测控任务时,需要按测控任务的顺序输入,才能使后端服务器2按照该顺序执行。测控开始时间就是卫星过境时开始和卫星通信的时间,只有在卫星过境时才能通信,因此测控开始时间是根据卫星运行的轨迹预先判断卫星过境的一个未来的时间。
S2:后端服务器2根据测控开始时间创建定时器21,定时器21计时的同时对要执行的一项或多项测控任务进行动态编译并将编译后的测控任务存储在后端服务器2的固定路径。
Java 运行时供应商开发了一些复杂的动态编译器,通常称作即时(Just-in-time,JIT)编译器。程序运行时,JIT 编译器选择将最频繁执行的方法编译成本地代码。运行时才进行本地代码编译而不是在程序运行前进行编译,即进行动态编译。
使用 JIT 编译器时,Java 程序按每次编译一个方法的形式进行编译,因为它们在本地处理器指令中执行以获得更高的性能。此过程将生成方法的一个内部表示,该表示与字节码不同但是其级别要高于目标处理器的本地指令。(IBM JIT 编译器使用一个表达式树序列表示方法的操作。)编译器执行一系列优化以提高质量和效率,最后执行一个代码生成步骤将优化后的内部表示转换成目标处理器的本地指令。生成的代码依赖运行时环境来执行一些活动,比如确保类型转换的合法性或者对不能在代码中直接执行的某些类型的对象进行分配。JIT 编译器操作的编译线程与应用程序线程是分开的,因此应用程序不需要等待编译的执行。
动态地编译 Java 程序有一些重要的优点,甚至能够比静态编译语言更好地生成代码,现代的 JIT 编译器常常向生成的代码中插入挂钩以收集有关程序行为的信息,以便如果要选择方法进行重编译,就可以更好地优化动态行为。
因为动态编译器通常只是集中编译少量的方法,所以可以执行更主动的分析来生成更好的代码,使编译的回报更高。
S3:当定时器21到达测控开始时间时,后端服务器2建立执行器22和虚拟机对象23。
后端服务器2建立执行器22和虚拟机对象23的方法包括:在后端服务器2内找到两个连接口,分别是第一连接口和第二连接口,建立执行器22,该执行器22通过第一连接口与前端页面1通过Websocket协议创建连接,第二连接口与虚拟机对象23连接;在后端服务器2找到一个连接口,该连接口为第三连接口,建立虚拟机对象23,该虚拟机对象23通过第三连接口与执行器22通过JDI接口连接。其中,第一连接口为后端服务器2的一个空闲端口,第三连接口为后端服务器2的另一个空闲端口。
WebSocket是一种在单个TCP连接上进行全双工通信的协议,它诞生于2008年,并于2011年被IETF定为国际标准。WebSocket使得前端页面1和后端服务器2之间的数据交换变得更加简单,允许后端服务端2主动向前端页面1推送数据。在WebSocket API中,承载前端页面1的浏览器和后端服务器2只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
为了实现推送技术,现有技术基本采用轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。在这种情况下,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。与HTTP不同的是,Websocket需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息。而HTTP请求可能需要在每个请求都携带状态信息(如身份认证等)。WebSocket是双向的,在客户端(即为浏览器)-服务器通信的场景中使用的全双工协议,它以ws://或wss://开头。WebSocket拥有状态协议,这意味着客户端和服务器之间的连接将保持活动状态,直到被任何一方(客户端或服务器)终止。在通过客户端和服务器中的任何一方关闭连接之后,连接将从两端终止。以客户端-服务器通信为例,每当我们启动客户端和服务器之间的连接时,客户端-服务器进行握手随后创建一个新的连接,该连接将保持活动状态,直到被他们中的任何一方终止。建立连接并保持活动状态后,客户端和服务器将使用相同的连接通道进行通信,直到连接终止。
本方案的编译是基于JAVA程序进行的。Java程序都是运行在Java虚拟机上的,我们要调试Java程序,事实上就需要向Java虚拟机请求当前运行态的状态,并对虚拟机发出一定的指令,设置一些回调等等,Java的调试体系,就是虚拟机的一整套用于调试的工具和接口。
Java SE自1.2.2版就开始推出Java平台调试体系结构(Java Platform DebuggerArchitecture,JPDA)工具集,而从JDK 1.3.x开始,Java SDK就提供了对 Java 平台调试体系结构的直接支持,这个体系为开发人员提供了一整套用于调试 Java 程序的 API,是一套用于开发 Java 调试工具的接口和协议。通过JPDA 这套接口,我们就可以开发自己的调试工具。JPDA是一套标准,任何的JDK实现都必须完成这个标准,因此,通过JPDA开发出来的调试工具先天具有跨平台、不依赖虚拟机实现、JDK 版本无关等移植优点,因此大部分的调试工具都是基于这个体系的。
JPDA定义了一个完整独立的体系,它由三个相对独立的层次共同组成,而且规定了它们三者之间的交互方式,或者说定义了它们通信的接口。这三个层次由低到高分别是Java 虚拟机工具接口(JVMTI),Java调试线协议(JDWP)以及Java调试接口(JDI)。这三个模块把调试过程分解成几个很自然的概念:调试者(debugger)和被调试者(debuggee),以及他们中间的通信器。被调试者运行于我们想调试的 Java 虚拟机之上,它可以通过 JVMTI这个标准接口,监控当前虚拟机的信息;调试者定义了用户可使用的调试接口,通过这些接口,用户可以对被调试虚拟机发送调试命令,同时调试者接受并显示调试结果。在调试者和被调试着之间,调试命令和调试结果,都是通过JDWP的通讯协议传输的。所有的命令被封装成JDWP命令包,通过传输层发送给被调试者,被调试者接收到JDWP命令包后,解析这个命令并转化为JVMTI的调用,在被调试者上运行。类似的,JVMTI的运行结果,被格式化成JDWP数据包,发送给调试者并返回给JDI调用。而调试器开发人员就是通过JDI得到数据,发出指令。开发人员也可以不使用完整的三个层次,而是基于其中的某一个层次开发自己的应用。
JDI(Java Debug Interface)是JPDA三层模块中最高层的接口,定义了调试器(Debugger)所需要的一些调试接口。基于这些接口,调试器就能通过前端虚拟机上的调试器来远程操控后端虚拟机上被调试程序的运行,及时地了解目标虚拟机的状态,例如查看目标虚拟机上有哪些类和实例等。另外,调试者还可以控制目标虚拟机的执行,例如挂起和恢复目标虚拟机上的线程,设置断点等。JDI不仅能格式化JDWP数据,而且还能为JDWP数据传输提供队列、缓存等优化服务。从理论上说,只需使用JDWP和JVMTI即可支持跨平台的远程调试,但是直接编写JDWP程序费时费力,而且效率不高。因此基于Java的JDI层的引入,简化了操作,提高了开发调试程序的效率。
每一个虚拟机都应该实现JVMTI接口,但是JDWP和JDI本身与虚拟机并非是不可分的,这三个层之间是通过标准所定义的交互的接口和协议联系起来的,因此它们可以被独立替换或取代,但不会影响到整体调试工具的开发和使用。因此,开发和使用自己的 JDWP和 JDI 接口实现是可能的。
Java的JPDA就是一套为调试和优化服务的虚拟机的操作工具,其中,JVMTI是整合在虚拟机中的接口,JDWP是一个通讯层,而JDI是前端为开发人员准备好的工具和运行库。我们可以把JPDA看作成是一个C/S体系结构的应用,在这个构架下,我们可以方便地通过网络,在任意的地点调试另外一个虚拟机上的程序,这个就很好地解决了部署和测试的问题,尤其满足解决了很多网络时代中的开发应用的需求。前端和后端的分离,也方便开发适合于自己的调试工具。
由此可见,通过JDI接口可以实现用户在前端页面1发出任务指令,位于后端的虚拟机对象23与前端页面1分离的情况下,也能够执行前端页面1发出的任务指令,使远程监控卫星测控过程执行任务状态成为可能。
S4:执行器22从固定路径获取编译后的测控任务并将编译后的测控任务传输给虚拟机对象23。
S5:虚拟机对象23通过执行器22接收前端页面1的指令在一项或多项指定的测控任务后加入断点标识。
S6:执行器22按顺序从虚拟机对象23中获取一项测控任务,通过与卫星通信执行测控任务并获取执行任务的结果;在执行器22执行测控任务时,前端页面1可通过执行器22向虚拟机对象23发出指令,向一项或多项尚未执行的测控任务后添加或删除断点标识。
通过与卫星通信执行测控任务并获取执行任务的结果的方法包括:执行器22根据测控任务通过卫星地面站的收发系统向卫星发送遥测指令并从卫星获取遥测数据,执行器22向遥测系统发送遥测数据并接收遥测系统解析的卫星遥测状态信息,执行器22将卫星遥测状态信息发送给前端页面1。
前端页面1在执行器22执行测控任务的过程中,向虚拟机对象23添加或删除断点标识,并不会影响整个测控任务,只是相当于在测控任务列表中插入或删除“暂停”键,采用这样的方式,可以实时根据已经执行的测控任务的结果实时调整后续的测控任务,实现实时监控任务状态。例如,在预先设置的测控任务中,并未在第5个测控任务后加入断点标识,但根据第2个测控任务的结果发现需要在第5个测控任务后加入断点标识进行调试,此时可以直接在第5个测控任务后加入断点标识。
S7:当执行器22获取到断点标识时,判断执行任务的结果;如果执行任务的结果正常,则返回步骤S6,执行器22执行下一项测控任务;如果执行任务的结果不正常,则前端页面1通过执行器22将暂停任务、恢复任务或终止任务的指令发送给虚拟机对象23;当虚拟机对象23接收到暂停任务的指令时,向断点标识后加入暂停任务标识并指示执行器22暂停执行测控任务;当虚拟机对象23接收到恢复任务的指令时,向断点标识后加入恢复任务标识并指示执行器22恢复执行测控任务,返回步骤S6,执行器22执行下一项测控任务;当虚拟机对象23接收到终止任务的指令时,向断点标识后加入终止任务标识并指示执行器22终止执行所有任务。
判断执行任务的结果的方法包括:前端页面1接收卫星遥测状态信息,卫星遥测状态信息的内容有卫星硬件状态信息、卫星软件状态信息、卫星记录的外接数据信息,卫星遥测状态信息包括不少于3000项遥测数值,前端页面1将每项遥测数值与预定合理数值范围进行比对,如果遥测数值在预定合理数值范围内,则认为遥测数值正常;如果遥测数据超出预定合理数值范围,则认为遥测数值不正常并通过网页推送、微信提醒或短信通知的方式向用户报警、或通过网页推送、微信提醒或短信通知的方式提示用户判断该遥测数值是否正常。先让机器判断后再人为判断,可以提高判断执行任务结果的准确率。
如果用户还要执行另一颗即将过境的卫星的任务,再次按照步骤S1-S7执行即可。通过这样的方式,可以预先设置多颗卫星的测控任务,到达测控开始时间,执行器22执行测控任务。后端服务器2可根据不同的定时器21连续执行多颗卫星的测控任务。
本方案基于B/S架构,前端页面1可以在和后端服务器2分离的情况下,还能实时监控执行器22执行测控任务状态信息,有助于提升测控效率。采用JAVA语言编写,基于JDI接口可以在执行测控任务期间实现断点标识、暂停任务、恢复任务、终止任务等功能,答复提升了用户多变需求的能力,并且通过JDI接口可以获取当前任务执行的实时状态。动态编译技术使用户可以更快捷、高效地更改任务逻辑。
根据本发明的第三个实施方式,提供一种卫星测控系统,如图3所示,包括:第一个实施方式的卫星测控过程执行任务状态的监控系统、收发系统3和遥测系统4。
收发系统3、遥测系统4和后端服务器2均设置在卫星地面站;前端页面1可设置在卫星地面站,也可以设置在其他地区。例如卫星地面站位于银川,前端页面1可设置在西安、北京、海口、厦门等地。
收发系统3与执行器22连接,通过天线向卫星发送遥测指令并从卫星获取遥测数据。
遥测系统4与执行器22连接,用于解析遥测数据。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。